일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- L3 Router
- 클린 코드
- 명령어
- osi 7
- 코드 컴플릿
- 사설 IP
- 공인 IP
- CPU
- L2 switch
- network
- Sector
- floating point
- Code complete
- interrupt
- float
- register
- MMU
- refactoring
- 가독성
- cache
- ack
- Public IP
- Clean code
- private ip
- ALU
- 리펙토링
- TCP
- addressing mode
- page
- physical address
- Today
- Total
목록MMU (5)
Software Lab

전체 Page table은 용량이 크기 때문에 저장 비용이 저렴한 주기억 장치에 기록된다. 빈번히 사용되는 page no 일부만 저장 비용이 비싼 TLB cache에 기록된다. CPU가 Logical address 내보내면 그것의 page no를 TLB에서 검색한다. 찾게 되면(Hit) Physical address로 즉시 변환한다. 못 찾으면(Miss) 주기억 장치에 저장된 전체 Page table에서 해당하는 page no를 찾아 TLB cache에 기록한다.(Write) PTBR 레지스터는 Page table이 저장된 주기억 장치의 주소를 가리킨다. Page table에는 Mode와 Valid도 있다. Mode : Page에 읽기/쓰기 권한이 있는지를 나타낸다. 만약 특정 Page를 프로그램 코드 ..

CPU가 출력하는 Logical address는 MMU의 Page table을 참조하여 Physical address로 변환된다. Page는 8개이므로 16bit address 중에서 앞의 3bit가 page no가 된다. 앞의 3bit의 부분만 Page table을 참조하여 변환한다.

Logical space : CPU 관점에서는 Process 들은 각각 연속된 메모리 공간을 점유하고 있는 것으로 본다. Physical space : 실제 물리 공간에서 Page 들은 불연속적으로 점유되어 있다. MMU는 Logical space를 Physical space로 사상(Mapping)할 수 있는 Page table을 가지고 있다. 위 예제에서 보면 8개 Page를 표현하기 위해서는 3bit가 필요하다. CPU가 Logical address를 보내면 MMU는 내부의 Page table을 참조하여 Physical address로 변환한다.

64K 메모리 공간을 8개 Page로 나누어 보자. 그렇다면 한 Page는 8K 공간이 된다. 하나의 프로세스는 하나 이상의 Page를 점유할 수 있다. 이때 사용하는 Page 들은 불연속적이어도 된다. 대신 하나의 Page에는 두 개 이상의 프로세스가 나누어 사용할 수 없다. 프로그램들의 실행과 종료 순서를 아래와 같이 진행해 보자. 1. 실행 - A:14K, B:15K, C:12K, D:7K, E:7K 2. 종료 - B:15K, D:7K 3. 실행 - F:6K, G:15K(실행 가능!) Page 방식으로 사용하니 이번에는 G를 실행할 수 있게 되었다. 하지만 Page 내부에서 사용하지 못하는 자투리 공간 Hole은 여전히 발생한다. 이것을 내부 단편화(Internal fragmentation)라고 한..

64K의 메모리 공간이 있다. 그리고 프로그램들이 디스크에 파일 형태로 저장되어있다. 프로그램을 실행하기 위해서는 파일을 메모리에 올려야 한다. 메모리에 프로그램이 올라간 상태를 프로세스(Process)라고 한다. 프로그램들의 실행과 종료 순서를 아래와 같이 진행해 보자. 1. 실행 - A:14K, B:15K, C:12K, D:7K, E:7K 2. 종료 - B:15K, D:7K 3. 실행 - F:6K, G:15K(실행 불가!) 하나의 프로세스는 연속된 메모리 공간을 점유해야 한다. 마지막 G를 실행해야 하는데 15K 의 연속된 메모리 공간이 남아 있지 않다. 그래서 G는 실행할 수 없다. 마지막 3번 메모리 상태를 보면 자투리 공간인 Hole이 9K, 7K, 9K 크기로 남아 있다. 프로그램들의 실행과 ..