[ OS ] 메모리 구조

이숭인·2021년 8월 11일
0

[ OS ] 운영체제

목록 보기
8/9

메모리 구조


프로그램이 실행되기 위해서는 프로그램이 메모리에 load 되어야 합니다.

운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공해줍니다.
이때, 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간으로는

  • Code 영역
  • Data 영역
  • Heap 영역
  • Stack 영역

이 존재합니다




Code 영역

Code 영역 은 실행할 프로그램의 코드가 저장되는 영역입니다.
실제 작업을 수행하는 CPU 가 Code 영역에 저장된 명령어를 가져다가 하나씩 처리하게 됩니다.

즉, 코드 영역은 컴퓨터가 이해할 수 있는 기계어로 번역된 소스코드 이고 컴파일 시정해진 메모리 공간할당 받습니다.




Data 영역

Data 영역전역 변수정적 변수 가 저장되는 영역입니다.

컴파일시에 메모리에 할당 되며 프로세스가 실행되고, 작업을 마칠 때 까지 메모리에 계속 남아있게 됩니다.




Stack 영역

Stack 영역 은 함수의 호출과 관계되는 지역 변수매개 변수 가 저장되는 영역입니다.

스택 영역은 LIFO 방식 에 따라 동작하고, 메모리의 높은 주소 에서 낮은 주소 의 방향으로 할당합니다.

컴파일 시점할당 받을 메모리 크기가 결정됩니다.




Heap 영역

Heap 영역 은 사용자가 직접 관리해야하는 영역입니다.
사용자에 의해 메모리 공간이 동적 으로 할당 되고 해제 됩니다.

메모리의 낮은 주소 에서 높은 주소 방향으로 할당되고, 런타임 시점 에 크기가 결정됩니다.




OverFlow

Stack OverFlow

Stack 영역Heap 영역 을 침범하는 경우에 발생됩니다.

언제 Heap 영역을 침범하나?
Stack 영역 의 데이터들이 컴파일 시점에 할당받은 메모리 크기보다 더 커지게 되면 바로 위에 존재하는 Heap 영역침범 하게 됩니다.

Heap OverFlow

Heap 영역Stack 영역 을 침범하는 경우에 발생됩니다.

언제 Stack 영역을 침범하나?
Stack OverFlow 와는 반대로 Heap에 할당된 데이터들이 점점 많아져 자신에게 할당받은 영역을 넘게되어 바로 아래에 존재하는 Stack영역침범 하여 발생하게 됩니다.

profile
iOS Developer

0개의 댓글