취미가 좋다

운영체제 3 : Process Management 본문

Computer Science/운영체제

운영체제 3 : Process Management

benlee73 2021. 1. 5. 18:37

간단하게 넘어갔던 프로세스에 대해 자세히 알아보자.

 

Windows 작업 관리자를 보면 프로세스들을 쉽게 볼 수 있다.

 

 

먼저 작업과 프로세스를 구별해보자.

 

작업 (Job) / 프로그램 (Program)

- 실행할 프로그램 + 데이터

 

- 디스크에 보관이 되어 있는 상태로 컴퓨터 시스템에 실행 요정 전의 상태

 

 

프로세스 (Process)

- 프로그램을 실행해 달라는 요청에 의해 프로그램이 시스템(커널)에 등록된 상태를 가진다.

 

- 시스템 성능을 향상시키기 위해 커널에 의해 관리된다.

 

- 프로그램이 시스템에 등록되어 메모리를 할당 받는다면 프로세스라고 할 수 있다.

 

- 각종 자원들을 요청하고 할당 받을 수 있고, 프로세스 관리 블록(PCB)을 할당받을 수 있다.

 

- 실행 중에 각종 자원을 요구, 할당, 반납하면서 진행하기 때문에, 능동적인 개체 (active entity)라고 볼 수있다.

 

 

프로세스의 종류

역할에 따라 시스템(커널) 프로세스, 사용자 프로세스로 나눌 수 있다.

 

병행 수행 방법에 따라 독립 프로세스, 협력 프로세스로 나눌 수 있다.

 

 

자원 (Resource)의 개념

: 커널의 관리 하에 프로세스에게 할당되고 반납되는 수동적 개체 (passive entity)이다.

 

H/W resource

- Processor, memory, disk, monitor, Etc.

 

S/W resource

- Message, signal, files, Etc.

 

 


 

Process Control Block (PCB)

 

: 프로세스를 관리하기 위해 필요한 정보들을 모아둔 것

 

- 프로세스가 생성이 되면 커널에 PCB가 생성된다.

 

- 메모리에는 커널이 쓰는 영역이 있고, 사용자와 프로세스들이 쓰는 영역이 있다.

 

- PCB 정보는 OS 별로 서로 다르고, PCB 참조 및 갱신 속도는 OS의 성능을 결정 짓는 중요한 요수 중 하나이다.

 

PCB가 관리하는 정보

 

1. PID

 

- 프로세스 고유 식별 번호

 

2. 스케줄링 정보

 

- 프로세스 우선순위 등과 같은 스케줄링 관련 정보

 

3. 프로세스 상태

 

- 프로세스가 어떤 자원을 요청했고 가지고 있는지에 대한 정보

 

4. 메모리 관리 정보

 

- 어떤 메모리를 할당 받았는 지에 대한 정보

 

5. 입출력 상태 정보

 

 

6. 문맥 저장 영역 (context sava area)

 

- 프로세스의 레지스터 상태를 저장하는 공간

 

7. 계정 정보

 

 

 

 


 

프로세스의 상태 (Process States)

 

- 프로세스는 시스템에 등록된 후에, 여러 가지 상태를 거치면서 작업을 수행한다.

 

- 그 상태는 자원 간의 상호작용에 의해 결정된다.

 

 

 

1. Created State (생성)

: 어떤 작업(Job)이 커널에 등록되어 생성된 상태이다.

 

PCB가 할당되고 프로세스가 생성된다.

 

사용할 수 있는 가용 메모리 공간을 확인하여, 메모리가 충분하면 ready로 가고 그렇지 않으면 suspended ready로 간다.

 

 

 

2. Ready State (준비)

: 프로세스(CPU)가 프로세서 외의 다른 모든 자원을 할당 받아 프로세서 할당을 기다리는 상태이다.

 

프로세서만 할당받으면 즉시 실행 가능하다.

 

Dispatch / Schedule

: 프로세서를 할당받는 것을 의미한다.

 

 

 

3. Running State (실행)

: 프로세스가 필요한 모든 자원을 할당받아 작업을 실행하고 있는 상태이다.

 

두 가지 경로로 Running State에서 벗어난다.

 

Preemption

: 프로세스를 뺏기면 Ready 상태로 넘어가는 것을 말한다.

 

프로세서의 스케줄링에 따라 다른 프로세스가 들어오면 일어난다.

 

또는 time sharing 시스템에서 자신에게 할당된 시간이 모두 끝나면 Ready로 넘어와 다시 자신의 차례를 기다린다. 

 

Block / Sleep

: I/O 자원 할당이 필요할 때 asleep로 넘어간 후, 자원을 할당받을 때까지 기다리는 것을 의미한다.

 

 

 

4. Blocked / Asleep State (대기)

: 기다리던 I/O 자원을 받았을 때, Ready 상태로 넘어가 다음 CPU 할당을 기다린다.

 

wakeup

