프로세스(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://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 |
---|