프로세스 메모리, 런타임 메모리

(2024-01-18)

S/W 메모리, Heap Memory, 힙 메모리, Stack Memory, 스택 메모리, 스택 , 메모리


1. 런타임 메모리 또는 프로세스 메모리  :  (S/W 관점, Runtime 실행 차원기억장치 영역)

  ㅇ `프로그램의 실행 관점` 즉, `프로세스`에서,
     - 메모리데이터를 일시적으로 기억해두는 영역

  ㅇ 각 프로세스는 자신 만의 주소 공간을 갖음
     - 따라서, 그에 상응하는 메모리를 필요로 함   ☞ 가상 메모리 참조

  ㅇ 한편, 프로그램의 실행 관점에서, 기억 공간을 어떻게 연결 사용하는가에 대한 관점 둘(2)
     - `참조`  :  주소변수 간의 관계
        . 메모리 내 위치 참조를 위해, `주소`라는 수치화된 값을 이용하며,
        . 수치로된 `주소`를 기억하기 어려워, 그에 이름을 붙인 `변수`를 사용하게 하는 것
     - `바인딩`  :  변수와 기억장소 간의 관계
        . 변수에 기억장소의 할당은, 특정 메모리 공간바인딩하는 것이며,
        . 이는, 변수,프로시저,상수 등의 이름(식별자)을 실제 기억되는 어떤 속성(값)과 연관짓는 것 


2. 런타임 메모리 또는 프로세스 메모리의 할당 영역 구분

     

  ㅇ 영구 메모리 (Permanent)  :  정적인 메모리  (전역 영역)
     - 텍스트 영역 (코드 영역) : 프로그램 명령어, 함수 등이 저장되는 영역 (실행 코드)
        . 적재된 프로그램 코드
           .. 여러 프로세스가 동일 프로그램으로 실행 가능하므로,
           .. 텍스트 섹션은 공유될 수 있음
     - 데이터 영역 (데이터 섹션) : 전역 변수, 정적 변수 등이 저장되는 영역
        . 초기화되는 영역(data)과 초기화되지 않는 영역(BSS)으로 구분됨

     * 특징
        . 고정 크기이므로, 실행 시간 동안 크기가 변하지 않음      
     * 한편, 
        . 과거, 완전히 정적으로 만 할당되는 대표적인 언어의 例) : FORTRAN 
        . 현재, 대부분의 언어는 상황에 따라, 정적 할당, 동적 할당이 적절히 이루어짐

  ㅇ 스택 메모리 (Stack Memory), 스택 섹션 (Stack Section)  :  동적 자동 메모리
     - 지역 변수, 함수 호출, 함수 매개 변수 등에 관여되는 자동 변수가 저장되는 영역
        . 블록 내 생성된 지역 변수를 처리하기 위해 사용됨
        . 함수 호출 및 리턴(종료) 마다, 크기가 늘어나고 줄어듬
           .. 함수 호출시에, 활성 레코드가 이 곳에 푸시됨
           .. 함수가 종료되면, 자동으로 할당된 공간이 소멸됨
        . 例) 함수 매개변수, 복귀 주소, 지역 변수 등 임시 자료   ☞ 활성 레코드 참조
     - 통상, 주소 공간 상에서, 높은 주소(bottom)에서 낮은 주소(top) 순으로 할당 됨
        . 비록, 아래로 커지나, 관례상 아래쪽 끝을 꼭대기(top)라고 칭함
  
  ㅇ  메모리 (Heap Memory),  섹션 (Heap Section)  :  동적 메모리 할당
     - 주로, 어플리케이션운영체제로부터 미리 할당 받는 메모리 영역
        . 그 영역 내, 어플리케이션이 사용 가능한 일정한 메모리 공간
     - 즉, 프로그램 실행 중에, 동적으로 할당되는 메모리 영역
     - 통상, 주소 공간 상에서, 위쪽으로 확장됨
     - 例) C 언어에서 볼 때, malloc(), calloc(), free() 등에 의해 수행됨

  ㅇ 자유 영역 (Free Memory)   : 동적 메모리 해제 (미 할당 영역)
     - 필요에 따라 메모리를 할당할 수 있도록 미리 준비해두는 메모리 풀(memory pool)
        . 결국, 에 의해 할당되지 않은 자유 영역으로써,
                그 크기가 할당과 해제에 의해 자유롭게 변할 수 있음

     * 운영체제,컴파일러 등이 자동으로 관리해주는 동적 자동 메모리(스택 영역)와 달리, 
       프로그래머가 직접 관리 가능한 자유 메모리 영역

메모리 관리
   1. 참조의 지역성 (계층구조)   2. 캐쉬 메모리   3. CAM   4. MMU   5. 가상 메모리   6. 런타임 메모리   7. 메모리 맵핑  
프로세스
   1. 프로세스   2. 선점형   3. 병행 프로세스   4. 멀티 태스킹   5. 스레드   6. 런타임 메모리  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"