操作系统复习
1. 掌握 CPU 调度算法,熟悉操作系统概念教材 5.3 节中给出的各种调度算法,如先到先服务调度、最短作业优先调度、优先级调度、轮转法调度等,根据给定条件画出 Gantt 图,并计算周转时间和平均周转时间。
2. 掌握进程同步相关概念,并熟练使用同步原语进行编程,见操作系统概念教材第六章。
3. 掌握地址空间的概念,以及与其相关的三个特征(见课程讲义 ppt vm-1);掌握用户态堆内存的使用,并能对判断分析代码中存在的各种内存错误(见课程讲义 ppt vm-1)。
4. 掌握内存溢出(栈溢出)攻击的原理,要求能画出栈溢出攻击的示意图并解释攻击过程;掌握目前常用的三种内存溢出防御方法,包括 cananry、DEP、ASLR(见课程讲义 ppt sec-1)。
5. 掌握虚拟内存管理中的分段与分页机制,及其优缺点(见课程讲义 ppt vm-2);
6. 掌握 TLB 与多级页表(见课程讲义 ppt vm-3),重点了解多级页表相关的计算,比如根据地址位、页面大小、PTE 大小等条件,进行虚拟地址到物理地址的转换。
7. 掌握页码置换算法(见课程讲义 ppt vm-4),要求能根据给定的页面访问序列,给出特定算法的计算过程;掌握 Clock 算法(见课程讲义 ppt vm-4)。
8. 掌握各种磁盘调度算法的原理(见课程讲义 ppt disk-1)。
9. 掌握磁盘阵列 RAID-0,RAID-1,RAID-4,RAID-5 的原理,并分析各种 RAID 在容量、可靠性、吞吐量三个层面的特性(见课程讲义 ppt disk-2)。
10. 掌握文件系统元数据相关属性,要求能根据存储文件的大小来设计元数据中的相关字段(见课程讲义 ppt disk-3)。
11. 掌握文件系统接口,如 open,read,write,在实现时对元数据和文件内容的读写过程(见课程讲义 ppt disk-3)。
12. 了解课堂上讲到的跟操作系统发展史相关的重要人物,并能介绍其主要贡献。
13. 了解操作系统当前的发展现状与未来发展趋势。
- ok掌握 CPU 调度算法,熟悉操作系统概念教材 5.3 节中给出的各种调度算法,如先到先服务调度、最短作业优先调度、优先级调度、轮转法调度等,根据给定条件画出 Gantt 图,并计算周转时间和平均周转时间。
周转时间=实际执行结束时间-到达时间
- the FCFS scheduling algorithm先到先服务算法:
该算法下,按照请求时间顺序依次分配CPU:所以依次是P1、P2、P3:
P1 |
P2 |
P3 |
0 8 12 13
P1的周转时间:8-0=8
P2的周转时间:12-0.4=11.6
P3的周转时间:13-1=12
t(平均周转时间)=(8+11.6+12)/3=10.53
- the SJF scheduling algorithm最短作业优先算法:
该算法按照下次CPU执行的时间长度进行调度,时间越短越优先。P1先到达以后开始执行,然后t=0.4的时候,P2到达,因为P1还得执行8-0.4=7.6,P2需要执行时间4,所以P2被调度,P3到的时候,P2还得执行3.4,P3得执行1,所以,P3被调度,然后P3执行结束后,P2还得执行3.4,P1还得执行7.6,所以P2被调度,最后P1被调度。
P1 |
P3 |
P2 |
0 8 9 13
P1的周转时间:8-0=8
P2的周转时间:13-0.4=12.6
P3的周转时间:9-1=8
t(平均周转时间)=(8+12.6+8)/3=9.53
- FCFS:
P1 |
P2 |
P3 |
P4 |
P5 |
0 |
2 |
3 11 |
15 |
20 |
SJF:
P2 |
P1 |
P4 |
P5 |
P3 |
0 |
1 |
3 |
7 |
12 20 |
non-preemptive priority:
P3 |
P5 |
P1 |
P4 |
P2 |
0 8 |
13 |
15 |
19 |
20 |
RR (quantum = 2):
P1 |
P2 |
P3 |
P4 |
P5 |
P3 |
P4 |
P5 |
P3 |
P5 |
P3 |
0 2 |
3 |
5 |
7 |
9 |
11 |
13 |
15 |
17 18 |
20 |
- ok掌握进程同步相关概念,并熟练使用同步原语进行编程,见操作系统概念教材第六章。
- ok掌握地址空间的概念,以及与其相关的三个特征(见课程讲义 ppt vm-1);掌握用户态堆内存的使用,并能对判断分析代码中存在的各种内存错误(见课程讲义 ppt vm-1)。
•
操作系统是内存中的一组例程(一个库)(在本例中从物理地址0开始)。
•
一个正在运行的程序(进程)当前位于物理内存中(在本例中从物理地址64k开始),并使用其余内存。
•实现时间共享的一种方法是运行一个进程一小段时间,让它完全访问所有内存,然后停止它,将其所有状态保存到磁盘(包括所有物理内存),加载其他进程的状态,运行一段时间。
•不幸的是,这种方法有一个大问题:它太慢了,尤其是随着内存的增长。但是保存和恢复寄存器级状态(如PC、通用寄存器等)相对较快。
•因此,我们宁愿在进程之间切换时将其保留在内存中,从而允许操作系统高效地实现时间共享
地址空间
•操作系统需要创建易于使用的物理内存抽象。
•我们将此抽象称为地址空间,它是系统中正在运行的程序的内存视图。
•理解这个内存的基本操作系统抽象是理解内存是如何虚拟化的关键。
目标——透明Transparency
•虚拟内存(VM)系统的一个主要目标是透明性。
•操作系统应该以运行程序不可见的方式实现虚拟内存。
•因此,程序不应该意识到内存是虚拟化的;相反,程序的行为就好像它有自己的私有物理内存。
•在后台,操作系统(和硬件)做所有的工作,在许多不同的作业之间多路复用内存,因此实现了幻觉。
目标——效率Efficiency
•操作系统应该努力使虚拟化尽可能高效。
•就时间 (即不是让程序运行得更慢)和空间(例如不需要为支持虚拟化所需的结构使用太多内存) 而言。
•在实现高效的虚拟化时,OS必须依赖硬件支持,包括TLBs等硬件特性。
目标——保护Protection
•操作系统应该确保进程之间以及操作系统本身不受进程的影响。
•当一个进程执行加载、存储或指令获取时,它不应该能够以任何方式访问或影响任何其他进程或操作系统本身(即其地址空间之外的任何内容)的内存内容。
•因此,保护使我们能够交付流程间隔离的特性。
用户态堆内存的使用,并能对判断分析代码中存在