티스토리 뷰
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
- 딥러닝
- CAN-FD
- 차량 네트워크
- AVTP
- automotive
- 이상탐지
- PCA
- porks
- problem statement
- 차량용 이더넷
- SVM
- SOME/IP
- AVB
- one-to-many
- Ethernet
- 논문 잘 쓰는법
- 회귀
- HTML
- Python
- 케라스
- cuckoo
- automotive ethernet
- 머신러닝
- 단순선형회귀
- 로지스틱회귀
- json2html
- many-to-many
- AE
- many-to-one
- 크로스 엔트로피
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |