Fall in IT.

운영체제 프로세스 개념과 흐름 알아보기 본문

컴퓨터 & 네트워크/운영체제

운영체제 프로세스 개념과 흐름 알아보기

D.Y 2018. 1. 16. 23:36
반응형


안녕하세요. 

오늘은 프로세스의 개념과 흐름에 대해서 간단하게 알아보도록 하겠습니다.



프로세스의 개념

  • 실행중인 프로그램을 뜻합니다.


프로세스의 Context 개념

  • 간단하게 프로세스의 상태를 나타냅니다.
  • 프로세스의 상태로는 크게 세가지가 있습니다. CPU의 수행상태, 프로세스의 주소 공간, 프로세스 관련 커널 자료 구조
  • CPU의 수행 상태
    - CPU의 수행 상태를 나타내는 하드웨어 문맥으로 PC(Program Counter)와 각종 register가 해당됩니다.
    - Program Counter란, 프로세스의 실행될 부분 입니다.
  • 프로세스의 주소 공간
    - code, data, stack
  • 프로세스 관련 커널 자료구조
    - PCB(Process Control Block): 프로세스의 정보를 저장해놓는 블록을 의미합니다.
    - Kernel stack: 프로세스들의 정보 즉, PCB가 저장되는 공간입니다.


프로세스의 상태 (Process State)

  • Running
    - 프로세스가 CPU를 점유하고 있는 상태
  • Ready
    - 프로세스가 CPU를 점유하기위해 기다리고 있는 상태(메모리에는 이미 올라와 있을뿐만 아니라 CPU 동작을 위한 모든 조건을 만족한 상태)
  • Blocked (wait, sleep)
    - CPU를 주어도 당장 작업이 수행될 수 없는 상태
    - 예, 디스크에서 file을 읽어와야 하는 경우. 모든 파일을 읽어온 다음에 ready 상태로 변합니다.
  • Suspended (stopped)
    - 중기스케줄러에 의해서 생긴 상태로, 외부의 영향으로 인해 inactive된 상태
    - 외부에서 다시 resume 시켜야 active 상태로 변경 됩니다.




PCB 개념

  • 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보입니다.
  • 유지하는 정보
    - OS가 관리상 사용하는 정보: process state, process id, scheduling information, priority 등
    - CPU 수행 관련 하드웨어 값: program counter, registers
    - 메모리 정보: code, data, stack의 위치 정보
    - 파일 정보: open file 정보


문맥교환 (Context Switch)

  • 프로세스A가 CPU를 점유하고 있을때, 프로세스B에게 CPU 점유를 넘겨주는 과정을 말합니다.
  • 이때, CPU는 프로세스A의 상태(PCB)를 저장하고, 프로세스B의 상태(PCB)를 읽어온 후 어디서부터 동작할지 확인한 후 이어서 동작합니다.
  • System call이나 Interupt가 발생한다고 반드시 context switch가 일어나는 것은 아닙니다.
  • 잠시 커널모드로 돌아갔다가(운영체제에게 CPU가 넘어갔다가) 다시 기존 프로세스에게 넘어오는 경우도 있습니다.


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

  • Job queue: 현재 시스템 내에 있는 모든 프로세스가 담겨있는 공간입니다.
  • Ready queue: 현재 메모리 내에 있으면서 CPU를 점유하기위해 기다리는 프로세스가 담겨있는 공간입니다.
  • Device queue: I/O device의 처리를 기다리는 프로세스가 담겨있는 공간입니다.
    (프로세스들은 각 queue를 오가며 수행됩니다.)



스케줄러

(스케줄은 각각의 자원별로(cpu, memory 등) 어떻게 우선순위를 정할지 나타낼때 사용합니다.)

  • Long-term scheduler(job scheduler) 
    - 프로세스에 메모리를 주는 문제를 스케줄링 합니다.
    - 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정합니다.
    - 초기 시스템에서 사용 했었습니다. 현재는 Medium-term scheduler를 사용합니다.
  • Short-term scheduler(cpu scheduler)
    - 프로세스에 CPU를 점유시키는 문제를 스케줄링 합니다.
    - 어떤 프로세스를 다음번에 running 시킬지 결정합니다.
  • Medium-term scheduler(swapper) 
    - 프로세스에게서 memory를 뺏는 문제를 스케줄링 합니다.
    - 지금의 시스템은 중기스케줄러 사용합니다.


 참조


반응형
Comments