Process Management

운영체제

2020. 1. 29. 01:47

1. Process 란?

우리가 흔히 알고있는 프로그램은 해당 프로그램이 하드디스크에 존재할 때를 의미하고, 만약 그 프로그램이 실행되어 메인메모리로 올라오게 되면, 그 프로그램을 프로세스라고 부른다.

 

프로그램이 실행되어 프로세스가 되면 컴퓨터 안에 있는 PC, SP, 레지스터 값들, Text와 Data 영역, Stack, Heap 영역 등이 할당되고 사용된다. 프로그램 상태(HDD에서)는 이러한 작업이 일어나지 않지만 프로그램이 메모리에 올라와서 프로세스가 되면 많은 작업이 일어난다. 

 

2. Process의 생명주기

 

[그림] 프로세스 생명주기

 

  • New : 프로세스가 이제 막 메인메모리에 올라온 상태이다. 실행하는 것은 불가능하다.

  • Ready : 변수 초기화 등 기초 준비작업을 모두 끝나고 실행을 할 수 있는 상태이다.

  • Running : CPU가 실제로 프로세스를 수행하고 있는 상태이다. 

  • Terminated : 최종적으로 프로세스가 종료된 상태이다. 사용하던 메모리 영역이 해제된다.

  • Watinig : 프로세스 도중에 I/O 작업이 필요하여 I/O 작업을 수행하는 상태이다. 이 때 CPU는 I/O를 기다리며, 다른 프로세스를 수행한다. Waiting 상태가 끝나면 프로세스는 다시 Ready 상태가 되고, 잠시 후 다시 Running 상태가 된다.

시공유 시스템에서는 Running 상태에서 할당된 시간이 종료(Expired)되면, Waiting 상태를 거치지 않고 바로 Ready 상태로도 변할 수 있다.

 

3. PCB (Process Control Block)

PCB는 각 프로세스에 대한 다양한 정보를 담고 있는 데이터로써 사람으로 따지면 주민등록증과 유사하다. Process는 Job이나 Task와 의미상 거의 동일하기 때문에 Job, Task 등으로 불러도 좋고 Process Control Block을 TCB(Task Control Block)등으로 불러도 좋다. 각 프로세스의 PCB는 OS내부의 Process Management 부서에서 관리되며, PC, Register, MMU 정보, Process의 상태, CPU Time, PID(Process ID)등 많은 정보들이 포함된다. 구조체와 같이 구성된다.

 

4. Waining Queue (대기 큐)

 

[그림] 대기 큐의 종류

 

1) Job Queue : HDD에 있던 프로그램들이 메모리에 올라올 때, 만약 메인 메모리가 가득 찼거나 CPU가 다른 작업을 수행 중이라면 메모리에 올라오기 전에 어느정도 기다려야하는데 HDD의 프로그램들이 잠시 기다리는 곳을 Job Queue라고 한다.

 

2) Ready Queue : 메인메모리에 프로그램이 올라왔다고 하더라도 바로 CPU의 서비스를 받을 수 있는 것은 아니다. 다른 프로그램이 수행 중이면 기다렸다가, 해당 프로그램이 I/O를 시작하거나, 시공유시스템의 경우 기존 프로세스가 시간초과되면 실행된다. 이렇게 이미 메모리에 올라온 프로세스들이 실행을 위해 대기하는 곳을 Ready Queue라고 한다.

 

3) Device Queue : I/O장치 (e.g. 프린터, 키보드, 마우스 등)을 이용하려면 기존 I/O 작업이 끝나기를 기다렸다가 밀려있던 모든 작업이 끝나면 비로소 I/O장치를 사용할 수 있다. 프린터는 프린터큐, 마우스는 마우스큐, 키보드는 키보드큐와 같이 각각 I/O 장치들은 각자의 대기 큐를 가지고 있는데, 이러한 I/O 장치들의 큐들을 통틀어서 Device Queue라고 부른다.

 

+) 그럼 Terminated는? 이라는 질문이 나올 수 있다. 어떠한 프로세스가 종료될 때는 기다릴 필요 없이 바로 종료된다. 즉 Terminated 상태를 위한 큐는 필요 없다.

 

5. Scheduling (스케줄링) 

1) Job Scheduler : Job Queue의 프로그램들을 어떤 순서로 메모리에 올릴 것인지 결정한다. 이러한 과정은 프로그램이 새로 시작될 때, 메인메모리가 가득찬 경우 등의 상황에만 발생하므로 자주 일어나지 않고 어쩌다 한번(수분 ~ 수십분) 일어난다. 때문에 이러한 스케줄러를 Long Term Scheduler라고도 한다.

 

2) CPU Scheduler : Ready Queue의 프로세스들을 어떤 순서로 서비스 할 것인지에 대한 스케줄러이다. 시공유 시스템의 경우 이러한 과정은 1초에도 수십번에서 많게는 수백번도 일어나기 때문에 이러한 스케줄러를 Short Term Scheduler라고도 한다. 모든 스케줄링 중에서 CPU 스케줄링이 가장 중요하다.

 

3) Device Scheduler : Device Queue의 프로세스들을 어떤 순서로 I/O 장치를 이용하게 할 것인지에 대한 스케줄러이다. 이는 Disk Scheduler, Printer Scheduler, Mouse Scheduler 등 I/O, 보조기억 장치 스케줄러를 통틀어 가리키는 말이다.

 

