410 likes | 909 Views
프로세스 관리. 프로세스의 개념 병행 프로세스 및 동기화 교착 상태 스케줄링. 프로세스 정의 프로세스 (process: 동적 개념 ) 실행 중인 프로그램 (program: 정적 개념 ) 정적인 프로그램에 자원 ( 기억장치 , CPU 등 ) 을 할당 프로세스 관리를 위해 프로세스마다 PCB(Process Control Block) 을 가짐 프로세스의 상태. 프로세스 완료. Run. dispatch. IO, 기타 서비스. 시간한도 경과 (interrupt). Ready. Blocked.
E N D
프로세스의 개념 • 병행 프로세스 및 동기화 • 교착 상태 • 스케줄링
프로세스 정의 • 프로세스(process:동적 개념) • 실행 중인 프로그램(program:정적 개념) • 정적인 프로그램에 자원(기억장치, CPU 등)을 할당 • 프로세스 관리를 위해 프로세스마다 PCB(Process Control Block)을 가짐 • 프로세스의 상태 프로세스 완료 Run dispatch IO, 기타 서비스 시간한도 경과 (interrupt) Ready Blocked IO 종료 프로세스
프로세스의 상태 • 실행 상태 • 프로세스가 현재 CPU를 차지하고 실행중인 상태 • 준비 상태 • 프로세스가 CPU에서 실행할 모든 준비가 되어 있는 상태 • 대기 상태 • I/O, 기타 이벤트 처리를 위해 대기하는 상태 • 프로세스 제어 블록(PCB) • 운영체제가 프로세스를 관리하기 위해 필요한 일체의 정보 수록
인터럽트와 문맥교환 • 인터럽트(interrupt) • 컴퓨터 시스템에서 아무 때나 발생할 수 있는 사건을 신속히 처리해 주기 위한 기법 • 문맥 교환(context switching) • CPU에서 실행되는 프로세스를 교체하는 작업
스레드(thread) • 프로세스 • 전체 시스템(CPU+모든 자원들) 이용의 주체 • 모든 자원에 대한 정보가 필요 • 스레드 : 경량 프로세스(lightweight process) • CPU 이용의 주체(CPU에 대한 정보만 필요, 정보량이 훨씬 적음) • 문맥교환 시 overhead가 훨씬 적다 • 한 개의 프로세스는 여러 개의 스레드를 가질 수 있다
스레드 • 특징 • 한 프로세스에 속한 스레드들은 CPU를 제외한 프로세스의 자원들을 공동 소유 • 각 스레드는 한 프로세스에만 소속되며 프로세스를 떠나서는 스레드가 존재할 수 없다 • 각 스레드는 독립적인 CPU control로 구현(stack, program counter 등 독자 소유) • 장점 • 스레드들은 자원을 공유하므로 스레드 간의 정보 교환, 문맥 교환은 빠르고 효율적이다
병행 프로세스(concurrent process)의 정의 • 독립적 병행 프로세스 • 상호간 제어를 사전에 약속하지 않고 병행 실행하는 프로세스들 • 예) mouse 인터럽트와 응용 프로그램 • 아무때나 서로 발생 • 협동적 병행 프로세스 • 상호간 제어를 사전에 정의해 놓고 병렬 실행하는 프로세스들 • 예) Web browser와 Web server program • 정의된 방식으로만 협력
독립적 병행(asynchronous concurrent) 프로세스의 동기화 • 데이터의 무결성(integrity) 문제 • 여러 프로세스들이 병행적으로 실행하며 데이터를 동시에 접근 • 예) 두 프로세스의 독립 병행 수행 • 경쟁 상태 발생 - 연산 결과가 프로세스 시간에 따라 달라짐 • 예방책 – 동기화(synchronization) • 프로세스들이 한번에 한 프로세스씩 순차적으로 액세스하도록 함 P1 P2 memory var X
독립적 병행(asynchronous concurrent) 프로세스의 동기화 • 상호 배제(mutual Exclusion) • 공유 데이터를 update한다면 한 순간에 한 프로세스만 공유 데이터를 액세스하도록 허락하는 기법 • 한 프로세스가 공유 데이터를 변경하는 동안 다른 프로세스는 데이터 액세스를 위해 기다려야 함 • 상호 배제를 위한 기법 • 소프트웨어적인 해결 • Dekker 알고리즘 • Peterson 알고리즘 • 하드웨어적인 해결 • 인터럽트 enable/disable 방법 • test_and_set 명령어
독립적 병행(asynchronous concurrent) 프로세스의 동기화 • 프로세스 동기화 • 세마포어(semaphore) • Dijkstra 에 의해 고안된 프로세스 간의 상호 배제 및 동기화 문제 해결 도구 • 구현 방식 • busy-wait - 세마포어 값을 계속 점검하여 기다림 - 기다리는 동안 CPU와 메모리 사이클을 계속 사용 - 기다리는 시간이 짧을 경우에 사용 • block-&-wakeup - 세마포어 값을 기다려야 한다면 즉시 자신을 block 시키는 방식 - 나중에 세마포어 값을 바꾸는 다른 프로세스가 block 중인 프로세스를 wakeup
R1 Allocated Requested P1 P2 R2 Allocated Requested • 교착 상태의 개념 • 프로세스들이 서로 남의 프로세스가 자원 내어주기를 기다리면서 영원히 block되어 있는 상태 • Process A와 Process B가 Resource 1과 Resource 2를 할당받기 위해 교착상태에 빠짐
교착 상태가 일어나기 위한 4가지 조건 • 상호배제(mutual exclusion) • 자원은 한 번에 한 프로세스만 사용 • 점유 및 대기(hold & wait) • 각 프로세스가 이미 자원을 갖고 있으면서 다른 자원을 더 요구 • 비선점(nonpreemption) • 프로세스에 할당된 자원은 스스로 반납하기 전에는 빼앗지 못함 • 환형대기(circular wait) • 프로세스 간의 자원 요구 형태를 추적해보면 결국 자기 자신으로 되돌아옴
교착 상태 해결 방안 • 교착 상태 예방(prevention) • 4가지 필요조건 중 하나를 발생하지 않도록 해서 교착 상태를 예방 • 자원의 낭비가 심하지만 그럼에도 불구하고 교착 상태가 원천적으로 봉쇄되지 않으면 안되는 응용에 사용 • 교착 상태 회피(avoidance) • 교착 상태의 발생 가능성을 원천 봉쇄하기 보다는 이를 적절히 회피 • Dijkstra의 Banker’s algorithm • 교착 상태 탐지(detection) 및 복구(recovery) • 교착 상태를 허용하고 교착 상태가 발생되면 이를 탐지(자원 할당 그래프) • 관련된 프로세스를 중단, 관련된 자원을 강제로 빼앗아 교착 상태 발생 이전의 상태로 복구(rollback)
다중 프로그래밍에서의 스케줄링 • A, B 두 프로세스가 있을 때 각 작업을 1초 동안 실행하고 1초 동안 기다리는 것을 60회 반복할 때 이 시스템의 효율은?
일괄처리 시스템에서는? • 프로세스 A를 모두 처리한 후 B를 처리하는 경우 : 전체 4분 소요 • 프로세스 A는 실행하는데 2분, 프로세스 B에서 2분 소요 • 실제 계산시간 2분, 쉬는 시간 2분, 프로세서 이용률은 50%
프로세스 A 프로세스 A 유휴; 입력 유휴; 입력 유휴; 입력 유휴; 입력 시작 시작 종료 프로세스 B 유휴; 입력 유휴; 입력 시작 유휴; 입력 종료 시작 • 다중 프로그래밍 경우 • A를 실행하고 1초 후 A가 기다릴 때 B를 실행 • 두 프로세스에 대한 실행시간: 2분, 프로세서는 쉬지 않게 됨(효율증가) • 프로세서 사용률은 50%에서 100%로 향상 • A는 시간상의 절약이 없지만 B는 처리시간이 반으로 줄어들게 됨
스케줄링(scheduling) 정의 • 프로세스들의 자원 사용 순서를 결정 • 스케줄링시 고려 사항 • 입출력 위주(I/O bounded) 또는 연산 위주(Processor bounded)의 프로세스 인가? • 대화형 프로세스인가 일괄 처리형 프로세스 인가? • deadline이 주어졌는가 주어지지지 않았는가? • 프로세스의 우선 순위가 있는가? • 자원을 선점할 수 있는가 없는가?
CPU 스케줄링과 Job 스케줄링 • CPU 스케줄러 • CPU를 할당할지를 결정 • 단기 스케줄러(short term scheduler) : 매우 빈번히 수행 • 작업(job) 스케줄러 • 프로세스에게 메모리 공간을 할당하는 순서를 정해주는 스케줄러 • 장기 스케줄러(long term scheduler) 메모리 공간 Job 스케줄러 PA CPU PB CPU 스케줄러 PX PC PY
스케줄링 기법 • 선점 스케줄링(Preemptive Scheduling) • 하나의 프로세스가 자원을 점유하고 있을 때 다른 프로세스가 이 자원을 빼앗을 수 있는 방법 • 특징 • 우선 순위가 높은 프로세스가 먼저 급하게 수행되어야 할 때 유용 • 대화식 시분할 시스템이나 실시간 시스템에 유용 • 오버헤드 초래 • 종류 • RR (Round Robin) • SRT (Shortest Remaining Time) • MFQ (Multilevel Feedback Queue)
스케줄링 기법 • 비선점 스케줄링(Non-Preemptive Scheduling) • 이미 할당된 자원을 임의로 빼앗지 않고, 그 프로세스의 사용이 끝난 후에 회수하는 방법 • 특징 • 프로세스의 응답 시간 예측 용이 • 짧은 작업이 긴 작업 뒤에 서게 된 경우 매우 오래 기다리게 되는 단점 • 종류 • FCFS(First Come First Served) • SJF(Shortest Job First) • HRN(Highest Response ratio Next) • Deadline Scheduling
1. 선입 선처리(First-Come, First-Served) 스케줄링 • 들어온 순서대로 처리 • 가장 간단히 방식 • non-preemptive임(time-sharing에서는 곤란) • FIFO queue : First-in<- tail, First-out<- head • 호위 효과(convoy effect) • 큰 job하나가 끝나기를 모두 기다림 • CPU bound process가 끝나기를 I/O bounded process들이 기다림 • 길고 중요하지 않은 작업이 급하고 중요한 작업을 오래 기다리게 함 • 대화식 시스템에 부적합 • FIFO(First In First Out) 스케줄링 이라고도 함
2. 최소 작업 우선(Shortest-Job-First) 스케줄링 • Shortest Next CPU Burst Scheduling • Non Preemptive 스케줄링 기법 • 다음 CPU burst 시간이 가장 짧은 프로세스에게 할당 • 최적(Optimal) 스케줄링 • 작업들의 평균 대기 시간이 최소 • long-term scheduling에 좋음(프로세스 시간의 사용자 예측 치 이용) • 단점 • 기아 상태(starvation) 발생 • 대화형 시스템에는 부적합 • short-term scheduling 에는 나쁨(차기 CPU burst 시간 파악 어려움) • 차기 CPU 버스트 시간 예측 모델
3. SRT(Shortest Remaining Time) 스케줄링 • 대기 중인 프로세스 중 남은 작업 시간이 가장 작은 프로세스에게 먼저 CPU 할당 • 특징 • Preemptive 스케줄링 기법 • SJF 스케줄링 기법보다 많은 오버헤드 발생
4. HRN(Highest Response ration Next) 스케줄링 • Brinch Hansen이 SJF 기법의 길고 짧은 작업 간의 불평등을 보안한 기법 • dynamic priority = (waiting time + service time) / (service time) • 특징 • Non-Preemptive • 오래 기다린 프로세스는 waiting time이 증가하므로 priority 커지고 • short process일수록 priority 커짐
5. 우선순위(Priority) 스케줄링 • 높은 우선 순위의 프로세스에게 할당 • ready queue = priority queue • equal-priority -> FCFS 로 해결 • 단순 우선 순위 알고리즘 : SJF(p =1/T (T = 차기 CPU 버스트 시간 예측 값)) • priority요인 • OS내부 • 시간 제한(time limits), 메모리 요구량, 오픈 화일 수, (average I/O burst)/(average CPU burst) 비율 등 • OS외부 • 프로세스 중요도, 컴퓨터 사용료 형태와 금액, 작업 부서, 정치적 요인 등 • preemptive or non-preemptive • 문제점 = 무한 정지(indefinite blocking) 또는 기아 상태(starvation) • CPU를 영원히 기다림 : 결국 실행되거나 system crash 때 사라짐 • (예) IBM 7094 at MIT 1973, 1967 job • 해결 -> aging : wait 시간 길어지면 priority 높여 줌
프로세스 버스트시간 우선순위 3 P1p2p3p4p5 10 1 1 2 4 15 52 • 우선 순위 스케줄링 예 평균 대기시간 : 8.2
6. 순환 할당(Round-Robin) 스케줄링 • 시분할 시스템을 위해 설계 • FCFS + preemption • time slice 마다 • timer 인터럽트 • ready queue = circular FIFO queue • preemptive • time sharing에서time quantum의 크기가 중요 • 1 time quantum > context switching time • 80% CPU burst < 1 time quantum • 대화식 시분할 시스템에 적합
7. 다단계 큐(Multilevel Queue) 스케줄링 • 각 프로세스는 우선 순위가 다른 여러 개의 큐 중 하나에 영원히 할당 • 각 queue는 자신의 고유한 scheduling algorithm 가짐 • foreground (interactive) queue : RR알고리즘 • background (batch) queue : FCFS알고리즘 • queue들 사이의 scheduling • 고정 우선 순위 선점 스케줄링(fixed priority preemptive scheduling) • 큐 사이의 CPU time slice 할당 예 • 80% for RR • 20% for FCFS • 스케줄링 부담 적으나 융통성이 적음
8. 다단계 피드백 큐(Multilevel Feedback Queue) 스케줄링 • 프로세스가 여러 큐 사이를 이동 • 짧은 프로세스(I/O bound, interactive processes)가 우선 • 긴 프로세스는 자꾸 낮은 큐로 이동 • aging : 오래 기다리면 우선순위 높여 기아 상태 예방 • preemptive (큐 사이) • the most sophisticated, the most complex • 가장 일반적 -> 해당 시스템에 맞게 설정해야(configure) • 큐의 개수 • 각 큐의 스케줄링 알고리즘 • 높은 우선 순위로 올려 주는 시기 • 낮은 우선 순위로 내려 주는 시기 • 어느 큐에 들어갈 것인가
9. 기한부(Deadline) 스케줄링 • 작업이 주어진 만료 시간(deadline) 안에 완료되도록 보장하는 기법 • 특징 • 사용자는 deadline과 같은 정보를 시스템에 제시 • 시스템은 deadline을 지켜주기 위해 계획 설정 • 여러 작업들이 deadline이 상충되면 스케줄링이 복잡 • 스케줄링에 많은 오버헤드 • 주로 실시간 시스템에서 활용