210130 개발일지(54일차) - 운영체제(OS) 프로젝트 #0-2 : Process & Process states

고재개발·2021년 1월 30일
0

OS Project

목록 보기
2/28

OS의 많은 역할 중 Process management에 대해 공부해보자.

프로세스(Process)

프로세스란 실행중인 프로그램이라고 생각하면 된다.

  1. 커널에 등록되고 커널의 관리 하에 있는 작업
  2. 각종 자원들을 요청하고 할당받을 수 있는 개체
  3. 프로세스 관리 블록(PCB)을 할당받은 개체

PCB(Process Control Block)

PCB는 각 프로세스들에 대한 정보를 관리하며, 커널 공간 내에 존재하면서, 아래와 같은 정보들을 관리한다.

  • PID(Process Identification Number) : 고유 식별 번호
  • 스케줄링 정보 : 프로세스 우선순위 등과 같은 스케줄링 관련 정보들
  • 프로세스 상태 : 자원 할당, 요청 정보 등
  • 메모리 관리 정보 : Page table, segment table 등
  • 입출력 상태 정보 : 할당 받은 입출력 장치, 파일 등에 대한 정보 등
  • 문맥 저장 영역 (context save area) : 프로세스의 레지스터 상태를 저장하는 공간 등
  • 계정 정보 :자원 사용 시간 등을 관리
    ※ PCB 정보는 OS에서 정해주는 것이라 OS별로 다르며, PCB 참조 및 갱신 속도는 OS 성능을 결정 짓는 중요한 요소 중 하나라고 한다.

프로세스(Process) vs 프로그램(Program)

  • 프로세스 : 실행을 위해 시스템(커널)에 등록된 작업
  • 프로그램 : 실행하고자 하는 프로그램, 프로그램이 메모리에 적재되면 프로세스가 됨


프로세스의 상태(Process States)

  1. 위의 초록 실선은 메모리를 할당 받았냐, 못 받았냐로 나뉜다.
    위의 ready와 asleep(block)은 메모리를 할당 받은 상태다.
    그 아래 suspended ready와 suspended blocked는 메모리를 할당받지 못한 상태다.

  2. 초록 실선 위의 ready, running, asleep(혹은 terminated)은 순서대로 일어나는 과정이라고 보면 된다.
    메모리 할당된 ready 상태의 프로세스가, cpu에 올라갈 수 있는 상황(실행할 수 있는 상황)이 되면 running으로 된다. 제대로 실행이 되면 exit되어 terminated되고, 입출력을 기다리는 작업 등이 필요하면 asleep(block)상태로 간다.

profile
고재개발

0개의 댓글