4) Degree of Multi Programminig : 메인 메모리에 프로세스가 몇개나 올라와 있는지를 의미함. (만약 3개의 프로세스가 실행중이라면 Degree는 3)

 

5) I/O Bound Process VS CPU Bound Process : I/O Bound Process의경우 대부분의 시간을 I/O하는데 쓰는 프로세스들을 의미하고 CPU Bound Process는 대부분의 시간을 CPU로 연산하는데 쓰는 프로세스를 의미한다. 운영체제(Job Scheduler)는 이들을 적절하게 배합하여 I/O 장치와 CPU 모두 너무 오랫동안 쉬게하지 않아야한다.

 

6. Swapping (스와핑)

1) Swapping : 서버와 같이 여러 사용자가 하나의 메모리를 공유하는 경우에 만약 한 사용자가 자리를 비우면 그 사용자가 돌아올 때 까지 해당 프로세스에 메모리를 할당할 이유가 없다. 때문에 PCB(Process Control Block)의 CPU Time등을 확인해서 오랫동안 동작이 없는 프로세스는 잠시 HDD로 내려놓고, 다른 프로세스를 실행하거나 기존 프로세스에 메모리를 더 할당하는 등 메모리를 더 효율적으로 활용하다가, 해당 사용자가 돌아와서 작업을 수행하면 다시 메모리에 프로세스를 올린다. 메모리에서 HDD로 내리는 작업을 Swap Out이라고 하고, HDD에서 다시 메모리로 올리는 작업을 Swap In이라고 하며, 이러한 목적으로 사용되는 HDD 공간을 Backing Store 혹은 Swap Device라고한다.

 

2) MIdium Term Scheduler : Swapping 역시 여러 프로세스들이 HDD로 내려가고 다시 메모리로 올라오고 하기 때문에 어떤 순서로 프로세스를 먼저 내리고 올릴지 결정해야한다. 이러한 스케줄링 작업은 Short Term Scheduling 보다는 적게 일어나지만 Long Term Scheduling 보다는 자주 일어난다. 때문에 이러한 스케줄링 작업(Swapping Scheduling)을 Midium Term Scheduling이라고 한다.

 

7. Context Switching (컨텍스트 스위칭)

1) Context Switching : 시공유 시스템의 경우 일정 시간이 지나면 기존 프로세스를 Ready 상태로 만들고 다른 프로세스를 Running 상태로 만들어서 실행한다. 이렇게 실행하는 프로세스를 Switch 하는 것을 통틀어서 Context Switching 이라고 한다.

 

2) Scheduler : Context Switching을 전문적으로 담당하는 스케줄러는 위에서 배운 CPU 스케줄러이다. CPU 스케줄러는 Ready Queue에 대기 중인 프로세스를 어떤 순서로 실행시킬 것인지에 대한 스케줄러이다.

 

3) Dispatcher : 만일 프로세스 A의 코드 중 100번 라인까지 실행했고 작업 중에 10개의 데이터를 레지스터에 저장했었다면, 스위치할 때 이 정보들을 보존해야 A의 차례가 돌아왔을 때 이전에 수행하던 작업이 끊기지 않고 수행될 수 있다. 때문에 프로세스 A를 수행하다가 B로 넘어가면 그러한 정보를 저장하고, 다시 A의 차례가 왔을 때, 정보를 다시 꺼내서 PC, SP, Register 등에 할당한다. 이러한 작업을 수행하는 프로그램을 Dispatcher라고 한다.

 

 

8. 정리하기

  • 1) 프로세스 : 메모리에 올라온 프로그램
  • 2) 프로세스 생명주기 : New - Ready - Running - Waiting - Terminated
  • 3) PCB : 주민등록증 처럼 프로세스의 모든 정보 저장 (PID, PC, Register, MMU 등)
  • 4) 대기 큐 (Queue) : Job, Ready, Device Queue 등
  • 5) Scheduler : Job, CPU, Device Schduler 등
  • 6) Swapping : 안쓰는 프로세스 HDD로 내리고, 다시 쓰이면 메모리로 올리는 작업
  • 7) Context Switching : Running 프로세스를 Ready로 만들고 다른 프로세스로 전환
  • 8) Dispatcher : 컨텍스트 스위칭할 때 필요한 정보(PCB를 저장하고 꺼내는 프로그램

 

9. Reference

 

운영체제

운영체제의 정의 및 역할 등에 대해 알아보고, 운영체제의 주요 요소들, 즉 프로세스 관리, 주기억장치 관리, 파일 시스템 등에 대해 공부한다.

www.kocw.net

'운영체제' 카테고리의 다른 글

CPU Scheduling (2) - SJF (Shortest Job First)  (0) 2020.03.05
CPU Scheduling (1) - FCFS (First Come, First Served)  (0) 2020.02.04
CPU Scheduling Criteria & Kinds  (0) 2020.02.04
O/S Service  (0) 2020.01.21
Dual Mode & H/W Protection  (2) 2020.01.21
High Level OS & Interrupt based OS  (0) 2020.01.08
History of OS  (0) 2020.01.08