Computer Science 156

운영체제 7강 :: 교착상태 회피, 탐지 및 복구

운영체제에서 기억하고 싶은 내용 교착상태 회피 자원 사용에 대한 사전 정보를 활용해서, 교착 상태가 발생하지 않는 상태로 머물도록 한다 사전 정보란? 현재 할당된 자원 가용상태의 자원 프로세스의 초대 요구량 안전상태와 안전순서열 안전 상태 교착상태를 회피하면서 각 프로세스 최대 요구량까지 자원을 할당할 수 있는 상태 안전순서열 존재하는 경우 불안전 상태 안전순서열이 존재하지 않는 경우 교착 상태는 불안전 상태에서만 발생한다 항상 안전상태 유지해야 한다 가용상태의 자원을 요구해도 프로세스가 대기 상태가 될 수 있다 단점: 자원 이용율은 조금 낮아질 수 있다 /* 교착상태 회피 알고리즘 */ 각 자원의 단위 자원이 하나인 경우 변형된 자원할당 그래프 각 자원의 단위 자원이 여러 개인 경우 은행원 알고리즘 교..

운영체제 6강 :: 교착상태 필요조건, 예방

운영체제에서 기억하고 싶은 내용 프로세스 자원 사용 절차 요구 -> 사용 -> 해제 요구 과정에서 가용한 자원 없으면 자원을 획득할 때까지 대기한다 교착 상태 여러 개의 프로세스가 상대방의 작업이 끝나기만 기다린다 어느 쪽도 영원히 진행하지 못하는 상태 교착 상태의 필요 조건 다음 네 가지 조건이 동시에 만족하면 교착상태 발생 가능하다 1. 상호배제 프로세스가 자원에 대해 배타적 통제권 요구 다른 프로세스가 점유한 자원 필요시 대기 필요 2. 점유대기(Hold and wait) 프로세스가 한 자원을 점유한 상태로 다른 자원 원할 시 대기 3. 비선점 할당된 자원은 타의에 의해 해제되지 않는다 4. 환형대기(Circular wait) 자원을 점유하고 점유된 자원의 요구 관계가 환형(원)을 이루며 대기 교착..

파이썬 6강 :: 선택 구조, 논리 연산자

파이썬에서 기억하고 싶은 내용 선택 구조의 구문 형식 들여쓰기로 코드 블록 표현 스페이스 4칸 권고(PEP-8) 불리언식 = == != 논리 연산자 두 개의 불리언식(논리값)을 연산해서 참 또는 거짓을 결과로 얻는 연산자 and 전부 True 일 때만 True, 하나라도 False면 False or 하나만 True면 True, 둘 다 False일 때 False not 단항연산자 False는 True로, True는 False로 이번 강의는 아는 내용이 많은 편이라 덜 적었다 if rad > 0 and hei > 0 : # rad랑 hei가 0 이상일 때 else : # 위가 거짓일 때

운영체제 5강 :: 생산자-소비자 문제, 프로세스 간 통신

