1:
最多只能有16个进程在运行, 要特殊硬件来保证该操作迅速。
2:
巧合, 因为该例子的起始物理地址跟进程长度相同。
3:
4GB = 2 的32次方B, 32bit = 4B,需要4ns, 并且需要读和写,所以 2 * 2 的32次方 * 4ns。
4:
首次适配法:(第一次遇到合适的就选)
a:20MB。
b:10MB。
c: 18MB。
最佳适配法:(选择能满足要求的最小的空闲区)
a:18MB.
b: 10MB.
c: 9MB.
最差适配法:(选择能满足要求的最大空闲区)
a:20MB.
b: 18MB.
c: 15MB.
下次适配法:(从上一次选中的空闲区继续)
a:20MB.
b:18MB.
c:9MB.
5:
物理地址是机器使用的实际地址,其对应于地址总线上。
虚拟地址是机器产生的逻辑地址, 可以大于物理地址。
每个程序拥有自己的地址空间, 这个空间被分割成多个块, 每一块成为一页面。
6:
4KB的页面需要12位偏移量, 页面号分4位, 8KB的页面需要13位偏移量, 页面号分3位
20000:
4KB 0100 111000100000
8KB 010 0111000100000
32768:
4KB 1000 000000000000
8KB 100 0000000000000
60000:
4KB 1110 101001100000
8KB 111 0101001100000
7:
20 +8192 = 8212
4095 + 4100 - 4095 = 4100
8300 - 8192 + 24 * 1024 = 24684
8:
把MMU放在cpu与地址总线连接之间,这样就能通过MMU把物理地址转换为虚拟地址送到地址总线上。
9:
需要MMU, 需要产生缺页中断的硬件。
10:
写时复制是父进程fork子进程后, 子进程父进程共享一个存储空间,子进程有指向父进程代码段、数据段的指针, 当父进程进行写操作时, 才为子进程分配物理地址空间。
可以在支持多进程的手机上起作用。
11:
M > 1024 会失效, 因为页面大小为4KB, 且M为int类型, 4个字节, 4KB / 4 = 1024, 每过1024个数据TLB就会失效一次。
12:
所有进程的虚拟地址空间最大为nv, 而RAM的大小为r, 磁盘空间需求 = nv - r, 这通常比实际需要的大得多, 因为不是所有进程都在运行。
13:
[(k - 1) + (N + 1)] / k
14:
32为地址空间为4GB内存, 每个页面8KB, 有 2的19次方个页面, 每个字需要100ns, 一共有100ms, 所以 (2的19次方 * 100ns) / 100ms = 0.524288
15:
虚拟地址为48位,页面大小为4KB, 所以有2的48次方 / 2的12次方= 2的36次方个页表项。
页面大小为4KB, 长整型为4个字节, 每4KB/4 = 1024个数据TLB会失效一次。
16:
99% * 1ns + 1%* 100ns * 99.99% + 0.01% * * 6ms.
17:
a:
一级页表必须把整个页表放入内存中, 但进程通常使用其中很小一部分, 这导致了内存的浪费,
比如二级页表, 4GB内存空间: 其中一级页表被分为1024个4MB的片, 每个片对应1024个二级页表项,二级页表每页表大小为4KB, 若一级页表的每个片都没被分配, 则此片就不用分配二级页表, 减少了很大的内存需求。
18:
19:
页面大小由偏移量确定, 4KB
2^20次方个页面
20:
一级页表需要2^20次方个表项
二级页表需要: 需要顶级页表的两个页表项指向二级页表中的程序和数据段和栈, 2 + 1 + 1 = 4.
21:
22:
设命中率为x
x + (1 - x) * 5 = 2,
x = 0.75
23:
支持TLB需要寄存器里有能做比较运算的设备, 需要线性的扩展。
24:
页面大小为8KB, 则偏移量为13位, 则有2^35个表项。
25:
26:
最优页面置换算法:把这个页面下次执行前要执行的指令数作为标记, 在进行页面置换时置换标记最大的页面。
但这是不可能, 因为程序运行时不可预测。
在编译器编辑是收集有关进程的信息, 在链接时重新排列代码。
27:
标准得页面置换算法是针对内存中已有的页面研究的, 当工作负载比比序列段时, 会因为内存容量不够出现颠簸。
28:
29:
第三页
30:
0 | 1 | 1 | 1 |
---|---|---|---|
10 | 01 | 11 | 11 |
110 | 001 | 111 | 011 |
1110 | 1001 | 0111 | 1011 |
01110 | 01001 | 10111 | 01011 |
101110 | 001001 | 110111 | 001011 |
1101110 | 1001001 | 0110111 | 0001011 |
01101110 | 01001001 | 00110111 | 10001011 |
31:
12310
LRU把第二页替换成第零页, CLOCK把第一页替换成第零页。
32:
假设当前时间为t, 若t - 1213 > 400, 则移出去, 否则不移, 1000同理
33:
34:
FIFO:生存时间, LRU:最近访问时间, OA(optimal algorithm):下次使用时间。
从大到小标记对应的属性, 替换标签最小的。
35:
2KB:
有64KB / 2KB = 32个页面,32 * (10 + 10) = 640;
4KB:
320;
36:
a: 页面2.
b:页面3.
c:页面1.
d:页面2
37: