-
os: 프로그램 실행 시 메모리의 구조os 운영체제 2024. 4. 14. 21:53
메모리 구조
프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 함.
또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요함.
따라서 OS는 프로그램에게 대표적으로 4가지 메모리 공간을 제공함.
- 코드(code) 영역
- 데이터(data) 영역
- 스택(stack) 영역
- 힙(heap) 영역
코드(텍스트) 영역
실행할 프로그램의 코드가 저장되는 영역
CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다.
데이터(data) 영역
메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다.
데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다.
스택(stack) 영역
함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역.
함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸함.
이렇게 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 함.
스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됨.
힙(heap) 영역
메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 ‘그리고 해야만 하는’ 메모리 영역입니다.
힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다.
힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됨.
더보기스택과 힙의 장단점
스택
지역 변수
동적 할당x -> 할당 해체 필요 x
매우 빠른 액세스
공간은 CPU에 의해 효율적으로 관리되고 메모리는 단편화되지 않음.
스택 크기 제한 (OS에 따라 다름)
힙
전역 변수
메모리 크기 제한 없음
느림 (상대적)
효율적인 공간 사용을 보장하지 못하면 메모리 블록이 할당 된 후 시간이 지남에 따라 메모리가 조각화되어 해제 될 수 있습니다.
메모리를 관리해야합니다 (변수를 할당하고 해제하는 책임이 있습니다)
변수는 C언어 realloc() or 자바 new
complie time에 각 영역의 크기는 결정되고 고정 된다.
heap, bss는 경계에서 아래로, stack은 끝에서 위로.
'os 운영체제' 카테고리의 다른 글
OS: Semaphore (0) 2024.05.05 OS: 프로세스 동기화(Process Synchronization) (0) 2024.04.15 OS: Thread(cooperating system) (0) 2024.04.08 OS: RPC (0) 2024.04.08 OS: 프로세스, IPC, fork/exec (0) 2024.04.03