메모리 관리

운영체제(OS)의 메모리 관리란 컴퓨터 시스템의 메모리 자원을 효율적으로 관리하고, 프로그램들이 안정적이고 효율적으로 실행되도록 지원하는 기능을 의미합니다.
메모리 관리는 다음과 같은 주요 기능으로 구성됩니다.


1. 메모리 관리의 목적

프로세스 격리

각 프로세스가 서로의 메모리에 영향을 주지 않도록 보호.

효율적인 자원 활용

메모리의 사용을 최적화하여 시스템 성능을 극대화.

빠른 접근

프로그램이 메모리에 빠르게 접근할 수 있도록 지원.

안정성 및 보안

메모리 관리 오류로 인한 시스템 불안정성 및 보안 문제 방지.


2. 메모리 관리 기법

2.1 물리적 메모리와 논리적 메모리

물리적 메모리 (Physical Memory)

실제 RAM의 주소 공간.

논리적 메모리 (Logical Memory)

프로그램이 사용하는 가상 주소 공간.

 

2.2 메모리 할당 방식

연속 메모리 할당 (Contiguous Memory Allocation)

단일 분할: 전체 메모리를 하나의 프로세스가 사용.
다중 분할: 메모리를 여러 프로세스가 연속적으로 사용.
단점: 외부 단편화(프로세스가 종료된 후 남은 작은 메모리 공간)

분할 메모리 할당 (Partitioned Allocation)

고정 분할: 메모리를 크기가 고정된 여러 분할로 나눔.
가변 분할: 필요에 따라 크기가 다른 분할로 나눔.
단점: 고정 분할의 경우 내부 단편화(분할 크기보다 작은 메모리 사용)

 

2.3 가상 메모리 (Virtual Memory)

페이징 (Paging)

메모리를 같은 크기의 페이지로 나누어 관리.
페이지 테이블: 논리적 페이지 번호와 물리적 프레임 번호를 매핑.
장점: 외부 단편화 문제 해결, 메모리 효율성 향상.
단점: 페이지 테이블 관리의 오버헤드.

세그멘테이션 (Segmentation)

메모리를 논리적 단위(세그먼트)로 나누어 관리.
세그먼트 테이블: 세그먼트 번호와 물리적 주소를 매핑.
장점: 프로그램 논리 구조 반영, 효율적 메모리 사용.
단점: 외부 단편화 발생 가능.

페이징과 세그멘테이션 혼합 (Segmented Paging)

세그먼트를 페이지로 나누어 관리.
장점: 세그멘테이션의 논리적 구조와 페이징의 효율성 결합.


3. 메모리 관리 전략

3.1 교체 알고리즘
메모리가 부족할 때, 어떤 페이지를 교체할지 결정하는 방법입니다.

FIFO (First In First Out)

가장 먼저 들어온 페이지를 교체.

LRU (Least Recently Used)

가장 오랫동안 사용되지 않은 페이지를 교체.

LFU (Least Frequently Used)

가장 적게 사용된 페이지를 교체.

Optimal Page Replacement

앞으로 가장 오랫동안 사용되지 않을 페이지를 교체 (이론적 모델).

3.2 스와핑 (Swapping)
프로세스를 메모리에서 디스크로, 디스크에서 메모리로 옮기는 작업.
메모리가 부족할 때 프로세스를 임시로 디스크로 이동시켜 메모리를 확보.

3.3 캐시 메모리
CPU와 메인 메모리 사이에 위치한 고속 메모리.
자주 사용되는 데이터나 명령어를 저장하여 접근 속도를 향상.


4. 메모리 보호

가상 메모리

프로세스가 자신에게 할당된 메모리 외부를 접근하지 못하도록 보호.


5. 메모리 단편화

내부 단편화

고정 크기의 블록 할당 시, 사용되지 않는 공간이 발생.

외부 단편화

가변 크기의 블록 할당 시, 사용되지 않는 작은 블록들이 메모리 공간에 흩어져 발생.

해결 방법

메모리 압축 (Compaction)

메모리 블록을 모아서 연속된 공간을 만듦.

페이징

메모리를 고정 크기의 페이지로 나누어 외부 단편화 문제 해결.

버디 시스템 (Buddy System)

메모리를 2의 제곱 크기로 나누어 효율적으로 할당.


운영체제의 메모리 관리는 복잡하고 중요한 작업으로, 효율적인 메모리 사용과 프로그램 간의 보호를 위해 다양한 기법과 전략이 사용됩니다. 
이러한 기술들은 시스템의 성능과 안정성을 보장하며, 메모리 자원을 최대한 효율적으로 활용할 수 있도록 합니다.

 

+ Recent posts