단편화(Fragmentation)
•
내부 단편화
◦
할당된 메모리 공간 내부에 사용되지 않는 메모리가 존재하는 것으로, 프로세스가 사용하는 메모리가 할당된 메모리보다 적을 때 발생한다.
•
외부 단편화
◦
메모리를 동적으로 할당하고 부분적으로 자원을 회수했을 때, 연속되지 않은 메모리 공간의 여유는 있지만 새로 연속된 메모리를 할당할 공간이 없는 상태이다.
메모리 관리 기법
•
연속 메모리 관리 기법
◦
프로그램 전체가 메모리의 연속적인 공간에 할당하는 기법
◦
고정 분할 기법
▪
메모리를 고정된 파티션으로 분할하는 방법으로, 내부 단편화가 발생할 수 있다.
◦
동적 분할 기법
▪
파이션을 크기에 맞춰 동적으로 생성하고 할당하는 방법으로, 외부 단편화가 발생할 수 있다.
•
불연속 메모리 관리 기법
◦
프로그램이 부분적으로 서로 연속되지 않은 주소 공간에 할당될 수 있는 기법
◦
Paging
▪
프로세스를 일정한 크기의 페이지(page)로 분할해서 메모리에 로드하는 방식으로, 하나의 프로세스가 사용하는 메모리가 연속적이어야 한다는 제약을 피하는 메모리 관리 기법이다.
▪
페이징 테이블(Paging Table)을 통해 page와 frame을 매핑하여, 하나의 프로세스에서 나누어져 있는 가상 메모리 페이지들이 실제 메모리의 어디 프레임에 저장되어 있는지 알 수 있다.
page
가상 메모리 내 고정 크기의 프로세스 조각
frame
페이지와 크기가 같은 주 기억 장치의 메모리 조각
▪
메모리에 연속되어 저장될 필요가 없기 때문에 외부 단편화가 발생하지 않지만, 내부 단편화 문제가 발생할 수 있다. 내부 단편화 문제는 페이지 단위를 작게하여 해결할 수 있지만, 페이지 매핑 과정이 복잡해져 비효율적이다.
◦
Segmentation
▪
가상 메모리를 서로 크기가 다른 논리적 블록으로 분할한 것으로, 프로세스를 물리적 단위인 페이지가 아니라 논리적 단위인 세그먼트로 분할해 메모리에 적재하는 방식이다.
▪
세그멘테이션도 세그먼트 테이블(Segment Table)을 통해 페이징 기법과 동일하게 매핑한다.
▪
내부 단편화 문제를 해결할 수 있지만, 외부 단편화 문제가 발생할 수 있다.
▪
보호와 공유 기능을 수행할 수 있고, 같은 코드 영역은 한 번에 저장할 수 있다는 장점이 있다.
가상 메모리 페이징과 가상 메모리 세그멘테이션
•
프로그램 중 필요하지 않는 부분은 메모리에 로드하지 않고, 필요한 경우에만 페이지 혹은 세그멘테이션 형태로 메모리에 로드하는 방식이다.
•
페이징의 외부 단편화 문제와 세그멘테이션의 내부 단편화 문제가 발생하지 않는다는 장점이 있지만, 복잡한 메모리 관리로 인한 오버헤드가 발생한다는 단점이 있다.