운영체제는 크게 페이징(Paging)과 세그멘테이션(Segmentation)을 통하여 프로세스의 메모리 공간을 관리한다.
Paging
페이징이란?
- 하나의 프로세스가 사용하는 메모리 공간이 연속적이여야 한다는 제약을 없앤 가상 메모리 관리 기법
- 논리 메모리를 페이지라 불리는 **고정 크기 블록**으로 분리하여 페이지를 프레임(물리 메모리)에 할당
- 페이지 크기가 먼저 결정되고 동일한 크기의 프레임 크기가 결정된다.
- 논리 메모리는 물리 메모리에 저장될 때 연속되어 저장되지 않고, 물리 메모리의 남는 프레임에 적절히 배치된다.
- 이때 물리 메모리의 어디에 저장되었는지에 대한 정보는 **page table**에 저장되어 페이지 번호와 프레임을 매핑시켜준다.
- 페이지 테이블이란?
- 가상 주소 공간을 실제 물리적 메모리 공간에 매핑(mapping)하는데 사용
- 페이지 테이블이란?
페이징의 장단점
장점
- 외부 단편화(External Fragmentation) 해결
- 외부 단편화란?
- 세그멘테이션과 같이 가변 블록을 사용할 때 발생
- 가변 크기의 메모리 블록을 할당하고 해제하는 과정에서 빈 공간이 여러군데 나뉘어 생기기 때문에 발생
- 전체 메모리에는 충분한 공간이 있지만, 연속된 공간이 부족하여 큰 프로세스를 할당하지 못하는 경우를 말한다.
- 외부 단편화란?
- 논리 주소 공간 : 논리 주소와 물리 주소 공간을 분리함으로써 물리 메모리의 크기보다 더 큰 주소 공간을 가질 수 있다.
- 메모리 관리가 용이하고 가상 메모리를 효과적으로 사용할 수 있다.
- 프로세스의 연속적 배치를 요구하지 않는다.
단점
- 내부 단편화(Internal Fragmentation) 발생
- 내부 단편화란?
- 페이징과 같이 고정 크기 블록을 사용할 때 발생
- 실제로 필요한 메모리보다 더 큰 크기의 고정 크기 메모리 블록(ex.페이지)이 할당되어 메모리가 낭비될 때 발생
- 내부 단편화란?
- 주소 변환을 위한 추가적인 오버헤드 발생 (TLB 사용으로 완화 가능)
Segmentation
세그멘테이션이란?
- 페이징처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌 서로 다른 크기의 논리적 단위로 분할하는 가상 메모리 기법
- 프로그램을 논리적 단위 (ex. 코드, 전역 변수, 힙, 스택, 라이브러리)로 나누어 별도의 세그먼트로 관리
- 각 논리적 단위로 분할된 세그먼트들은 메모리 내 각기 다른 위치에 할당될 수 있다.
세그멘테이션의 장단점
장점
- 내부 단편화 해결
- 논리적 구조 반영
- 프로세스의 논리적 구조를 반영할 수 있어 더 유연하게 관리할 수 있다.
- 필요한 만큼 동적 할당이 가능하여 메모리 낭비를 줄일 수 있다.
- 같은 코드의 세그먼트를 여러 프로세스가 공유할 수 있다.
단점
- 외부 단편화 존재
- 스왑 아웃 시, 다양한 크기의 세그먼트를 스왑 영역에 미리 확보해주어야 한다.
- 세그먼트 테이블의 관리 비용 증가
- 동적 메모리 할당 시 세그먼트 크기를 조정해야하는 부담 발생
'운영체제' 카테고리의 다른 글
[OS] 인터럽트(Interrupt) (0) | 2025.04.03 |
---|---|
[운영체제] Context Switching (문맥 교환) (0) | 2025.02.24 |
[운영체제] PCB (Process Control Block) (1) | 2025.02.24 |
[운영체제] 현재 컴퓨터의 발전 변천사 (프로세스와 스레드) (0) | 2025.02.12 |
[운영체제] Swapping : Mechanisms (0) | 2025.02.10 |