메모리 구조

이정아·2022년 1월 10일
0

OS

목록 보기
2/3
post-thumbnail

1. 프로그램 실행 순서


  • 프로그램이 메모리에 로드됩니다.
  • 프로그램이 실행하게 되면 OS는 메모리(RAM)에 공간을 할당해줍니다.
  • 할당해주는 메모리 공간은 4가지(Code, Data, Stack, Heap)가 있습니다.

2. 메모리 구조

#코드 영역

  • 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역
  • CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다.

#데이터 영역

  • 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다.
  • 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다.

#힙 영역

  • 메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 메모리 영역입니다.

  • 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다.

  • 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됩니다.


Heap Overflow

  • heap이 Stack 영역을 침범하는 경우

#스택 영역

  • 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다.

  • 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다.

  • 스택 영역은 푸시, 팝으로 데이터출 저장, 인출합니다.

  • 스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됩니다.


Stack Overflow

  • Stack이 Heap영역을 침범하는 경우



참고(+이미지 포함):

https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/,

http://www.tcpschool.com/c/c_memory_malloc

0개의 댓글