※ 전남대학교 박태준 교수님의 운영체제 강의를 듣고, 정리한 내용입니다.
모든 프로그램은 메모리에 올라와야 CPU 를 통해 실행할 수 있습니다.
CPU 가 메모리를 읽을 때는 오로지 주소를 통해 접근하기 때문에, 정확한 주소가 필요합니다.
만약 개발자가 시스템의 메모리 크기까지 직접 고려하면서 프로그램을 개발해야 한다면..
→ 내 프로그램이 어디에 설치될지 모르니, 특정 시스템에 종속적인 프로그램 밖에 만들지 못합니다.
그래서 개발자가 메모리 크기까지 신경쓰기 어려우니, 메모리는 무조건 0번지부터 끝까지 다 사용한다고 가정하는 것이 가상 메모리의 개념이었습니다.
주소변환은 MMU 가 해줌
부족한 메모리 공간은 Swap 으로 보충
프로그램이 한두개일땐 큰 문제가 되지 않지만, 프로그램이 많아질수록 관리하기가 어려워 집니다.
프로그램을 segment 단위로 쪼갠다 하더라도, 이 segment 가 커지면 연속 메모리에서 발생했던 문제가 똑같이 발생하게 됩니다.
즉 관리하기가 어려우니 → 검색 효율이 저하되고 → 이는 메모리 운용 속도의 저하를 일으키게 됩니다.
페이징은 고정 - 분할 방식을 이용한 가상 메모리 관리 기법입니다.
프로세스의 주소 공간을 0번지부터 동일한 크기의 페이지 ( page ) 로 나눔
물리 메모리 역시 0 번지부터 페이지 크기로 나누고, 프레임 ( frame ) 이라고 부름
페이지와 프레임에 번호를 붙임
페이지 테이블 : 각 페이지에 대해 페이지 번호와 프레임 번호를 1:1로 저장하는 테이블
프로세스와 물리 메모리의 공간을 나눔 ( 페이지, 프레임 )
→ 각각의 페이지 인덱스 번호와 프레임 번호 매핑 ( 페이지 테이블 )
→ 페이지 테이블에 저장된 프레임 번호가 물리 메모리 공간에 들어감

용이한 구현 : 메모리를 0번지부터 고정 크기로 단순히 분할하기 때문
높은 이식성
높은 융통성
메모리 활용과 시간 오버헤드 면에서 우수
하드웨어 지원
CPU 의 지원
MMU 장치
운영체제 지원