[운영체제] 프로세스

Updated: Categories:

프로세스에 대해 알아보자

정의

  • 실행중인 상태의 프로그램을 뜻한다.
  • 스케줄링의 대상이 되는 task임
  • 프로세스 내부에는 최소 하나의 스레드가 존재함
  • 하드디스크의 프로그램 실행 -> 메모리 할당 -> 바이너리 코드 업로드 -> 프로세스 전환


구조

image

  • text : 컴파일된 일반 코드가 존재하는 영역
  • data : 전역 변수나 초기화된 데이터가 존재하는 영역
  • stack : 매개변수 지역변수 리턴 값 저장. 컴파일시 크기 결정
  • heap : 동적 메모리를 할당 및 해제할 수 있는 영역. 런타임시 크기 결정


프로세스 상태

image

  • 생성(new) : 프로세스가 생성된 상태
  • 준비(ready) : 자원을 할당받기 위해 기다리는 상태
  • 실행(running) : 자원을 할당 받아 프로세스가 실행되고 있는 상태 (kernel mode)
  • 대기(wait/blocked) : 이벤트 및 I/O가 발생하여 완료될때까지 대기하는 상태
  • 종료(terminated) : 프로세스 종료됨

상태 전이

  1. new -> ready : 프로세스가 생성됨과 동시에 ready 상태에서 자원할당을 기다림
  2. ready -> running : 스케줄러가 ready 상태의 프로세스 하나를 골라(우선순위에 따라) 실행상태로 변경
  3. running -> ready : ready 큐에 우선순위가 높은 프로세스가 들어오면 기존 running 프로세스를 ready로 변경.
  4. running -> blocked : 프로세스 실행 중 이벤트 및 I/O가 발생될때 변경. 이 때 ready 프로세스 하나를 실행시킴 (문맥교환 발생)
  5. blocked -> ready : 이벤트가 완료된 프로세스는 ready 상태로 변경.


프로세스 제어 블록

정의

  • PCB (Process Control Block)
  • 커널 주소 공간의 data 영역에 존재하는 프로세스 정보 저장/관리용 자료구조
  • 프로세스가 생성될때마다 해당 프로세스 고유의 PCB가 생성되고, 프로세스 종료시 삭제됨

역할

  • 프로세스 스케줄링을 위해 데이터베이스를 관리
  • 만약 running -> ready (interupt) 상황에서 프로세스가 진행하던 작업을 저장해놓지 않는다면 다시 running 상태가 되었을 때 이전에 작업했던 내용은 모두 사라지게 됨
  • 따라서 running 상태의 프로세스는 작업을 수행하며 작업 진행상황(문맥,Context)을 PCB에 저장한다.

구조

image

  • PCB에는 프로세스의 여러 정보를 저장하고 있음
  • 운영체제는 PCB에 빠르게 접근하기 위해 프로세스 테이블을 사용한다


문맥 교환

  • Context Switching
  • CPU의 제어권이 다른 프로세스로 이양되는 과정을 뜻함
  • running 상태의 프로세스가 blocked 상태로 변경되면서, ready 큐의 프로세스가 CPU를 할당받을때 발생함.
    • 시스템 콜이나 인터럽트로 인한 CPU 할당 변경은 문맥교환 아님!