Open 2d3k opened 1 year ago
1 페이징(Paging)과 세그멘테이션(Segmentation)은 운영 체제에서 메모리 관리를 위해 사용됩니다.
페이징은 물리적인 메모리(RAM)를 작은 크기의 페이지로 분할하고, 논리적인 메모리 주소를 페이지 번호와 오프셋(offset)으로 변환하여 사용합니다. 이를 통해 물리적인 메모리를 효율적으로 사용할 수 있습니다. 또한 페이지 교체 알고리즘을 사용하여 메모리 부족 상황에서 페이지를 디스크에 스왑하여 물리적인 메모리 용량을 확장할 수 있습니다.
반면에 세그멘테이션은 논리적인 메모리를 작은 논리적인 블록인 세그먼트(segment)로 분할하고, 이를 물리적인 메모리에 할당합니다. 이를 통해 프로그램이 필요한 메모리만 할당받을 수 있고, 메모리 공간의 낭비를 줄일 수 있습니다. 또한 세그먼트 테이블을 사용하여 다양한 크기의 세그먼트를 할당할 수 있습니다.
2
구현 방식: 페이징은 물리적인 메모리를 작은 크기의 페이지로 분할하고, 논리적인 메모리 주소를 페이지 번호와 오프셋(offset)으로 변환하여 사용합니다. 세그멘테이션은 논리적인 메모리를 작은 논리적인 블록인 세그먼트(segment)로 분할하고, 이를 물리적인 메모리에 할당합니다.
분할 단위: 페이징은 고정 크기의 페이지로 분할합니다. 세그멘테이션은 논리적인 의미를 가진 크기가 다른 세그먼트로 분할합니다.
내부 단편화: 페이징은 페이지 크기가 고정되어 있기 때문에, 작은 크기의 프로그램이 메모리에 할당될 때 내부 단편화가 발생할 수 있습니다. 세그멘테이션은 세그먼트 크기가 다양하기 때문에, 프로그램이 필요한 만큼의 메모리 공간만 할당되기 때문에 내부 단편화가 발생하지 않습니다.
외부 단편화: 페이징은 페이지 단위로 메모리를 할당하기 때문에, 프로그램들이 메모리에서 사용하지 않는 작은 공간들로 나뉘어져서 외부 단편화가 발생할 수 있습니다. 세그멘테이션은 세그먼트 단위로 메모리를 할당하기 때문에, 크기가 다른 세그먼트가 연속해서 할당될 때 외부 단편화가 발생할 수 있습니다.
페이지 테이블과 세그먼트 테이블: 페이징은 페이지 테이블(page table)을 사용하여 논리적인 메모리 주소를 물리적인 페이지 주소로 변환합니다. 세그멘테이션은 세그먼트 테이블(segment table)을 사용하여 논리적인 메모리 주소를 물리적인 세그먼트 주소와 세그먼트 크기로 변환합니다.
(1) 내부 단편화
(2) 외부 단편화
1. 사용하는 이유?
2. 차이점?