운영체제에서 기억하고 싶은 내용 생산자-소비자 문제 정의 생산자: 데이터를 버퍼에 넣는 프로세스 소비자: 데이터를 버퍼에서 꺼내는 프로세스 조건 버퍼에 여러 프로세스가 동시에 접근할 수 없다 버퍼에 넣는 거나, 꺼내는 거나 동시에 접근할 수 없다 => 상호배제 필요하다 유한 버퍼 문제 버퍼가 가득 찬 경우 생산자는 대기해야 한다 버퍼가 빈 경우 소비자는 대기해야 한다 => 동기화 필요하다 세마포어를 이용해서 해결해볼까! 세 가지 세마포어를 사용 mutex로 동시 접속 못하도록, empty와 full로 뭘 했는지 이해는 안되네 생산자 코드 While(true) { 데이터 생산 P(empty); P(mutex); 버퍼에 데이터 넣는다 // 임계 영역 V(mutex); V(full); } 소비자 코드 Whil..

파이썬 5강 :: 구조적 프로그래밍 패러다임, 타입 변환

파이썬에서 기억하고 싶은 내용 제어 구조 구조적 프로그래밍 패러다임 절차적 프로그래밍 패러다임의 하위 개념 goto문 사용하지 않고 3가지 제어 구조만으로 구성하는 프로그래밍 패러다임 3가지 제어 구조: 순차, 선택, 반복 프로그램 실행 흐름이 간결하고 작은 규모로 조직화 하기 쉽다 실습 했다 삼각형 만들기 원뿔 계산 프로그램 사용자의 입력을 받는 input() 모든 데이터를 문자로 받는다 radius = input() # 1개의 파라미터는 입력 안내로 사용 radius = input("반지름을 입력하게: ") # 정수로 받자 radius = int(input("반지름을 입력해보게")) 프로그래밍 에러 구문 오류(syntax error): 문법이 틀릴 때 실행 오류(runtime error): 논리적으로..

운영체제 4강 :: 병행 프로세스, 세마포어

운영체제에서 기억하고 싶은 내용 병행성(Concurrency) 여러 개의 프로세스 혹은 쓰레드가 동시 수행되는 시스템 특성 병행 프로세스 동시에 수행되고 있는 프로세스 CPU가 1개라도 병행 프로세스 작동 인터리빙 방식 하나의 CPU가 프로세스를 번갈아 가면서 병행처럼 보이게 처리 여러개의 CPU 병렬처리 방식 각 CPU가 각 프로세스 처리 뭐야 병행 프로세스가 멀티 프로세서가 되겠네? 멀티 프로세서 메모리 구조 강결합 시스템 여러 CPU가 하나의 메모리 공유 같은 메모리를 사용해서 정보를 공유할 수 있겠다 약결합 시스템 CPU 마다 메모리가 별도로 존재 정보 주고 받으려면 통신을 통해서만 가능 독립 프로세스 vs 협력 프로세스 독립 프로세스 다른 프로세스에 영향을 주지도 받지도 않는다 데이터, 상태를 ..

파이썬 4강 :: 연산, 변수

파이썬에서 기억하고 싶은 내용 기본 연산자 표현식은 파이썬 인터프리터에서 자동 계산 +, -, *, /, **(거듭제곱) 데이터 출력하는 함수 print() 들여쓰기 파이썬은 들여쓰기에 의존적이다 코드의 논리적 집합인 블록을 나타낸다 스타일 가이드(PEP 8)에서 들여쓰기 4칸을 권장 문서화 사람을 위한 주석 사용 가독성 증대로 개발 속도 향상 유지보수 용이 한 줄: #을 사용 여러 줄: """ / ''' 데이터 저장하는 변수 변수 이름이랑 값만 사용하면 된다 radius = 20 height = 30 특수 산술연산자 // : 나누고 내림하는 연산자 1 // 2 = 0 %: 나머지 값을 가져온다 1 % 2 = 1 연산자의 우선순위 1. 괄호 2. 지수(**) 3. 곱셈, 나눗셈 등 4. 덧셈, 뺄셈 등 ..

운영체제 3강 :: 스케쥴링, 스케쥴링 알고리즘

운영체제에서 기억하고 싶은 내용 프로세스 스케쥴링 프로세스 순서 결정 스케쥴링 여러 작업의 처리 순서를 결정 예시) 프로세스 스케쥴링, 디스크 스케쥴링 스케쥴링 단계 상위단계 스케쥴링 시스템의 자원을 효율적으로 이용할 수 있도록 하위단계 스케쥴링 준비 큐에 있는 프로세스 선택해서 사용 가능한 CPU를 할당(디스패치) 수행 주체: 디스패처 스케쥴링 기본적인 목표? 공정성: 모든 프로세스가 적정 수준에서 CPU 작업 할 수 있도록 균형: 시스템 자원을 충분히 활용 일괄처리 운영체제 목표 처리량의 극대화: 주어진 시간에 처리한 프로세스 수 반환시간 최소화: 생성 시점부터 종료 시점까지 소요 시간 CPU 활용 극대화 시분할 운영체제의 목표 빠른 응답 시간: 용청한 시점부터 반응이 시작되는 시점 과다한 대기시간 ..

파이썬 2강 :: 하드웨어, 소프트웨어, MS 엔지니어 인터뷰

파이썬에서 기억하고 싶은 내용 하드웨어 입력장치(키보드, 마우스 ... ) 출력장치(모니터, 프린터 ... ) 기억(저장) 장치 주기억장치(ROM, RAM) 보조기억장치(하드디스크, 광학디스크, 플래시 드라이브, SSD ... ) 제어와 연산 장치(CPU) 레지스터: 초고속 데이터 저장/읽기, 비쌈 제어 유닛: ALU에 명령 보낸다 연산 논리 유닛(ALU): 연산해서 레지스터로 보낸다 플로피디스크, 자기디스크, 광학디스크는 전기가 끊어져도 데이터를 저장하는데 어떻게 그러지? 소프트웨어 응용 소프트웨어(a.k.a. Application) 사용자가 목적을 가지고 사용하는 소프트웨어 시스템 소프트웨어 응용 소프트웨어가 작동하는 환경을 만들어준다 시스템 소프트웨어 종류 운영체제(커널) 컴퓨터 자원 효율적 관리,..

파이썬 기초 1강 :: 프로그래밍언어분류, 파이썬 공부 노하우

파이썬에서 기억하고 싶은 내용 파이썬 돌입하기 전에 컴퓨터 이해 먼저 정보와 데이터 관찰이나 측정을 통해 만든 데이터를, 문제 해결에 사용할 수 있도록 정보로 사용 데이터의 기본 단위 비트(bit: binary digit) 가장 작은 단위 바이트(byte) 컴퓨터에서 활용을 위한 작은 단위 8개의 비트를 겹쳐서 사용(256가지 표현 가능) 왜 2진법의 비트를 사용하지? 이유는 컴퓨터가 2진법을 사용하는 '트랜지스터'라는 부품을 사용하기 때문 그럼 왜 트랜지스터를 사용할까? 2가지 상태를 갖는 트랜지스터이기에 더 작게 만들 수 있어서 초소형의 트랜지스터로 작은 부피의 PC, 휴대하기 좋은 노트북을 만들 수 있다 프로그래밍 언어 사람의 언어와 컴퓨터의 언어(2진법)이 다르니 컴퓨터와 소통하기 위한 언어 프로..

728x90