aajin126's devlog

[Operating System] 프로세스의 개념과 상태 본문

Computer Science/Operating System

[Operating System] 프로세스의 개념과 상태

aajin126 2023. 3. 28. 16:31

Process(프로세스) : 실행 중인 프로그램

 

프로세스의 문맥(context)

  • CPU 수행 상태를 나타내는 하드웨어 문맥
    • Program Counter(PC)
    • 각종 register
  • 프로세스의 주소 공간
    • code, data, stack
  • 프로세스 관련 커널 자료 구조
    • PCB
    • Kernel stack

프로세스의 상태(Process State)

  • Running
    • 프로세스가 CPU를 점유하 instruction을 수행 중인 상태
  • Ready
    • Ready queue에서 CPU를 기다리는 상태( 메모리 등 다른 조건을 모두 만족하여 CPU를 할당받으면 바로 실행될 수 있는 상태일 때)
    • 실행할 순서가 되면 scheduler가 CPU를 할당해준다.
  • Blocked
    • CPU를 할당해도 당장 명령을 수행할 수 없는 상태
    • Process 자신이 요청한 event(ex : I/O 요청)가 즉시 만족되지 않아 이를 기다리는 상태
    • System call을 했을 때 CPU는 Disk에 요청을 하는데, 그 경우에는 I/O device의 queue에 대기를 하게 되고(main memory의 PCB에 blocked라고 표시된다.) blocked 상태가 된다.
  • New
    • 프로세스가 생성 중인 상태 (유효한 PC 값을 가지지 못한 상태)
  • Terminated
    • 수행(execution)이 끝난 상태

참고 ) Semaphore (S/W 적인 리소스를 요청할 때)

 

프로세스 상태도

Process Control Block(PCB)

PCB 구조

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

  • OS가 관리상 사용하는 정보
    • pointer, process state(running, blocked 등의 상태 저장), process number(ID)
    • scheduling information
    • priority( Process 중에 커널에 관련된 중요한 프로세스는 우선권을 부여해주는 등 프로세스의 우선권을 부여한다.)
  • CPU 수행 관련 하드웨어 값
    • Program counter, registers
    • Running에서 Ready 상태로 갈 때 이 값들을 저장한다.
  • 메모리 관련
    • Code, data, stack의 위치 정보
  • 파일 관련
    • Open file descriptors(list of open files) ...

문맥 교환(Context Switch)

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

 

어떤 프로세스를 사용자 모드에서 수행하다가 ready나 blocked의 상태로 변할 때 문맥 교환이 일어나는데, 이 때 CPU에 할당되는 프로세스가 바뀌기 때문에 커널모드로 context switch가 되고 OS가 다음 프로세스를 CPU 쪽으로 로딩하면서 커널에서 다음 프로세스로 다시 context switch가 일어난다. 

 

System call이나 Interrupt가 발생하는 경우 반드시 문맥 교환이 일어나지는 않는다. 

  • 프로세스 실행 중에 Interrupt나 System call으로 인해 커널모드로 전환하여  ISR이나 System call 함수를 불러 처리한 후 문맥교환 없이 사용자 모드로 전환될 수 도 있는데, 이 경우에도 CPU 수행 정보 등 context의 일부를 PCB에 저장해야 한다.
  • 프로세스 실행중에 timer interrupt나 I/O 요청 system call의 경우 문맥교환이 일어난다.

문맥 교환이 일어나면 CPU를 내어주는 프로세스의 PC나 register, 상태 등을 PCB에 저장하고 CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어온다. 

 

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

  • Job queue : 현재 시스템 내에 있는 모든 프로세스의 집합
  • Ready queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합 
    • OS가 queue header를 관리하고, head가 프로세스의 PCB를 관리한다. 이 head가 linked list로 연결되어 있다. ( PCB 구성 요소 중 pointer가 linked list를 만든다.) OS는 프로그램들을CPU에 할당해주고 CPU에서 빠져나온 프로그램을 list 끝에 달아준다.
  • Device queue : I/O device의 처리를 기다리는 프로세스의 집합

참고)

Ewha Woman Univ. Operating System (2023-1. Prof. JinWook Kwon)

Comments