Backend/OS

[OS] Memory Management (1) - 메모리 관리 개념

lakelight 2022. 8. 9. 19:34
728x90
반응형

Memory Management (메모리 관리)

프로그램은 프로세스가 되어 프로세서에 적재되기 위해 메모리에 적재되어야 합니다. 따라서 메모리는 중요한 작업 공간이고, 한정된 메모리를 다중 프로그래밍 환경에서 이용하기 위해서 여러 프로세스가 함께 메모리를 사용하면서 효율적으로 관리해야 합니다.

메모리를 효율적으로 관리하기 위해 메모리 관리자, 메모리 관리 장치(MMU), OS 관리 모듈이 있습니다.

 

메모리 관리 정책

  • 적재 정책(Fetch Policy)
    디스크에서 메모리로 프로세스를 언제 가져와야 할지 정합니다.
  • 배치 정책(Placement Policy)
    디스크에서 메모리로 가져온 프로세스를 어느 위치에 저장할 것인지 정합니다.
  • 대치 정책(Replacement Policy)
    메모리가 충분하지 않을 때 현재 메모리에 적재된 프로세스 중 제거할 프로세스를 정합니다.

 

메모리 주소

논리적 주소
가상 주소라고도 하며 프로그래머가 목적 코드가 저장된 공간과 프로그램에서 사용하는 배열, 구조체 등이 이에 해당합니다.

물리적 주소
논리적 주소에 대응되는 실제 주소로 메모리 칩이나 디스크 공간에서 만듭니다.

 

MMU

CPU에서 논리적 주소를 받아 고정 분할, 동적 분할, 페이징, 세그멘테이션 등을 이용한 변환 방법을 사용하여 물리적 주소로 변환 시킵니다.

이미지 출처: https://www.crocus.co.kr/1376

 

바인딩(Binding)

  • 속성과 개체 사이 또는 연산과 기호 사이의 연관 관계
  • 변수에 변수와 관련된 속성을 연관 시키는 것
  • 값들이 확정 되어 구속된 상태
  • 함수 호출된 부분에서 함수가 위치한 메모리 번지를 연결

 

바인딩 타임(Binding Time)

프로그램에서 변수들이 갖는 속성이나 값이 완전히 결정되는 시간입니다. 즉, 이름이 속성에 연결되는 시간입니다.

 

바인딩 타임의 종류

  • 컴파일 시간
    원시 프로그램을 번역할 때 이루어지며, Data, Stack등 메모리에 들어갈 변수가 정해집니다. 높은 수준의 언어를 Binary File, Object File로 전환합니다. (이때 코드가 문법에 맞는지 검사)
  • 적재시간
    프로세스를 어디에 적재해야 할 지 컴파일 과정에서 알려주지 않으면 컴파일러는 대체 가능한 상대 주소를 생성합니다. 변수를 메모리로 적재할 때 운영체제에서 메모리로 프로그램을 불러와 실행합니다.
  • 실행시간
    한 프로세스가 동일한 장소에서 작동한다면 적재 시간 과정에서 바인딩 할 수 있지만 프로세스를 실행하는 도중에 메모리의 한 세그먼트에서 다른 세그먼트로 이동한다면 바인딩 수행시간까지 지연됩니다.
    프로그램을 실행할 때 이루어지며, 변수의 값을 확정합니다. 또한 변수의 기억장소를 할당하고, 실행부터 종료까지 변수 값을 바인딩합니다.
    세그먼트(메모리 영역)에 대한 자세한 설명

이미지 출처: https://www.crocus.co.kr/1376

 

  • 링커
    모든 오브젝트 파일들을 하나의 오브젝트 파일로 합칩니다.
  • 로더
    메인 메모리에 오브젝트 파일에 있는 내용들을 올리고 Context들을 만들고 프로그램을 수행시킬 수 있도록 만듭니다.

 

정적 바인딩

실행 시간 전에 일어나고, 실행 중에 변하지 않는 상태로 유지되는 바인딩입니다.
ex) int num;

동적 바인딩

실행 시간 중에 일어나거나 프로그램 실행 과정에서 변경되는 바인딩 입니다.
ex) int* ptr = malloc(sizeof(int) * 10);

정적 할당

메모리에 적재될 크기를 미리 아는 것으로 런타임에 각 타입에 맞는 메모리 영역(Segment) 에 할당됩니다. 

동적 할당

외부 환경에 의해 변화하여 크기를 미리 알 수 없는 것으로 명시적인 명령어에 의해 실행되는 할당입니다. 동적할당이 이루어지는 영역은 힙영역입니다. 포인터나 참조 변수를 통해 접근이 가능합니다.

 

 

[참고]

1. 메모리 관리(Memory Management) 개념 및 설명

2. [운영체제(OS)] 8. 메모리 관리(Memory Management)

 

728x90
반응형