일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #고클린
- #심플즈 크랙미
- #보안뉴스
- #심플즈
- #보안이슈
- #크랙미3번
- #리버싱
- Spring
- #파밍
- #크랙미4번
- #크랙미2번
- leetcode
- #크랙미 10번
- #abex크랙미4번
- 리버싱
- springframework
- #abex
- #abex크랙미
- GraphQL
- #크랙미 5번
- java
- Easy
- #크랙미
- java8
- #크랙미 9번
- Today
- Total
Halo World
OS 메모리 영역 본문
| 스택(Stack) 영역
- 프로그램이 자동으로 사용하는 임시 메모리 영역
- 지역(local)변수, 매개변수, 리턴 값과 같은 임시로 사용하는 것들에 대한 영역
- 매개변수와 리턴 값은 함수 호출 시 생성, 함수 수행이 끝나면 반환
- 스택 사이즈는 각 프로세스마다 할당되지만, 프로세스가 메모리에 로드될 때 스택 사이즈가 고정되어 있어, 런타임 시에 스택 사이즈를 바꿀 수는 없음
- 명령 실행 시 자동으로 증가/감소하기 때문에 보통 메모리의 마지막 번지를 지정
| 힙(Heap) 영역
- new(), malloc() 등을 이용하는 동적 할당 객체에 대한 영역
- 메모리 주소 값에 의해서만 참조되고 사용되는 영역
- 대개 포인터 변수를 통해 동적으로 할당받고 돌려줌
| BSS 영역
- 초기화되지 않은 데이터 세그먼트라고도 불리며, 프로그램이 실행될 때 0이나 NULL 포인터로 초기화되는 영역
- 외부 변수나 static 변수 중 초기화되지 않은 변수들이 정의되는 영역
| 데이터(DATA) 영역
- 초기화된 데이터 세그먼트라고도 불림
- 초기화된 외부 변수나 static 변수 등이 저장되는 영역
- 함수 내부에 선언된 static 변수는 프로그램이 실행될 때 공간만 할당되고, 그 함수가 실행될 때 초기화됨
| 코드(CODE) 영역
- 코드 자체를 구성하는 메모리 영역으로 Hex파일이나 BIN 파일 메모리임
- 프로그램 명령이 위치하는 곳으로 기계어로 제어되는 메모리 영역
- EIP(Extended Instruction Pointer)가 다음에 실행하는 명령을 가리키고 있음
* 코드, 데이터, 힙 영역은 하위 메모리부터 할당되고, 스택은 상위 메모리부터 할당됨
* 데이터, 스택은 정적 할당 메모리 영역이며, 힙은 동적 할당 메모리 영역
참조
http://blog.naver.com/bloodsoda/221015013243
'개발 지식 > OS' 카테고리의 다른 글
[OS 문제] 2일차 (0) | 2017.07.06 |
---|---|
커널과 쉘 (0) | 2017.07.06 |
리눅스 커널모드와 유저모드 (0) | 2017.07.04 |
페이징 교체 알고리즘 (0) | 2017.07.02 |
[OS 문제] 1일차 (0) | 2017.07.02 |