일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MLAgent
- 유니티에러
- 메모리
- 레지스터
- 아두이노함수
- 게임기획
- 반도체 취업
- 에러
- 이더리움
- 던파
- 네오플
- 반도체
- 보안
- 네트워크
- MuchineRunning
- memory
- 암호화
- 네트워크보안
- 아두이노우노
- Unity
- 메타마스크
- 유니티
- neople
- 머신러닝
- 컴퓨터구조
- 인터럽트
- 반도체 엔지니어
- 던전앤파이터
- 면접
- 아두이노
- Today
- Total
Dreaming Deve1oper
Exercises 본문
시스템의 TLB 및 페이지 테이블은 4kb 페이지로 표시된다.
4KB = 2^12 -> 12bit는 offset으로 빠지게 됨
Virtual Address는 0x023d 이진수로 바꿈 > 0000001000111101
페이지가 12bit이기 때문에 0000001000111101을 12bit로 자름 0000/001000111101
0000= page number, 001000111101= page offset
0000 = 0x0, page offset = 0x23d 2진수를 16진수로
pageoffset은 Address Translation에 참여하지 않음. page 내부에서만 돌기 때문
CPU는 <TLB>의 pagenumber를 뒤적임. 0x0이 없음. = TLB MISS
<page table>을 찾아감 0x0 valid bit(메모리에 있음)의 첫번째에 존재. 뒤에 존재하는 0x5 값을 쓰면된다는 의미
0x5는 framenumber가 5이기 때문에 0x0을 0x5로 바꾸어줌.
그 후 physical address(0x23d)와 5를조합해 0x523d로 바뀜
virtual address = 0x4ee6
page number = 0x4
pageoffset = 0xee6
<TLB> 에 0x4가 존재하지만 valid bit이 0이기 떄문에 못씀 > TLB MISS
<Page Table>엔 0x4의 valid bit이 1이기 때문에 사용 가능 > 0x9
0x9 + 0xee6 = 0x9ee6
Virtual Address = 0x871b
page number= 0x8
page offset= 0x71b
<TLB> <PageTable> 모두 0x8이 없음. >TLB MISS
<page table>의 valid bit이 0라는 것 > 메모리가 없고 DIsk에 저장되어 있다.
Disk에 있는 것을 끌고 오는 것 > Page falut
logical address memory 구하기
logical address가 64 page로 구성 1024개의 word. (1word=4btye = 페이지 하나가 4kb)
physical memory frame이 32개.
logical address space = 64 * 1024 * 4byte = 262144 bytes
262144 byte / 1024 = 256KB
256 = 2^18KB
→18bit MMU를 거치면 최종적으론 17bit가 된다.
Physical address memory 구하기
page, frame은 크기가 같음. = frame도 4KB라는 뜻.
32 * 1024 * 4byte = 131072 bytes
131072 / 1024 = 128KB
128 = 12^17KB
→17bit
한 페이지가 1KB. (1KB는 1024 byte, 1024byte는 2^10byte)
page offset= 10bits
3085
3085(10진수)를 2진수로 변경 > 110000001101
10bit 이전(offset)과 10bit 이후로 나눔.
11/0000001101 > page number= 3 (2진수에서 10진수로 변경)
11/0000001101 > page offset= 13 (2진수에서 10진수로 변경)
42095
42095(10진수)를 2진수로 변경 > 1010 0100 0110 1111
10bit 이전(offset)과 10bit 이후로 나눔.
1010010001101111 > page number= 41 (2진수에서 10진수로 변경)
1010010001101111 > page nuber = 111 (2진수에서 10진수로 변경)
10/19/2시간쨰
'리눅스, 유닉스' 카테고리의 다른 글
총정리 (0) | 2021.12.04 |
---|---|
Summary (0) | 2021.10.19 |
CPU Scheduling (0) | 2021.10.18 |
Operating System Concept (0) | 2021.10.16 |