페이징 (Paging)
페이징과 세그먼테이션은 메모리 관리 기법 중 하나로
물리적 메모리를 작은 고정 크기의 블록이나 페이지로 나누는 것을 말한다.
가상 메모리 시스템에서 물리적인 메모리를 가상으로 나눈 작은 단위를 페이지(Page)라고 하고,
프로세스가 실행되는 동안, 그 프로세스의 코드와 데이터는 페이지로 나누어져 디스크에 저장된다.
페이지는 보통 고정된 크기를 가지며, 이 크기는 시스템에 따라 다를 수 있다.
일반적으로 페이지의 크기는 1 ~ 4KB이다.
물리적인 메모리(RAM)를 가상 메모리의 페이지와 일치시키는 데 사용되는 물리적인 단위를
페이지 프레임(Page Frame)이라고 한다.
페이지 프레임의 크기는 페이지와 동일하며, 주로 4KB 또는 4MB와 같이 고정 크기를 가진다.
페이지 프레임은 페이지를 실제로 메모리에 로드하고 저장하는 데 사용된다.
페이지 프레임들이 메모리에 적절히 배치되어야 프로세스 페이지들을 효과적으로 관리할 수 있다.
분할된 페이지는 가상 메모리와 연결되어, 프로세스가 필요한 메모리를 할당받을 때 빈 페이지를 사용한다.
페이징은 메모리 단편화를 줄이고, 프로세스 간의 격리를 쉽게 구현할 수 있도록 도와준다.
세그멘테이션 (Segmentation)
메모리를 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할하는 방식을 기반으로 하는 기법이다.
각 세그먼트는 서로 다른 종류의 데이터나 프로그램 코드를 나타내며, 고유한 이름과 크기를 갖는다.
세그먼테이션은 메모리를 동적으로 할당하고 확장하기에 적합한 방법을 제공한다.
각 세그먼트는 필요한 크기로 확장될 수 있으며 메모리에 새로운 세그먼트를 할당함으로써
새로운 데이터나 프로그램을 쉽게 추가할 수 있다.
세그먼테이션은 복잡한 메모리 관리 요구사항을 다룰 때 유용하다.
예를 들어, 다중 프로그램 실행 환경에서 각 프로세스가 독립적으로 메모리를 사용하고,
가상 메모리시스템과 결합하여 물리적 메모리를 효과적으로 활용할 수 있도록 한다.
세그먼테이션은 다른 메모리 관리 기법과 함께 사용되기도 하며,
주로 운영체제나 컴파일러에서 메모리 할당과 보호를 구현하는 데 활용된다.
이를 통해 시스템의 안정성, 보안, 효율성을 향상할 수 있다.
페이징과 세그먼테이션의 차이점
- 주요 원리
- 페이징: 메모리를 고정 크기의 페이지로 분할하고, 프로세스를 동일한 크기의 페이지로 나누어 저장한다.
페이지는 물리적 메모리의 프레임에 매핑되며, 페이지 번호를 사용하여 프로세스의 주소 공간을 추상화한다.
페이지 크기는 일반적으로 고정되며, 프로세스의 크기가 페이지 크기의 배수가 아니더라도 페이지 단위로 할당한다.
- 세그먼테이션: 세그먼테이션은 프로세스의 주소 공간을 논리적으로 관련된 세그먼트로 분할한다.
각 세그먼트는 서로 다른 크기를 가질 수 있으며, 각각은 독립적으로 메모리에 로드될 수 있다.
세그먼트는 이름과 길이를 가지며, 논리적인 구조를 반영하기 때문에 프로그래머가 프로세스를 쉽게 관리할 수 있다.
- 내부 단편화
- 페이징: 페이징은 내부 단편화가 발생하지 않는다.
페이지 크기가 고정되어 있으므로 효율적인 메모리 사용이 가능
- 세그먼테이션: 세그먼테이션은 서로 다른 크기의 세그먼트로 메모리를 분할하기 때문에 내부 단편화가 발생할 수 있다. 큰 세그먼트가 작은 세그먼트 뒤에 위치할 때 작은 공간이 남을 수 있다.
- 외부 단편화
- 페이징: 외부 단편화 문제가 발생할 수도 있다.
메모리가 분산된 페이지들로 채워질 때, 페이지 사이에 남는 작은 공간이 발생할 수 있다.
- 세그먼테이션: 세그먼테이션은 외부 단편화를 감소시킬 수 있다.
각 세그먼트는 독립적으로 관리되므로 더 나은 메모리 할당 및 해제가 가능하며, 공간을 효율적으로 활용할 수 있다.
- 구현 복잡성
- 페이징: 비교적 구현이 간단하며 하드웨어 지원이 용이하다.
페이지 테이블을 사용하여 논리 주소와 물리 주소 간의 매핑을 관리한다.
-세그먼테이션: 구현이 복잡할 수 있다. 각 세그먼트의 시작 주소와 길이를 관리해야 하며, 세그먼트의 크기가 동적으로 변할 수 있다.
요약하자면, 페이징은 내부 단편화를 방지하고 구현이 간단한 반면, 외부 단편화 문제가 발생할 수 있다.
세그먼테이션은 논리적 구조를 유지하고 외부 단편화를 줄일 수 있지만 구현이 복잡하며 내부 단편화 문제가 있을 수 있다. 선택은 운영 체제의 요구 사항과 메모리 사용 패턴에 따라 달라진다.
내부 단편화(Internal Fragmentation)와 외부 단편화(External Fragmentation)
내부 단편화는 메모리 할당과 관련이 있다. 컴퓨터 메모리는 일반적으로 고정 크기의 블록으로 나누어져 있으며,
프로세스나 데이터가 할당될 때 메모리 블록이 할당된다.
내부 단편화는 메모리 블록의 일부가 사용되지 않고 남아 있을 때 발생한다.
예를 들어 4KB의 메모리 블록을 할당하고, 실제 프로세스는 2KB만 사용한다면 2KB가 낭비되는 것이 내부 단편화이다.
외부 단편화는 메모리 할당과 해제로 인해 발생하는 메모리 조각화를 나타낸다.
메모리에 사용 가능한 작은 조각들이 흩어져 있어서, 큰 메모리 요청을 수용하기 어렵게 만드는 상황을 의미한다.
외부 단편화는 주로 동적 메모리 할당 시 발생하는데, 프로세스나 데이터가 메모리를 할당하고 해제할 때 메모리의 여백이 불균형하게 발생할 수 있다.
요약하자면, 내부 단편화는 메모리 블록 내에서 발생하는 것이며,
외부 단편화는 메모리 할당 및 해제로 인한 메모리 조각화로 발생한다.
'Computer Science > Operating System(OS)' 카테고리의 다른 글
IPC, 세마포어(Semaphore) & 뮤텍스(Mutex) (0) | 2023.09.05 |
---|