2025-12-22
오늘 배운 것
Q1. 연속 메모리 할당에서 외부 단편화가 발생하는 이유와, 이를 페이징이 어떻게 해결하나요?
A.
연속 메모리 할당은 프로세스를 물리 메모리의 연속된 공간에 배치해야 하기 때문에,
프로세스들이 반복적으로 생성·종료되면서 작은 빈 공간들이 흩어져 남게 되는 외부 단편화가 발생한다.
이로 인해 전체 빈 메모리 크기는 충분해도 연속 공간이 없어 프로세스를 적재하지 못하는 문제가 생긴다.
페이징은 프로세스의 주소 공간을 고정 크기의 페이지 단위로 분할하고, 이를 물리 메모리의 프레임에 불연속적으로 배치한다.
이 방식에서는 연속된 공간이 필요 없기 때문에 외부 단편화가 발생하지 않으며, 대신 페이지 크기 때문에 내부 단편화만 발생할 수 있다.
Q2. 페이징 시스템에서 페이지 테이블을 메모리에 두면 성능 문제가 생기는데, 이를 어떻게 해결하나요?
A.
페이지 테이블이 메모리에 있으면 주소 변환 시
- 페이지 테이블 접근
-
실제 데이터 접근
으로 인해 메모리 접근이 두 번 발생하여 성능이 저하된다.
이를 해결하기 위해 TLB(Translation Lookaside Buffer)를 사용한다.
TLB는 CPU 내부 또는 MMU에 위치한 페이지 테이블의 캐시로, 최근에 사용된 페이지 정보를 저장한다.
TLB 히트가 발생하면 페이지 테이블을 거치지 않고 바로 프레임 번호를 얻을 수 있어 메모리 접근 횟수가 줄어들고, 전체 성능이 향상된다.
Q3. 스래싱이 발생하는 원인과 이를 방지하기 위한 프레임 할당 방법에는 무엇이 있나요?
A.
스래싱은 프로세스가 실제 연산보다 페이지 교체에 더 많은 시간을 쓰는 상태로,
주된 원인은 프로세스에 할당된 프레임 수가 부족하여 페이지 폴트가 과도하게 발생하는 것이다.
멀티프로그래밍의 정도를 지나치게 높이면 이 현상이 심화되어 CPU 이용률이 오히려 감소한다.
이를 방지하기 위해 동적 프레임 할당 방식을 사용한다.
대표적으로
- 작업 집합 모델은 일정 시간 동안 실제로 참조된 페이지 집합의 크기만큼 프레임을 할당하고
- 페이지 폴트 빈도 기반 방식은 페이지 폴트율이 너무 높거나 낮을 경우 프레임 수를 조절한다.
이를 통해 각 프로세스가 필요한 최소 프레임을 확보하도록 하여 스래싱을 방지한다.