프로세스에 연속적인 메모리 공간을 할당하는 방식
메모리에 적재된 프로세스들 중 현재 실행되지 않는 프로세스들을 임시로 보조기억장치로 내보내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식
프로세스들이 요구하는 메모리 주소 공간의 크기 > 실제 메모리 크기인 경우에도 프로세스들을 동시 실행할 수 있음
https://www.geeksforgeeks.org/difference-between-paging-and-swapping-in-os/
단, 스왑 아웃되었던 프로세스가 다시 스왑 인 될 때는 스왑 아웃되기 전의 물리 주소와는 다른 주소에 적재될 수 있음
https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/
프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상으로 연속 메모리 할당 환경에서 자주 발생프로세스들이 메모리에 연속적으로 할당되는 환경에서는 프로세스들이 실행되고 종료되기를 반복하며 메모리 사이 사이에 빈 공간들이 생김
이러한 빈 공간들보다 프로세스의 크기가 클 경우, 프로세스를 적재할 수 없으므로 메모리 낭비로 이어짐!
압축이나 가상 메모리 기법으로 해결!
외부 단편화를 해결할 수 있는 대표적인 방안, 메모리 조각 모음
메모리 내에 저장된 프로세스를 적당히 재배치시켜 여기저기 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만듦
가상 메모리: 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술, 크게 페이징과 세그멘테이션이 있음
프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 자르고, 메모리 물리 주소 공간을 프레임이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법
https://data-flair.training/blogs/paging-vs-segmentation-in-operating-system/
프로세스가 메모리에 불연속적으로 배치되어 있는 경우, CPU 입장에서는 '다음에 실행할 명령어 위치'를 찾기가 어려우므로 이를 순차적으로 실행할 수 없음
페이지 테이블을 이용하여 해결!
페이지 테이블
https://velog.io/@jieuni/Paging-and-Page-Tables
CPU가 페이지 번호만 보고 해당 페이지가 적재된 프레임을 찾을 수 있도록 페이지 번호와 프레임 번호를 짝지어 주는 일종의 이정표
프로세스가 물리 주소에 불연속적으로 배치되더라도, (CPU가 바라보는) 논리 주소에는 연속적으로 배치될 수 있도록 지원
프로세스마다 각자의 프로세스 테이블을 가지고, 프로세스 테이블은 메모리에 적재
페이지 테이블을 메모리에 둠 메모리 접근 시간이 두 배로 늘어남 (메모리에 있는 페이지 테이블을 봄 + 그렇게 알게 된 프레임에 접근)
페이징에서의 주소 변환
하나의 페이지 혹은 프레임은 여러 주소를 포괄하고 있으므로 특정 주소에 접근하려면 다음 두 가지 정보가 필요
- 어떤 페이지 혹은 프레임에 접근하고 싶은지
- 접근하려는 주소가 그 페이지 혹은 프레임으로부터 얼마나 떨어져 있는지
페이징 시스템에서는 모든 논리 주소가 페이지 번호+변위로 구성
- 페이지번호: 접근하고자 하는 페이지 번호
- 변위: 접근하려는 주소가 프레임 시작 번지로부터 얼마만큼 떨어져 있는지
ex) CPU가 32비트 주소를 내보냈다면 이 중 N bit: 페이지번호, 32-N bit: 변위
CPU 페이지 테이블 메모리
페이지 테이블 엔트리
페이지 테이블의 각각의 행들, 페이지 번호, 프레임 번호, 유효 비트 등으로 구성
이름 | 내용 |
---|---|
유효 비트 | 해당 페이지 현재 접근 가능 여부 |
보호 비트 | 해당 페이지의 접근 권한(rwx) |
참조 비트 | CPU가 이 페이지에 접근한 적이 있는지 여부 |
수정 비트 (더티 비트) | 해당 페이지에 데이터를 쓴 적이 있는지 여부 |
확인문제
p. 400
1번 메모리 할당 방식에 대한 설명으로 올바른 것을 다음 보기에서 찾아 써 보세요.
(1) 최초 적합: 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식
(2) 최악 적합: 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식
(3) 최적 적합: 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식
참고문헌
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=299014282&start=slayer