Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 공부

페이징 Paging 본문

대학교 공부/운영체제

페이징 Paging

방구석개발입문 2021. 6. 4. 01:08

:프로세스를 일정 크기인 페이지로 잘라서 메모리에 적재하는 방식

*메모리에 올라온 프로그램은 연속되어야 실행이 됨..

* 그렇다면 잘라서도 프로그램이 돌려면 어떻게 해야할까?

>> CPU를 속이면 된다.

 

CPU를 속이려면?

-MMU에 다수의 relocation register(재배치 레지스터)를 두어 CPU가 보낸 주소에 재할당 주소를 추가해 조각난 프로세스를 조각난 메모리에 일정 단위별로 할당해서 프로세스를 돌린다.

 

정리

프로세스를 자르는 단위는 페이지(page)

동일한 크기메모리를 자른것이 프레임(frame)

>>페이지(프로세스)를 프레임(메모리)에 할당

MMU내의 재배치 레지스터의 값을 바꿈으로써 CPU는 프로세스가 연속된 메모리 공간에 위치한다고 착각을 함

MMU는 페이지 테이블(page table)이 된다. <-이러한 목적으로 사용되는 MMU가 페이지 테이블

 

 

 

주소변환

cpu가 내는 주소 : 논리주소(Logical address)  

CPU에서 보낸 논리주소는 MMU인 페이지 테이블을 통해 물리주소(Physical address)로 바뀌어 메모리에서 찾게 됨

 

●논리주소(Logical address)

-CPU가 내는 주소2진수로 표현 전체(m비트)

-하위 n비트는 오프셋 또는 변위

    >> n이 몇비트인지는 페이지 사이즈에 따라 달라짐

    ex) 1페이지 단위가 16byte라고 가정시 16= 2^4, 즉 n은 페이지 단위이므로 4비트가 된다.
         1KB라고 하면 1KB=1024byte=2^10 , 즉 n은 10비트가 되어 페이지단위는 10비트

-상위 m-n비트는 페이지 번호를 나타내는 인덱스 값

 

●주소변환 : 논리주소 >> 물리주소

페이지 번호(p)는 페이지 테이블 인덱스 값

p에 해당되는 테이블 내용이 프레임 번호

변위는 변하지 않음

예제
CPU가 50번지 주소를 냈다면 메인메모리에 할당되는 주소는?
페이지 사이즈 : 16byte

풀이
50 = 110010
페이지 크기 = 16byte = 2^4  >>  n=4 즉 하위 4개의 비트 = d

m-n비트 : p = 11(2) = 3 >> 페이지 번호 인덱스
n비트    :  d = 0010

페이지 테이블의 인덱스3의 값이 8이면

p=8 = 1000
d=0010
>> 10000010 = 130 
즉 물리주소는 130

 

 

내부단편화

프로세스의 크기가 페이지 크기의 배수가 아니라면

마지막 페이지는 한 프레임을 다 채울 수 없다 

>> 남은 공간 = 메모리 낭비!!

 

 

 

 

페이지 테이블 만들기

- CPU 레지스터로

- 메모리로

- TLB(Translation Look-aside Buffer)로

    : SRAM, 캐시처럼 된 레지스터(칩)을 사용

- 테이블 엔트리 개수 vs 변환 속도

TLB사용시 유효메모리 접근 시간
Tm(총 걸린 시간) = 100ns
Tb(읽는 시간) = 20ns
hit ratio = 80%

 

 

 

 

보호와 공유

● 보호 : 해킹 등 방지

:모든 주소는 페이지 테이블을 경유하므로, 페이지 테이블 엔트리마다 r(read), w(write), x(execute)비트를 두어 해당 페이지에 대한 접근 제어 가능

 

 

● 공유 : 메모리 낭비 방지

같은 프로그램을 쓰는 복수 개의 프로세스가 있다면, code + data + stack에서 code는 공유 가능

(단, non-self-modifying code = reentrant code = pure code 인 경우)

프로세스의 페이지 테이블 코드 영역이 같은 곳을 가리키게 설정

'대학교 공부 > 운영체제' 카테고리의 다른 글

가상 메모리  (0) 2021.06.08
세그멘테이션 (Segmentation)  (0) 2021.06.04
주기억장치 관리 (Main Memory Management)  (0) 2021.06.03