SSAFY CS 스터디: 이취컴 Chapter 3-5 정리
p.205~222
물리 주소와 논리 주소
- 물리 주소: 메모리의 하드웨어 상 실제 주소 체계
- 논리 주소: 프로세스마다 부여되는 0번지부터 시작하는 체계
CPU와 프로세스는 물리 주소가 아닌 논리 주소를 사용한다.
MMU
메모리 관리 장치 (Memory Management Unit)
CPU와 메모리 사이에 위치하여 논리 주소를 물리 주소로 변환
스와핑과 연속 메모리 할당
스와핑
하단의 '대상'에 해당하는 프로세스를 보조기억장치의 스왑 영역으로 쫓아내고,
확보된 메모리에 다른 프로세스를 적재하여 실행하는 메모리 관리 기법
대상: 메모리에 적재된 프로세스 중 현재 실행중이 아닌 프로세스
- 입출력 작업 중인, 대기 상태의 프로세스
- 오랫동안 사용되지 않은 프로세스
스왑 아웃: 메모리의 프로세스가 스왑 영역으로 이동하는 것
스왑 인: 스왑 영역의 프로세스가 메모리로 이동하는 것
※다시 스왑 인 될땐 이전의 물리 주소와는 다른 주소에 적재될 수 있다.
연속 메모리 할당과 외부 단편화
- 연속 메모리 할당: 프로세스에 연속적인 메모리 공간을 할당하는 방식
- ex. 프로세스 A 다음에 프로세스 B 할당
👉️ 프로세스의 실행과 종료가 반복되며 메모리 사이사이 빈 공간 발생 -> 외부 단편화
페이징을 통한 가상 메모리 관리
스와핑과 연속 메모리 할당의 2가지 문제점
- 외부 단편화
- 물리 메모리보다 큰 프로세스 실행 불가
- 메모리가 4GB짜리면 이것보다 큰 프로그램 실행 불가...
가상 메모리
실행하려는 프로그램의 일부만 메모리에 적재해, 실제 메모리보다 큰 프로세스도 실행할 수 있도록 하는 메모리 관리 기법
👉️ 보조기억장치 일부를 메모리처럼 사용하거나 프로세스의 일부만 메모리에 적재한다.
ex. 페이징, 세그멘테이션
가상 메모리 체계의 논리 주소 공간을 가상 주소 공간이라고 한다.
페이징
프로세스의 논리 주소 공간을 페이지로 나누고, 물리 주소 공간을 동일 크기의 프레임으로 나누어
페이지를 프레임에 할당하는 가상 메모리 관리 기법. (페이지는 불연속적으로 배치될 수 있음)
외부 단편화가 발생하지 않으며, 세그멘테이션보다 더 범용적으로 사용된다.
- 페이지 아웃: 페이지가 메모리에서 스왑 영역으로 이동하는 것
- 페이지 인: 스왑 영역의 페이지가 메모리로 이동하는 것
세그멘테이션
프로세스를 가변 크기의 세그먼트로 분할하여 관리하는 방식. (코드, 데이터 영역 등 유의미한 논리 단위로 분할)
👉️ 외부 단편화 발생 가능
페이지 테이블
프로세스의 페이지 번호에 대응하는 프레임 번호가 저장된 테이블 프로세스마다 각자의 테이블을 가지고 있다.
페이지 테이블 엔트리(PTE)
페이지 테이블을 구성하는 각각의 행.
👉️ 페이지 번호, 프레임 번호, 유효 비트, 보호 비트, 참조 비트, 수정 비트로 구성

- 유효 비트: 해당 페이지에 접근 가능한지 여부 (1: 메모리 / 0: 스왑 영역)
- 페이지 폴트: CPU가 유효 비트 0인 페이지에 접근하려 할 때 발생하는 예외(인터럽트)
- 기존 작업 백업
- 페이지 폴트 루틴 실행: 대상 페이지를 메모리로 가져오고 유효 비트를 1로 변경
- 메모리에 적재된 페이지를 실행
- 보호 비트: 페이지 접근 권한을 제한하여 페이지를 보호하려는 목적의 비트 (rwx 순)
- 참조 비트: 적재 이후 CPU가 페이지에 접근하여 읽거나 쓴 적 있는지의 여부 (있으면 1, 없으면 0)
- 수정 비트: 페이지에 데이터를 쓴 적 있는지의 여부 (= 더티 비트)
- 1이면 수정된 적 있다는 뜻이므로, 페이지를 메모리에서 삭제할 때 보조기억장치에 쓰기 작업 필요