메모리 레이아웃

동동이·2022년 7월 18일
1

개요

메모리 레이아웃은 프로세스의 가상메모리구성을 의미한다.
프로그램을 실행하면 OS는 프로세스에게 사용 가능한 메모리 공간을 할당해주는데 이를 가상메모리라고 부른다. 같은 역할을 리눅스에서는 세그먼트가
하는데, 똑같이 윈도우에도 섹션이 있다

세그먼트 알아보러 가기

섹션은 크게 3가지로 나뉘어 진다

.text

세그먼트의 코드 세그먼트와 대응되며, 실행가능한 기계어 코드가 여기에 속한다. 읽기권한과 실행권한이 부여된다. 쓰기권한은 악용될 여지가 있기에 현대의 운영체제는 쓰기권한을 제거한다.

.data

컴파일 시점에 값이 정해진 전역 변수들이 위치한다. CPU가 읽고 쓸 수 있어야 하므로 읽기 권한과 쓰기 권한이 부여된다.

.rdata

컴파일 시점에 값이 정해진 전역 상수들과 참조할 DLL,외부 함수들의 정보가 저장된다. 읽기 권한은 부여되지만, 쓰기 권한은 부여되지 않는다.

.data,.rdata둘다 리눅스의 데이터 세그먼트에 해당한다.

stack

리눅스의 스택과 비슷하다. 윈도우 프로세스의 각 쓰레드마다 할당되는 저장 공간으로 지역변수나 함수의 리턴주소가 속한다 자유롭게 읽고 쓸 수 있어야하므로 읽기 권한과 쓰기 권한이 부여된다

heap

힙 영역은 여러 용도를 저장하기위해 할당된 공간이다. 따라서 모든 종류의 데이터가 저장될 수 있다. 스택과 다른 점은
1. 비교적 스택보다 큰 데이터 저장가능
2. 전역적으로 접근 가능
3. 동적으로 할당받음
이 있다
보통은 읽기와 쓰기권한만 가지지만 상황에 따라 실행권한을 가지기도 한다

profile
보안 공부하는 사람

0개의 댓글