: I/O 자원을 받아 asleep 상태에서 ready 상태로 넘어가는 것을 의미한다.

 

Suspended Blocked 상태에서 Suspended ready 상태로 넘어갈 때도 의미한다.

 


5. Suspended ready State (지연 준비)

: 메모리를 할당받지 못해 기다리는 상태이다.

 

 

 

6. Suspended blocked State (지연 대기)

: blocked 되어 asleep 상태에 있는 데, 메모리를 뺏긴 상태이다.

 

- 이후 메모리를 할당받아서 다시 동작하려고 할 때, 이전의 작업을 이어서 하려고 한다.

 

- 마지막 메모리의 상태 (Memory Image)를 저장하고, Swap device에 저장한다.

 

Swap-out (suspended)

: 메모리를 할당받은 상태에서 배앗긴 상태가 될 때, swap device에 memory image를 저장하는 것을 의미한다.

 

Swap-in (resume)

: 메모리가 할당되어 suspended blocked 상테에서 asleep 상태가 될 때, swap device로 이전 정보를 복구하는 것을 의미한다.

 

 

 

7. Terminated / Zombie State (종료)

 

: 프로세스가 자신의 할 일을 다 마쳤을 때, 소멸되기 전의 상태이다.

 

모든 자원을 반납한 상태이다.

 

이후 프로세스를 더 쉽게 관리하기 위해, 커널이 일부 PCB 정보를 수집한다.

 

수집이 끝나면 프로세스가 삭제된다.

 

 

상태 자원 할당 상태
Active
(swapped-in)
Running 프로세서 o 메모리 o
Ready 프로세서 x, 기타 자원 o
Blocked, asleep 프로세서 x, 기타 자원 x
Suspended
(Swapped-out)
Suspended ready 프로세서 x 메모리 x
suspended block 프로세서 x, 기타 자원 x

 

 

프로세스 관리를 위한 자료구조

 

Ready Queue

: ready state의 프로세스들이 줄을 서있는 공간이다.

 

프로세서 이외의 다른 자원들을 요청하여 asleep 상태에 있는 프로세스들은 자원 별로 따로 관리한다.

 

I/O Queue

 

Device Queue

 


 

인터럽트 (Interrupt)

 

: 예상치 못한 외부에서 발생한 이벤트이다.

 

키보드나 마우스를 예상하지 못한 타이밍에 입력하는 것으로 생각하면 된다.

 

인터럽트의 종류

- I/O interrupt

- Clock interrupt

- Consol interrupt

- Program check interrupt

- Machine check interrupt

- Inter-process interrupt

- System call interrupt

 

 

인터럽트 처리 과정

 

1. 인터럽트 발생

 

2. 커널이 개입하여 프로세스를 중단시킨다.

- context saving

: 어디까지 작업하고 있었는지 흐름을 PCB에 저장하는 것이다.,

 

3. 인터럽트 처리 (interrupt handling)

- 인터럽트 발생 장소, 원인 파악

 

- 인터럽트 서비스 할 것인지 결정

 

4. Interrupt service

- 인터럽트 서비스 루틴 (interrupt service routine) 호출

 

5. 이후

- 작업하던 프로세스가 다시 프로세서에서 실행되는 것이 아니라 ready 상태에 있었던 다른 프로세스가 프로세서에 올라온다.

 

- context restoring

: 그 프로세스가 저장한 문맥을 불러오는 것을 의미한다.

 


 

Context Switching (문맥 교환)

 

Context

: 어떤 작업을 수행하고 있었는 지에 대한 흐름, 즉 프로세스와 관련된 정보들의 집합이다.

 

 

프로세스에 관련된 정보는 2 곳에 저장된다.

 

- (CPU) CPU register context

- (Memory) Code & data, Stack, PCB

 

 

Context saving

인터럽트 발생시 프로세스가 뺏긴 자원은 CPU이다.

 

따라서 CPU register context를 메모리의 PCB에 저장한다.

 

Context restoring

프로세스가 다시 프로세서에 올라갈 때, 저장했던 register context를 프로세스로 복구하는 작업이다.

 

 

위의 두 과정을 포함하여 Context switching (Process switching) 라고 한다.

 

 

 

Context Switch Overhead

: Context switching에 소요되는 비용이다.

 

OS마다 다르고 굉장히 자주 일어나기 때문에, OS 성능에 큰 영향을 준다.

 

그래서 불필요한 Context switching을 줄이는 것이 중요하고 대표적인 방법으로 thread가 있다.

 

thread는 다음 글에서 살펴보자.

 

 


본 글은 HPC Lab. KOREAHECH YOUTUBE 채널의 김덕수 교수님 강의를 보고 작성되었습니다.

 

[Course] Operating System (CPA310) - 운영체제 강의

o Operating System (운영체제), CPA310, KOREATECH o Instructor: Duksu Kim (김덕수) o Course homepage: https://sites.google.com/view/hpclab/courses/operating-system 운...

www.youtube.com

 

Comments