. Lecture 3 : 프로세스 관리
본문 바로가기
Pintos Project/이론 공부

Lecture 3 : 프로세스 관리

by 불냥이_ 2021. 1. 29.

 

작업 (job) 과 프로그램 (Program)

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

 - 컴퓨터 시스템에 실행 요청 전의 상태

 

프로세스 (Process)

 - 실행을 위해 시스템(커널)에 등록된 작업

 - 시스템 성능 향상을 위해 커널에 의해 관리 됨

 

 디스크 안에 있는 상태면 job, 커널에서 실행되고 있으면 Process가 된다. 

 

실행중인 프로그램

 - 커널에 등록되고 커널의 관리 하에 있는 작업

 - 각종 자원들을 요청하고 할당 받을 수 있는 개체

 - 프로세스 관리 블록(PCB)를 할당 받은 개체

 - 능동적인 개체 : 실행 중에 각종 자원을 요구, 할당, 반납하며 진행

 

Process Control Blokc (PCB)

 - 커널 공간 내에 존재

 - 각 프로세스들에 대한 정보를 관리

 

 

프로세스의 종류

 

자원의 개념

 - 커널의 관리 하에 프로세스에게 할당/반납되는 수동적 개체

 - 자원의 분류 : 

            HW Resources : 프로세서, 메모리, 디스크, 모니터, 키보드 등

            SW Resources : Message, signal, files, installed SW 등

 

 

Process Control Block (PCB)

 - OS가 프로세스 관리에 필요한 정보 저장

 - 프로세스 생성 시, 생성 됨

 

프로세스 컨트롤 블록 (PCB)

 

PCB 가 관리하는 정보

PID : Process Identification Number;프로세스 고유 식별 번호

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

프로세스 상태 : 자원 할당, 요청 정보

메모리 관리 정보 : Page table, Segment table 등 

입출력 상태 정보 : 할당 받은 입출력 장치, 파일 등에 대한 정보 등

문맥 저장 영역 (context save area) : 프로세스의 레지스터 상태를 저장하는 공간 등

계정 정보 : 자원 사용 시간 등을 관리

 

※ PCB 정보는 OS별로 서로 다르다. 그렇기 때문에 PCB 참조 및 갱신 속도는 OS 성능을 결정 짓는 중요한 요소 중 하나이다.

 

 

프로세스의 상태(states)

 - 프로세스-자원 간의 상호작용에 의해 결정

 - 프로세스 상태 및 특성

프로세스의 상태

 

 

Created State

- 작업(Job)을 커널에 등록

- PCB 할당 및 프로세스 생성

- 커널 : 가용 메모리 공간 체크 및 프로세스 상태 전이

           -> Ready나 Suspended ready로 이동한다. (가용 메모리 공간에 따라 결정된다. 충분하면 ready)

Created State

 

 

 

 

 

Ready State

- 프로세서 외에 다른 모든 자원을 할당 받은 상태

  -> 프로세서 할당 대기 상태

  -> 즉시 실행 가능 상태

- Dispatch (or Schedule)

 Ready state -> Running state 로 되는 것을 dispatch 혹은 schedule 이라고 한다. (작업 수행을 위해 프로세서를 할당함)

Ready State

 

 

Running State

 - 프로세서와 필요한 자원을 모두 할당 받은 상태

 - Preemption : 프로세서를 빼앗기는 경우 

   ㆍRunning state -> ready states

 

   ㆍ프로세서 스케줄링 (time-out, priority changes)

 - Block/sleep : 추가 자원(IO등)이 필요할 때, 자원을 할당받을 때까지 작업을 Block한 후, sleep 상태로 대기한다. 

   ㆍRunning state -> asleep state

   ㆍI/O 등 자원 할당 요청

Running State

 

Blocked/Asleep State

- 프로세서 외에 다른 자원을 기다리는 상태 : 자원할당은 System Call에 의해 이루어지

- Wake-up

  ㆍ Asleep state -> ready state (이 프로세스가 block되면서 프로세서를 반환되었기 때문에 다시 running할려고 해도 프로세서가 이미 다른 프로세스에 할당되어있을 수도 있다. 그렇기때문에 wake-up을 해도 running이 아닌 ready로 돌려보내서 차례를 기다리게 한다.)

Blokced/Asleep state

 

 

 

 Suspended State

- 메모리를 할당 받지 못한(빼앗긴) 상태

  ㆍMemory image를 swap device에 보관

     ※ Memory image : 메모리 할당을 반환하기 전에, 작업 진척(메모리 내용)을 저장해놓은 것

     ※ Swap device : 프로그램 정보 저장을 위한 특별한 파일 시스템

  ㆍ커널 또는 사용자에 의해 발생

- Swap-out (suspended) : Memory image를 저장하고 메모리 할당을 반환하는 것

- Swap-in (resume) : 저장했던 Memory image를 통해 메모리를 다시 할당하는 것 

Suspended state

 

Terminate State

- 프로세스 수행이 끝난 상태

- 모든 자원 반납 후, 커널 내에 일부 PCB 정보만 남아 있는 상태

  -> 이후 프로세스 관리를 위해 정보 수집

- 이후 완전히 프로세스를 삭제한다. 

Terminate State

 

 

 

 

 

인터럽트(Interrupt)

- 예상치 못한, 외부에서 발생한 이벤트

 

인터럽트의 종류

- IO 인터럽트

- Check 인터럽트

- Console 인터럽트

- Program check 인터럽트

- Machine check 인터럽트 (하드웨어로부터의 인터럽트)

- Inter-process 인터럽트 (다른 프로세스로부터의 인터럽트)

- System call 인터럽트

 

 

 

인터럽트의 처리 과정

인터럽트의 처리 과정
인터럽트 처리과정 2

0. Pi(현재 프로세스) 수행 중

1. Interrupt 발생

2. 현재 상태 보존을 위해 Context Saving 실행

3. Interrupt handiling 실행 : 커널이 인터럽트 발생 원인을 파악함

4. Interrupt Service 실행 : 인터럽트를 해결하기 위해 움직임

5. Interrupt Service도 하나의 별도 프로세스이기때문에 Ps(Interrupt Service 의 프로세스) 가 Pi 프로세서를 가져와서 실행

6. Ps가 인터럽트 해결

7. 다음 대기열에 있던 Pj가 Ps 프로세서를 가져와서 실행한다. (Pj도 실행되다가 멈췄던 프로세스라면 멈추기 전에 Context Saving 을 했을 것이기 때문에, Context Saving이 있었다면 Context Restoring으로 작업 현황 저장사항을 불러온다.)

 

 

Context

 프로세스와 관련된 정보들의 집합

 - CPU register context -> in CPU

 - Code & Data, Stack, PCB -> in memory

 

Context Saving

 현재 프로세스의 Register Context를 저장하는 작업 (CPU register context도 memory의 PCB에 저장한다.)

 

Context Restoring

 Register Context를 프로세스로 복구하는 작업

 

Context Switching (≒ Process Switching)

 실행 중인 프로세스의 context를 저장하고 앞으로 실행 할 프로세스의 context를 복구하는 일 

 이는 커널의 개입으로 이루어진다.

 

Context Switch Overhead

- Context Switching에 소요되는 비용

  -> 이 비용은 OS마다 다르며, OS 성능에 큰 영향을 준다.

  -> 그렇기에 불필요한 Context Switching을 줄이는 것이 중요하다. (Thread의 사용 등으로 줄일 수 있다.)

 

 

댓글