본문 바로가기

Study/OS

Chapter 03. Process Management

Job / 프로그램
프로세스
  • 시스템 성능 향상을 위해 커널이 관리한다.

Job vs Process

아직 디스크에 있으면 Job

커널에 올라가면 Process

프로세스의 정의

: 실행중인 프로그램

  • 각종 자원들을 요청하고 할당 받을수 있는 개체
  • PCB를 할당받은 개체
  • 능동적인 개체
프로세스 종류

역할에 따라

  • 시스템 프로세스
  • 사용자

병행수행방법에 따라

  • 뭐랑
자원(resource)의 개념

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

이 자원을 커널이 관리한다

  • H/W 자원
  • S/W 자원

What is PCB(Process control block)

프로세스를 제어하기위해 필요한 정보들 관리하는 곳

커널이 가지고 있겠죠

PCB가 관리하는 정보
  • PID
  • 스케줄링 정보
  • 프로세스 상태
  • 메모리 관리 정보
  • 입출력 상태 정보
  • 문맥 저장 영역 (context save area)
  • 계정 정보

PCB 정보는 OS별로 서로 다르다

OS의 성능을 결정짓는다.

Process 의 상태

Created State

어떤 Job이 커널에 등록

쓸 수 있는 메모리 공간이 있으면 ready로

없으면 suspended ready

Ready State

프로세서를 기다리는 상태

  • 즉시 실행 가능 상태

running 으로 바뀌는 걸 dispatch 라고 한다.

Running State

프로세서를 할당받은 상태

프로세서를 뺏겨서 쫓겨나면 ready로. preemption이라 부름

I/O 자원이 필요하면 asleep으로. block 됐다고 한다.

Blocked / Asleep State

I/O 자원 할당 받으면 ready로 간다. wake up 이라 부름

running으로 못간다!! (프로세서에 다른 자원이 있을 수 있으니까 새치기 안된다)

Suspended State

메모리를 할당 받지 못한 상태

  • 다른 메모리가 차지한다. 그럼 이전 메모리에 대한 정보는 어디서, 어떻게 저장?
    Memory imageswap device(HDD라생각하세요) 에 보관
  • swap-out, swap-in
Terminated State

프로세스 수행이 끝난 상태

(근데 수행 끝났으면 소멸되면 되는데 왜 상태를 부여하지?)
프로세스가 어떤 자원들을 주로 요청했는지 등
이후의 프로세스 작업에 효율을 위해 정보 수집

모든 자원은 다 반납하고, PCB정보만 남아있는 상태다.


인터럽트 Interrupt

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

  • 종류
    • I/O interrupt
      • 예) 마우스 클릭
    • Clock interrupt
    • Console interrupt 등등
인터럽트 처리과정
  1. 인터럽트 발생
  2. 커널이 개입해서 프로세스 중단
    1. Context Saving 발생 : 어디까지 일했는지를 PCB(커널 내부)에 저장
    2. (프로세서) Ready 상태의 프로세스가 프로세서 할당 받는다.
  3. 인터럽트 처리 (커널)
    1. Interrupt Handling
      1. 인터럽트 발생 장소, 원인 파악
      2. 인터럽트 서비스 할 것인지 결정
    2. Interrupt Service (커널→프로세서)
      1. 결정 됐다면 인터럽트 서비스 루틴 호출!

Context Switching (문맥 교환)

Context

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

  • CPU register context (CPU 안에 저장) : 메인메모리의 정보를 반드시 register에 받아와서 CPU에서 사용
  • Code & data, Stack, PCB (메모리 안에 저장)
Context Saving

(프로세서를 뺏기거나, 시간이 다됐을 때) 현재 프로세스의 CPU register context를 (메모리의 PCB에) 저장하는 작업

Context Restoring

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

Context Switching ≒ Process Switching

≒ ( Context Saving + Context Restoring )

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

  • 커널의 개입으로 이루어진다.
Context Switch Overhead
  • Context Switch에 소요되는 비용
    • (많은 process를 사용하기 때문에 context switch 많이 일어난다.)
    • OS마다 다름
    • OS성능에 큰 영향을 줌
  • 불필요한 context switching을 줄이는 것이 중요하다!!
    • 어떻게? 스레드(thread)를 사용해라(뒤에서 배운다)

'Study > OS' 카테고리의 다른 글

Chapter 05. Process Scheduling (2of4) - FCFS, RR  (0) 2021.06.23
Chapter 05. Process Scheduling (1of4)  (0) 2021.06.23
Chapter 04. Thread Management  (0) 2021.06.23
Chapter 02. OS Overview  (0) 2021.06.16
Chapter 01. Computer System Overview  (0) 2021.06.15