운영체제
[운영체제] 메모리 관리 기법
n_0_jun
2024. 11. 5. 14:00
반응형
메모리 관리에서 중요한 개념:
- 재배치 (Relocation):
- 프로그램이 실행될 때, 운영체제는 그 프로그램이 메모리의 어느 위치에 배치될지 사전에 알 수 없습니다. 재배치란 프로그램이 실행되는 동안 실제 메모리 위치가 동적으로 변경될 수 있는 기능을 의미합니다. 예를 들어, 프로세스가 메모리의 한 부분에서 다른 부분으로 옮겨질 때 이 재배치가 필요합니다.
- 보호 (Protection):
- 메모리 보호는 각 프로세스가 자신에게 할당된 메모리 공간만 접근할 수 있도록 하여 다른 프로세스나 커널의 메모리 공간에 대한 침입을 방지합니다. 메모리 관리 장치(MMU, Memory Management Unit)가 이 역할을 수행하며, 다른 프로세스가 잘못된 주소에 접근하려고 하면 CPU에게 인터럽트를 발생시킵니다.
- 공유 (Sharing):
- 운영체제는 여러 프로세스가 동일한 메모리 영역을 공유할 수 있게 합니다. 특히 코드 영역(예: 공유 라이브러리)에서는 여러 프로세스가 동일한 코드를 공유하지만, 데이터는 각 프로세스가 개별적으로 유지할 수 있습니다.
고정 및 동적 메모리 분할
- 고정 분할 (Fixed Partitioning):
- 고정 크기로 메모리를 나누어 각 프로그램에 할당합니다. 메모리의 크기를 미리 정해두고 프로그램이 실행되면 해당 크기만큼의 메모리를 할당합니다. 하지만 프로그램이 해당 크기보다 작을 경우 남는 메모리는 낭비되며, 이를 내부 단편화 (Internal Fragmentation)라고 부릅니다.
- 동적 분할 (Dynamic Partitioning):
- 프로그램이 필요한 만큼 메모리를 동적으로 할당합니다. 그러나 프로그램이 종료되거나 메모리를 반환하면 빈 공간이 생기는데, 이로 인해 외부 단편화 (External Fragmentation)가 발생할 수 있습니다. 외부 단편화를 해결하기 위해 메모리 압축(compaction)을 수행하여 빈 공간을 앞쪽으로 모아 사용하는 방법을 사용합니다.
동적 메모리 할당 알고리즘
- 최적 적합 (Best-Fit) 알고리즘:
- 프로세스가 요청한 메모리 크기와 가장 근접한 크기의 빈 메모리 공간을 할당합니다. 그러나 이 방식은 작은 단편화를 많이 발생시켜 메모리 압축을 자주 해야 하는 문제가 있습니다.
- 최초 적합 (First-Fit) 알고리즘:
- 처음부터 빈 공간을 탐색해 첫 번째로 맞는 공간에 메모리를 할당하는 방식으로, 단순하고 빠르지만 작은 조각을 남길 수 있습니다.
- 다음 적합 (Next-Fit) 알고리즘:
- 마지막 할당 위치에서부터 탐색을 시작해 가장 가까운 빈 공간에 할당합니다. 이는 First-Fit보다 약간 비효율적일 수 있습니다.
버디 시스템 (Buddy System)
버디 시스템은 메모리 할당 및 반납에서 효율적인 기법으로, 메모리를 2의 제곱 크기로 분할합니다. 요청된 메모리 크기가 2^n에 해당하지 않으면 그보다 큰 2의 제곱수 크기로 할당하며, 필요 시 더 큰 메모리 블록을 나누어 할당합니다.
- 메모리 할당: 예를 들어, 40바이트를 요청하면 가장 작은 2의 제곱수인 64바이트가 할당됩니다.
- 메모리 반납: 반납된 메모리가 그 "버디"와 병합될 수 있다면 더 큰 블록으로 합쳐지며, 계속해서 병합이 가능합니다.
반응형