[전공 CS]/[컴퓨터 구조론][운영체제]

[운영체제 ] 09 페이징 메모리 관리

우당탕탕 개발 일지 2025. 12. 17. 22:29
728x90

수업때 필기한 내용입니다~

 

연습문제 1번 잘보기 

1. 다음은 페이징 메모리 관리에 대해 기술하는 문장이다. 보기에서 골라 빈칸을 채워라.
페이징은 프로세스의 주소 공간을 ( 페이지 )라는 ( 고정 ) 크기로 나누고 ( 물리 메모리 ) 역시 ( 페이지 ) 크기와 동일한 크기로 나누고 이를 ( 프레임 ) 이라고 부르며, 프로세스의 각 ( 페이지 ) 를 임의의 빈 ( 프레임 ) 에 할당하는 메모리 관리 기법이다.

논라주소 → 물리 주소 
1. mmu
2. 페이지 테이블
3. TLB

 

 

CH 01 페이지 메모리 관리 개요 

 

페이징

: 프로세스의 주소공간을 0번지부터 page(=고정 크기)로 나누고 

물리 메모리 역시 0번지부터 페이지와 동일한 크기로 분할하여 

프로세스의 각 페이지물리 메모리의 임의의 페이지에 분산 할당하는 메모리 관리 기법. 

 

 

프레임 : 물리 메모리에서 페이지 크기의 메모리 블럭 (페이지 프레임, 물리 페이지)

 

 

→ 프로세스 마다 페이지와 물리 프레임을 매핑하는 페이지 테이블 존재 

 

페이지의 크기 : 단편화 ↑, 페이지 개수 ↓ , 페이지 테이블의 크기 ↓

 

 

단점: 내부 단편화 

장점 : 외부 단편화로 인한 메모리 낭비가 없음.

 

페이징의 우수성

1. 구현이 쉽다. (0번지부터 단순함)

2.  이식성이 높다 (cpu에 의존적 X => 다양한 시스템에 쉽게 구현 )

3. 높은 융통성 (페이지의 크기를 시스쳄에 따라 달리할 수 있음) 

4. 메모리 활용과 시간 오버헤드면에서 우수( 외부 단편화가 없음 & 내부 단편화가 발생하지만 매우 작음. )

 

 

 

 

 커널 코드 = 논리 주소 

시스템 호출 : 커널 코드 실행 -> 페이지 테이블이용  (논리 주소 -> 믈리주소)

 

 

ppt 15⭐⭐문제 8개 다시 풀기 

¨32비트 CPU에서, 페이지 크기 2KB, 설치된 물리 메모리 1GB,
프로세스 A는 사용자 공간에서 54321바이트를 차지한다고 할 때,



Q1 물리 메모리의 프레임 크기 = 페이지 크기 (2KB)

Q2 물리 메모리 프레임 갯수 = 물리 메모리 크기 / 페이지 크기  =1GB/2KB=2^19

Q3 페이지 개수 = 주소 공간 크기 /페이지 크기  =2^32 /2^11=2^21

 

Q4: 프로세스 A는 몇 개의 페이지로 구성되는가? 프로세스 A를 모두 적재하기 위한 물리 프레임의 개수는?

  • 프로세스 A의 실제 크기가 54321바이트이므로, 2KB(2048)로 나누면 54321/2048=26.5이므로 27개 페이지로 구성되며, 물리 프레임 역시 27개 필요

Q5 테이블 항목의 크기가 4B일때 프로세스 A의 페이지 테이블 크기는? 

  • 페이지 개수 * 테이블 항목의 크기 = 2^21 * 4=2^23 =8MB

 

 


 ch 02  페이징의 주소 체계 

 

논리 주소 : [페이지 번호 , offset ]

 

*참고)  물리주소 : ( 페이지 번호 * 페이지 크기 ) + offset

 

ex) 페이지 크기가 4KB(2^12)라면 offset은  12bit.

32bit 주소 체계에서는 20bit 페이지 번호, 하위 12bit offset 사용

 

더보기
  • 페이지: 아파트의 각 동
  • 페이지 번호: 동 번호 (예: 101동, 102동, 103동...)
  • 오프셋: 동 내부의 호실 번호 (예: 101호, 202호, 504호...)

 

 

야매 ) 페이지 번호는 말그래로 페이지의 시작주소를 나타냄. 옵셋은 그중에서 변수나 함수 등의 주소하고 생각하면됨. 

 

 


 

 

 

 

논리 주소 -> 물리주소 변환 개념

 

페이지 테이블은 물리 메모리에 저장됨

 

 

구분 하드웨어 지원 (CPU/MMU)
운영체제 지원 (OS)
주요 역할 실시간 주소 변환 및 접근 속도 보장
메모리 자원 관리 및 페이지 테이블 생성/관리
핵심 기능 1. PTBR 제공
1. 물리 프레임 동적 할당/반환
  2. MMU를 통한 논리 → 물리 주소 변환
2. 페이지 테이블 관리 기능 구현
  3. TLB (고속 캐시)를 통한 변환 가속 (자료에는 없으나 중요)
