[OS] Lecture 3. Process Management - kibitzing/EnGrow GitHub Wiki

유튜브 링크

진구

Job vs Process

Active vs Inactive (Passive) = 프로세스 vs 리소스 메모리 -> CPU

preemption vs sleep (block)

asleep -> ready (not running)

메모리 뺏기면

  • suspended
  • swap device 에 저장
  • 사진 찍어서 저장 (그래서 이미지)

재밌네!


세영

Lecture 3 - Process Management(1/2)

프로세스

실행을 위해 커널에 등록된 작업

  • 프로그램 이랑 다른 점: 프로그램은 실행 전, 프로세스는 실행 중 (인스턴스)
  • 왜 커널에 등록? 커널이 프로세스를 효율적으로 관리하여 시스템 성능 향상을 위해
  • 시스템/사용자/독립/협력 프로세스 등이 존재

자원 (Resource)

  • 프로세스에게 할당/반납되는 개체 (커널이 관리)
  • 프로세서, 메모리, 디스크, 메시지, 시그널, 파일 등 다 자원임

PCB (Process Control Block)

  • 프로세스의 상태 정보를 저장하는 블록
  • 프로세스는 메모리에 있고 커널은 PCB를 통해 프로세스를 제어함
  • PID, 스케줄링, 상태, 메모리, 입출력, 컨텍스트 (레지스터), 계정 등을 관리
  • 이걸 관리하는 속도가 OS의 속도에 중요한 영향을 미침

프로세스의 상태

  • Created
    • 커널에 등록된 프로그램
    • PCB 할당 및 프로세스 생성
    • 메모리 있으면 Ready, 없으면 Suspended Ready로 감
  • Ready
    • 프로세서로 들어가기 위해 기다리는 상태
    • Running 상태로 들어가는 과정을 Dispatch라고 함
  • Running
    • 프로세서에 들어간 상태 (자원을 모두 할당받음)
    • 프로세서를 뺏기면 Preemption (스케줄링, 우선순위 변경 등)
    • 다른 자원을 받기 위해 기다리면 Sleep (I/O 대기 등) → 자원을 받으면 다시 Running 되는게 아니라 다시 Ready로 감
  • Suspended
    • 메모리를 할당받지 못한 상태
    • 프로세스의 상태를 기억하기 위해 메모리 이미지를 Swap space에 보관
    • Swap-out (Memory → Swap) / Swap-in (Swap → Memory)
  • Terminated (Zombie)
    • 프로세스 수행이 끝난 상태, 모든 자원 반납
    • 다음에 이 프로세스가 다시 수행될 때 효율적으로 처리하기 위해 이 프로세스가 사용한 자원을 기록하기도 함

사용되는 자료구조

  • Ready Queue
    • Ready 상태에 있는 프로세스들을 관리함
    • 스케줄러의 알고리즘에 의해 선택됨
  • I/O Queue, Device Queue, …
    • Sleep 상태에 있는 프로세스들을 관리 (자원에 따라 각각 나뉨)