1 / 40

프로세스 관리

프로세스 관리. 프로세스의 개념 병행 프로세스 및 동기화 교착 상태 스케줄링. 프로세스 정의 프로세스 (process: 동적 개념 ) 실행 중인 프로그램 (program: 정적 개념 ) 정적인 프로그램에 자원 ( 기억장치 , CPU 등 ) 을 할당 프로세스 관리를 위해 프로세스마다 PCB(Process Control Block) 을 가짐 프로세스의 상태. 프로세스 완료. Run. dispatch. IO, 기타 서비스. 시간한도 경과 (interrupt). Ready. Blocked.

lowri
Download Presentation

프로세스 관리

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 프로세스 관리

  2. 프로세스의 개념 • 병행 프로세스 및 동기화 • 교착 상태 • 스케줄링

  3. 프로세스 정의 • 프로세스(process:동적 개념) • 실행 중인 프로그램(program:정적 개념) • 정적인 프로그램에 자원(기억장치, CPU 등)을 할당 • 프로세스 관리를 위해 프로세스마다 PCB(Process Control Block)을 가짐 • 프로세스의 상태 프로세스 완료 Run dispatch IO, 기타 서비스 시간한도 경과 (interrupt) Ready Blocked IO 종료 프로세스

  4. 프로세스의 상태 • 실행 상태 • 프로세스가 현재 CPU를 차지하고 실행중인 상태 • 준비 상태 • 프로세스가 CPU에서 실행할 모든 준비가 되어 있는 상태 • 대기 상태 • I/O, 기타 이벤트 처리를 위해 대기하는 상태 • 프로세스 제어 블록(PCB) • 운영체제가 프로세스를 관리하기 위해 필요한 일체의 정보 수록

  5. 인터럽트와 문맥교환 • 인터럽트(interrupt) • 컴퓨터 시스템에서 아무 때나 발생할 수 있는 사건을 신속히 처리해 주기 위한 기법 • 문맥 교환(context switching) • CPU에서 실행되는 프로세스를 교체하는 작업

  6. 스레드(thread) • 프로세스 • 전체 시스템(CPU+모든 자원들) 이용의 주체 • 모든 자원에 대한 정보가 필요 • 스레드 : 경량 프로세스(lightweight process) • CPU 이용의 주체(CPU에 대한 정보만 필요, 정보량이 훨씬 적음) • 문맥교환 시 overhead가 훨씬 적다 • 한 개의 프로세스는 여러 개의 스레드를 가질 수 있다

  7. 스레드 • 특징 • 한 프로세스에 속한 스레드들은 CPU를 제외한 프로세스의 자원들을 공동 소유 • 각 스레드는 한 프로세스에만 소속되며 프로세스를 떠나서는 스레드가 존재할 수 없다 • 각 스레드는 독립적인 CPU control로 구현(stack, program counter 등 독자 소유) • 장점 • 스레드들은 자원을 공유하므로 스레드 간의 정보 교환, 문맥 교환은 빠르고 효율적이다

  8. 병행 프로세스(concurrent process)의 정의 • 독립적 병행 프로세스 • 상호간 제어를 사전에 약속하지 않고 병행 실행하는 프로세스들 • 예) mouse 인터럽트와 응용 프로그램 • 아무때나 서로 발생 • 협동적 병행 프로세스 • 상호간 제어를 사전에 정의해 놓고 병렬 실행하는 프로세스들 • 예) Web browser와 Web server program • 정의된 방식으로만 협력

  9. 독립적 병행(asynchronous concurrent) 프로세스의 동기화 • 데이터의 무결성(integrity) 문제 • 여러 프로세스들이 병행적으로 실행하며 데이터를 동시에 접근 • 예) 두 프로세스의 독립 병행 수행 • 경쟁 상태 발생 - 연산 결과가 프로세스 시간에 따라 달라짐 • 예방책 – 동기화(synchronization) • 프로세스들이 한번에 한 프로세스씩 순차적으로 액세스하도록 함 P1 P2 memory var X

  10. 독립적 병행(asynchronous concurrent) 프로세스의 동기화 • 상호 배제(mutual Exclusion) • 공유 데이터를 update한다면 한 순간에 한 프로세스만 공유 데이터를 액세스하도록 허락하는 기법 • 한 프로세스가 공유 데이터를 변경하는 동안 다른 프로세스는 데이터 액세스를 위해 기다려야 함 • 상호 배제를 위한 기법 • 소프트웨어적인 해결 • Dekker 알고리즘 • Peterson 알고리즘 • 하드웨어적인 해결 • 인터럽트 enable/disable 방법 • test_and_set 명령어

  11. 독립적 병행(asynchronous concurrent) 프로세스의 동기화 • 프로세스 동기화 • 세마포어(semaphore) • Dijkstra 에 의해 고안된 프로세스 간의 상호 배제 및 동기화 문제 해결 도구 • 구현 방식 • busy-wait - 세마포어 값을 계속 점검하여 기다림 - 기다리는 동안 CPU와 메모리 사이클을 계속 사용 - 기다리는 시간이 짧을 경우에 사용 • block-&-wakeup - 세마포어 값을 기다려야 한다면 즉시 자신을 block 시키는 방식 - 나중에 세마포어 값을 바꾸는 다른 프로세스가 block 중인 프로세스를 wakeup

  12. R1 Allocated Requested P1 P2 R2 Allocated Requested • 교착 상태의 개념 • 프로세스들이 서로 남의 프로세스가 자원 내어주기를 기다리면서 영원히 block되어 있는 상태 • Process A와 Process B가 Resource 1과 Resource 2를 할당받기 위해 교착상태에 빠짐

  13. 교착 상태가 일어나기 위한 4가지 조건 • 상호배제(mutual exclusion) • 자원은 한 번에 한 프로세스만 사용 • 점유 및 대기(hold & wait) • 각 프로세스가 이미 자원을 갖고 있으면서 다른 자원을 더 요구 • 비선점(nonpreemption) • 프로세스에 할당된 자원은 스스로 반납하기 전에는 빼앗지 못함 • 환형대기(circular wait) • 프로세스 간의 자원 요구 형태를 추적해보면 결국 자기 자신으로 되돌아옴

  14. 교착 상태 해결 방안 • 교착 상태 예방(prevention) • 4가지 필요조건 중 하나를 발생하지 않도록 해서 교착 상태를 예방 • 자원의 낭비가 심하지만 그럼에도 불구하고 교착 상태가 원천적으로 봉쇄되지 않으면 안되는 응용에 사용 • 교착 상태 회피(avoidance) • 교착 상태의 발생 가능성을 원천 봉쇄하기 보다는 이를 적절히 회피 • Dijkstra의 Banker’s algorithm • 교착 상태 탐지(detection) 및 복구(recovery) • 교착 상태를 허용하고 교착 상태가 발생되면 이를 탐지(자원 할당 그래프) • 관련된 프로세스를 중단, 관련된 자원을 강제로 빼앗아 교착 상태 발생 이전의 상태로 복구(rollback)

  15. 다중 프로그래밍에서의 스케줄링 • A, B 두 프로세스가 있을 때 각 작업을 1초 동안 실행하고 1초 동안 기다리는 것을 60회 반복할 때 이 시스템의 효율은?

  16. 일괄처리 시스템에서는? • 프로세스 A를 모두 처리한 후 B를 처리하는 경우 : 전체 4분 소요 • 프로세스 A는 실행하는데 2분, 프로세스 B에서 2분 소요 • 실제 계산시간 2분, 쉬는 시간 2분, 프로세서 이용률은 50%

  17. 프로세스 A 프로세스 A 유휴; 입력 유휴; 입력 유휴; 입력 유휴; 입력 시작 시작 종료 프로세스 B 유휴; 입력 유휴; 입력 시작 유휴; 입력 종료 시작 • 다중 프로그래밍 경우 • A를 실행하고 1초 후 A가 기다릴 때 B를 실행 • 두 프로세스에 대한 실행시간: 2분, 프로세서는 쉬지 않게 됨(효율증가) • 프로세서 사용률은 50%에서 100%로 향상 • A는 시간상의 절약이 없지만 B는 처리시간이 반으로 줄어들게 됨

  18. 스케줄링(scheduling) 정의 • 프로세스들의 자원 사용 순서를 결정 • 스케줄링시 고려 사항 • 입출력 위주(I/O bounded) 또는 연산 위주(Processor bounded)의 프로세스 인가? • 대화형 프로세스인가 일괄 처리형 프로세스 인가? • deadline이 주어졌는가 주어지지지 않았는가? • 프로세스의 우선 순위가 있는가? • 자원을 선점할 수 있는가 없는가?

  19. CPU 스케줄링과 Job 스케줄링 • CPU 스케줄러 • CPU를 할당할지를 결정 • 단기 스케줄러(short term scheduler) : 매우 빈번히 수행 • 작업(job) 스케줄러 • 프로세스에게 메모리 공간을 할당하는 순서를 정해주는 스케줄러 • 장기 스케줄러(long term scheduler) 메모리 공간 Job 스케줄러 PA CPU PB CPU 스케줄러 PX PC PY

  20. 스케줄링 기법 • 선점 스케줄링(Preemptive Scheduling) • 하나의 프로세스가 자원을 점유하고 있을 때 다른 프로세스가 이 자원을 빼앗을 수 있는 방법 • 특징 • 우선 순위가 높은 프로세스가 먼저 급하게 수행되어야 할 때 유용 • 대화식 시분할 시스템이나 실시간 시스템에 유용 • 오버헤드 초래 • 종류 • RR (Round Robin) • SRT (Shortest Remaining Time) • MFQ (Multilevel Feedback Queue)

  21. 스케줄링 기법 • 비선점 스케줄링(Non-Preemptive Scheduling) • 이미 할당된 자원을 임의로 빼앗지 않고, 그 프로세스의 사용이 끝난 후에 회수하는 방법 • 특징 • 프로세스의 응답 시간 예측 용이 • 짧은 작업이 긴 작업 뒤에 서게 된 경우 매우 오래 기다리게 되는 단점 • 종류 • FCFS(First Come First Served) • SJF(Shortest Job First) • HRN(Highest Response ratio Next) • Deadline Scheduling

  22. 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) 스케줄링 이라고도 함

  23. First-Come, First-Served (FCFS) Scheduling

  24. 2. 최소 작업 우선(Shortest-Job-First) 스케줄링 • Shortest Next CPU Burst Scheduling • Non Preemptive 스케줄링 기법 • 다음 CPU burst 시간이 가장 짧은 프로세스에게 할당 • 최적(Optimal) 스케줄링 • 작업들의 평균 대기 시간이 최소 • long-term scheduling에 좋음(프로세스 시간의 사용자 예측 치 이용) • 단점 • 기아 상태(starvation) 발생 • 대화형 시스템에는 부적합 • short-term scheduling 에는 나쁨(차기 CPU burst 시간 파악 어려움) • 차기 CPU 버스트 시간 예측 모델

  25. 3. SRT(Shortest Remaining Time) 스케줄링 • 대기 중인 프로세스 중 남은 작업 시간이 가장 작은 프로세스에게 먼저 CPU 할당 • 특징 • Preemptive 스케줄링 기법 • SJF 스케줄링 기법보다 많은 오버헤드 발생

  26. 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 커짐

  27. Example of Non-Preemptive SJF

  28. Example of Preemptive SRT

  29. 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 높여 줌

  30. 프로세스 버스트시간 우선순위 3 P1p2p3p4p5 10 1 1 2 4 15 52 • 우선 순위 스케줄링 예 평균 대기시간 : 8.2

  31. 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 • 대화식 시분할 시스템에 적합

  32. Example: RR with Time Quantum = 20

  33. 작은 시간 할당량이 문맥 교환을 증가시킴

  34. 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 • 스케줄링 부담 적으나 융통성이 적음

  35. Multilevel Queue Scheduling

  36. 8. 다단계 피드백 큐(Multilevel Feedback Queue) 스케줄링 • 프로세스가 여러 큐 사이를 이동 • 짧은 프로세스(I/O bound, interactive processes)가 우선 • 긴 프로세스는 자꾸 낮은 큐로 이동 • aging : 오래 기다리면 우선순위 높여 기아 상태 예방 • preemptive (큐 사이) • the most sophisticated, the most complex • 가장 일반적 -> 해당 시스템에 맞게 설정해야(configure) • 큐의 개수 • 각 큐의 스케줄링 알고리즘 • 높은 우선 순위로 올려 주는 시기 • 낮은 우선 순위로 내려 주는 시기 • 어느 큐에 들어갈 것인가

  37. Multilevel Feedback Queues

  38. 9. 기한부(Deadline) 스케줄링 • 작업이 주어진 만료 시간(deadline) 안에 완료되도록 보장하는 기법 • 특징 • 사용자는 deadline과 같은 정보를 시스템에 제시 • 시스템은 deadline을 지켜주기 위해 계획 설정 • 여러 작업들이 deadline이 상충되면 스케줄링이 복잡 • 스케줄링에 많은 오버헤드 • 주로 실시간 시스템에서 활용

More Related