1. 프로세스 개념
프로세스란 실행 중인 프로그램(Program in Execution)을 의미.
실행 파일 형태로 존재하던 프로그램이 Memory에 적재되고 CPU를 할당받아 실행되는 상태를 Process라고 함.
즉,
- Program : 단순히 명령어 리스트를 포함한 실행 파일 의미.
- 프로세스 : 실행 중인 프로그램 상태 의미.
프로그램이 CPU에서 실행되기 위해서는 반드시 Memory에 적재된 상태 필요.
2. Process와 메모리
Memory는 CPU가 직접 접근할 수 있는 컴퓨터 내부 기억장치 의미.
프로그램 실행을 위해서는 프로그램 코드와 데이터가 Memory에 적재된 상태 필요.
프로세스에 할당되는 메모리 공간은 다음 4가지 영역으로 구성.
- Code
- Data
- Heap
- Stack
각 Process는 이러한 메모리 공간을 독립적으로 할당받는 구조.
3. 프로세스 메모리 구조
| 영역 | 설명 |
|---|---|
| Code 영역 | 실행할 프로그램의 코드가 저장되는 메모리 영역 의미 |
| Data 영역 | 전역 변수(Global)와 Static 변수가 저장되는 메모리 영역 의미 |
| Heap 영역 | 프로그래머가 동적으로 메모리를 할당(malloc) / 해제(free)하는 메모리 영역 의미 |
| Stack 영역 | 함수 호출 시 생성되는 지역 변수와 매개변수가 저장되는 임시 메모리 영역 의미 |
4. CPU 연산과 Program Counter Register
프로그램 실행을 위해 CPU가 실제 명령어 연산 수행 필요.
CPU 내부에는 PC(Program Counter) Register 존재.
PC Register 역할은 다음과 같음.
- 다음에 실행될 명령어의 주소 저장 역할
- CPU가 실행할 명령어 결정 역할
동작 과정은 다음과 같은 구조.
- Process가 Memory에 적재되는 과정.
- Code 영역에 프로그램 명령어 저장 구조.
- PC Register가 다음 실행할 명령어 주소를 가리키는 구조.
- CPU가 해당 명령어를 읽어 연산 수행.
- 다음 명령어 주소로 이동하는 반복 구조.
이 과정의 반복을 통해 프로세스 실행 구조 형성.
핵심 정리
프로세스
- 실행 중인 프로그램 상태 의미.
- Program이 Memory에 적재되고 CPU를 할당받아 실행되는 상태 의미.
프로세스 메모리 구조
- Code : 프로그램 코드 저장 영역.
- Data : 전역 변수 / static 변수 저장 영역.
- Heap : 동적 메모리 할당 영역.
- Stack : 함수 호출 시 생성되는 지역 변수 저장 영역.
참고 자료
- KOCW, 운영체제 강의자료
https://contents.kocw.or.kr/KOCW/document/2015/cup/weonsunghyun/3.pdf - University of Illinois Chicago, Operating Systems Notes, “Processes”
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/3_Processes.html