개발/개념정리

운영체제 가상메모리 정리: 페이징, 페이지 테이블, 페이지 폴트

ksc036 2026. 5. 25. 16:31

페이징 기법

프로세스의 주소 공간을 동일한 크기의 페이지 단위로 나누어 물리적 메모리의 서로 다른 페이지에 저장하는 것.

물리 메모리도 같은 크기로 쪼개는데, 이걸 프레임 frame이라고 함.

가상 메모리의 조각 = 페이지
물리 메모리의 조각 = 프레임

 

 

32비트 가상 주소를 쓰면 

가상 주소 전체 = 32비트
페이지 크기 = 4KB = 4096 bytes = 2^12

 

[ 상위 20비트 | 하위 12비트 ]
[ 페이지 번호 | offset ]

 

32비트 주소:
10101100101010101010 000000111001
←---- 페이지 번호 ----→ ← offset →
            20비트                   12비트

 

offset은 “페이지 안에서 몇 번째 바이트인지”를 나타내는 값

페이지 크기 = 4KB = 4096 bytes

한 페이지 내부 위치:
0번 바이트
1번 바이트
2번 바이트
...
4095번 바이트

 

그러면 페이지 안에서 위치를 표현하려면 0부터 4095까지 표현할 수 있어야 함.

이때 몇 비트가 필요하냐?

2^12 = 4096
 

그래서 12비트가 있으면 0 ~ 4095까지 표현할 수 있다.

 

 

 

Q1. 가상메모리란 무엇이고, 왜 필요한가?

 

가상메모리는 운영체제가 프로세스에게 제공하는 메모`리 관리 기법이다. 프로세스는 기본적으로 독립된 주소 공간을 사용하는 것 처럼인식한다. 하지만 실제로 가상주소는 mmu에서 페이지 테이블을 참조하고 실제 물리 주소로 변환된다. 이때 페이지가 물리 메모리에 없으면 페이지 폴트가 발생하고 디스크에서 해당 페이지를 가져온다.

이런 과정을 통해서 프로세스 간 메모리 보호, 메모리의 효율적인 사용이 가능해진다.

 

 

Q2. 가상 주소가 실제 물리 주소로 변환되는 과정은 어떻게 되나요?

cpu가 가상 주소를 생성하면, mmu가 이 주소를 물리주소로 변환합니다. 가상 주소는 페이지 번호와 오프셋으로 나뉘고, mmu는 페이지 번호를 이용해 페이지 테이블을 조회합니다. 페이지 테이블에서 해당 페이지가 매핑된 물리 메모리의 프레임 번호를 찾고, 이 프레임 번호에 기존 오프셋을 더해 최종 물리 주소를 만듭니다. 이때 주소 변환 속도를 높이기 위해 tlb라는 캐시를 먼저 확인할 수 있습니다. 만약 페이지 테이블에 해당 페이지가 없거나 물리 메모리에 올라와 있지 않다면 페이지 폴트가 발생합니다. 

 

Q3. 페이지 폴트가 발생하면 운영체제는 어떤 일을 하나요?

각 프로세스는 자신만의 페이지 테이블을 가지고 있고, 가상 페이지 번호, 물리 프레임 번호, vaild bit등을 가지고 있음. 이때 valid bit가 0이면 즉 물리 프레임에 해당 주소가 없으면 페이지 폴트가 발생하게 된다. cpu가 os로 제어권을 넘겨서 운영체제 커널이 유효한지 확인하고 swap에서 해당 페이지 위치를 찾고 빈 물리 프레임을 확보하고, 페이지를 메모리에 올리고 페이지 테이블을 갱신하고 명령어를 다시 실행한다. 

 

 

Q4. 페이지 폴트가 너무 많이 발생하면 어떤 문제가 생기나요?

페이지 폴트가 너무 많이 발생하면, 계속해서 디스크를 읽어와야함으로 디스크 io가 증가하고 성능저하가 크게 발생하낟. cpu는 실제 연산보다 페이지를 교체하고 가져오는 데 시간을 많이 쓰게 되는데, 이런 상태를 thrashing이라고 한다. 이 경우 프로세스뿐만 아니라 시스템 전체의 응답 속도도 급격히 느려질 수 있다.

'개발 > 개념정리' 카테고리의 다른 글

Process, Thread  (0) 2026.05.24
What is a primary key? What is a foreign key?  (0) 2026.05.23
What is an index, and why do we use it?  (0) 2026.05.19
Network - OSI 5계층  (1) 2026.05.18
What are the four main principles of OOP?  (0) 2026.05.17