Be realist
다중 프로그래밍의 목적은 항상 실행할 수 있는 프로세스가 있도록 하여 CPU 사용 효율을 극대화하는 데 있다. 프로세스는 실행되는 동안 CPU 실행과 입출력 대기 두 주기를 반복한다. CPU-bound process : 적은 수의 매우 긴 CPU 버스트 I/O-bound process : 많은 수의 짧은 CPU 버스트 짧은 CPU 버스트의 빈도가 많고, 8ms 이상의 CPU 버스트는 거의 없다. CPU 성능이 발달할 수록 프로세스는 입출력 중심 프로세스가 되는 경향이 높아진다. CPU가 유휴상태가 되면 ready queue에 있는 프로세스를 하나 선택해서 실행한다. 이 선택은 CPU 스케줄러가 한다. CPU 스케줄링 결정의 4가지 상황 running -> waiting (입출력 요청) running ->..
여러 프로세스가 병행으로 수행되어 발생하는 문제를 해결하는 것을 프로세스 동기화라 한다. 다른 프로세스와 공동으로 사용하는 변수, 테이블, 파일 등을 변경하는 부분을 임계 구역(critical section)으로 둔다. 각 프로세스는 임계구역에 진입하기 전에 허가를 받아야 하고, 이 코드를 진입 구역(entry section)이라 한다. 허가를 받아 임계구역을 실행한 다음에는 다른 프로세스들이 진입할 수 있도록 한다. 이 코드를 출구 구역(exit section)이라 한다. 이외의 코드 부분을 잔류 구역(remainder section)이라 한다. critical section 문제를 해결하는 메커니즘은 다음 세 가지 요건을 충족해야 한다. - 상호 배제 (mutual exclusive) - 진행 (pr..
스레드는 프로세스와 마찬가지로 CPU의 작업 단위. (경량 프로세스 라고도 불린다) 스레드는 자원의 관리보다는 프로그램의 하나의 실행 흐름으로서 CPU가 실행되기 위해 스케줄되어야 하는 개체이다. 스레드 식별자, 프로그램 카운터, 레지스터 집합, 스택만을 가지며, 텍스트 부분, 데이터 부분, 다른 운영체제 자원은 같은 프로세스에 속한 다른 스레드와 공유한다. 하나의 프로세스에서 병행 수행되는 스레드 : 주소 공간과 같은 자원을 서로 공유 하나의 컴퓨터에서 병행 수행되는 프로세스 : 물리적 메모리, 디스크 등을 공유 모든 프로그램을 다중 스레드를 사용하도록 바꾼다고 하여 성능이 향상되는 것은 아니다. 스레드의 도입으로 한 응용프로그램에서 여러 가지 일을 동시에 수행할 수 있다. 각 일을 처리하기 위해 자식..