최근에 '읽고나면 진짜 쉬워지는 자료구조'라는 책을 읽고 있는데 1장의 제목이 '메모리 안 정보'였다. 변수, 배열, 문자열 등 자료구조에 대한 내용은 이해가 됐지만 정작 그 제목이 잘 이해되지 않았다. 이에 따라 프로그램 실행과 메모리의 관계, 메모리의 구조에 대해 찾아보며 메모리 내부에 정보가 어떻게 할당되는지 이해하려고 했다.
프로그램의 실행
프로그램은 메모리에 로드(load)된 후 실행된다. (=프로세스)
실행 중에는 프로그램에서 사용하는 변수들을 저장할 메모리 공간도 필요하다.
=> 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공한다.
메모리의 구조
코드 영역 (=텍스트 영역)
: 실행할 프로그램의 코드가 저장되는 영역
CPU => 코드 영역에 저장된 명령어를 하나씩 가져가서 처리함
데이터 영역
: 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역
프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸
스택 영역
: 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역
함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸
※ 스택 프레임 : 스택 영역에 저장되는 함수의 호출 정보
힙 영역
: 사용자에 의해 메모리 공간이 동적으로 할당되는 영역
사용자가 할당, 해제 관리해야 함
메모리의 낮은 주소에서 높은 주소의 방향으로 할당됨
※ Heap Overflow, Stack Overflow
Heap - Stack 영역은 같은 공간을 공유해 반비례 관계
(Heap이 메모리 위쪽 주소부터 할당되면 Stack은 아래쪽부터 할당)
=> 각 영역이 상대 공간을 침범하는 일이 발생할 수 있음
참고
'Programming > STUDY' 카테고리의 다른 글
[모두의 네트워크 기초] 5장 네트워크 계층 : 목적지를 찾는 단계 (0) | 2024.06.21 |
---|---|
[모두의 네트워크 기초] 4장 데이터 링크 계층 : MAC 주소로 통신하는 단계 (1) | 2024.06.10 |
[모두의 네트워크 기초] 3장 물리 계층 : 데이터를 전기 신호로 변환하는 단계 (0) | 2024.06.03 |
[모두의 네트워크 기초] 2장 네트워크 통신을 위한 약속 (0) | 2024.05.31 |
[모두의 네트워크 기초] 1장 네트워크 첫걸음 (0) | 2024.05.30 |