考试题分析
卷一
一、 选择题(选择最确切的一个答案,将其代码填入括号中,每空2分,共20分)
1. 把逻辑地址转变为内存的物理地址的过程称做( )。
A 编译 B连接 C运行 D重定位
2. 进程和程序的一个本质区别是( )。
A 前者分时CPU,后者独占CPU
B 前者存储在内存,后者存在外存
C 前者在一个文件中,后者在多个文件中
D 前者为动态的,后者为静态的
3. 可重定位内存分区分配目的为( )。
A 解决碎片问题
B 便于多作业共享内存
C 回收空白区方便
D 摆脱用户干预
4. 索引式(随机)文件组织的一个主要优点是()。
A不需要链接指针
B能实现物理块的动态分配
C回收实现比较简单
D用户存取方便
5.作业I/O方式有如下三种:( )、脱机和( )。
A询问 B联机 C中断 D通道
6.两个旅行社甲和乙为旅客到某航空公司订飞机票,开成互斥的资源是( )。
A飞机票 B旅行社 C航空公司 D旅行社和航空公司
7.一个文件系统的逻辑分区( )。
A不能管理大于物理硬盘容量 B能管理2个相同的物理硬盘
C能管理2个不相同的物理硬盘 D能管理多个不相同的物理硬盘
8. 操作系统程序结构的主要特点是( )。
A一个程序模块 B分层结构 C层次模块化 D子程序结构
9. 面向用户的组织机构属于( )。
A虚拟结构 B实际结构 C逻辑结构 D物理结构
二、 是非题(正确的划“V”,错误的划“X”,20分)
(T)1,进程的互斥和同步是进程通信的基本内容。
(T)2,操作系统“生成”是指能产生最适合用户自己工作环境的操作系统内核。
(F)3,多用户操作系统离开了多终端硬件支持,则无法使用。
(F)4,实时操作系统的响应系数最大,设备利用率最高。
(T)5,UNIX的最大特点是分时、多用户、多任务和倒树型文件结构。
(T)6,引导操作系统进入内存的程序一般放在计算机的软固件中。
(T)7,死锁是指两个或多个进程都处于互等状态而无法继续工作。
(F)8,具有多道功能的操作系统一定是多用户操作系统。
(T)9,一般的分时操作系统无法做实时控制用。
(T)10,一个物理硬盘可以为成多个逻辑硬盘分区进行面向用户文件系统的管理。
三、 填空题(40分)
1. 在一般操作系统中,设备管理的主要功能包括(分配设备)、(操作)(管理缓冲区)和(实现虚拟设备技术)。
2. 常用的进程调度算法有(先来先服务)(优先数法)和(轮转法)。
3. 从用户观点看,UNIX统将文件分三类:(普通文件)、(目录文件)和(特殊文件)。
4. 进程的三个基本状态是(就绪)、(执行)和(等待)。
5. 在文件使用中涉及的系统调用主要有下列六种:(创建)(打开)(读)(写)(关闭)和(删除)。
6. SP00Ling技术的中文译名(外部设备连机并进行操作),它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常叫做“假脱机技术”。
四、 问答题(20分)
1. 什么是死锁?死锁的四个必要条件是什么?
死锁:这⼀组中的每个进程都正在等待该组中的其他进程所占⽤资源时,可能引起的⼀种错误现象。
必要条件:互斥使用、保持和等待、自己剥夺性、循环性
2. 学习计算机操作系统,至少要牢记住哪两句话?
- 计算机操作系统是放边用户管理和控制计算机软硬件资源系统软件;
- 操作系统目前有五大类型:批处理、分时、实时、网络和分布式;
- 五大功能:作业管理、文件管理、存储管理、设备管理和进程管理。
3. 简述请求页式存储管理的优缺点。
优点:
- 虚存量大适合多道程序运行用户不必担心内在不够调度操作动态页式管理提高供了内在与外
存统一管理的虚拟实现方式 - 内在利用率高不常用的页面尽量不留在内存3不要求连续作业存放有效地解决
- 碎片问题与分区式比不需要移动作业,与多重分区式比,无零星碎片产生,比IX操作系统较早采用。
缺点: - 要处理页面中断,缺失中断等多处理系统开销大
- 有可能产生头动
- 地址变换机构复杂
4. 虚拟存储器的基本特征是什么?虚拟存储器的容量主要受到什么的限制?
- 虚存是由操作系统调度,采有内外存的交换技术多道程序在必须使用时调入内存不用的调出内存。
- 这样好像内存容量不受限制但要注意虚存容量不是无限的极端情况,受内存外存的可使用的况容量限制。
- 虚容量还受计算机况线长度的地址结构限制。
- 速度和容量是时控矛盾,虚存量的扩大是以牺牲CPU工作时间。
5. 计算机人机交互界面的三代发展特点是什么?
一维命令行,二维图形界面,三维虚拟现实。
卷二
一、填空题(每空1分,共10分)
1.通常所说操作系统的四大模块是指处理机管理、存储管理、设备管理、(文件)管理。
2.进程实体是由(进程控制块)、程序段和数据段这三部分组成。
3.文件系统中,空闲存储空间的管理方法有空闲表法、空闲链表法、位示图法和(空白文件目录)。
4.若P、V操作的信号量s初值为8,当前s的值为-6,则表示有(6)个等待进程。
5.产生死锁的原因是(对独占资源的共享) 、(并发进程的同步关系不当)。
6.目前常用的外存分配方法有(连续分配)、(链式分配)和索引分配三种。
7.采用页式存储管理方式,未使用快表,CPU每存取一次数据访问内存次数是(2)次。
8.一个文件系统中,其FCB占64B,一个盘块大小为1KB,采用一级目录,假定文件目录中有3200个目录项,则查找一个文件平均需要(100)次访问磁盘。
- 1KB/64B=16;3200/16=200;(0+200)/2=100
二、单项选择题(每小题2分,共40分)
1.下面对进程的描述中,错误的是 ( D )
A、进程是动态的概念 B、进程执行需要处理机
C、进程是有生命期的 D、进程是指令的集合
2.如果分时操作系统的时间片一定,响应时间长的是 ( B )
A、就绪进程数越少 B、就绪进程数越多 C、内存越少 D、内存越多
3.在页式存储管理方案中,能实现地址变换的是 ( A )
A、页表 B、段表 C、段表和页表 D、空闲区表
4.当已有进程进入临界区时,其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问,这体现的同步机制准则是 ( D )
A、空闲让进 B、忙则等待 C、有限等待 D、让权等待
5.定义:作业的周转时间=作业的完成时间-作业到达时间。现有三个作业同时到达,每个作业的计算时间均为1小时,它们在一台处理机上按单道方式运行,则平均周转时间是 ( B )
A、1小时 B、2小时 C、3小时 D、6小时
6.位示图法可用于 ( B )
A、文件目录的查找
B、分页式存储管理中内存空闲块的分配和回收
C、动态分区存储管理中空闲区的分配和回收
D、页式虚拟存储管理中的页面置换
7.下列进程状态的转换中,不正确的是 ( C )
A、就绪→运行 B、运行→就绪
C、就绪→阻塞 D、阻塞→就绪
8.在一个可变式分区管理中,最坏适应分配算法空闲区表中的空闲区的最合适排列次序是
( D )
A、地址递增 B、地址递减 C、长度递增 D、长度递减
9.用V操作唤醒一个等待进程时,被唤醒进程的状态转换为 ( B )
A、等待 B、 就绪 C、 运行 D、完成
10.使用户所编制的程序与实际使用的物理设备无关,这体现的设备管理的功能是 ( A )
A、设备独立性 B、设备分配 C、缓冲管理 D、虚拟设备
11.假设磁头当前位于第105磁道,正在向磁道序号增加的方向移动。现有一个磁道访问请求序列为35,45,12,68,110,180,170,195,采用SCAN调度(电梯调度)算法得到的磁道访问序列是 ( A )
A、110,170,180,195,68,45,35,12
B、110,68,45,35,12,170,180,195
C、110,170,180,195,12,35,45,68
D、12,35,45,68,110,170,180,195
12.以下技术在操作系统中用来解决进程同步的是 ( B )
A、管道 B、管程 C、通道 D、DMA
13.完成设备的打开、关闭、读、写等操作的是 ( D )
A、用户程序 B、编译程序
C、设备分配程序 D、设备驱动程序
14.单处理机系统中,不能并行的是 ( A )
A、进程与进程 B、处理机与设备
C、处理机与通道 D、设备与设备
15.为了对紧急进程或重要进程进行调度,调度算法应采用 ( B )
A、先来先服务法 B、优先级法
C、短作业优先法 D、时间片轮转法
16.死锁的预防采取措施是 ( C )
A、防止系统进入不安全状态 B、配置足够的系统资源
C、破坏产生死锁的四个必要条件之一 D、使进程的推进顺序合法
17. 按照作业到达的先后次序调度作业,排队等待时间最长的作业被优先调度,这种调度算法是指( A )
A、先来先服务法 B、短作业优先法
C、时间片轮转法 D、优先级法
18.某基于动态分区存储管理的计算机,其内存容量为55MB(初始为空),采用最佳适应(Best Fit)算法,分配和释放的顺序为:分配15MB,分配30MB,释放15MB,分配6MB,此时内存中最大空闲分区的大小是 ( D )
A、7MB B、9MB
C、10MB D、15MB
19.设有四个进程共享一个资源,如果每次只允许一个进程使用该资源,则用P、V 操作管理信号量时S的可能取值是 ( C )
A、3,2 ,1,0,-1 B、2,1,0,-1,-2
C、1,0,-1,-2,-3 D、4,3,2,1,0
20.目录文件存放的信息是 ( D )
A、某一文件的数据信息 B、某一文件的FCB
C、所有数据文件FCB D、所有子目录文件和数据文件的FCB
三、判断题(每小题1分,共10分)
1.实时操作系统一般应用于实时控制。 (T)
2.PCB是专为用户进程设置的私有数据结构,每个进程仅有一个PCB。 (T)
3.抖动是操作系统特征之一。 (F)
4.最佳页面置换算法总是选择在内存驻留时间最长的页面淘汰。 (F)
5.可变分区可以有效地消除外部碎片,但不能消除内部碎片。 (F)
6.页式系统的优点是消除了外部碎片,更有效地利用了内存。 (T)
7.采用多道程序设计的系统中,系统的道数越多,系统的效率越高。 (F)
8.磁盘是典型的块设备。 (T)
9.虚拟存储器不是物理上扩大内存空间,而是逻辑上扩充了内存容量。 (T)
10.在采用树型目录结构的文件系统中,各用户的文件名必须互不相同。 (F)
四、应用题(每小题8分,共40分)
1.在一个单道批处理系统中,一组作业的提交时间和运行时间见下表所示。
作业 | 提交时间 | 运行时间 |
---|---|---|
1 | 8.0 | 1.0 |
2 | 8.5 | 0.5 |
3 | 9.0 | 1.0 |
4 | 9.1 | 0.9 |
计算以下两种作业调度算法的平均周转时间 $$( T ) $$和平均带权周转时间 $$( W )$$: | ||
(1)先来先服务调度算法(FCFS) | ||
(2)短作业优先调度算法(SJF) | ||
答案: | ||
(1)先来先服务调度算法(FCFS) |
调度顺序:
1 -> 2 -> 3 -> 4周转时间 ( T ) 计算:
作业1: $$T_1 = 1.0 - 8.0 = 1.0$$
作业2: $$T_2 = (1.0 + 0.5) - 8.5 = 2.0$$
作业3: $$T_3 = (1.5 + 1.0) - 9.0 = 3.5$$
作业4: $$T_4 = (2.5 + 0.9) - 9.1 = 3.3$$平均周转时间 $$( \overline{T} ) $$:
$$
\overline{T} = \frac{T_1 + T_2 + T_3 + T_4}{4} = \frac{1.0 + 2.0 + 3.5 + 3.3}{4} = 2.45
$$带权周转时间 ( W ) :
作业1: $$W_1 = \frac{T_1}{1.0} = 1.0$$
作业2: $$W_2 = \frac{T_2}{0.5} = 4.0$$
作业3: $$W_3 = \frac{T_3}{1.0} = 3.5$$
作业4: $$W_4 = \frac{T_4}{0.9} = 3.67$$平均带权周转时间 $$( \overline{W} ) $$:
$$
\overline{W} = \frac{W_1 + W_2 + W_3 + W_4}{4} = \frac{1.0 + 4.0 + 3.5 + 3.67}{4} = 3.0425
$$
(2)短作业优先调度算法(SJF)
-调度顺序:
2 -> 4 -> 1 -> 3
-周转时间$$ ( T ) $$计算:作业2: $$T_2 = 0.5$$
作业4: $$T_4 = 0.5 + 0.9 = 1.4$$
作业1: $$T_1 = 0.5 + 0.9 + 1.0 = 2.4$$
作业3: $$T_3 = 0.5 + 0.9 + 1.0 + 1.0 = 3.4$$
平均周转时间 $$( \overline{T} )$$ :
$$
\overline{T} = \frac{T_2 + T_4 + T_1 + T_3}{4} = \frac{0.5 + 1.4 + 2.4 + 3.4}{4} = 1.925
$$
-带权周转时间$$( W )$$ :
作业2: $$W_2 = \frac{T_2}{0.5} = 1.0$$
作业4: $$W_4 = \frac{T_4}{0.9} = 1.56$$
作业1: $$W_1 = \frac{T_1}{1.0} = 2.4$$
作业3: $$W_3 = \frac{T_3}{1.0} = 3.4$$
平均带权周转时间 ( \overline{W} ) :
$$
\overline{W} = \frac{W_2 + W_4 + W_1 + W_3}{4} = \frac{1.0 + 1.56 + 2.4 + 3.4}{4} = 2.09
$$
2.系统在某时刻的状态如下表所示:
Allocation | Max | Available | |||||||
---|---|---|---|---|---|---|---|---|---|
A | B | C | D | A | B | C | D | A | |
P0 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 2 | 1 |
P1 | 1 | 0 | 0 | 0 | 7 | 5 | 0 | 0 | |
P2 | 1 | 3 | 5 | 4 | 3 | 3 | 5 | 6 | |
P3 | 0 | 0 | 1 | 4 | 0 | 6 | 5 | 6 |
使用银行家算法回答下面的问题:
(1)计算Need矩阵;
(2)系统是否处于安全状态?如安全,请给出一个安全序列;
(3)如果进程P1发来一个请求(0,4,2,0),这个请求能否立刻被满足?如安全,请给出一个安全序列。
答案:
(1)
0 0 0 0
0 7 5 0 0 3 3 0
1 0 0 2
0 6 4 2
(2)
P0->P2->P1->P3
(1, 5, 3, 2)->(2,8,8,6)->
(3)
(1,1,0,0)->(1,1,1,2)->(3,4,6,8)->(4,11,11,8) P0->P2->P1->P3
3.桌子上有一只盘子,每次只能向其中放入一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放桔子,儿子专等吃盘子中的桔子,女儿专等吃盘子中的苹果。只有盘子为空时,爸爸或妈妈就可向盘子中放一只水果;仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出。用信号量机制解决该问题。
答案:
为了使用信号量机制解决这个问题,我们需要定义几个信号量和一个互斥量来保证对共享资源(盘子)访问的同步和互斥。
信号量定义:
- empty: 初始化为1,表示盘子为空,可以放入一个水果。
- apple: 初始化为0,表示盘子中有苹果,儿子可以吃。
- orange: 初始化为0,表示盘子中有橘子,女儿可以吃。
互斥量定义: - mutex: 初始化为1,用于保证对共享资源(盘子)的互斥访问。
伪代码:这种方法使用了信号量和互斥机制,确保每次只允许一个父母放水果,每次只允许一个孩子吃水果,并且保证父母和孩子在操作盘子时不会发生冲突。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80#include <semaphore.h>
#include <pthread.h>
#include <stdio.h>
sem_t empty; // 盘子是否为空
sem_t apple; // 盘子中是否有苹果
sem_t orange; // 盘子中是否有桔子
pthread_mutex_t mutex; // 互斥锁确保对盘子的访问
void* father(void* arg) {
while (1) {
sem_wait(&empty); // 等待盘子空
pthread_mutex_lock(&mutex); // 进入临界区
printf("爸爸放了一个苹果\n");
sem_post(&apple); // 盘子中有苹果
pthread_mutex_unlock(&mutex); // 退出临界区
}
return NULL;
}
void* mother(void* arg) {
while (1) {
sem_wait(&empty); // 等待盘子空
pthread_mutex_lock(&mutex); // 进入临界区
printf("妈妈放了一个桔子\n");
sem_post(&orange); // 盘子中有桔子
pthread_mutex_unlock(&mutex); // 退出临界区
}
return NULL;
}
void* son(void* arg) {
while (1) {
sem_wait(&orange); // 等待桔子
pthread_mutex_lock(&mutex); // 进入临界区
printf("儿子吃了一个桔子\n");
sem_post(&empty); // 盘子空了
pthread_mutex_unlock(&mutex); // 退出临界区
}
return NULL;
}
void* daughter(void* arg) {
while (1) {
sem_wait(&apple); // 等待苹果
pthread_mutex_lock(&mutex); // 进入临界区
printf("女儿吃了一个苹果\n");
sem_post(&empty); // 盘子空了
pthread_mutex_unlock(&mutex); // 退出临界区
}
return NULL;
}
int main() {
pthread_t t_father, t_mother, t_son, t_daughter;
sem_init(&empty, 0, 1); // 盘子起初为空
sem_init(&apple, 0, 0); // 盘子起初没有苹果
sem_init(&orange, 0, 0); // 盘子起初没有桔子
pthread_mutex_init(&mutex, NULL); // 初始化互斥锁
pthread_create(&t_father, NULL, father, NULL);
pthread_create(&t_mother, NULL, mother, NULL);
pthread_create(&t_son, NULL, son, NULL);
pthread_create(&t_daughter, NULL, daughter, NULL);
// 等到父母、儿子和女儿线程结束(不会结束,此处只是显示完整性)
pthread_join(t_father, NULL);
pthread_join(t_mother, NULL);
pthread_join(t_son, NULL);
pthread_join(t_daughter, NULL);
// 销毁信号量和互斥锁
sem_destroy(&empty);
sem_destroy(&apple);
sem_destroy(&orange);
pthread_mutex_destroy(&mutex);
return 0;
}