운영체제

[운영체제] 메모리 관리 기법

n_0_jun 2024. 11. 5. 14:00
반응형

ChatGPT가 생성한 이미지 파일.

메모리 관리에서 중요한 개념:

  1. 재배치 (Relocation):
    • 프로그램이 실행될 때, 운영체제는 그 프로그램이 메모리의 어느 위치에 배치될지 사전에 알 수 없습니다. 재배치란 프로그램이 실행되는 동안 실제 메모리 위치가 동적으로 변경될 수 있는 기능을 의미합니다. 예를 들어, 프로세스가 메모리의 한 부분에서 다른 부분으로 옮겨질 때 이 재배치가 필요합니다.
  2. 보호 (Protection):
    • 메모리 보호는 각 프로세스가 자신에게 할당된 메모리 공간만 접근할 수 있도록 하여 다른 프로세스나 커널의 메모리 공간에 대한 침입을 방지합니다. 메모리 관리 장치(MMU, Memory Management Unit)가 이 역할을 수행하며, 다른 프로세스가 잘못된 주소에 접근하려고 하면 CPU에게 인터럽트를 발생시킵니다.
  3. 공유 (Sharing):
    • 운영체제는 여러 프로세스가 동일한 메모리 영역을 공유할 수 있게 합니다. 특히 코드 영역(예: 공유 라이브러리)에서는 여러 프로세스가 동일한 코드를 공유하지만, 데이터는 각 프로세스가 개별적으로 유지할 수 있습니다.

고정 및 동적 메모리 분할

  1. 고정 분할 (Fixed Partitioning):
    • 고정 크기로 메모리를 나누어 각 프로그램에 할당합니다. 메모리의 크기를 미리 정해두고 프로그램이 실행되면 해당 크기만큼의 메모리를 할당합니다. 하지만 프로그램이 해당 크기보다 작을 경우 남는 메모리는 낭비되며, 이를 내부 단편화 (Internal Fragmentation)라고 부릅니다.
  2. 동적 분할 (Dynamic Partitioning):
    • 프로그램이 필요한 만큼 메모리를 동적으로 할당합니다. 그러나 프로그램이 종료되거나 메모리를 반환하면 빈 공간이 생기는데, 이로 인해 외부 단편화 (External Fragmentation)가 발생할 수 있습니다. 외부 단편화를 해결하기 위해 메모리 압축(compaction)을 수행하여 빈 공간을 앞쪽으로 모아 사용하는 방법을 사용합니다.

동적 메모리 할당 알고리즘

  1. 최적 적합 (Best-Fit) 알고리즘:
    • 프로세스가 요청한 메모리 크기와 가장 근접한 크기의 빈 메모리 공간을 할당합니다. 그러나 이 방식은 작은 단편화를 많이 발생시켜 메모리 압축을 자주 해야 하는 문제가 있습니다.
  2. 최초 적합 (First-Fit) 알고리즘:
    • 처음부터 빈 공간을 탐색해 첫 번째로 맞는 공간에 메모리를 할당하는 방식으로, 단순하고 빠르지만 작은 조각을 남길 수 있습니다.
  3. 다음 적합 (Next-Fit) 알고리즘:
    • 마지막 할당 위치에서부터 탐색을 시작해 가장 가까운 빈 공간에 할당합니다. 이는 First-Fit보다 약간 비효율적일 수 있습니다.

버디 시스템 (Buddy System)

버디 시스템은 메모리 할당 및 반납에서 효율적인 기법으로, 메모리를 2의 제곱 크기로 분할합니다. 요청된 메모리 크기가 2^n에 해당하지 않으면 그보다 큰 2의 제곱수 크기로 할당하며, 필요 시 더 큰 메모리 블록을 나누어 할당합니다.

  • 메모리 할당: 예를 들어, 40바이트를 요청하면 가장 작은 2의 제곱수인 64바이트가 할당됩니다.
  • 메모리 반납: 반납된 메모리가 그 "버디"와 병합될 수 있다면 더 큰 블록으로 합쳐지며, 계속해서 병합이 가능합니다.
반응형