第九章
虚拟内存:纯请求分页式系统+预调入相对->请求分页式系统;基本实现:离散型存储;什么是虚拟内存
写时复制(概念)
页面置换:算法,优缺点,提高VM效率,评价新的算法。{注意看二次机会算法}
页框的分配:固定分配(等量、按比例、按优先级->某些进程抖动)、可变分配(整个系统都不/全都抖动),优缺点
系统颠簸的原因(进程数量过多);什么是,与局部模型的关系;解决方案;抖动曲线(进程⬆️,CPU利用率⬆️;进程⬆️,CPU利用率⬇️。页框⬆️,缺页率⬇️:双曲线)
内存映射文件(概念)
内核内存的分配(知道就行)
预调页:多少个
页大小:2的n次,太大,太小……
程序设计和VM的关系;局部性好,VM效率高
第十章
文件概念:什么是文件;分类;扩展名与类型的关系;访问方法(直接/间接):举例
目录结构:什么是(文件名+磁盘位置);基本作用(按名存取);文件控制快(文件各种属性信息:元数据);文件系统的树形结构;不同文件系统的挂接(什么是mounting,起的作用)
文件共享:不同用户访问同一局面;……指针指向同一文件;具体实现:索引结点;目录=文件名+索引号结点
用户、文件操作矩阵:稀疏矩阵(过大,且没有必要->对文件、用户分类)
第十一章
层次结构
分配方法->决定磁盘管理
连续分配、链接分配(改进:FAT表)、索引分配(改进:混合索引):各种优缺点、基本思想、对文件的修改是否方便、实现是否简单、系统开销
空闲空间管理:标记、位链表;位视图、链接->成组链接,把控制快分成组,使之联系
效率与性能:举例,OS为了解决什么问题采用什么方法提高效率/性能;牺牲效率/性能提高,另一个
第十二章
磁带磁盘的概念、结构
磁盘管理
交换空间管理:为什么对换空间的数据要存到交换空间
RAID的全称,通过冗余改善可靠性,通过并行处理提高速度,改善性能
第十三章
什么是I/O设备;硬件的端口、总线……
轮询、中断、直接内存访问(DMA
使用I/O设备:in/out(特权指令,不允许用户,必须使用系统调用);API(OS之上的应用接口,跨平台)
同步:(阻塞;非阻塞:不启动外设,要么取回要么不等直接回来;是哪一部分;和驱动程序的区别(前者不依赖,后者依赖于外部设备))I/O
异步(不阻塞:启动外设,让其工作,进程返回,有外设给中断信号再回去)
为什么要引入动态重定位?如何实现?
答:P127-128。连续分配方式容易造成内存很多小分区(零头)无法使用,有必要进行“紧凑”,而这又会造成程序的物理地址改变,因此要进行动态重定位,即重新计算逻辑地址到物理地址的映射。
实现方法是:为了不因重定位而影响效率,需要硬件支持,可在CPU中增加一个重定位寄存器,用它来存放程序在内存中的起始物理地址,程序在执行时,真正访问的内存地址是逻辑地址与重定位寄存器中的物理地址相加而形成的。
为实现分页存储管理,需要哪些硬件支持?
答:分页是离散存储,效率较低,必需借助硬件提高效率。主要硬件有页表寄存器、联想寄存器(TLB,快表)、地址变换机构。这些硬件在4.4小节有零散介绍。 14 较详细的说明引入分段存储管理是为了满足用户哪几方面的需要?
答:P136。
在具有快表的段页式存储管理方式中,如何实现地址变换?
答:【P140-141地址变换过程】注意这一小节讲的“三次访存。
简单的说,是先查段表,从段表中找到该段的页表,再查页表,找到对应的物理块号,最后利用物理块号+页内地址生成最终的物理地址。
在请求分页系统中,常采用哪几种页面置换算法?
答:
a. 最佳置换算法;理论上是最佳的,但不实用。
b. 先进先出算法;缺页率太高,不使用。
c. 最近最久未使用LRU置换算法;最常用的算法
d. Clock置换算法; LRU的效率不太好,需要硬件支持。Clock是LRU的近似,不需要硬件太多支持。
实现LRU算法所需的硬件支持是什么?
答:P152
a. 寄存器,用于记录某进程在内存中各页的使用情况;
b. 栈,用于保存当前使用的各个页面的页面号.
[!]28 试说明简单的和改进型Clock置换算法的基本原理.
答:P153。
一个计算机系统的虚拟存储器,其最大容量和实际容量分别由什么决定? 答:
a. 最大容量由系统寻址能力决定;
b. 实际容量由内存决定.
什么是抖动? 产生抖动的原因是什么?
答:抖动(颠簸,Thrashing)是考研的一个知识点,教材将其遗漏了。
a 抖动就是指当内存中已无空闲空间而又发生缺页中断时,需要从内存中调出一页程序或数据送磁盘的对换区中,如果算法不适当,刚被换出的页很快被访问,需重新调入,因此需再选一页调出,而此时被换出的页很快又要被访问,因而又需将它调入,如此频繁更换页面,以致花费大量的时间,我们称这种现象为"抖动";
b 产生抖动的原因是由于CPU的利用率和多道程序度的对立统一矛盾关系引起的,为了提高CPU利用率,可提高多道程序度,但单纯提高多道程序度又会造成缺页率的急剧上升,导致CPU的利用率下降,而系统的调度程序又会为了提高CPU利用率而继续提高多道程序度,形成恶性循环,我们称这时的进程是处于”抖动"状态。
在请求分页系统中,页表应包括哪些数据项?每项的作用是什么?
a. 在请求分页系统中,其页表项中包含的数据项有页号,物理块号,状态位P,访问字段A,修改位M和外存地址;
b. 其中状态位P指示该页是否调入内存,供程序访问时参考;
c. 访问字段A用于记录本页在一段时间内被访问的次数,或最近已有多长时间未被访问,提供给置换算法 选择换出页面时参考;
d. 修改位M表示该页在调入内存后是否被修改过;
e. 外存地址用于指出该页在外存上的地址,通常是物理块号,供调入该页时使用
甘特图
至多只允许四个哲学家同时进餐,以保证至少有一个哲学家可以获得二只筷子,可以进餐,最终总会释放出他所用过的两只筷子,从而可使更多的哲学家进餐。例程如下:
typedef int semaphore; //定义信号量
semaphore chopstick[5]={1,1,1,1,1};//初始化信号量
semaphore eating = 4; //仅允许四个哲学家可以进餐
void philosopher(int i) //第i个哲学家的程序
{ while(1)
{ thinking(); //工作之一
P(eating); //请求进餐,若是第五个则先挨饿
P(chopstick[i]); //请求左手边的筷子
P(chopstick[(i+1)%5]); //请求右手边的筷子
Eating(); //进餐
V(chopstick[(i+1)%5]); //释放右手边的筷子
V(chopstick[i]); //释放左手边的筷子
V(eating); //释放信号量给其他挨饿的哲学家
}
}
另一种解决方法,仅当哲学家的左、右两支筷子均可用时,才允许他拿起筷子进餐。
typedef int semaphore; //定义信号量
semaphore chopstick[5]={1,1,1,1,1}; //初始化信号量
semaphore mutex = 1; //设置取筷子的信号量
void philosopher(int i) //第i个哲学家的程序
{while(1)
{thinking();
P(mutex); //在取筷子前获得互斥量
P(chopstick[i]);
P(chopstick[(i+1)]%5);
V(mutex); //释放互斥量
Eating();
V(chopstick[(i+1)]%5);
V(chopstick[i]); }
}
规定奇数号哲学家先拿起其左边筷子,然后再去拿右边筷子;而偶数号哲学家则相反。按此规定,1,2号哲学家竞争1号筷子,3,4号哲学家竞争3号筷子,即五个哲学家都先竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有某一个哲学家能获得两支筷子而进餐。
程序代码如下:
typedef int semaphore; //定义信号量
semaphore chopstick[5]={1,1,1,1,1}; //初始化信号量
void philosopher(int i) //第i个哲学家的程序 {
while(1){
thinking();
if(i%2 == 0) { //偶数哲学家,先右后左
P(chopstick[i+1]%5); P(chopstick[i]);
Eating();
V(chopstick[i+1]%5); V(chopstick[i]); }
Else{ //奇数哲学家,先左后右
P(chopstick[i]); P(chopstick[i+1]%5) ;
Eating();
V(chopstick[i]); V(chopstick[i+1]%5); } } }
利用AND信号量机制解决哲学家进餐问题
AND信号量机制解决哲学家进餐问题本质上是AND同步问题。故用AND信号量机制可获得最简洁的解法。 typedef int semaphore; //定义信号量
semaphore chopstick[5]={1,1,1,1,1}; //初始化信号量
void philosopher(int i) //第i个哲学家的程序
{ while(1)
{ thinking();
P(chopstick[(i+1)]%5,chopstick[i]); //二个信号量同时AND判断
Eating();
V(chopstick[(i+1)]%5,chopstick[i]);
} }
系统调用和原语
1、系统调用是操作系统提供给软件开发人员的程序接口,开发人员可以通过系统调用使用系统功能。
2、是操作系统内核中,由若干条指令构成、用于完成一个特定的功能的一个过程,该过程在执行时是不可中断的
SPOOLing技术利用工作速度较高的大容量共享设备磁盘模拟工作速度较低的独享设备(如打印机),从用户使用的角度来看,独享设备改造成了共享设备,这种共享设备称为虚拟设备。
SPOOLing技术利用工作速度较高的大容量共享设备磁盘模拟工作速度较低的独享设备(如打印机),从用户使用的角度来看,独享设备改造成了共享设备,这种共享设备称为虚拟设备。 页表与快表
1、为了方便在内存中找到进程的页对应的物理块,系统为每个进程建立一张页面的映像表,称为页表。2、由于页表被储存在主存中,因此程序每次访问需要花费两倍时间:一次访问页表获得物理地址;一次通过物理地址获得数据。这会造成计算机速度的减慢。因而现代计算机包含了一个特殊的cache,用来保存被使用的地址变换,这种特殊的地址变换cache成为快表,即TLB
设备独立性
应用程序独立于具体使用的物理设备 Spooling技术
为了克服独占设备的这些缺点,操作系统提供外部设备同时联机操作的功能,称为假脱机操作技术(SPOOLling技术) 文件控制块
是保存文件书名信息的数据结构。
2.生产者和消费者问题模型是解决什么问题的,你在windows中见到哪些例子?
生产者与消费者问题是一种同步问题的抽象描述,系统中的进程都可以消费或生产某类资源。考虑输入情形时,输入进程时生产者,计算进程是消费者;考虑输出情形时,计算进程是生产者,输出进程则是消费者。
5.操作系统的目标与作用?
目标:方便性:使计算机易学易用、共享资源
有效性:提高系统资源的利用率和吞吐量 可扩充性:能适应硬件的发展,容易升级 开放性:使应用程序具备可移植性和互操作性 作用:用户与计算机硬件之间的接口
计算机系统资源的管理者
四类资源:处理器、存储器、I/O设备、信息
7.设备驱动程序的功能是什么,有不要驱动程序的设备吗? 1、将接受到的抽象要求转化为具体要求
2、检查用户的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。
3、发出I/O命令,启动分配到的I/O设备,完成指定的I/O操作。
4、几时相应有控制器或通道发来的中断请求,根据其中断类型相应的中断处理程序进行处理。
9.如何使用信号量的P,V操作实现进程的互斥?
设互斥信号量S的初始值设为1,在第一个进程进入临界区执行P操作后,S值变为0。S=0表示临界资源未被占用,可分配给该进程,使之进入临界区。若此时第二个进程欲进入临界区,也应先执行P操作,http://www.rtywa.info/?tag-124结果使S变为-1。S=-1表示临界资源已被占用,因此进程被阻塞,知道第一个进程执行V操作,释放临界资源,唤醒被阻塞的进程,第二个进程才能进入临界区。
在一个采用页式虚拟存储管理的系统中,有一用户作业,它依次要访问的字地址序列是:115,228,120,88,446,102,321,432,260,167,若该作业的第0页已经装入主存,现分配给该作业的主存共300字,页的大小为100字,请回答下列问题:
(1)按FIFO调度算法将产生 次缺页中断,依次淘汰的页号为 ,缺页中断率为 。 按FIFO调度算法将产生5次缺页中断;依次淘汰的页号为:0,1,2;缺页中断率为:5/10=50% (2)按LRU调度算法将产生 次缺页中断,依次淘汰的页号为 ,缺页中断率为 。
按LRU调度算法将产生6次缺页中断;依次淘汰的页号为:2,0,1,3; 缺页中断率为:6/10=60%
操作系统特征:(解答)
1, 并发性:两个或两个以上的活动或者事件在同一时间间隔内发生
2, 共享性:计算机系统中的资源可以被多个并发执行的程序共同使用,而不是被某个程序
独占 (1)透明资源共享(2)显示资源共享 3, 异步性:进程以不可预知的速度向前推进
4, *虚拟性:OS中的一种管理技术,它是将物理上的一个实体变成逻辑上的多个对应物,
或把物理上的多个实体变成逻辑上的一个对应物。
*多道程序设计:允许多个作业同时进入计算机系统的主存并启用交替计算的方法
优点:1 提高CPU,主存和设备的利用率 2 提高系统的吞吐率 3 充分发挥系统的并行性
缺点:延长系统的周转时间
P17 分时操作系统的特点:同时性 独立性 及时性 交互性
P26
系统调用概念(简答):为了扩充机器功能、增强系统能力、方便用户使用而在系统中建立的过程(函数)。 *系统调用的作用:
1, 内核可以给予权限和规则对资源访问进行裁决,保证系统的安全性
2, 系统调用对资源进行抽象,提供一致性接口,避免用户在使用资源时发生错误,且使编
程效率提高
系统调用的分类(填):1 进程管理 2 文件操作 3 设备管理 4内存管理 5 进程通信 6 信息维护
P29
系统调用与函数调用的区别: 1, 调用形式不同
函数调用其所转向的地址是固定不变的,但系统调用中不包含处理程序入口。 2, 被调用代码位置不同
函数调用是静态调用 系统调用是动态调用 3, 提供方式不同
函数调用通常由编程语言提供 系统调用由操作系统提供 4, 实现方式不同
函数调用是在用户态,只能访问用户栈
系统调用通过中断机制,从用户态转到核心态,内核服务函数在核心态执行,并访问核心栈 P40 管程:管理资源共享的一种同步机制,一个共享文件,利用辅助存储器来进行数据通信 类程:管理私有资源
进程切换的实现步骤如下:
1, 保存被中断进程的处理器现场信息 2, 修改被中断进程PCB的有关信息 3, 把被中断进程的PCB加入相关队列 4, 选择占用处理器运行的另一个进程 5, 修改被选中进程PCB的有关信息
6, 设置被选中进程的地址空间,护肤存储管理信息 7, 根据被选中进程的上下文信息来恢复处理器现场 P124(*两个版本略有不同) 模式切换的步骤如下:
1, 保存被中断进程的处理起现场信息
2, 处理器从用户态切换到核心态,以便执行系统服务程序或中断处理程序 3, 如果处理中断,可根据所规定的中断级别设置中断屏蔽位
4, 根系统调用号或中断号,从系统调用表或中断入口地址表中找到系统服务程序或中断处
理程序的地址 P124(-pr2)
模式切换不同于进程切换,它不一定会引起进程状态的转换,在大多数情况下也不一定引起进程的切换,在完成系统调用服务或中断处理之后,可通过逆向模式切换来恢复被中断进程的运行
(B4)P125(填空)
调度机制3个逻辑功能程序模块: 1, 队列管理程序 2, 上下文切换程序 3, 分派程序
低级调度的基本类型:剥夺式 非剥夺式
P240
管程和进程区别:
1, 管程所定义的是公共数据结构,而进程定义的是私有数据结构
2, 管程把共享变量上的同步操作集中起来统一管理,而临界区却分散在每个进程中
3, 管程是为解决进程共享资源的互斥而建立的,而进程是为占有系统资源和实现系统并发
而引入的
4, 管程被欲使用共享资源的所有进程所调用,管程和调用它的进程不能并行工作;而进程
之间能够并行工作,并发性是其固有特性
5, 管程可作为语言或操作系统成分,不必创建或撤销;而进程有生命周期,由创建而产生
至撤销便消亡 P253
进程之间互相交换信息的工作成为进程通信。通信方式如下: 1, 信号通信机制 2, 管道通信机制 3, 消息传递通信机制 4, 信号量通信机制 5, 共享主存通信机制