1、CPU的分配方式(多道程序、分时系统、多任务系统)之间的区别。
多道程序是CPU闲时启动别的程序,简单来说:程序不用CPU时,被调用程序分配给别人。
分时系统是每个程序一段时间主动让出CPU,给别的程序用。全靠自觉。
多任务系统给每个程序分配指定的时间片,过期后强制程序让出CPU。被动的统一调配。

2、多任务系统运行在受硬件保护的级别,这个硬件指的是什么
目前我能想到的,就是内存分配。MMC是内存访问时的硬件限制机制。可能还有别的。

3、硬盘空间分配时,最小分配单位是扇区。硬盘现在一般用的是逻辑扇区号,硬盘内部的电子设备会自动转成物理的。
扇区是磁盘的最小可寻址单元(不是分配)。最小可分配单元是操作系统决定的,在windows系统里叫簇(clust),Linux中叫块(block),大小是扇区大小的2^n倍。
这里面有个问题,只要申请磁盘空间,哪怕是只有一个字节,也会分配一个块大小(比如:1024字节),有1023个字节无法再分配(浪费掉了)。
另外:windows中磁盘格式化的时候,可以选择“分配单元大小”,就是传说中的簇。
Linux中查看指定磁盘的块大小,可用
[code]
/sbin/tune2fs -l /dev/sda1
[/code]
查看Linux系统默认的块大小可用
[code]
getconf PAGESIZE
[/code]

4、第13页中间说:在x86平台上,共有65536个硬件端口寄存器。
我非常怀疑这个说法。我的理解是x86上有65536个I/O地址空间,可以对应65536个(硬件的)寄存器。

5、分段、分页各解决的问题。
分段解决两个问题:1)、地址空间不隔离。2)、程序运行时地址不确定。解决办法是每个程序都认为自己能访问所有内存,实际上会映射到不同的物理内存上。
分页解决一个问题:内存使用效率低。解决办法是使用时按页加载,未使用的不加载,内存不够时按页换出,小而灵活。

6、访问不在内存中的页时,硬件会捕捉到这个消息,就是所谓的页错误(Page Fault)。哪个硬件?页错误是软中断还是硬中断?后续有哪些操作?
猜测是MMC硬件,因为是MMC完成的逻辑地址到物理地址的转换。
按上面的猜测,页错误应该是MMC产生的软中断。软中断是由代码执行触发的(这个缺页就是),硬中断是外部的设备异步产生的。
产生页错误(缺页)中断后,会把这个页加载进来,如果物理内存不足,需要先换出页。

7、fork子进程时的copy on write,实践中的例子。
redis在保存快照时,会先fork一个子进程去存储,之前的观察结果就是新进程和老进程占用相同大小的内存空间。如果redis里有新的写入,会直接导致COW产生一份真的内存副本。

标签: block, clust, copy on write, IO地址空间, MMC, 分段, 分页, , 多任务, 扇区,

添加新评论