往年期中卷极难获得,这里找了几套卷子。可以看看。
因为往年都是从第一周开始上课的,所以进度会快一点,这学期是从第四周开始上课的,所以进程会慢些,讲到第九章所以只考到第九章。
同样因为太忙了,答案找时间再更新
试卷一
仅看题目即可,答案有一部分是错误的,但大部分是正确的。
这张试卷有很大的参考价值。许多题目与今年的很像。
这张试卷要感谢隔壁班的大佬y神!fy大佬yyds!
试卷二
1.什么是多道程序技术,它带来了什么好处?(15分)
答:
多道程序设计,就是在内存中存放多个进程来执行人们赋予计算机的任务,
这些在内存中的多个进程共享计算机的硬件资源,如CPU,各种I/O设备等等。
多道程序设计的优点是
(1)资源利用率高,多道程序共享计算机资源,从而使各种资源得到充分利用;
(2)系统吞吐量大,CPU和其他资源保持“忙碌”状态。
这些优点是由多道程序设计的特点决定的,多道程序设计的特点有:
1.多道:计算机内存中同时存放多道相互独立的程序。
2.宏观上并行:同时进入系统的多道程序都处于运行过程中,
即它们先后开始了各自的运行,但都未运行完毕。
3.微观上串行:内存中的多道程序轮流占有CPU,交替执行。
2.什么是用户线程,什么是内核线程,简述其区别与联系。(15分)
用户线程指的是完全建立在用户空间的线程库,
用户线程的建立,同步,销毁,调度完全在用户空间完成,
不需要内核的帮助。因此这种线程的操作是极其快速的且低消耗的。
内核线程就是内核的分身,一个分身可以处理一件特定事情。
这在处理异步事件如异步IO时特别有用。内
核线程的使用是廉价的,
唯一使用的资源就是内核栈和上下文切换时保存寄存器的空间。
支持多线程的内核叫做多线程内核(Multi-Threads kernel )。
支持多线程的操作系统中一般采用三种用户线程与内核线程映射模型,
分别是“一对一模型”、“多对一模型”、“多对多模型”。
3.论述短期,中期和长期调度之间的区别. (15分)
长期调度,又称为作业调度或高级调度,这种调度将已进入系统并处于后备状态的作业按某种算法选择一个或一批,为其建立进程,并进入主机,当该作业执行完毕时,还负责回收系统资源,在批处理系统中,需要有作业调度的过程,以便将它们分批地装入内存,在分时系统和实时系统中,通常不需要长期调度。它的频率比较低,主要用来控制内存中进程的数量。
中期调度,是能将进程从内存或从CPU竞争中移出,从而降低多道程序设计的程度,之后进程能被重新调入内存,并从中断处继续执行,这种交换的操作可以调整进程在内存中的存在数量和时机。其主要任务是按照给定的原则和策略,将处于外存交换区中的就绪状态或等待状态的进程调入内存,或把处于内存就绪状态或内存等待状态的进程交换到外存交换区。
短期调度,又称为进程调度。这也是通常所说的调度,一般情况下使用最多的就是短期调度。它的主要任务是按照某种策略和算法将处理机分配给一个处于就绪状态的进程,分为抢占式和非抢占式。
4、对于系统进行监测后表明平均每个进程在I/O阻塞之前的运行时间为T,一次进程切换需要的时间为S,这里S实际上即为开销。对于采用时间片长度为Q的时间片调度算法,对以下各种情况给出CPU利用率的计算公式。(20分)
Q为无穷大, 2、Q>T, 3、S<Q< T, 4、Q=S, 5、Q趋近于0
答: 1)Q=无穷大 CPU利用率=T/(T+S)
2)Q>T CPU利用率=T/(T+S)
3)S<Q<T CPU利用率= Q /( Q +S)
4)Q=S CPU利用率= Q /( Q +S)]
5)Q接近于0 CPU利用率—>0
Min(Q,T)/[min(Q,T)+S]
5、公共汽车上,司机和售票员各施其责,在汽车不断地到站,停车,行使过程中,他们两个活动有什么同步关系?请用P、V操作描述他们的行为实现他们的同步。(15分)
解答:可以用两个信号量s1、s2,分别表示可以开门和可以开车,其初始值都为0,用PV操作实现为:
司机: 售票员:
正常行车 售票
到站停车 P(S1)
V(S1) 开车门
P(S2) 关车门
启动开车 V(S2)
6、假定在单道批处理环境下有5个作业,各作业进入系统的时间和估计运行时间如下表所示,求先来先服务算法,最短作业优先算法(含抢占式和非抢占式)和轮转调度(时间片为5分钟)算法的平均等待时间。(20分)
作业 进入系统时间 估计运行时间/分钟
1 8:00 40
2 8:05 30
3 8:10 12
4 8:15 18
5 8:20 5
- 先来先服务算法
P1 | P2 | P3 | P4 | P5 |
0 40 70 82 100
平均等待时间=(0+(40-5)+(70-10)+(82-15)+(100-20))/5=48.4
- 最短作业优先算法(非抢占式)
P1 | P5 | P3 | P4 | P2 |
0 40 45 57 75
平均等待时间=(0+(75-5)+(45-10)+(57-15)+(40-20))/5=33.4
最短作业优先算法(抢占式)
P1 | P2 | P3 | P5 | P4 | P2 | P1 |
0 5 10 22 27 45 70
平均等待时间=(65+(5+35)+(10)+(27)+(22))/5=32.8
这里存疑?(65+35+12+2)/5
- 轮转调度(时间片为5分钟)
P1 | P2 | P3 | P4 | P5 | P1 | P2 | P3 | P4 | P1 | P2 | P3 | P4 | P1 |
0 5 10 15 20 25 30 35 40 45 50 55 57 62 67
P2 | P4 | P1 | P2 | P1 | P2 | P1 | P1 |
72 75 80 85 90 95 100 105
平均等待时间=((20+15+12+8+5+5)+(20+15+12+8+5)+(20+15)+(20+12+10)+(0))/5=40.4
试卷三
1. (20%) 简述进程的概念。画出进程的状态图,并就状态图中可能发生CPU调度决策的四种情况进行说明。结合进程控制块PCB对内核在两个进程间进行上下文切换过程进行描述。
参考答案:进程,执行中的程序;执行一个程序所需要的资源集的系统抽象;一个程序的运行实例;
进程状态图:
CPU调度决策可以如下四种情况下发生:
当一个进程从运行状态切换到等待状态
当一个进程从运行状态切换到就绪状态
当一个进程从等待状态切换到就绪状态
当一个进程终止时。
进程切换:
2. (10%) 简述系统调用(System call)、系统程序(System program)的用途。
参考答案:系统调用,允许用户进程请求操作系统提供的服务。由OS内核实现并提供访问接口,由用户程序调用,程序员使用。
系统程序,给用户提供基本的功能,这样用户在解决公共问题的时候不用写自己的程序。提供程序开发和执行的环境,普通操作用户使用。
3. (15%) 线程通常可分为用户级线程和内核级线程,请回答两种线程之间的区别,并就两者之间的关系,对多线程模型的类型及其优缺点进行简要说明。
参考答案:用户线程不受内核支持,无需内核管理,使用用户级的线程库完成线程的管理,对用户线程的支持通常处于内核之上,通过一个用户级线程库(thread library)实现。线程库提供了对线程的创建、调度和管理的支持,这无需来自内核的支持。因为内核并不知道用户级线程的存在,所有的线程创建和调度工作都在用户空间完成,而且整个过程不受内核的干涉。
内核线程由操作系统直接支持:内核在内核空间内实现了线程的创建、调度和管理。
常见的多线程模型包括以下三种:
多对一, 优点线程管理由线程库在用户空间进行,效率较高,缺点一旦某个线程执行了阻塞,则整个进程也会被阻塞
一对一, 允许线程并发的执行并且运行在多处理器系统上,不会导致单一线程阻塞进程的情况,缺点用户线程和内核线程一一对应,开销较大,限制了系统线程的数量。
多对多, 多路复用了许多用户级线程到同样数量或更小数量的内核线程上,允许OS创建足够数量的内核线程,且在某个线程发生阻塞时,可调度其他线程执行。
4. (15%) 对于一个多任务的应用软件,分析比较采用多进程实现和多线程实现的优劣,并举例说明。
仅供参考:从资源或系统开销、维护、进程阻塞、崩溃、安全等情况分析。
以web浏览器为例(360浏览器从多线程到多进程实现)。
5. (10%) 如下所示程序使用Pthread API实现,请将空白部分补充完整,并说明LINE C和LINE P将会输出的结果。
#include <pthread.h>
#include <stdio.h>
int value = 0;
void *runner(void *param); /* the thread */
int main{int argc, char *argv[])
{
int pid;
pthread_t tid;
pthread_attr_t attr;
pid = fork () ;
if (pid == 0) {/* child process */
pthread_attr_init ( 1 ) ;
2 (&tid, &attr , runner, NULL) ;
3 (tid, NULL) ;
printf("CHILD: value = %d",value); /* LINE C */
}
else if (pid > 0) {/* parent process */
wait(NULL);
printf("PARENT: value = %d",value); /* LINE P */
}
}
void 4 (void *param){
value = 5;
pthread_exit (0) ;
}
参考答案:
1、&attr
2、pthread_create
3、pthread_join
4、*runner
LINE C、CHILD: value =0
LINE P、PARENT: value =5
6. (20%) 有5个待运行的作业A、B、C、D、E,它们的运行时间分别为10、6、2、4和8分钟,其提交时间分别为第0、2、3、5、7分钟,其优先级别分别为3、2、5、1、4,其中5级为最高优先级。对于下列进程调度算法,试计算其平均周转时间。
1)、先来先服务;
2)、非抢占式优先级调度;
3)、抢占式优先级调度。
参考答案:
7. (10%) 阅读下列代码,回答A、B、C、D、E处代码的作用。
ORG 0x7c00
entry:
MOV AX,0
MOV SS,AX
MOV SP,0x7c00
MOV DS,AX
MOV ES,AX
MOV AX,0x0012 ; A设置显示模式
INT 0x10 ; B调用显示的BIOS
MOV SI,msg
putloop:
MOV AL,[SI]
ADD SI,1
CMP AL,0
JE fin
MOV AH,0x0e
MOV BL,0x02 ;C 指定字符颜色(IRGB)
INT 0x10
JMP putloop
fin:
HLT
JMP fin
msg:
DB 0x0a
DB "Hello, Demo OS boot sector!"
DB 0x0a
DB 0
RESB 0x7dfe-$ ;D 填写0x00直到0x7dfe
DB 0x55, 0xaa ;E 设置可引导扇区标志