1.什么是操作系统?对用户是一个控制软件,对下来说是资源管理。层次是在硬件之上,应用程序之下。操作系统分为两部分,shell和kernel,其中windows,linux的界面属于shell。kernel在shell之下。
2.并发和并行的区别。前者是一段时间,后者是一个时间点。
3.共享。同时访问,互斥共享。
4.虚拟,多道程序设计。
5.异步。
6.如何学习操作系统。最好动手。最基本的要求是听课看书写作业。
7.操作系统的启动。POST(加电自检),寻找显卡和执行BIOS,BIOS把bootloader从磁盘的引导扇区(512bytes)加载到0x7c00。bootloader将操作系统的代码和数据从硬盘加载到内存中。跳到OS起始地址。
8.操作系统与程序和设备交往:系统调用、异常、中断。
9.系统调用(应用程序向OS发出服务请求);异常(不良的应用程序);中断(来源于外设)。
10.中断产生时,软件和硬件各自做了什么。
11. 系统调用,从用户态带内核态。执行时间开销超过程序调用。内核和用户堆栈不同且独立。
12.计算机体系结构及内存分层体系。cpu内部有寄存器和缓存。程序数据可以放在容量更大一些的主存,掉电消失。磁盘是空间最大,永久保存。操作系统对内存的管理:抽象,保护,共享和虚拟化。
13.地址空间和地址生成。内存管理单元(MMU)寻找逻辑地址和物理地址之间的映射关系。地址的安全检测。
14.连续内存分配。内存碎片问题。首次匹配分配策略(易产生外碎片);最优匹配分配(易产生很多微小碎片);最差匹配分配
15.压缩式和交换式碎片整理。压缩式:调整程序内存位置;交换式:抢占等待的程序内存,放到磁盘。
16.非连续内存分配:分段和分页。一个程序的物理地址空间是非连续的。难题是如何建立连续虚拟地址和不连续的物理地址之间的联系。分段:把代码、数据、堆栈分配到不同的物理地址空间。分段寻址方案:段号+段内偏移。段表由操作系统建立;分页方案:分段方案中段大小可变,分页中页的大小固定。页和帧。页表保存了逻辑地址-物理地址映射关系(页号和帧号之间转换)。
17.非连续内存分配:页表。存在的问题,页表可能非常大;每个程序各自有自己的页表;不能放到cpu,只能放到内存,等于说访问一个内存单元需要两次内存访问。解决方法:TLB,用关联内存实现,很快;二级和多级页表。分级页表可以极大减小空间,时间换取空间,时间可以用TLB缓解;反向页表:让页表与物理地址空间的大小相对应。
18.虚拟内存起因。手动覆盖:不具有调用关系的模块复用同一块内存(发生在一个程序里面);交换技术:多道程序,让正在运行的程序获得更多内存资源(发生在程序之间)。swap out/in(粒度是整个程序)
19.虚存技术:程序的局部性原理。缺页中断。在页式或段式管理基础上实现虚存技术。与交换技术相比。以页面和段为粒度交换。请求调页和页面置换功能。页表表项各位含义(修改位:该页面是否被修改过,如果没有,就不需要置换回外存)。缺页中断处理过程。backing store。 虚拟内存性能EAT。
20.最优页面置换算法。页面锁定。最优的情况是置换未来最长时间不用的页面,但是理想不实际。可作为其它算法的评价依据。
21.先进先出算法。维护一个链表,驻留时间最长的页面,最先置换,实现上一个指针即可。Belady现象(给的物理页越多,缺页中断反而越多)。