본문 바로가기
ComputerScience/OS

3. 프로세스(1)

by seongju.lee 2022. 11. 8.

(* 프로세스의 개념과  프로세스의 상태, 문맥교환이 무엇인지에 대해 정리한 내용이다.)

 

프로세스의 개념

  • 프로세스란?
    : 실행 중인 프로그램이다.

  • 프로세스의 문맥(context)
    : 프로세스 문맥은 아래와 같은 정보들을 포함하고 있는 내용이다.
    • CPU의 수행 상태를 나타내는 하드웨어 문맥
      • PC(Program Counter)가 어디를 가리키는 지를 저장
      • 레지스터에 어떤 값을 넣고, 어떤 instruction까지 실행 했는 가를 저장
      • 등등
    • 프로세스의 주소공간
      • code, data, stack에 대한 정보
    • 프로세스 관련 커널 자료구조
      • PCB(Process Control Block)
        : 운영체제는 프로세스가 생성될 때마다,
        프로세스 관리를 위해 커널 주소공간의 data영역에 해당 프로세스의 PCB라는 곳에 프로세스 메타데이터들을 저장한다.
      • 프로세스의 커널 스택
        : 운영체제는 모든 프로세스가 공유할 수 있기 때문에,
        커널 주소공간의 stack영역에 해당 프로세스의 kernel stack을 별도로 둔다.

 

 

프로세스의 상태(Process State)

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

 

  • Running
    • CPU를 잡고 instruction을 수행중인 상태
  • Ready
    • CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족하면서..!)
    • CPU제어권만 있으면 바로 instruction을 수행할 수 있는 상태
      즉, ready상태인 프로세스들이 CPU를 잡았다, 놨다 하면서 번갈아가면서 time sharing을 구현하는 것.
  • Blocked(wait, sleep)
    • CPU제어권을 주어도 당장 instruction을 수행할 수 없는 상태
    •  예를 들어,
      - 오래 걸리는 I/O작업을 수행하고 있을 때..!
      - 어떠한 프로그램의 코드가 메모리에 올라가 있지 않고, 디스크에 존재할 때(프로세스의 주소공간 전체물리적인 메모리에 존재하지 않기 때문에)
      
  • New: 프로세스가 생성중인 상태
  • Terminated: 수행(execution)이 끝난 상태

프로세스 상태도

  • 이런 식으로 프로세스 상태를 관리하는 방식은
    커널의 주소공간에 있는 data영역에 큐라는 자료구조를 생성하고 Running, Ready, Blocked, New, Terminated 와 같은 상태들에 있는 프로세들을 관리하는 것이다.

 

PCB(Process Control Block)

커널 주소공간

  • 지난 글에서 언급 하였듯이, 커널 주소공간의 data 영역에는 PCB라는 프로세스를 관리하기 위한 정보가 들어 있었다.
  • 이 PCB는 운영체제가 각 프로세스를 관리하기 위해 각각의 프로세스당 유지하는 정보이다.
  • 구조체로써 아래와 같은 정보들을 저장하고 있다.

PCB 구조

  •  PCB
    • OS가 관라하는데 필요한 부분
      - PID, Process State(running, ready, wait ...)
    • CPU 수행 관련 하드웨어 값
      - PC, register값들
    • 메모리 관련
    • 파일관련

 

문맥교환(context switch)

  • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정에서 운영체제가 수행하는 일이다.
    1. CPU를 사용중인 A프로세스의 현재 상태를 A프로세스 PCB에 저장한다.
    2. CPU를 얻게된 B프로세스의 이전 상태를 B프로세스 PCB에서 읽어와 CPU 레지스터에 적재한다.
  • 즉, context switching이 일어나는 시점은 아래와 같다.
    1. timer interrupt나 I/O요청에 의한 system call같은 경우에 의해서 CPU 제어권이 다른 프로세스에 넘어가는 경우에 일어난다.
    2. System call이나 interrupt 발생 시 무조건 문맥교환이 일어나는 것은 아니고
      예를 들어, A프로세스에서 커널모드로 넘어갔다가 다시 A프로세스로 넘어오는 경우에는 문맥교환이라고 보지 않는다.

'ComputerScience > OS' 카테고리의 다른 글

5. 프로세스 관련 시스템콜 & IPC  (0) 2022.12.28
4. 프로세스(2)  (0) 2022.12.26
2. 컴퓨터시스템 구조(2)  (0) 2022.11.06
1. 운영체제란 & 컴퓨터시스템 구조(1)  (0) 2022.11.02
[OS] Process Memory와 Thread  (0) 2022.08.03