프로세스(Process)란?
프로세스는 실행중인 프로그램을 뜻합니다. 여기서 프로그램은 명령어들의 모음을 포함하는 디스크에 저장된 파일을 의미합니다.
프로그램이 실행되면, 프로그램의 명령어들과 데이터가 메모리에 쌓이고 이를 프로세스라고 정의합니다.
프로세스의 메모리 구조
- 각 프로세스는 고유의 메모리 주소를 가지고 있다.
- Code 영역 (Text 영역): 프로그램을 실행시키는 명령어들이 위치하는 공간
- Data 영역: 전역변수, static 변수들이 위치하는 공간
- Heap 영역: 동적할당을 위한 메모리 공간
- Stack 영역: 지역변수, 파라미터(함수에 전달되는 인자), 주소값 등이 위치하는 공간
프로세스 상태 (Process State)
프로세스가 실행되면 프로세스의 상태가 변화한다.
- New(생성): 프로세스가 생성된 상태
- Ready(준비): 프로세스가 CPU로부터 메모리 할당을 받기 위해 기다리는 상태. 프로세스 스케줄러에 의해 할당 받으면 Running 상태가 되는데 이를 dispatch라고 함
- Running(실행): CPU가 프로세스 지시를 따라 실행하는 상태
- Waiting(대기): 프로세스가 이벤트 발생을 기다리기 위해 실행할 수 없는 상태
- Terminated(종료): 프로세스가 실행을 끝마친 상태
프로세스 컨트롤 블록 (PCB)
각 프로세스에는 그림과 같이 프로세스 관련 정보들을 담은 프로세스 컨트롤 블록(PCB)이 존재한다.
- Process State: 프로세스의 상태 (new, running, wait 등)
- Process ID: 프로세스 고유 ID와 부모 ID
- CPU registers and Program Counter: CPU에 프로세스를 등록할 때마다 저장되거나 복원하는 정보
- CPU Scheduling information: 스케쥴링 큐의 포인터와 우선순위 정보
- Memory-Management information: 메모리 정보
- Accounting information: 유저와 CPU 사용 속도, 한계 등
- I/O Status information: 장치 할당, 열려있는 파일 테이블 등
'📒 Tech Note > CS 기본기 뚝딱' 카테고리의 다른 글
[운영체제] IPC(Inter-Process Communication, 프로세스 간 통신)란? (0) | 2022.08.25 |
---|---|
[운영체제] 동기와 비동기, 블로킹과 논블로킹 (0) | 2022.08.25 |