다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기역장치를 동적 분할하는 메모리 관리 작업이 필요하기 때문
프로그램 전체가 메모리에 연속적으로 할당
고정 분할 기법 : 메모리가 고정된 파티션으로 분할. 내부 단편화 발생
동적 분할 기법 : 파티션들이 동적으로 생성되고 자신의 크기와 같은 파티션에 메모리 할당. 외부 단편화 발생
+내부단편화 : 주기억장치 내의 실행 프로그램보다 사용자 영역이 커서 메모리 할당 후 사용되지 않고 남아있는 공간
+외부단편화 : 주기억장치 내의 사용자 영역보다 실행 프로그램이 커서 프로그램이 메모리가 할당되지 않고 남아있는 공간을 의미
프로그램의 일부가 서로 다른 주소 공간에 할당될 수 있는 기법
페이지 : 프로세스를 고정된 크기로 나눈 블록
프레임 : 메모리를 고정된 크기로 나눈 블록
세그먼트 : 서로 다른 크기의 논리적 블록
프로그램의 논리적 주소 영역에서 필요한 부분만 물리 메모리에 적재하고, 직접적으로 필요하지 않은 부분은 디스크(SWAP)에 저장하는 것
실제 메모리 크기와 관계 없이 메모리를 사용할 수 있도록 가상 메모리 주소를 사용
프로세스의 일부분만 메모리에 로드하고 나머지는 보조 기억 장치(가상 메모리 공간)에 할당
MMU(Memory Management Unit)를 통해 논리 주소/물리 주소를 나누어서 사용
가상 주소를 주기억장치의 실제적인 주소로 매핑(Mapping)하는 방법을 통해 구현
프로세스의 주소 공간을 고정된 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 할당하는 방식
메모리는 Frame이라는 고정크기로 분할되고, 프로세스는 Page라는 고정크기로 분할
페이지와 프레임을 대응시키는 page mapping 과정이 필요하여 paging table을 생성해야 함
연속적이지 않은 공간도 활용할 수 있기 때문에 외부 단편화 문제 해결
페이지 테이블에는 각 페이지 번호와 해당 페이지가 할당된 프레임의 시작 물리 주소를 저장
단점 : 프로세스의 크기가 페이지 크기의 배수가 아닐 경우 마지막 페이지에 내부 단편화
가 발생하고 페이지의 크기가 클수록 내부 단편화가 커짐
페이지 단위를 작게 하면 내부 단편화 문제도 해결할 수 있겠지만 page mapping 과정이 많아지므로 효율이 떨어짐
프로세스를 서로 크기가 다른 논리적인 블록 단위인 세그먼트로 분할하여 메모리에 할당
각 세그먼트는 연속적인 공간에 저장
세그먼트들의 크기가 서로 다르기 때문에 프로세스가 메모리에 적재될 때 빈 공간을 찾아 할당하는 기법
페이징과 마찬가지로 mapping을 위한 segment table 필요
단점 : 프로세스가 필요한 메모리 공간만큼 메모리를 할당해주기 때문에 내부 단편화 문제는 발생하지 않지만, 중간에 메모리를 해제하면 생기는 외부 단편화 문제
가 발생
가상 메모리 페이징은 단순 페이징과 비교해 프로세스의 페이지 전부를 로드시킬 필요가 없으며 필요한 페이지가 있다면 그때 그때 불러 들이는 기법
외부 단편화가 없으며 다중 프로그래밍 정도가 높고 가상 주소 공간이 큼
하지만 복잡한 메모리 관리로 인해 오버헤드가 발생함
단순 세그멘테이션과 비교해서 불필요한 세그먼트들을 로드하지 않고 필요한 세그먼트가 있으면 그때 그때 불러 들임.
내부 단편화가 없으며 높은 수준의 다중 프로그래밍, 큰 가상 주소 공간, 보호와 공유를 지원.
하지만 가상 메모리 세그멘테이션 역시 복잡한 메모리 관리로 인해 오버헤드가 발생
둘다 복잡한 메모리 관리로 인해 오버헤드
가 발생함
Paging은 고정 크기
를 가짐
Segmentation은 가변 크기
를 가짐
Paging은 내부 단편화
발생 가능/Segmentation은 외부 단편화
발생 가능
좋은 글 감사합니다.