2d3k / CS-Study

기본을 소홀히 하지 말자!!
0 stars 1 forks source link

[OS] 페이징, 세그멘테이션 #14

Open 2d3k opened 1 year ago

2d3k commented 1 year ago

1. 사용하는 이유?

2. 차이점?

2d3k commented 1 year ago

1 페이징(Paging)과 세그멘테이션(Segmentation)은 운영 체제에서 메모리 관리를 위해 사용됩니다.

페이징은 물리적인 메모리(RAM)를 작은 크기의 페이지로 분할하고, 논리적인 메모리 주소를 페이지 번호와 오프셋(offset)으로 변환하여 사용합니다. 이를 통해 물리적인 메모리를 효율적으로 사용할 수 있습니다. 또한 페이지 교체 알고리즘을 사용하여 메모리 부족 상황에서 페이지를 디스크에 스왑하여 물리적인 메모리 용량을 확장할 수 있습니다.

반면에 세그멘테이션은 논리적인 메모리를 작은 논리적인 블록인 세그먼트(segment)로 분할하고, 이를 물리적인 메모리에 할당합니다. 이를 통해 프로그램이 필요한 메모리만 할당받을 수 있고, 메모리 공간의 낭비를 줄일 수 있습니다. 또한 세그먼트 테이블을 사용하여 다양한 크기의 세그먼트를 할당할 수 있습니다.

2d3k commented 1 year ago

2

구현 방식: 페이징은 물리적인 메모리를 작은 크기의 페이지로 분할하고, 논리적인 메모리 주소를 페이지 번호와 오프셋(offset)으로 변환하여 사용합니다. 세그멘테이션은 논리적인 메모리를 작은 논리적인 블록인 세그먼트(segment)로 분할하고, 이를 물리적인 메모리에 할당합니다.

분할 단위: 페이징은 고정 크기의 페이지로 분할합니다. 세그멘테이션은 논리적인 의미를 가진 크기가 다른 세그먼트로 분할합니다.

내부 단편화: 페이징은 페이지 크기가 고정되어 있기 때문에, 작은 크기의 프로그램이 메모리에 할당될 때 내부 단편화가 발생할 수 있습니다. 세그멘테이션은 세그먼트 크기가 다양하기 때문에, 프로그램이 필요한 만큼의 메모리 공간만 할당되기 때문에 내부 단편화가 발생하지 않습니다.

외부 단편화: 페이징은 페이지 단위로 메모리를 할당하기 때문에, 프로그램들이 메모리에서 사용하지 않는 작은 공간들로 나뉘어져서 외부 단편화가 발생할 수 있습니다. 세그멘테이션은 세그먼트 단위로 메모리를 할당하기 때문에, 크기가 다른 세그먼트가 연속해서 할당될 때 외부 단편화가 발생할 수 있습니다.

페이지 테이블과 세그먼트 테이블: 페이징은 페이지 테이블(page table)을 사용하여 논리적인 메모리 주소를 물리적인 페이지 주소로 변환합니다. 세그멘테이션은 세그먼트 테이블(segment table)을 사용하여 논리적인 메모리 주소를 물리적인 세그먼트 주소와 세그먼트 크기로 변환합니다.

hyeonayou commented 1 year ago
  1. 먼저 페이징과 세그멘테이션은 메모리 관리 기법입니다. Memory Fragmentation (메모리 단편화) 를 해결하기 위한 기법으로 Memory Fragmentation는 프로그램을 실행할 때, 메모리의 공간을 연속적인 형태로 할당하여 사용하게 됩니다. 이렇게 프로그램이 메모리에 할당되고, 해제되고, 다시 새로운 프로그램이 할당되고, 해제되고를 반복하다보면 메모리 공간이 조각조각 나뉘게 되어 실제로는 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태가 발생하게 됩니다.

(1) 내부 단편화

(2) 외부 단편화

  1. Paging은 고정 크기를 가지며 Segmentation은 가변 크기를 가집니다. Paging은 내부 단편화가 발생할 수 있으며, Segmentation은 외부 단편화가 발생 할 수 있습니다.