티스토리 뷰

Paging

page frame : 물리 메모리 공간을 일정한 간격으로 잘라 페이지에 끼워넣을 수 있게하는 단위.

segmentation에서 발생하는 문제를 해결할 수 있음.

 

paging의 장점

유연성이 높음 : 고정된 크기로 사용하기 때문에 단순하게 사용가능. 배열로 생각하면 된다.

단순함 : 가상 메모리 공간을 물리 메모리 공간에 배치. 물리 메모리 공간의 빈 영역을 어떻게 잘 관리할 것 인가를 해결.

무슨 말인지 잘 모르겠음.

 

주소 변환 

가상 페이지가 프로세스에게 사용되고 있을 때, 물리적인 프레임에 할당 하는 것. page table을 이용해 사용. 하나의 프로세스마다 독립된 Page table이 존재.

(위의 그림 참고)64byte의 프로세스 A의 가상공간이 존재.  4개의 페이지가 존재.(=> 배열로 볼 수 있음.크기는 16byte)

이를 물리 공간에 대응 시키면 오른쪽 배열처럼 된다. 운영체제만 사용할 수 있는 공간이 따로 있다.

 

6비트의 자리 중 앞의 2자리는 가상 페이지 넘버(VPN)를 의미하고 뒤에 4자리는 offset을 의미한다.

VPN은 단순히 페이지의 번호를 의미한다 생각할 수 있고, offset은 어느 페이지에서나 동일하게 적용된다.

그래서 VPN을 물리 페이지 넘버(PPN)으로 바꾸는 과정을 거쳐 주소 변환을 할 수 있다.

 

페이지 테이블

32비트 머신은 32비트 단위의 가상 주소 공간을 사용하고, 4kb 단위의 페이지(한 페이지의 크기가 4kb)를 생성한다. 

4kb = 2^10 * 4 = 2^12 이고

2^12이므로 offset은 12비트 단위로 구성. 2^20, 20비트는 VPN으로 사용된다. 

페이지 테이블은 프로세스 별로 구성된다는 걸 알아야 한다.

 

페이지 테이블 항목마다 4바이트가 필요하다고 가정하고,페이지 테이블을 저장하기 위해 4mb가 필요하다고 하자.그리고 프로세스100개가 동작중이라면  400mb의 메모리가 필요하다. 

꽤 많은 메모리가 필요하다는걸 알 수 있다.

 

그래서 앞으로는 프로세스에 대한 페이지 테이블은 메모리의 어떠한(물리 메모리) 공간에 담아뒀다고 가정한다.

 

페이지 테이블이 어떻게 구성될까?

선형 페이지 테이블 : VPN은 배열 형태로 구성된다. VPN에 맞는 PPN이 대칭되는 구조로 되어 있음.

위 그림은 32비트 페이지 테이블 엔트리의 모습이다.

 

PFN은 Page Frame Number로 물리적 메모리에서 몇번째 페이지 프레임인지를 의미하는 값이다.

그 크기는 20비트로 VPN을 주소변환한 값이다.

 

플래그들이 왜 많을까?

Valid bit : 주소변환이 가능한지 알려주는 값

protection bits : RWE 권한을 알려줌 -> R/W 둘중 하나만 가능하게 할 수 있음.

Present bit : 물리 메모리에 있는지 디스크에 있는지 알려줌

Dirty bit : 메모리에 올라와 있는 내용이 수정되었는지 알려줌 -> 수정된 내용이 저장이 안되어 있는 경우를 알려준다.

Reference bit(Accessed bit) : 이 페이지가 한번이라도 접근된 적이 있는지 알려줌

User/supervisor bit(U/S) : 유저모드인지 슈퍼바이저모드인지 확인(PWT,PCD,PAT,G) (나중에 알려줌)

 

Valid bit는 어디?

valid와 present를 따로 구분하지 않는다. 

p=1이면 페이지가 메모리에 올라와있고 주소가 변환이 되었다는 의미.

p=0이면 메모리에 없거나 변화가 없다는 의미이다. 운영체제가 trap을 실행.

 

페이징으로 메모리에 접근하는 방법.

 

VPN은 가상 주소와 VPN_MASK를 &연산으로 일치하는 부분만 찾아내고 SHIFT = 4

 

PTE의 주소를 계산한다. PTBR(Page Table Base Register)는 테이블의 시작 주소이다. 이 후 인덱스에 접근하기 위해서는 VPN*sizeof(PTE)를 해줘서 접근. 

 

PTE 주소에 접근한다.

 

주소의 valid가 False이면 오류를 출력.

 

else if 접근은 가능하지만 protection이 걸려있으면 protection중이라 출력.

 

그 외의 경우엔 가상주소와 offse_mask(0xF = 001111)를 &연산.

 

PFN을 4비트만큼 쉬프트 후 offset | 연산.  => 7비트 만들어짐.

 

물리주소로 접근.

 

 

 

'컴퓨터 공학 > 운영체제' 카테고리의 다른 글

[운영체제]TLBS(Translation-Lookaside Bufffer)  (0) 2021.05.06
[운영체제]Free-Space management  (0) 2021.05.02
주소 변환  (0) 2021.04.15
memory API  (0) 2021.04.15
ADDRESS SPACES(주소 공간)  (0) 2021.04.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함