Computer Science/운영체제

프로세스에 관하여

lunarlity 2024. 11. 24. 19:19

이는 https://github.com/yonghwankim-dev/OperatingSystem_Study?tab=readme-ov-file를 공부하며 재요약한 글입니다.

 

프로세스란?

- 실행중인 프로그램

- 운영체제에서 프로그램을 실행하는 단위

 

프로세스의 구조

크게 네 계층으로 이루어져 있음.

순서대로 stack, heap, data, text

- stack 영역은 함수 등과 관련된 것이 저장됨. 지역변수나 매개변수 등

- heap 영역은 malloc 등으로 동적으로 할당한 메모리가 저장되는 영역

- data 영역은 global 변수들

- text는 실행가능한 코드

 

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

 크게 다음으로 이루어져 있다.

- process state : 프로그램 상태 (New, Ready, Running, Waiting, Terminated)

- process id (pid) : 프로세스 ID

- program counter : 다음에 실행할 명령어 위치

- cpu register : cpu registers (PC, IR(Instruction Register), DR 등)

- cpu scheduling : cpu가 프로세스를 어떤 순서로 실행할 것인지에 대한 것

- memory-management information : 메모리 관리 정보

- accounting information : 통계 정보, 프로그램의 실행, 시간 제한 등 CPU양의 정보

- i/o status information : 입출력 상태 정보

 

프로세스 상태 (Process State)

- New : 프로세스가 생성된 상태

- Ready : 프로세스가 프로세서에 의해 실행되길 기다리는 상태. 언제든지 시작할 수 있음.

- Running : 프로세스가 동작되고 있는 상태

- Waiting : 프로세스 이벤트가 발생하여 I/O 완료를 기다리고 있는 상태

- Terminated : 프로세스가 종료된 상태

 

프로세스 상태 변화

New -> Ready (Admitted)

Ready -> Running (cpu scheduler dispatch)

Running -> Ready (interrupt)

Running -> Waiting (i/o or event wait)

Running -> Terminated (exit)

Waiting -> Ready (i/o or event finish)

 

프로세스와 쓰레드 (Process vs Thread)

프로세스

- 한 개 이상의 쓰레드를 실행중인 프로그램

- 독립적인 자원 할당

쓰레드

- 같은 프로세스의 쓰레드끼리 자원을 공유함.

 

프로세스 스케쥴링 (Process Scheduling)

시분할 시스템 (Time Sharing System)

- 프로세스를 계속 변경하며 쓰며 사용자가 동시에 작동되는 것처럼 보이게 함.

멀티 프로그래밍 (Multiprogramming)

- 동시에 여러 프로세스 수행. CPU 사용 극대화

스케쥴링 큐 (Scheduling Queue)

- 프로세스가 Ready 상태일 시, Ready 큐에 들어감. Waiting 상태일 시 Waiting 큐에 들어감.(이벤트 발생 기다릴 때)

- PCB의 Linked List 방식으로 구현됨

 

 

 

.. 작성중