Theory/Operating System

프로세스 관리

D4tai1 2018. 8. 12.

제 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

댓글