페이징과 세그먼테이션을 이해하기 위해서는 단편화에 대해서 이해해야 합니다!
: 사용 가능한 메모리가 충분히 존재함에도, 할당이 불가능한 상태
📜) 컴팩션(Compaction) : 외부 단편화를 줄일 수 있는 방법, 메모리를 셔플하여 한 블록에 free memory를 모두 위치 시켜서 모으고, relocation(재할당)으로 해결이 가능. 단, I/O와 연동된 장치가 메모리에 있다면 메모리가 고정되어 해당 메모리는 셔플이 불가능함 -> 따라서 컴팩션은 구현이 어렵다는 단점을 가짐.
: 프로세스의 주소 공간을 고정된 사이즈의 Page단위로 나누어 물리적 메모리에 불연속적으로 할당하는 방식. 외부 단편화를 해결. 단, 여전히 내부 단편화는 존재함.
page : 고정된 크기로 나눠진 가상 메모리 영역의 블록 -> 프로세스 블록
frame : 고정된 크기로 나눠진 물리 메모리 영역의 블록 -> (물리)메모리 블록
Page Mapping : 페이지와 프레임을 대응시키기 위해 pageing table을 만들어 활용함. 연속적이지 않은 공간도 활용할 수 있기 때문에 외부 단편화 문제를 해결할 수 있음.
Page Table
* 프로세스마다 가지고 있는 자료구조이며, 메인 메모리에 저장이 되어 있음. 각 페이지 번호와 해당 페이지가 할당된 프레임의 시작 물리 주소를 저장하고 있음.
: 가상 메모리를 사용하여 내부 단편화 해결. 가변 크리로 동적할당을 하기 때문에 외부 단편화가 존재함.
base : 시작 물리 주소
limit : 세그먼트 길이
프로세스를 서로 크기가 다른 논리적인 블록 단위인 segment로 분할하여 메모리에 할당
각 세그먼트는 연속적인 공간에 저장
세그먼트들의 크기가 서로 다르기 때문에 프로세스가 메모리에 적재될 때 빈 공간을 찾아 할당하는 기법
페이징과 마찬가지로 Segment Table 필요