본문 바로가기

OS

[OS] Process

프로세스(Process)는 프로그램이 메모리에 로드되어 CPU를 할당받아 실행되는 것을 의미한다. 하나의 프로그램이 여러 프로세스가 될 수 있다.

 

구조

 

각 프로세스는 Code, Data, Stack, Heap 영역이 메모리를 할당 받습니다.

  • Code : 실행한 프로그램의 코드가 저장
  • Data : 전역변수와 Static변수 저장 프로그램 시작과 끝을 함께함 
  • Heap : 사용자가 직접 공간을 관리하는 영역 (malloc / free), compile time에 크기가 정해짐
  • Stack : 함수 호출과 관련된 지역 변수와 매개변수 저장, runtime에 크기가 정해짐, Heap과 Free 영역을 공유함

 

State

 

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

2. Ready : 프로세스가 CPU에 할당되기를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고)

3. Running : 프로세스가 할당되어 CPU를 잡고 명령을 수행 중인 상태

4. Waiting : 프로세스가 어떠한 이벤트가 발생하기를 기다리는 상태. CPU를 할당해도 당장 명령을 수행할 수 없는 상태.

5. Terminated : 프로세스가 실행을 마쳤을 때. 아직 완전히 프로세스가 제거되진 않은 상태.

 

PCB(Process Control Block)

프로세스 스케쥴링을 위해 프로세스에 관한 정보를 가지고 있는 운영체제 커널의 자료구조

각 프로세스가 생성될 때 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB가 제거된다.

  • Program Counter : 다음 실행될 명령어
  • Registers : 프로세스가 작업을 수행하는 데에 사용되는 CPU 레지스터 및 일반 레지스터
  • Scheduling information : 프로세스 우선순위, 스케쥴링 큐 포인터, CPU 점유시간 등 스케쥴링에 필요한 정보 포함
  • list of open files : 프로세스를 위해 열린 파일 목록

 

References

https://rebro.kr/172

https://jhnyang.tistory.com/7

https://jwprogramming.tistory.com/16 

https://yoongrammer.tistory.com/52

https://velog.io/@gndan4/OS-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EA%B5%AC%EC%A1%B0

 

 

'OS' 카테고리의 다른 글

[OS] 단편화, Paging, Segmentation  (0) 2023.03.01