1、某系统采用分页存储管理(Paging),页长(Page Size)为 1K(1024),该进程分页后 0、1、2三页分别装入到主存的 1、2、4 帧(Frame)。现有一逻辑地址(Logical Address)为 2048,页 内地址(Page Offset)为( )。
答案 : 0
页号 = 逻辑地址 / 页长
页内地址 = 逻辑地址 % 页长
2、假设5 个进程 P0、 P1、 P2、 P3、 P4 共享三类资源 R1、 R2、 R3,这些资源总数分别为18、 6、 22。 T0 时刻的资源分配情况如下表所示,此时存在的一个安全序列是( )。
答案:D
资源总数为18.6.22,以及分配资源之和为16.3.19,故可用资源为2.3.3;
线程的所需资源 = 资源最大需求 – 已分配资源
故五个线程所需资源为:2,2,7;1,3,3;0,0,6;2,2,1;1,1,0
由于安全序列进程所需资源需在可用资源里面获取,故第一个进程应为P1,P3或
P4,故AC错,当第一个进程为P1时,当P1运行完毕释放它所占有的全部资源,
可用资源变为6.3.6,由于P0所需资源为2.2.7,故不能满足,B错。
3、用于解决CPU指令乱序、编译器重排、多CPU内存同步等带来的问题的机制是?
答案:内存屏障
内存屏障:也称内存栅栏,屏障指令等,是一类同步屏障指令,使得cpu或编译器在
对内存随机访问中的一个同步点,使得此点之前的所有读写操作都执行完才可以开始
执行此点后的操作。
大多数现代计算机为了提高性能而采取乱序执行,这使得内存屏障称为必须。
语义上:内存屏障之前的所有读写操作都要写入内存,内存屏障之后的所有操作都可以获得同步屏障之前的写操作的结果。
顺便讲讲其他选项
volatile关键字:
例子:
volatile int i = 10;
int j = i;
…
Int k = i;
volatile关键字相当于告诉编译器这个变量是随时可能发生变化的,故每次使用它
都必须从内存地址中获取,因而编译器生成的可执行代码会重新从i的地址读取放入
k中。
Volatile影响编译器编译的结果,故与volatile变量有关的运算,不要进行编译优
化。
编辑器优化:
由于编译器发现两次从i中获取的数据之间的操作并没有对i进行过操作,故它会自
动把上次读取的放入k中,而不是重新从i中读取。
自旋锁:
跟互斥锁类似,在任何时刻最多只能有一个保持着,跟互斥锁在调度机制上有不同,
互斥锁在资源已经被占用时,进入睡眠状态,而自旋锁是由调用者一直循环知道锁释
放。
信号量(semaphore):
它是一个计算器,用于控制同时访问某个特定资源的操作数量,或者执行某个特定操作的数量。
在进入一个线程之前,线程必须获得一个信号量(许可),并在使用之后释放许可。当没有信号量(许可),那 么请求将阻塞直到有许可。
例子:
以一个停车场的运作为例。简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆直接进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入外面的一辆进去,如果又离开两辆,则又可以放入两辆,如此往复。
4、设计实时操作系统必须首先考虑系统的( )。
答案:可靠性、实时性。
实时操作系统的效率一般比分要低,是适当牺牲了效率来保障实时。
5、选择排队作业中等待时间最长的作业优先调度,该调度算法是()。
答案:先来先服务调度方法(FCFS first come first service)
下面讲讲进程的调度算法:
不同环境的调度算法目标不同,因此需要针对不同环境来讨论调度算法。
-
批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间。(从提交到终止的时间)
- 先来先服务调度方法(FCFS first come first service)根据作业的等待时间的长度来衡量。
- 短作业有限调度算法(SJF shortest job first)根据作业运行时间的长度来衡量。
- 响应比高优先调度算法(HRN highest response_ratio next)是对FCFS和SJF的一种综合平衡,FCFS只考虑作业的等待时间,而SJF只考虑作业的运行时间,这两种方式在某些极端情况下都会带来不便,HRN调度策略同时考虑每个策略的等待时间跟运行时间,从中选出响应比最高的作业。响应比R = (W + T) / T = 1 + W / T其中T为该作业估计需要的执行时间,W为作业在后备状态队列的等待时间。每当要进行作业调度时,系统计算每个作业的响应比,选择其中R最大者投入执行。这样,即使是长作业,随着等待时间的增加,W / T也会随着增加,也就有机会获得调度执行。
-
交互式系统交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行相应。
- 优先权调度算法(priority scheduling)分为静态优先权跟动态优先权为每个进程分配一个优先级,按照优先级进行调度。为了防止优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。
- 轮转法(round robin)也叫时间片轮转,将所有就绪进程按FCFS的原则排成一个队列,每次调度时,把cpu时间分配给队首进程,让该进程执行一个时间片。当时间片用完时,有定时器发出时钟中断,调度程序便停止该进程的运行,并将它运送至就绪队列的末尾,同时将cpu时间分配给队首的进程。时间片轮转算法的效率和时间片的大小有很大关系,因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多的时间。
- 多级反馈队列(round robin with multiple feedback)是轮转法跟优先级算法的综合和发展。如果一个进程需要执行100个时间片,如果采用轮转法,那么需要交换进程100次。多级队列是为了这种需要连续执行多个时间片的进程考虑,它设置了多个队列,分别赋予不同的优先级,如逐级降低,每个队列时间片大小都不相同,规定优先级越低时间片越长,如逐级加倍(例如1,2,4,8….)。如果第一个队列没有执行完,则降低到第二个队列的末尾,同样按照FCFS算法调度,如此下去,降低到最后的队列,则按”时间片轮转法”算法调度直到完成。这种方式下,之前的进程只需切换7次。
1、进程与程序的一个本质区别是()。
答案:前者的动态的,后者是静态的。
进程跟程序的区别:
- 进程的动态的,程序时静态的。
- 进程有一定的生命周期,而程序是指令的集合,本身无‘运动’的含义,没有建立进程的程序不能作为一个独立单位得到操作系统的认可。
- 一个程序可以对应多个多个进程,一个进程只能对应一个程序。
2、计算机通过MIC(话筒接口)收到的信号是()。
答案:音频模拟信号。
- 话筒是将语音信号转化为电信号的装置,语音信号是连续的,转化为电信号也是连续的,因此是模拟信号。
- 模拟的电信号在计算机内经过采样,量化,编码,最终形成音频数字信号。
3、处理外部中断时,应该由操作系统保存的是()。
答案:通用寄存器的内容。
- 外部中断处理过程,PC(程序计数器)值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。
- 寄存器:中央处理器内的组成部分,寄存器是有限存储容量的高速存储部件,他们可以用来暂存指令,数据和地址。在cpu的控制部件中,包含的寄存器有指令寄存器(IR:临时放置从内存里面取得的程序指令的寄存器,用户存放当前从主存储器读出的正在执行的一条指令)和程序计数器(PC:用于存放下一条指令所在单元的地址的地方)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。