OS - Process - 1/3

YOOJUN·2023년 2월 4일

CS

목록 보기
4/18
post-thumbnail

프로세스

  • 프로세스 : 실행중인 프로그램

  • 프로세스의 문맥(context) - 프로그램이 실행해서 끝날때까지 한 순간의 상태(수행정도, 주소공간)
    1. CPU수행 상태를 나타내는 하드웨어 문맥(Program Counter, 각종 register)
    2. 프로세스의 주소 공간(code, data, stack)
    3. 프로세스 관련 커널 자료 구조(PCB - Process Control Block) - 운영체제가 해당 프로그램을 어떻게 평가하고 있는가, Kernel stack)

프로세스의 상태

  • 프로세스는 상태(state)가 변경되며 수행된다.

  1. Running : CPU를 잡고 instruction을 수행중인 상태.
  2. Ready : CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족하고, CPU만 있으면 instruction수행 가능)
  3. Blocked(wait, sleep) : CPU를 주어도 당장 instruction을 수행할 수 없는 상태. Process자신이 요청한 event(ex. I/O)가 즉시 만족되지 않아 기다리는 상태(ex. 디스크에서 파일을 읽어와야 하는 경우)

New : 프로세스가 생성중인 상태.
Terminated : 수행(execution)이 끝난 상태(프로세스의 수행이 끝나고 정리하는 과정)

Process Control Block

  • 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보

  • 다음의 구성 요소를 갖는다(구조체)
    1. OS가 관리상 사용하는 정보 : Process state, Process ID / scheduling information, priority - 어떤 프로세스가 먼저 CPU를 사용할 것인가.
    2. CPU수행 관련 하드웨어 값 : Program counter, registers
    3. 메모리 관련 : Code, data, stack의 위치정보
    4. 파일 관련 : Open file descriptors...

★문맥 교환(Context Switch)

  • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정

  • CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행한다

    1. CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장.
    2. CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴(중단된 시점부터 다시 시행).
  • System call이나 Interrupt발생시 반드시 문맥 교환이 일어나는 것은 아니다

  • (1)의 경우에도 CPU수행 정보 등 context의 일부를 PCB에 save해야 하지만, 문맥교환을 하는 (2)의 경우 그 부담이 훨씬 크다

프로세스를 스케줄링하기 위한 큐

큐의 관리

  • Job queue : 현재 시스템 내에 있는 모든 프로세스의 집합
  • Ready queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
  • Device queues : I/O device의 처리를 기다리는 프로세스의 집합
    프로세스들은 각 큐들을 오가며 수행된다.

스케줄러(Scheduler)

1. Long-term scheduler(장기 스케줄러 or job scheduler)

프로세스에 메모리

  • 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정
  • 프로세스 memory(및 각종 자원)을 주는 문제
  • degree of Multiprogramming을 제어
  • time sharing system에는 보통 장기 스케줄러가 없음(무조건 ready)
    현재는 장기 스케줄러가 없다. Medium-Term스케줄러를 이용. 현재는 프로그램이 시작하면 바로 메모리로 이동한다.

2. Short-term scheduler(단기 스케줄러 or CPU scheduler)

프로세스에 CPU

  • 어떤 프로세스를 다음번에 실행할지 결정
  • 프로레스에 CPU를 주는 문제
  • 충분히 빨라야한다(millisecond 단위)

3. Medium-Term Scheduler(중기 스케줄러 or Swapper)

  • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아낸다
  • 프로세스에게서 memory를 뺏는 문제
  • degree of Multiprogramming을 제어한다

프로세스의 상태(Process State)

  • Running, Ready, Blocked이외의 중기 스케줄러로 인해 프로세스의 수행이 정지된 상태 : Suspended(stopped)
  1. 외부적인 이유로 프로세스의 수행이 정지된 상태
  2. 프로세스는 통째로 디스크에 swap out된다
  3. ex) 사용자가 프로그램을 일시 정지시킨 경우, 시스템이 여러 이유로 프로세스를 잠시 중단

Blocked : 자신이 요청한 event가 만족되면 Ready (자신이 요청한 일을 하면서 기다리는 중)
Suspended : 외부(중기 스케줄러)에서 resume해 주어야 Active (외부에서 강제로 정지)


profile
거북이 개발자

0개의 댓글