프로그램이 CPU에 의해 실행됨 ⇨ 프로세스가 생성되고 메모리에 프로세스 주소 공간이 할당됨
프로세스는 실행중인 프로그램 이고, 운영체제가 자원을 할당하는 단위 이다.
프로그램이 실행되면 메모리를 할당받는데, 프로세스는 이 할당받은 메모리를 관리하기 위해 특정 구조를 만든다.
이것을 프로세스 주소 공간(Process Address Space) 이라고 한다.
✔️ 프로세스 주소 공간
프로세스 주소 공간에는 크게 코드, 데이터, 스택, 힙으로 네 가지의 영역으로 나눌 수 있다.
1️⃣ 코드(텍스트) Segment : 프로그램 소스 코드 저장
2️⃣ 데이터 Segment : 전역 변수 및 static 변수 저장
3️⃣ 힙 Segment : 참조형 데이터(클래스) 등 동적으로 할당되는 데이터 저장
4️⃣ 스택 Segment : 지역 변수와 매개 변수 저장
✔️ 구역을 나누는 이유?
최대한 데이터를 공유하여 메모리 사용량을 줄여야 한다.
Code는 같은 프로그램 자체에서는 모두 같은 내용이므로 따로 관리하여 공유한다.
Stack과 Data 영역을 나눈 이유는 스택 구조의 특성과 전역 변수의 활용성을 위한 것이다.
스택은 LIFO(Last In, First Out) 방식으로 동작하며, 함수 호출 시 새로운 프레임이 스택에 푸시되고, 함수가 끝나면 해당 프레임이 팝되는 방식으로 관리한다.
이러한 특성을 이용하여 지역 변수는 스택에서 실행되고 관리된다.
여러 함수에서 공통적으로 사용되는 전역변수는 따로 데이터 영역에 저장하면 메모리를 아낄 수 있다.
#참고 문헌
https://gyoogle.dev/blog/computer-science/operating-system/Process%20Address%20Space.html
'CS 지식 > 운영체제' 카테고리의 다른 글
[운영 체제] PCB & Context Switching (0) | 2024.08.21 |
---|---|
[운영 체제] System Call(시스템 콜)이란 무엇인가? (0) | 2024.08.20 |
[운영 체제] Interrupt(인터럽트)는 무엇인가 (0) | 2024.08.20 |
[운영 체제] 프로세스 vs 스레드 (0) | 2024.08.19 |
[운영체제] 운영체제란 & 운영체제의 구조 (0) | 2024.08.19 |