본문 바로가기
Security_/etc

[etc] 메모리(Memory) 구조

by 낭람_ 2018. 4. 29.
반응형

[메모리 구조]



커널(Kernel) 영역

- 시스템 운영에 필요한 메모리로, 운영체제가 커널영역에 존재한다.

- 사용자는 함부로 커널 영역에 접근할 수 없다.

- 스택은 낮은주소로 쌓이기 때문에 커널영역을 침범하지 않는다.


 

(데이터 영역 위에 코드영역이 존재한다. 코드영역은 코드 자체를 의미한다)


유저(User) 영역

- 하나의 프로세스는 유저영역에서 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어져 있다.


데이터(Data) 영역

- 전역 변수와 static 변수가 할당되는 영역

- 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리에서 소멸됨

(전역변수가 프로그램이 종료될 때 까지 존재하는 이유)


힙(Heap) 영역

- 필요에 의해 동적으로 메모리를 할당 할 때 사용

(동적할당 같은 경우는 힙 영역에 속한다)

- 낮은 주소에서 높은 주소로 쌓인다


스택(Stack) 영역

- 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역

- 함수 호출이 완료되면 사라짐

- 높은 주소에서 낮은 주소로 쌓인다


Q. 힙 영역은 낮은 주소에서 높은 주소로, 스택 영역은 높은 주소에서 낮은 주소로 쌓이는데 서로 침범하지 않을까?

A. 서로 반대 방향으로 데이터가 쌓이더라도 힙 영역과 스택 영역에 큰 빈 공간이 존재 하기 때문에 자주 침범하는 일이 없다고 한다.


반응형

댓글