프로세스 관리
제 2장 프로세스 관리
1. 프로세스 개념
1) 프로세스 정의
① 실행중인 프로그램. ② 프로세서가 활동중인 것 ③ PCB가 명백히 존재하는 것
2) 프로세스 상태
① 준비 상태 : 프로세스가 CPU를 사용하여 실행될 수 있는 상태.
․디스패치(Dispatch) : 준비상태에서 대기하고 있는 프로세스 중 하나가 스케줄링되어 실행상태로 전이되는 과정.
② 실행 상태 : 프로세스가 CPU를 차지하여 실행 중인 상태.
․타이머 런 아웃 : CPU를 할당받아 실행중인 프로세스가 할당량을 초과하면 CPU를 다른 프로세스에게 양도하고 자신은 준비상태로 전이되는 것.
③ 대기 상태 : 어떤 사건이 발생하기를 기다리는 상태.
․블록 : 실행 중인 프로세스가 지정된 시간 이전에 다른 작업을 위해 스스로 프로세서를 양도하고 대기 상태로 전이되는 것.
3) 프로세스 제어 블록(Process Control Block : PCB)
프로세스 제어 블록 내용 |
프로세스의 현 상태 |
프로세스의 고유한 식별자 |
프로세스의 부모, 자식 프로세스에 대한 포인터 |
프로세스의 우선 순위 |
프로세스가 위치한 메모리에 대한 포인터 |
할당된 자원에 대한 포인터 |
프로그램 카운터 |
중앙처리 장치 레지스터 보관 장소 |
4) 인터럽트와 문맥교환
① 인터럽트 : 컴퓨터 시스템에서 발생하는 예외적인 사건을 신속히 처리하기 위한 기법.
㉠ SVC(Supervisor Call) 인터럽트 : 사용자 프로그램에서 SVC명령을 호출하였을 경우 발생.
㉡ 입출력 인터럽트 : 입출력 요구가 완료되었을 때 입출력 장치가 인터럽트 발생
㉢ 외부 인터럽트 : 타이머, 오퍼레이터가 콘솔에서 인터럽트키를 누를 때 발생.
㉣ 재시작 인터럽트 : 오퍼레이터가 콘솔에서 재시작 버튼을 누를 때 발생.
㉤ 프로그램 검사 인터럽트 : 불법적인 명령, 0으로 나누는 경우 발생.
㉥ 기계검사 인터럽트 : 기계의 고장이 생겼을 때 발생.
② 문맥교환(Context Switch) : 실행 중인 프로세스를 교체할 때 프로세스의 상태를 기억시켜 두고 새로운 프로세스의 이전 실행 상태를 재복구 하여 처리기에 넘겨주는 일련의 작업.
5) 스레드(Thread)
- 문맥 교환의 부담을 줄여 시스템 성능을 향상시킴으로서 병행성을 증대시키기 위한 스케쥴링의 최소 단위로 프로세서의 역할을 담당함.
2. 병행 프로세스 및 동기화
1) 병행 프로세스의 정의
― 두 개 이상의 실행 중인 프로그램.
2) 병행 프로세스의 처리(병행 처리시 발생하는 오류 처리법)
① 상호배제(Mutual exclusion) : 한 프로세스가 공유 자원을 사용하고 있는 경우 다른 프로세스는 이 자원을 사용할 수 없는 규칙 즉 하나의 프로세서가 임계영역에서 실행되고 있을 때, 다른 프로세서가 임계영역에 들어가지 못하게 하는 것.
※ 임계영역 : 하나의 프로세스가 공유 자원을 변경하는 코드를 실행하고 있을 때, 그 프로세스는 임계영역에 있다고 함.
② 동기화(Synchronization) : 처리순서를 결정하는 것.
㉠ 세마포어(Semaphore) : 동기화 문제 해결 도구.
- 다익스트라(Dijksta)에 의해 고안됨.
- 상호배제 및 동기화 문제 해결 도구로서 P(Wait)와 V(Signal) 두가지 연산 이용.
세마포어 S에 대한 P연산 : P(s) |
세마포어 S에 대한 V연산 : V(s) |
IF S > 0 Then S := S - 1 Else 기다림(대기열에 넣음) End IF |
IF (한 개 이상의 프로세서가 S에 대기중) Then 한 개의 프로세서 진행 Else S := S + 1 End IF |
※ 세마포어의 특징
- 상호배제 및 동기화 해결방안
- 여러개의 프로세스가 동시에 그 값을 수정하지 못함.
- 세마포어 연산 도중 인터럽트 되어서는 안됨.
㉡ 모니터(Monitor)
- 공유자원을 할당하기 위한 병행성 구조로서 자료 추상화의 개념을 기초로 상호배제 구현.
※ 모니터의 특징
- 공유자원을 원하는 프로세스는 반드시 해당 모니터의 프로시저를 호출
- 외부의 프로세스는 모니터 내부의 데이터를 직접 액세스 할수 없음.
- 한순간에 하나의 프로세스만 모니터에 진입 가능.
③ 병행성을 위한 제어문 : Parbegin/Parend 문장을 이용.
④ 프로세스간 통신 : 공유기억장치 기법(기억장치 일부 공유), 메시징 기법(프로세서간 메시지 교환)
3. 교착 상태(Deadlock)
―교착 상태란 다중 프로그래밍 시스템 하에서 서로 다른 프로세스가 일어날 수 없는 사건을 무한정 기다리며 더 이상 진행되지 못하는 상태.
1) 교착 상태 발생의 필요 충분 조건
① 상호 배제 조건(Mutual Exclusion)
- 한 자원을 어떤 프로세서가 사용 중일 때는 다른 프로세서가 그 자원을 사용할 수 없다.
② 점유 및 대기 조건(Hold and Wait)
- 프로세스가 어떠 자원을 할당 받아 점유하고 있으면 다른 프로세스는 기다려야 한다.
③ 비선점 조건(NonPreemption)
- 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없다.
④ 환형 대기 조건(Circular Wait)
- 프로세서간의 자원 요구가 하나의 순환을 이룬다.
2) 교착 상태 해결 방안
① 교착 상태 예방(Prevention) : 교착상태의 필요충분 조건을 부정함으로서 교착상태를 미리 예방하는 방법.
② 교착 상태 회피(Avoidance) : 교착상태의 발생 가능성을 배제하지 않고 이를 적절하게 피해 나가는 방법으로 교착상태를 발생시킬 가능성이 있는 프로세서에게 자원을 할당하지 않음.
③ 교착 상태 탐지(Detection) 및 복구(Recovery) : 교착상태가 일어났는지를 수시로 탐지하여, 만일 발생되었다면 프로세스를 중단하든지 아니면 자원을 강제로 빼앗든지 교착상태 발생 이전상태로 복구시키는 방법.
4. 스케줄링
― 컴퓨터 시스템의 성능을 높이기 위해 그 사용 순서를 결정하기 위한 정책.
※ 스케줄링 평가 기준
․공정성
․빠른 응답시간
․오버헤드의 최소화
․처리율의 최대화
․균형적인 자원 이용
․대기시간의 단축
1) 프로세스 스케줄링과 작업 스케줄링
① 프로세스 스케줄러(단기) : 어느 프로세스가 CPU를 차지하도록 할 것인가 결정.
② 작업 스케줄러(장기) : 어느 작업이 자원을 이용할 것인가를 결정.
2) 각종 스케줄링 기법
※ 선점기법과 비선점기법
․ 선점기법(Preemptive)
- 하나의 프로세스가 CPU를 점유하고 있을 때 다른 프로세스가 CPU를 빼앗을 수 있는 방법으로 많은 오버헤드가 발생함.(RR, SRT, MFQ)
․ 비선점기법(Non-Preemptive)
- 프로세스에게 이미 할당된 CPU를 강제로 빼앗을 수 없고, 사용이 끝날 때까지 기다려야 하는 방법.(FIFO,HRN,SJF,기한부,우선순위 스케줄링)
① FIFO 스케줄링
- 대기 큐에 먼저 들어온 작업에게 CPU를 먼저 할당.
② 우선순위(Priority) 스케줄링
- 각 작업마다 우선순위를 정하여 우선순위가 높은 프로세스에게 CPU를 할당하는 기법.
③ 기한부(DeadLine)스케줄링
- 작업이 주어진 제한 시간(DeadLine)안에 작업이 완료되도록 하는 기법.
④ Round Robin 스케줄링
- FIFO와 같은 방법이지만, 주어진 시간 할당량 안에 작업을 마쳐야 하며, 할당량을 다 소비하고도 작업이 끝나지 않은 프로세스는 다시 대기 큐의 맨 뒤로 되돌아간다.
⑤ SJF(Shortest Job Fist)스케줄링
- 작업 시간이 가장 적은 프로세스에게 CPU를 먼저 할당하는 기법.
⑥ SRT(Shortest Remaining Time) 스케줄링
- 실행시간 추정치(남은 시간)가 가장 적은 프로세스에게 먼저 CPU를 할당하는 방법.
⑦ HRN 스케줄링
- 우선 순위에 의한 방법.
⑧ 다단계 피드백 큐 스케줄링
- 다양한 특성의 작업이 혼합된 경우 유용하며, 각 단계별 Time Slice 동안 처리되지 못한 작업들은 다음 레벨의 큐로 이동하고, 가장 마지막 레벨에서는 FIFO방식으로 작업을 완료함.
'Theory > Operating System' 카테고리의 다른 글
운영체제의 실제 (0) | 2018.08.12 |
---|---|
분산 운영체제의 기본 (0) | 2018.08.12 |
정보관리 (0) | 2018.08.12 |
기억 장치 관리 (0) | 2018.08.12 |
운영체제의 개요 (0) | 2018.08.12 |
댓글