목록OS (5)
손영배 블로그 누구나 쉽게 이해하고 습득하기
프로세스나 스레드가 결코 일어날 수 없는 특정 이벤트를 기다린다면 해당 프로세스나 스레드가 "교착 상태에 빠졌다"고 한다. (프로세스에 초점을 맞춰 논의하겠지만 대부분은 스레드에도 적용된다). 교착 상태의 문제, 교착 상태에 관한 네 가지 교착 상태 방지(deadlock prevention), 회피(avoidance), 탐지 (detection), 복구(recovery), 또한 교착 상태와 연관이 많은 무기한 연기(기아 indefinite postponement(starvation)에 관해서도 알아보자 무기한 연기 - 기아 : 교착 상태에 빠지지 않은 프로세스가 시스템의 자원 스케줄링 정책 때문에 아주 먼 미래에 일어나나거나 전혀 일어나지 않을 이벤트를 대기하는 상황을 말한다. 교착 상태의 예) - 도로..
상호배제 mutual exclusion 한마디로 말해서 : 어느 한 스레드가 공유 변수를 갱신하는 동안에는 다른 스레드들이 동시에 접근하는 일을 막는다. 예) 사용자로부터 이메일을 하나 수신할 때 마다 프로세스 전체에 공유하는 변수 mailCount의 값이 1씩 증가한다. 이때 두 스레드가 이 변수의 값을 동시에 증가시키려고 할 때 static int mailCount = 99; 첫번째 스레드가 mailCount(99)잃어서 1증가시키고 100을 저장하려고 대기하는 순간 두번째 스레드가 접근해서 아직 변하지 않은 mailCount(99)를 잃어서 1증가시켜 자신도 100이라는 숫자를 저장하려고 한다. 두개의 스레드가 접근해서 mailCount는 100이 되버린다. 만약에 상호배제 되었다면 101이 되어야..
스케줄러는 ready queue에 존재하는 프로세스들을 특정 우선순위를 기반으로 CPU를 할당받게 해주는 역할이다. 스케줄러가 스케줄링을 하는데에 2가지 중요한 요소, 최대관심사, 기준 첫번째, 대기 시간(waiting time), CPU 할당시간 두번째, 스케줄링을 어떻게 구현할 것인가? 어떤 자료구조인가? 스케줄링의 목표는? CPU 활용을 최대화 평균 대기 시간을 최소화 처리량 최대화 선점 과 비선점의 차이는? - 1. 선점 : 뺏을 수 있는 방법 한 프로세스가 CPU를 할당받아 실행중이라도 다른 프로세스가 현재 프로세스를 중지 시키고 CPU를 강제적으로 뺏을 수 있는 스케줄링 방식 장점 : 긴급하게 처리해야 할 높은 우선순위를 가진 프로세서들을 빠르게 처리가능 단점 : 프로스세 간 문맥 교환이 자주..
1. 프로세스란 프로그램이 실행 중인 상태(더블클릭이 되어, 메모리를 할당받은) 프로세스는 함수 매개변수, 복귀주소, 로컬변수 등 임시적인 자료를 가지는 프로세스 스택 전역변수를 저장하는 데이터 섹션, 동적 할당 메모리를 위한 힙 등으로 구성된다. 2. 프로세스 상태 프로세스는 다음 상태 중 하나를 가진다. new : 프로세스가 생성 중이다. running : 명령어들이 실행되고 있다. waiting : 프로세스가 어떤 사건(입출력 완료 또는 신호의 수신 등)이 일어나기를 기다린다. ready : 프로세스가 처리기에 할당되기를 기다린다. terminated : 프로세스가 실행을 종료 3. 프로세스 제어 블록(PCB: Process Control Block) 다른 말로 테스크 제어 블록이라고도 한다. Pr..
프로세스의 스케줄링을 위해서 OS는 큐(Queue)를 지원한다. (Queue는 Linked List로 구현되어 있다. header end PCB를 가리키는 포인터를 가지고 있다). 큐에는 job queue, ready queue, device queue,waiting queue가 있다. - job queue는 프로세스가 시스템에 처음 들어와서 대기하는 큐 - ready queue는 주기억 장치에 적재되어 실행을 기다리는 프로세스를 유지하는 큐 - device queue는 장치를 사용하기 위해 기다리는 큐 - waiting queue는 특정한 event마다 대기하는 프로세스를 유지시켜주는 큐 근데 여기서 스케줄러는 각 큐마다 다음 차례의 프로세스를 결정하기는 기법이다. 크게 세 가지 종류 1. 장기 스케줄..