3. PTBR 주소 정보 관리 (PCB에 저장)
작동 시점 매번 메모리 접근 시 (주소 변환이 필요할 때마다)
프로세스 생성/소멸 시, 문맥 교환 시 등 관리 시점

 

 

* PTBR :  현재 실행 중인 프로세스의 페이지 테이블이 물리 메모리의 어디에서 시작하는지를 가리키는 시작 주소 저장..

 

 


ch03 페이지 테이블의 문제점과 TLB 

페이짐 장단점

 

장점) 구현이 쉽다.

 

단점) 페이지 테이블로 인한 성능 저하와 공간 낭비 (2가지) 

 

문제 (1) 2번의 물리메모리 엑세스로 인한 프로세스 실행 속도 저하 

페이지 테이블의 용량이 크기 때문에 CPU내에 두지 않고 메모리에 둠.

따라서 cpu가 메모리를 엑세스 할때마다 페이지 테이블 액세스 1번, 데이터의 물리 메모리 액세스 1번 →총 2번의 물리 메모리 엑세스 발생

메모리 액세스 = 페이지 테이블 항목 읽기 1번 + 데이터 액세스 1번

(**해결 방법 : mmu 내부장치인  TLB사용 **) 

 

2번의 물리 메모리 엑세스 과정을 볼 수 있음.

 

 

 

문제 (2) 페이지 테이블의 낭비 

페이지의 크기는 프로세스의 최대 크기에 맞춰 생성됨. 

하지만 실제로 사용되는 건 매우 작음 

(**해결 방법 : 멀티레벨 페이지 테이블 **) 

 

 


 

해결방법 (1) TLB를 이용한 2번의 물리 메모리 액세스 문제 해결 

 

TLB : mmu내 장치로 *cpu가 최근에 엑세스한 페이지 번호와 페이지가 적제된 프레임 쌍*을 저장하는 캐시 메모리. 

TLB 의 항목 =[페이지 번호 P, 프레임 번호 F ]

 

TLB

 

TLB는 순차적으로 비교하지 않고  모든 항목을 동시에 비교하여 한번에 프레임번호 출력 

 

 

TLB 메모리 엑세스 과정 

cpu (논리주소 발생, 주소 전달 ) → TLB 내에 저장된 페이지 번호 동시 비교 

→ 일치 하는게  있는 경우 ) TLB hit → 물리 주소 출력
→ 일치 하는게 없는 경우 ) TLB miss → mmu에서 물리 주소 완성 

→물리 메모리 액세스 

 

 

예제) 

처음 n[0]만 TLB miss 로 물리 메모리 2번 엑세스 되지만 다음 n[1]~n[m]은 TLB hit 계속 발생 함으로 액세스 횟수 줄어들어 성능이 향상됨 

 

 

 

 

TLB 특징 

 

1. TLB와 참조의 지역성 

: TLB는 순차 메모리 액세스 패턴 ( =반복)을  가진 프로그램에 효과적임. 

 

2. TLB 성능 

[ TLB 히트율] = [ TLB의 항목의 수 ]  [페이지 크기] 에 비례함.

히트율이 높을 수록 성능이 향상됨. 

 

 

3. TLB 도달 범위 

: TLB가 채워 졌을 때 miss없이 동작하는 메모리 엑세스 범위 

TLB reach = TLB 항목의 수 * 페이지 크기 

 

 

 

4. TLB를 고려한 컨텍스트 스위칭 과정 

 

오늘날 대부분의 cpu의 mmu에는 TLB가 들어 있음 

동일한 프로세스에서는 동일한 페이지 테이블이 사용되기 때문에 TLB를 교체할 필요가 없음. 

 

하지만 다른 프로세스로 컨텍스트 스위칭하는 경우에는 TLB 교체됨.

 

cpu의 모든 레지스터를  TCB에 저장 
→ 새 프로세스의 PCB에 저장된 페이지 테이블 주소를 PTBR에 적재  
→ TLB의 모든 항목 지우기  
→새로 스케줄된 스레드의 TCB에서 레지스터 값을 CPU에 적재 

 


ch04 페이지 테이블의 낭비 문제 해결 

 

낭비 요인 

  • 페이지 테이블의 일부 항목만 사용. 
  • 프로세스마다 페이지 테이블 존재. 

 

 낭비 문제의 해결책

  1. 역 페이지 테이블 
  2. 멀티 레벨 페이지 테이블

 

(1) 역 페이지 테이블 : 물리 메모리 전체 프레임에 대해, 각 프레임이 어떤 프로세스의 어떤 페이지를 나타내는 테이블 

(시스템에 1개의 역 페이지 테이블이 존재함) 

역 페이지 테이블 =[프로세스번호(PID) , 프레임 번호 ]

역 페이지 테이블을 사용할때 논리 주소 형식 = [ 프로세스 번호(PID) , 페이지 번호 , 옵셋 ]

 

(2) 멀티레벨 페이지 테이블

: 현재 사용중인 페이지들에 대해서만 페이지 테이블을 만드는 방식. 

 

페이지 디렉토리 : 메모리에 저장되므로 각 페이지 테이블이 저장된 메모리 프레임의 번호를 기억하는 다른 테이블.