logo
Published on

OS : 프로세스 관리

Authors
  • avatar
    Name
    Bora Choi
    Twitter

🐥 프로세스의 개념

Job vs Process

  • 작업(Job)/ 프로그램(Program)
    • 실행 할 프로그램 + 데이터
    • 컴퓨터 시스템에 실행 요청 전의 상태
  • 프로세스(Process)
    • 실행을 위해 시스템(커널)에 등록된 작업
    • 시스템 성능 향상을 위해 커널에 의해 관리 됨

프로세스의 정의

실행중인 프로그램

  • 커널에 등록되고 커널의 관리하에 있는 작업
  • 각종 자원들을 요청하고 할당 받을 수 있는 개체
  • 프로세스 관리 블록(PCB)을 할당 받은 개체
  • 능동적인 개체(active entity)
    • 실행 중에 각종 자원을 요구, 할당, 반납하며 진행

Process Control Block(PCB)

  • 커널 공간(kernel space) 내에 존재
  • 각 프로세스들에 대한 정보를 관리

프로세스의 종류

구분종류설명
역할시스템(커널) 프로세스모든 시스템 메모리와 프로세서의 명령에 엑세스할 수 있는 프로세스이다. 프로세스 실행 순서를 제어하거나 다른 사용자 및 커널(운영체제) 영역을 침법하지 못하게 감시하고, 사용자 프로세스를 생성하는 기능을 한다.
사용자프로세스사용자 코드를 수행하는 프로세이다.
병행수입방법독립 프로세스다른 프로세스에 영향을 주지않거나 다른 프로세스의 영향을 받지 않으면서 수행하는 병행 프로세스이다.
협력 프로세스다른 프로세스에 영향을 주거나 다른 프로세스에서 영향을 받는 병행 프로세스이다.

자원(Resource)의 개념

  • 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체(passive entity)
  • 자원의 분류
    • H/W resource : Processor, memory, disk, monitor, keyboard, Etc.
    • S/W resource : Message, signal, files, installed SWs, Etc.

🧱 Process Control Block(PCB)

  • OS가 프로세스 관리에 필요한 정보 저장
  • 프로세스 생성 시, 생성 됨

PCB가 관리하는 정보

  • PID (Process Identification Number) : 프로세스 고유 식별 번호

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

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

  • 메모리 관리 정보 : Page table , segment table 등

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

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

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

  • 주의점

    PCB 정부는 OS 별로 서로 다름

    PCB 참조 및 갱신 속도는 OS의 성능을 결정 짓는 중요한 요소 중 하나

🆗 프로세스의 상태(Process State)

자원 간의 상호 작용에 의해결정

프로세스 상태 및 특성

상태자원할당상태
Active(Swapped-in)running프로세서O메모리O
Active(Swapped-in)ready기타자원O, 프로세서X메모리O
Active(Swapped-in)blocked,aspleep프로세서X, 기타자원X메모리O
Suspended(Swapped-out)suspended ready프로세서X메모리X
Suspended(Swapped-out)suspended block프로세서X,기타자원X메모리X

Process State Transition Diagram

IMG_0628

Created State

  • 작업(Job)을 커널에 등록
  • PCB 할당 및 프로세스 생성
  • 커널
    • 가용 메모리 공간 체크 및 프로세스 상태 전이 : ready 혹은 suspended ready

Ready State

  • 프로세서 외에 다른 모든 자원을 할당 받은 상태
    • 프로세서 할당 대기 상태
    • 즉시 실행 가능 상태
  • Dispatch( or Schedule)
    • readyrunning

Running State

  • 프로세서와 필요한 자원을 모두 할당 받은 상태
  • Preemption : 프로세서를 뺏겨 ready 상태로 변경
    • runningready
    • 원인 : 프로세서 스케줄링
  • Block / sleep
    • runningasleep
    • I/O 등 자원 할당 요청

Blocked/Asleep State

  • 프로세서 외에 다른 자원을 기다리는 상태
    • 자원 할당은 System call 에 의해 이루어짐
  • Wake-up
    • asleepready

Suspended State

  • 메모리를 할당 받지 못한(빼앗긴)상태
    • Memory image를 swap device에 보관
      • swap device : 프로그램 정보 저장을 위한 특별한 파일 시스템
    • 커널 또는 사용자에 의해 발생
  • Swap-out(suspended) : 메모리를 할당 받지 못하는 것
  • Swap-in(resume) : 메모리를 다시 할당 받는 것

Terminated / Zombie State

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

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

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

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

  • Ready Queue
  • I/O queue
  • Device Queue

❎ 인터럽트(Interrupt)

  • 예상치 못한, 외부에서 발생한 이벤트 Unexpected,external event
  • 인터럽트 종류 : I/O interrupt, Clock interrupt, Console interrupt, Program check interrupt, Machine check interrupt, Inter-process interrupt, System call interrupt

인터럽트 처리 과정

인터럽트 발생 → 프로세스 중단 (커널 개입)→ 인터럽트 처리(interrupt handling) → 인터럽트 발생장소, 원인 파악 → 인터럽트 서비스 할 것인지 결정 → 인터럽트 서비스 루틴(interrupt service routine) 호출

🔀 Context Switching (문맥 교환)

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

    • CPU resister context ⇒ in CPU
    • Code & Data, Stack, PCB ⇒ in memory
  • Context saving : 현재 프로세스의 register context 를 저장하는 작업

  • Context restoring : register context 를 프로세스로 복구하는 작업

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

    ⇒ 커널의 개입으로 이루어짐

Context Switch Overhead

Context switching에 소요되는 비용은 OS마다 다르다.

→ OS 성능에 큰 영향을 준다

⇒ 불필요한 Context switching 을 줄이는 것이 중요하다

e.g 스레드(thread) 사용 등