정보보호
메모리 구조
ljy98
2021. 8. 26. 14:35
- 메모리(Memory) 정의
- 프로그램 실행을 위한 데이터 및 코드가 들어있는 영역
- 메모리 구조 개요
- 가장 효율성 있게 정보를 저장하고 검색할 수 있도록 데이터 저장소를 구현하는 방법
- 같은 프로그램일지라도 메모리 관리에 따라 성능 차이 발생
- 메모리 관리가 되지 않은 경우 성능 저하 발생
- 선형 주소 공간(Linear Address Space) - 분할된 메모리 모델의 핵심
- 주로 가상 메모리로 불리며, 디버깅 할 때 볼 수 있는 주소
- 최대 4GB로 구성 (32비트 CPU에서만 선형 주소 공간을 쓰기 때문)
- 낮은 주소부터 높은 주소로 표현
- 하나의 프로그램의 커널, 힙, 스택, 텍스트 등 영역들로 분할
- 커널과 사용자 영역의 크기는 일정한 규칙을 가짐
(일반 모드) 커널 : 사용자 = 2GB : 2GB
(4GT 모드) 커널 : 사용자 = 1GB : 3GB
- 4GT는 4-Gigabyte Turning의 약자로 응용프로그램 메모리 터닝 또는 /3GB 스위치로 불림
- 무조건 4GB가 좋다고 할 수는 없음 (운영체제 운영에 메모리가 부족할 수 있음)
- 운영체제에 따라 CPU 아키텍처에 따라 설정(PAE)에 따라 커널과 유저의 크기는 달라질 수 있음
- 메모리 구조 영역
텍스트(text) 영역 | 실행할 프로그램의 코드가 저장되는 영역 |
데이터(Data) 영역 | 전역 변수, 정적(static) 변수 등이 저장되는 영역 |
초기화된 데이터 영역과 초기화되지 않은 데이터 영역 구분(BSS) | |
힙(Heap) 영역 | 메모리 동적 할당 시 데이터가 저장되는 영역 |
높은 주소 방향으로 데이터 증가 | |
스택(Stack) 영역 | 지역 변수, 매개변수 등의 임시 데이터가 저장되는 영역 |
후입선출(LIFO, Last In First Out) | |
낮은 주소 방향으로 데이터 증가 |