반응형
[메모리 구조]
커널(Kernel) 영역
- 시스템 운영에 필요한 메모리로, 운영체제가 커널영역에 존재한다.
- 사용자는 함부로 커널 영역에 접근할 수 없다.
- 스택은 낮은주소로 쌓이기 때문에 커널영역을 침범하지 않는다.
(데이터 영역 위에 코드영역이 존재한다. 코드영역은 코드 자체를 의미한다)
유저(User) 영역
- 하나의 프로세스는 유저영역에서 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어져 있다.
데이터(Data) 영역
- 전역 변수와 static 변수가 할당되는 영역
- 프로그램의 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리에서 소멸됨
(전역변수가 프로그램이 종료될 때 까지 존재하는 이유)
힙(Heap) 영역
- 필요에 의해 동적으로 메모리를 할당 할 때 사용
(동적할당 같은 경우는 힙 영역에 속한다)
- 낮은 주소에서 높은 주소로 쌓인다
스택(Stack) 영역
- 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역
- 함수 호출이 완료되면 사라짐
- 높은 주소에서 낮은 주소로 쌓인다
Q. 힙 영역은 낮은 주소에서 높은 주소로, 스택 영역은 높은 주소에서 낮은 주소로 쌓이는데 서로 침범하지 않을까?
A. 서로 반대 방향으로 데이터가 쌓이더라도 힙 영역과 스택 영역에 큰 빈 공간이 존재 하기 때문에 자주 침범하는 일이 없다고 한다.
반응형
'Security_ > etc' 카테고리의 다른 글
[운영체제] 인터럽트 벡터(Interrupt Vector) / 인터럽트 벡터 테이블 (Interrupt Vector Table) (1) | 2021.09.27 |
---|---|
[Linux] vim 설치 및 설정 (0) | 2019.10.16 |
[etc] 쉘 코드 모음 (1) | 2018.10.03 |
[etc] Stack? (0) | 2018.10.01 |
[etc] 빅/리틀 엔디언 #비교 (0) | 2018.08.24 |
댓글