习题
- Intel微处理器从4位、8位、16位到32位的演变过程中,什么起了决定作用?其演变过程继承了什么?同时又突破了什么?
- 在80X86的寄存器中,哪些寄存器供一般用户使用?哪些寄存器只能操作系统使用?
- 什么是物理地址?什么是虚地址?什么又是线性地址?举例说明。
- 在保护模式下,MMU如何把一个虚地址转换为物理地址?
- 你是如何认识段的?请用C语言描述段描述符表。
- 为什么把80X86下的段寄存器叫段选择符?
- 保护模式主要保护什么?通过什么进行保护?
- Linux是如何利用段机制又巧妙地绕过段机制?在内核代码中如何表示各种段,查找最新源代码进行阅读和分析。
- 页的大小是由硬件设计者决定还是操作系统设计者决定?过大或过小会带来什么问题?
- 为什么对32位线性地址空间要采用两级页表?
- 编写程序,模拟页表的初始化。
- 为什么在设计两级页表的线性地址结构时,给页目录和页表各分配10位?如果不是这样,举例说明会产生什么样的结果?
- 页表项属性中各个位的定义是由硬件设计者决定还是操作系统设计者决定?如果通过页表项的属性对页表及页中的数据进行保护?
- 深入理解图2.12,并结合图叙述线性地址到物理地址的转换?
- 假定一个进程分配的线性地址范围为0x00e80000~0xc0000000,又假定这个进程要读取线性地址0x00faf000中的内容,试按分页原理描述其处理过程。
- 页面高速缓存起什么作用?如何置换其中的内容,以使其命中率尽可能高?
- Linux为什么主要采用分页机制来实现虚拟存储管理?它为什么采用三级分页而不是两级?
- Intel的汇编语言与AT&T的汇编语言有何主要区别?
- 分析源代码文件system.h中read_cr3()函数和string_32.h中的memcpy()函数。