프로세스 (Process)

프로세스란?

실행 중인 프로그램을 의미한다.

프로세스는 운영체제로부터 자원을 할당받아 동작한다.

프로그램과 프로세스의 차이

  • 프로그램: 동작을 하지 않는 정적, 수동적 개체
  • 프로세스: 동작을 하는 능동적 개체
  • 자원: CPU, 메모리, I/O장치, 파일 등
  • 동작: CPU가 프로세스의 명령을 실행

프로세스와 운영체제

프로세스 관리자의 역할

  • 프로세스를 생성 및 삭제
  • 프로세스 실행(CPU 할당)을 위한 스케줄 결정
  • 프로세스의 상태를 관리하면 상태를 관리하며 상태 전이를 처리

프로세스의 상태

5-상태 모델

  1. 생성: 처음 작업이 시스템에 주어진 상태
  2. 준비: 실행 준비가 되어 CPU 할당을 기다리는 상태
  3. 대기: 프로세스가 특정 자원을 할당받을 때까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태
  4. 실행: 프로세스가 처리되는 상태
  5. 종료: 모든 처리가 완료되어 사용자에게 반환되는 상태

프로세스 제어 블록 (Process Control Block, PCB)

  • 각 프로세스마다 존재함
  • 프로세스를 관리해주며 프로세스의 정보를 보관
  • 프로세스가 진햄함에 따라 내용이 변경됨

PCB에서 가지고 있는 주요 정보들

TitleDescription
프로세스 상태프로세스의 상태
프로세스 번호 (PID)프로세스의 번호
프로그램 카운터 (PC)현재 프로세스 중에서 처리되고 있는게 무엇인지,
다음에 실행 될 프로세스가 무엇인지에 대한 정보
레지스터들해당 프로세스의 진행정보를 저장함.
cpu에 프로세스를 재할당할 때 진행정보를 넘겨서 하던 작업부터 재개할 수 있게 해줌

프로세스의 생성과 종료

1) 프로세스 생성 작업

  1. 프로세스의 이름(번호, PID) 결정
  2. 준비 queue에 삽입
  3. 초기 우선순위 부여
  4. 프로세스 제어 블록(PCB) 생성

1-2) 프로세스 생성 시스템 호출

  • 하나의 프로세스프로세스 생성 시스템을 호출하여 새로운 프로세스를 생성 (ex. fork())
  • 프로세스는 최상위 프로세스부터 시작해서 tree 구조로 이루어짐

TIP

  • 시스템 프로세스(최상위 프로세스): OS가 부팅하면서 제일 먼저 만들어지는 프로세스
  • 사용자 프로세스: 사용자가 만들어낸 프로세스
  • 부모 프로세스: 프로세스 생성 시스템 호출을 하게되는 프로세스
  • 자식 프로세스: 부모 프로세스에 의해 생성된 프로세스

1-3) 생성되는 프로세스의 자원

  • 운영체제로부터 직접 얻는 경우
  • 부모 프로세스 자원의 일부를 얻는 경우

왜 부모 프로세스의 자원의 일부를 받아서 사용할까?

과도한 자식 프로세스 생성에 따른 시스템 과부하 방지를 위해서!

2) 프로세스 종료

프로세스가 종료되며 부모 프로세스에게 실행결과를 되돌려 줌
(프로세스 종료 시스템은 부모에 의해서만 호출된다!)

프로세스 종료 발생 조건

  • 프로세스의 마지막 명령이 실행을 마치는 경우
  • 프로세스 종료 시스템 호출이 일어나는 경우 (ex. exit())
  • 자식에게 할당된 자원보다 더 사용하거나 더 이상 필요치 않을 때

프로세스 간의 관계

독립적 프로세스유기적 프로세스
의미다른 프로세스와 독립적임다른 프로세스와 영향을 주고 받음
프로세스 상태다른 프로세스와 자원의 상태 등을 공유하지 않음다른 프로세스와 자원의 상태 등을 공유함
실행동일한 입력에 동일한 결과를 보장함.
다른 프로세스와 무관하게 중단 및 재시작 가능
동일한 입력에 다른 결과가 나올 수 있음.
다른 결과가 나올 수 있기에 재생 불가능
데이터다른 프로세스와 공유하지 않음다른 프로세스와 공유함
Last Updated: