반응형
프로그램이 실행되기 위해서는 프로그램의 정보와 코드들이 메모리에 로드되어야하고,
프로그램안에서 사용되는 변수들을 저장한 메모리의 공간도 필요하다.
때문에 운영체제는 프로그램의 실행을 위해 다양한 메모리영역을 제공한다.
코드(code) 영역
코드 영역에는 프로그램이 실행될때 로드되었던 명령어들을 저장하고,
CPU는 코드영역에 저장되어있는 명령어를 하나씩 가져가 처리하게된다.
데이터(data) 영역
데이터 영역에는 프로그램내부의 전역변수와 정적변수가 저장되고,
프로그램의 시작과 함께 할당되며 프로그램의 종료와 함께 해제된다.
스택(stack) 영역
스택영역에는 함수의 호출에 사용되는 지역변수와 매개변수가 저장되고,
함수의 호출과 함께 할당된뒤 함수가 끝나게되면 해제된다.
스택영역은 푸시와 팝으로 데이터를 저장, 출력하고 후입선출방식으로 작동되고
메모리의 높은주소에서 낮은주소쪽으로 할당이된다.
힙(heap) 영역
힙 영역은 사용자에의해 동적으로 할당되고 해제된다.
때문에 할당후 해제를 하지않으면 메모리에 게속 남게되어 메모리낭비의 원인이되고
메모리의 낮은주소에서 높은주소쪽으로 할당이된다.
반응형
'보안 > Reversing' 카테고리의 다른 글
PE 파일 구조 - IMAGE_SECTION_HEADER (1) | 2020.07.24 |
---|---|
PE 파일 구조 - IMAGE_OPTIONAL_HEADER (0) | 2020.07.23 |
PE 파일 구조 - IMAGE_FILE_HEADER (0) | 2020.07.23 |
PE 파일 구조 - IMAGE_NT_HEADERS (0) | 2020.07.23 |
PE 파일 구조 - IMAGE_DOS_HEADER (0) | 2020.07.22 |