Post

[운영체제-양희재 교수님]6강 프로세스 관리

경성대학교 양희재 교수님의 운영체제 6강

프로세스

  • 참고) 멀티프로그래밍 시스템에서 CPU는 메모리의 프로세스에 CPU 시간을 나눠준다. 즉 일정 시간 프로세스를 실행하고 다음 프로세스로 넘어간다.

프로세스 vs. 프로그램

  • 프로세스 = program in execution, 실행 중인 프로그램 = task = job
  • 프로그램 ⇒ 디스크 안에서 아무것도 하지 않는다.
  • 프로그램이 메인 메모리로 올라오면
    • 메모리에 code(text), data, stack이 생성된다.
    • pc(program counter), sp(stack pointer), 레지스터가 바뀌기 시작한다.
    • 디스크 내의 프로그램은 이런 작업을 하지 못한다.

프로세스 상태

  • new
    • 하드 디스크의 프로그램이 메인 메모리로 올라온 상태
  • ready
    • 메모리로 올라와 초기화가 끝나고 실행을 위한 모든 준비가 끝난 상태
    • 입출력작업 등을 끝내고 다시 CPU를 기다리는 상태
    • Time sharing system의 경우) running 상태에서 IO를 만나지 않아도 일정 시간 후에 강제로 스위칭하므로 일정 시간 뒤 ready 상태가 된다(time expired).
  • running
    • CPU에 의해 실행되는 상태
  • waiting
    • 입출력작업 등을 하기 위해 CPU를 사용하지 않는 상태
  • terminated
    • 종료된 상태

PCB(Process Control Block)

  • Task Control Block(TCB)이라고도 함
  • 하나의 프로세스에 하나의 PCB가 할당됨
  • 프로세스에 대한 모든 정보를 가지고 있음
    • 저장하는 정보
      • 프로세스 상태 정보, process state(running, ready, waiting 등)
      • PC(현재 실행 중인 메모리 번지 정보)
      • registers
      • MMU info(base, limit)
      • CPU time(프로세스가 CPU를 사용한 기간)
      • process id, list of open files(사용 중인 파일 목록) 등
    • PCB에 프로세스에 대한 정보를 가지고 있어야 CPU가 프로세스 작업을 다시 진행할 때 직전의 상태로 복구할 수 있다.
  • PCB는 OS 내부의 프로세스 관리 영역 안에 저장

Queues

  • Job Queue
    • 하드 디스크의 수많은 job은 메인 메모리에 들어가기 위해 job queue에서 대기
    • Job scheduler(Long-term scheduler)
      • Job queue에 줄 선 job 중 어떤 job을 먼저 메인 메모리로 올릴지 결정
      • OS 코드의 일부
      • 프로세스가 종료되어야 메인 메모리의 공간이 비기 때문에 long-term(분 단위) 필요
  • Ready Queue
    • Job이 메인 메모리에 올라와도 CPU가 올 때까지 ready queue에서 대기
    • CPU scheduler(Short-term scheduler)
      • ready queue에 줄 선 프로세스 중 어떤 프로세스를 먼저 서비스할지 결정
      • 1초에 수십, 수백 번씩 일어나는 작업
      • scheduler 중 가장 중요
  • Device Queue
    • 프린터 등의 device를 사용하기 위해 device queue에서 대기
    • Device scheduler
      • device queue에 줄 선 프로세스 중 어떤 프로세스를 먼저 서비스할지 결정
      • 디바이스마다 scheduler 존재
  • terminate는 줄 서지 않아도 된다.
  • OS 내부의 프로세스 관리 영역 안에 queue와 scheduler가 포함된다.

Multiprogramming

  • Multiprogramming: 메인 메모리에 여러 프로그램을 올리는 것
    • 현대 대부분의 운영체제
  • Degree of multiprogramming: 메인 메모리에 올라간 프로세스 개수

IO-bound vs. CPU-bound process

  • 입출력을 많이 하는 프로세스 ⇒ i/o-bound process
    • 예) 워드
  • 계산을 많이 하는 프로세스 ⇒ CPU-bound process
    • 예) 슈퍼컴퓨터를 사용하는 일기예보
  • Job scheduler는 두 프로세스를 골고루 메인 메모리에 올려서 I/O 또는 CPU 작업이 한쪽으로 몰리지 않게 한다.

Medium-term scheduler

  • OS가 메인 메모리를 보며 swap device로 프로그램을 내보낼지 결정하는 작업
  • Backing store에 있는 프로세스 중 어느 것을 메인 메모리로 들여올지 결정하는 작업
  • short-term보다는 덜 일어나고 long-term보다는 자주 일어난다.

Swapping

  • Swap out
    • 메인 메모리에 올라간 프로그램이 활동하지 않고 있다면 메모리가 낭비 → 프로그램을 Swap device에 보내서 메모리를 재활용
  • Swap device(Backing store)
    • Swap out 된 프로세스를 저장할 용도의 디스크
  • Swap in
    • Swap device의 프로그램을 다시 메인 메모리로 불러오는 것
    • Swap out 될 때의 메모리 공간으로 다시 돌아간다는 보장은 없음

Context switching(문맥 전환)

  • Context switching: CPU가 작업할 프로세스를 바꾸는 작업
  • Scheduler
    • Ready Queue의 작업 중 CPU가 실행할 프로세스를 결정하는 작업을 하는 프로그램
    • 문맥 전환 발생
  • Dispatcher
    • Scheduler가 선택한 프로세스를 실행하기 위해 필요한 작업을 하는 프로그램
      • 프로세스의 상태, MMU의 base와 limit 정보 등을 PCB에 저장
      • 다음에 실행할 프로세스의 상태를 restore
  • Context switching overhead
    • 문맥 전환은 부담되는 작업이므로 자주 하지 않는 게 좋다.
    • Scheduler와 Dispatcher는 context switching overhead를 줄이기 위해 어셈블리어로 짠다.
This post is licensed under CC BY 4.0 by the author.