본문 바로가기
학교 공부/시스템

[System] 메모리 구조

by 그적 2019. 11. 1.

 

< 메모리구조 > 
 운영체제로부터 프로그램을 실행할 메모리 공간(RAM)을 할당받는다. 이 메모리 내부 공간은 코드 영역, 데이터 영역, 힙 영역, 스택 영역, 커널 영역으로 나뉘어있다. 

메모리 구조



 1) 코드 영역  
  : 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 불림 
     - 상수 저장 
     - 컴파일된 기계어 
     - CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리 
     - 프로그램이 시작하고 끝날 때까지 메모리에 남아있음 

 2) 데이터 영역 
  : 전역변수와 정적 변수가 저장되는 영역 
     - 프로그램이 시작하고 끝날 때까지 메모리에 남아있음 
      (전역변수의 특징 중 프로그램 시작과 종료까지 존재하는 이유이다.)  

 3) 힙 영역 
  : 사용자에 의해 메모리 공간이 동적 할당과 해제가 이루어짐 
     - 사용자가 직접 해야 하는 역영 
     - 메모리의 낮은 주소에서 높은 주소로 할당된다 
     - malloc() 또는 new연산자를 통해 할당되며, free() 또는 delete 연산자를 통해 해제됨 
     - JAVA에서 가비지 컬렉터가 자동으로 해제하는 곳 
     - 런타임 시에 크기가 결정 
` 
  4) 스택 영역 
   : 함수의 호출과 관계된 지역 변수와 매개변수가 저장되는 영역 
     - 스택에 저장되는 함수호출 정보를 스택 프레임으로 불림 
     - 메모리의 높은 주소에서 낮은 주소로 할당된다 
     - 프로그램이 자동으로 사용하는 임시 메모리 영역 
     - 컴파일 시에 크기가 결정 

   5) 커널 영역 
    : 이 영역은 시스템 운영에 필요한 메모리로, 운영체제가 커널에 존재 
     - 사용자가 함부로 커널영역에 접근 X 
     - 스택은 낮은 주소에서 높은 주소로 데이터가 쌓이기 때문에 커널 영역을 침범하지 않음

 

댓글