目录
★13-21在各种进程通信的方法中,共享内存通信方法的优点是() 。
1.例题:
1-19随机性是操作系统的特征之一。下列描述的四种现象中,哪一种具有“随机性”()。
A)进程在某一时刻需要显示图像信息
B)进程申请使用计算机的声卡
C)操作系统维护着系统的时钟
D)操作系统内核进行进程切换
•【解析】操作系统的运行是在一种随机的环境下进行的。这种随机环境的含义是,操作系统不能对所运行的程序的行为以及硬件设备的情况做出任何事先的假定。一般来说,操作系统正处于什么样的状态之中是无法确切知道的,这就是随机性的含义。所以操作系统内核进行进程切换这一现象具有随机性,故本题选择D选项。
知识点:四大计算机角度看操作系统主要作用:
①应用角度——提供人机交互接口;
②软件设计与开发角度——提供软件开发平台;
③计算机安全保护角度——第一道安全防线(不是最后一道);
④系统发展角度——虚拟机和扩展机;
★1-21操作系统的任务之一是组织和管理计算机系统中的硬件及软件资源,为此在操作系统内部设计了各种数据结构。这些数据结构在操作系统运行中()。
A)可以由用户进程修改
B)可以由用户系统更新
C)自操作系统启动后保持不变
D)只在退出系统或注销用户时保存改变的内容
★1-(1)在操作系统的结构设计中,采用层次结构的操作系统其最大优点是
A)把整体问题局部化
B)大量调用同层模块
C)不同层次可以双向调用
D)数据可以作为全层量使用
★1-(2)★在操作系统的结构设计中,采用整体结构的操作系统其最大优点是
A)结构紧密,系统效率高
B)各模块独立性好
C)可以随意更改或替换一个模块
D)适应性较好
2.例题:
2-14下列哪些资源在操作系统控制下可以“互斥共享”()。
A)中央处理器、存储器和可重入代码
B)中央处理器、存储器和打印机
C)中央处理器、外部设备和可重入代码
D)存储器、外部设备和内核调度模块
【解析】可重入代码是一种允许多个进程同时访问的代码,可以被多个进程同时共享。外部设备很多,有些是互斥共享,如打印机、扫描仪,有些是同时共享,如硬盘。所以选项A、C、D是错误的,答案为B。
2-17并发性是操作系统的特征之一。下列描述的四种现象中,哪一种具有“并发性”()。
A)单CPU系统交替运行积分计算和磁盘读写的进程
B)双CPU系统分别运行微分计算和打印输出进程
C)单CPU系统运行除法进程,同时网卡收发数据包
D)双CPU系统分别运行同一进程的多个不同线程
【解析】“并发性”是指计算机系统中同时存在若干个运行着的程序,也就是说指两个或者多个事件在同一时间的间隔内发生。A选项中在单处理机情况下,计算进程与磁盘读写进程微观上占用CPU交替执行,但宏观上计算进程与读写进程是在同一时间间隔内都活动着的,故选择A选项。
2-19下列哪一个状态位不包含在程序状态字(PSW)中()。
A)溢出标志位(OF)
B)驻留位(A)
C)虚拟中断待决标志位(VIP)
D)IO特权级别位(IOPL)
【解析】用一个专门的寄存器来指示处理器状态称为程序状态字(PSW),其包括的状态位有进位标志位(CF)、结果为零标志位(ZF)、符号标志位(SF)、溢出标志位(OF)、陷阱标志位(TF)、中断使能(中断屏蔽)标志位(IF)、虚拟中断标志位(VIF)、虚拟中断待决标志位(VIP)、IO特权级别(IOPL)。故本题答案选择B选项。
3.例题:
3-4操作系统的一个重要概念是进程,下列哪一个不能作为进程来管理()。
A)内存换页程序
B)中断服务程序
C)打印程序
D)用户应用程序
B【解析】进程是程序的一次执行;进程是一个程序及其数据在处理机上顺序执行时所发生的活动;进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。中断服务程序,可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的,这种程序被称为中断服务程序。中断服务程序是固定在某个地址的代码段,没有进程的概念。故选择B选项。
3-5若用户编程需要打印输出,他可使用下列操作系统提供的哪一种系统调用()。
A)write()
B)printf()
C)output()
D)list()
【解析】系统调用write()会把缓冲区buf所指的内存写入count个字节到与文件描述符fildes关联的文件中。当然,文件读写位置也会随之移动。故选择A选项。
操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理结果返回给应用程序。
打印操作最终封装给用户的形式是printf()函数,查看printf()的定义,函数中调用了putc()函数来进行输出,继续跟踪putc()函数的定义,发现write函
3-7当用户程序需要调用操作系统所提供的文件读写功能时,该功能首先执行的指令是()。
A)文件操作指令
B)访管指令
C)特权指令
D)I/O中断指令
【解析】调用操作系统的提供功能即是访管中断,所以该功能首先执行访管指令,故选择B选项。
访管指令是一条可以在用户态下执行的指令。在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件,将操作系统转换为核心态,称为访管中断。访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务。
3-11在操作系统中,既可以在内核态下运行又可以在用户态下运行的指令是()。
A)置程序计数器
B)清指令寄存器
C)清溢出标志
D)置移位方向标志
【解析】对于程序计数器、指令寄存器操作的指令都是特权指令,只能在内核态下运行。对于PSW程序状态字寄存器操作的指令,部分属于特权指令,部分是非特权指令,如设置移位方向标志位(DF位)则是非特权指令。所以选D选项。
3-12处理器中对用户可见的寄存器是()。
A)程序状态字寄存器
B)数据寄存器
C)程序计数寄存器
D)指令寄存器
【解析】处理器中对用户可见的寄存器一般包括:数据寄存器、地址寄存器以及条件码寄存器。其他三项是控制和状态寄存器,一般由特权指令代码使用,对用户不可见。所以选B选项。
3-13处理器中对用户可见的寄存器是()。
A)程序状态字寄存器
B)地址寄存器
C)程序计数寄存器
D)指令寄存器
【解析】处理器中对用户可见的寄存器通常是对用户程序可用的,包括:数据寄存器、地址寄存器以及条件码寄存器,而不可见的寄存器多是用于控制处理的操作,如程序计数器、指令寄存器、程序状态字等,所以选项A、C、D是不可见寄存器,选项B是可见寄存器,答案为B。
3-15处理器中对用户不可见的寄存器是()。
A)数据寄存器
B)地址寄存器
C)条件码寄存器
D)指令寄存器
【解析】处理器中用户可见的寄a存器包括数据寄存器、地址寄存器和条件码寄存器;选项D的指令寄存器(IR)包含了最近取出的指令,属于控制和状态寄存器,对用户不可见,答案选D。
3-17下列哪一个标志位或状态码不包含在程序状态字(PSW)中()。
A)修改位(M)
B)CPU工作状态码(S)
C)条件码(C)
D)中断屏蔽码(IF)
【解析】程序状态字(PSW)通常包括以下状态代码:
①CPU的工作状态码——指明管态还是目态,用来说明当前在CPU上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其它的特殊权力
②条件码——反映指令执行后的结果特征
③中断屏蔽码——指出是否允许中断
故选择A选项。
4.例题
4-2下列各种事件中,不属于I/O中断的事件是()。
A)数据传送完毕
B)设备出错
C)指令错
D)键盘输入
【解析】数据传送完毕、设备出错和键盘输入均产生I/O中断。故选择C选项。
4-9中断是操作系统中为提高处理机效率而使用的一种技术,下列选项中,哪一个不是中断而是异常()。
A)时钟中断
B)被零除
C)控制台命令
D)存储器校验错
中断是外部事情引发的,异常是内部事情引发的
B【解析】异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的,被零除属于软件内部引起的事件。故选择B选项。
中断,也称外中断,指来自CPU执行指令以外的事件的发生。异常,也称内中断、例外或陷入(Trap),指源自CPU执行指令内部的事件。
4-18中断和异常都是将正常执行的程序打断,完成相应处理后再恢复执行,但是二者是有区别的。下列各种事件中,哪一项属于中断()
A、网卡上数据缓冲区满
B、算术溢出
C、内存保护出错
D、目态程序试图执行特权指令
正确答案:A【解析】中断是由外部事件引发的,而异常是由正在执行的指令引发的,选项B算术溢出,选项C内存保护出措和选项D目态程序试图执行特权指令,都属于异常;而选项A网卡上数据缓冲区满属于中断。故本题答案选择A选项。
6.例题
6-7多道程序设计技术使得进程能够并发运行,相比单道程序运行,并发运行的多道程序不再具有下列哪个特性()。
A)独立性
B)随机性
C)共享性
D)可再现性
D【解析】在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。多道程序并发执行的结果与其执行时的进程的推进速度有关,是不确定的,会导致不可再现。故选择D选项。
6-9进程创建时需要填写进程控制块,下列哪一类信息不需要保存在进程控制块中()。
A)进程调度信息
B)进程现场信息
C)进程打开的文件句柄
D)进程用户栈中的信息
D【解析】进程控制块的基本内容有:进程标识符、进程调度状态、进程相应的程序和数据地址、进程优先级、CPU现场保护区、进程同步与通信机制、进程所在队列文件句柄、与进程有关的其他信息。进程的用户栈不保存在进程控制块中。故选择D选项。
6-10所谓“可再入程序”是指下列哪一类程序()。
A)纯代码程序,运行中不需要修改
B)过程调用子程序,可被其他过程调用
C)代码及堆栈,允许部分修改
D)中断服务程序,与用户代码无关
A【解析】可再入程序是由可重入代码组成的程序,可以被安全的并行执行,当该程序正在运行时,可以再次载入内存并执行它。具有如下特点:它是纯代码的,即在执行过程中不可修改;调用它的进程应该提供属于它自己的数据区。因此选A选项。
6-15进程控制块(PCB)的内容一般可以分成调度信息和现场信息两大部分,下列哪一项属于调度信息()。
A)程序状态字
B)时钟信息
C)界地址寄存器
D)当前状态
D【解析】PCB的内容可以分成调度信息和现场信息两大部分,调度信息包括:进程名、进程号、存储信息、优先级、当前状态、资源清单、“家族”关系、消息队列指针、进程队列指针和当前打开文件等;而现场信息有:程序状态字、时钟信息、界地址寄存器等。答案为D。
7.例题
7-2Linux操作系统中,进程有多种状态。下列状态中,哪一个不是Linux支持的状态()。
A)运行状态
B)安全状态
C)僵尸状态
D)睡眠状态
B【解析】Linux上进程有5种状态:运行(正在运行或在运行队列中等待);中断(休眠中,受阻,在等待某个条件的形成或接收到信号);不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生);僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放);停止(进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行)。故选择B选项。
7-12 某4核处理器的计算机系统中共有50个进程,那么,处于运行状态的进程最多有几个()。
A)4
B)50
C)1
D)0
A【解析】由题目可知计算机系统中处理器是4核心的,也就是意味着同时可以执行4个进程的指令,所以处于运行状态的进程最多可以有4个。所以选A选项。
7-15某4核处理器的计算机系统中共有50个进程,那么,处于就绪状态的进程最多有几个()。
A)4
B)46
C)49
D)0
C【解析】处于就绪状态的进程已经获得了除处理机外的所需资源,此时再分配给它处理机,就可以执行;题目计算机系统有4核处理器,50个进程,假设50个进程都处于就绪状态,那么必将有一个进程会分配到处理机,转为运行状态,若此进程运行时所需处理机为4个,那么最多有49个进程处于就绪状态,答案为C。
7-18某八核处理器的计算机系统中共有150个进程,那么,任意时刻处于就绪状态的进程最多有几个()。
A)8
B)149
C)142
D)0
B【解析】如果系统中存在就绪状态的进程,那么只要该进程分配到CPU,就会立即运行,当该进程运行时占用了所有CPU资源,那么剩下的就绪进程只能等待,所以本题中任意时刻处于就绪状态的进程最多有149个。故本题答案选择B选项。
9.例题
9-2在Pthread线程包中,线程操作pthread_yield表示的是()。
A) 线程让出CPU
B) 创建一个线程
C) 阻塞一个线程
D) 等待一个特定的线程退出
知识点:
pthread_yield线程让出CPU
pthread_join等待一个特定的线程退出
pthread_create 创建一个新的线程
pthread_exit()结束调用的线程
pthread_mutex_init()创建一个互斥量
9-3请分析以下程序。
int main()
{
pid t pid;
pid fork();
if(pid==0)
printf("I am the child process,my process ID is%d\n",getpid());
else
printf("I am the parent process,my process ID is%d\n",getpid());}
那么,该程序正确运行后的结果是()。
A)I am the child process,my process ID is 3744
I am the parent process,my process ID is 3987
B)I am the child process,my process ID is 3744
C)I am the parent process,my process ID is 3987
D)不输出任何信息
A【解析】计算机程序设计中的fork()函数。返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错讴回-1。
假设程序正确运行并创建子进程成功,那么,子进程中,返回值是O,走第一个if语句打印;父进程中,返回值不是0,执行else打印。故输出l am the child process, my process ID is 3744
l am the parent process, my process ID is 3987。故选择A选项。
小技巧:全英文的时候,儿子在前,父亲在后
9-5分析下列程序,不考虑其他因素,程序正常运行时最多会派生出多少个进程()。
int main()
{
fork();
fork();
fork();}
A) 8
B) 6
C) 5
D) 4
A【解析】计算机程序设计中的fok)函数。返回值:若成功调用一次则返回两个值,,子进程返回0,父进程返回子进程标记;否则,出错返回-1。第一个fork()函数调用后将有两个进程,第二个fok()函数调用后将有4个进程,第三个fok()函数调用后将有8个进程。故选择A选项。简单来说2^3=8
9-6分析下列程序。
int main()
{ printf("Hello");
fork();
printf("Hello");
fork();
printf("Hello");
fork();
printf("Hello");}
不考虑其他因素,程序正常运行后共打印出多少个"Hello”()。
A) 15
B) 11
C) 7
D) 4
A【解析】
1+2+4+8=15
方法一:计算机程序设计中的ok)函数。返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。在fok)之前,输出一个Helo;第一个fork()☒数调用后将有两个进程,输出两个Hello;第二个fork()函数调用后将有4个进程,输出四个Hello;第三个fork()函数调用后将有8个进程,输出八个Hello,,总计为15个Hello。.故选择A选项。
方法二:函数fork的作用是通过系统调用创建一个与原来进程几乎完全相同的进程。但是被创建的子进程的起始执行指令地址却是从原进
程代码的所执行fork(0函数之后开始执行的。如若标记上述代码的第1个fork(为f1,第2个fork(0为f2,第3个fork()为f3,则父进程调用f1产生的子进程代码与父进程一样但起始执行指令地却是从1之后开始执行的。按此方法计算则打印行数为1+f1+1+f2+1+3+1行,f1执行后打印行数为1+f2+1+f3+1行,f2执行后打印行数为1+f3+1行,f3执行后打印行数为1行。合计15行。所以选B选项。
两种题型
9-9对于如下C语言程序
int main()
{
printf("Hello World\n");
fork();
fork();
printf("Hello World\n");
}
在UNIX操作系统中正确编译链接后,其正确的运行结果为()。
A)共打印出2行Hello World
B)共打印出3行Hello World
C)共打印出4行Hello World
D)共打印出5行Hello World
1+2^2=5
D【解析】
方法一:计算机程序设计中的fork()函数。返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。在创建进程之前输出一行Hello World。假设程序正确运行并创建子进程成功,fork()两次将有四个进程,故输出四行Hello World,总结输出5行Hello World。故选择D选项。
方法二:函数fork()的作用是通过系统调用创建一个与原来进程几乎完全相同的进程。但是被创建的子进程的起始执行指令地址却是从原进程代码的所执行fork()函数之后开始执行的。如若标记上述代码的第1个fork()为f1,第2个fork()为f2,则父进程调用f1产生的子进程代码与父进程一样,但起始执行指令地却是从f2开始执行的。按此方法计算则打印行数为1+f1+f2+1行,f1执行后打印行数为f2+1行,f2执行后打印行数为1行。合计5行。所以选D选项。
9-11对于如下C语言程序
int main()
{
printf("Hello World\n");
fork();
printf("HelloWorld\n");
fork();
printf("Hello World\n");
}
1+2+2^2=7
在UNIX操作系统中正确编译链接后,其正确的运行结果是()。
A)共打印出6行Hello World
B)共打印出7行Hello World
C)共打印出8行Hello World
D)共打印出9行Hello World
B【解析】
方法一:计算机程序设计中的fork()函数。返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。在fork()之前,输出一个Hello;第一个fork()函数调用后将有两个进程,输出两个Hello;第二个fork()函数调用后将有4个进程,输出四个Hello,总计为7个Hello。故选择B选项。
方法二:函数fork()的作用是通过系统调用创建一个与原来进程几乎完全相同的进程。但是被创建的子进程的起始执行指令地址却是从原进程代码的所执行fork()函数之后开始执行的。如若标记上述代码的第1个fork()为f1,第2个fork()为f2,则父进程调用f1产生的子进程代码与父进程一样但起始执行指令地却是从f1之后开始执行的。按此方法计算则打印行数为1+f1+1+f2+1行 ,f1执行后打印行数为1+f2+1行,f2执行后打印行数为1行。合计7行。所以
13对于如下C语言程序
int main()
{
int i;
for ( i = 0; i < 1;i++)
{
fork();
printf("Hello World\n");
}
}
在UNIX操作系统中正确编译链接后,其运行结果为()。
A)共打印出 2 行Hello World
B)共打印出 4 行Hello World
C)共打印出 6 行Hello World
D)共打印出 8 行Hello World
A【解析】UNIX系统中,fork()函数用来创建子进程,并且子进程从被创建的程序处开始执行,题目中的for循环执行一次(for ( i = 0; i < 1;i++)),所以执行fork()时,会有两个进程执行之后的printf()函数,最后输出2行Hello World,答案为A。
9-14对于如下C语言程序
int main()
{
int i;
for ( i = 0; i < 3;i++)
{
fork();
printf("Hello World\n");
}
}
在UNIX操作系统中正确编译链接后,其运行结果为()。
A)共打印出 8 行Hello World
B)共打印出 10 行 Hello World
C)共打印出 12 行Hello World
D)共打印出 14 行Hello World
2+4+8=14
D【解析】UNIX系统中,fork()函数用来创建子进程,并且子进程从被创建的程序处开始执行,题目中的for循环执行3次(for ( i = 0; i < 3;i++)),所以第1次执行fork()时,会有两个进程执行之后的printf()函数,输出2行Hello World;所以第2次执行fork()时,会有四个进程执行之后的printf()函数,输出4行Hello World;所以第3次执行fork()时,会有八个进程执行之后的printf()函数,输出8行Hello World;最后共计输出2+4+8=14行Hello World。答案为D。
9-15
15对于如下C语言程序
int main()
{
int i;
for ( i = 0; i < 2;i++)
{
fork();
printf("Hello World\n");
}
}
在UNIX操作系统中正确编译链接后,其运行结果为()。
A)共打印出 2 行Hello World
B)共打印出 4 行Hello World
C)共打印出 6 行Hello World
D)共打印出 8 行Hello World
C【解析】2+4=6;与9-14类似
10-1下列各种情况中,一定不会引起进程调度的操作是()。
A)一个进程完成工作后被撤销
B)一个进程从运行状态变成了阻塞状态或就绪状态
C)一个进程从阻塞状态变成了就绪状态
D)一个进程从就绪状态变成了运行状态(占用了CPU,无法让出)
D【解析】引起进程调度的原因:(1)正在执行的进程执行完毕。(2)执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等状态。(3)执行中进程调用了阻塞原语操作,并且因为资源不足而被阻塞;或调用了唤醒原语操作激活了等待资源的进程。(4)在分时系统中时间片已经用完。(5)就绪对列中的某个进程的优先级高于当前运行进程的优先级。故选择D选项。题中只有D选项不会发生进程调度,因为进程调度最主要的原因是:是否有CPU资源让出来,有CPU资源让出来不一定能发生调度,但没有CPU资源让出,则一定不会发生进程调度。而D选项是占用掉了CPU资源,没有CPU资源让出来,所以选D选项。
由于用户进程数一般都多于处理机数,这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
12.例题
12-6假设系统中有4台打印机,某些进程用信号量S实现对打印机的互斥使用。又假设,系统中申请打印机的进程数量最多为20个,下列信号量S的数值范围中,哪一个是正确的()。
A)[4, -16] 【有几台打印机,范围开始就是几,打印机-进程数】
B)[1, -20]
C)[4, -20]
D)[1, -16]
A【解析】信号量S在所有打印机都空闲时为4,在20个进程都对其进行申请时为4-20= -16。故选择A选项。
S=4,进程数20进入一个信号量为4的临界资源,当线程1,2,3,4进入时,执行P操作,4-4,S=0,假设线程1,2,3,4继续执行。当线程5到线程20进入时,0-16,S= -16。
12-10在解决进程同步和互斥的问题时,对信号量进行V原语操作是在下列哪一个代码区进行的()。
A)进入区
B)临界区
C)退出区
D)剩余区
C【解析】进入临界区前,在进入区对信号量执行P原语操作,离开临界区时,在退出区对信号量执行V原语操作。V原语操作属于退出区,所以选C选项。
【进入P---临界--退出V-(离开)-剩余】
12-11解决进程同步与互斥问题时,信号量机制中所谓的“临界区”是指()。
A)临界资源本身
B)可读写的共享资源
C)访问临界资源的代码
D)只读的共享资源
C【解析】临界区是指程序中访问临界资源的那段代码。所以选C选项。
12-12 为正确使用临界资源,可把对临界资源的访问分成进入区、临界区、退出区和剩余区四
部分。请指出下列飞机订票代码中带有while TS(&lock)语句属于哪一个区域()。
int booking(id)//订票例程
{
int c;
{
int c;
while TS(&lock); //Test-and-Set 指令 进入区
c=fetch(ticket); //从服务器取剩余票额
show(c); //显示
if (read(input)=1)//是否订票? 临界区
{
c=c-1; //票额减 1
send(c); //送回新数据
}
lock = FALSE; //置标志为 F 退出区
output(list); //打印机票 剩余区
}
A)临界资源访问过程中的进入区
B)临界资源访问过程中的临界区
C)临界资源访问过程中的退出区
D)临界资源访问过程中的剩余区
★12-24 某地区有一座独木桥,每次只允许一个人过桥,因此,桥两边人员过桥时需要采取适当的方式避免冲突。当采用以下单标志算法时
int Crossbridge(int c)//过桥例程,c=0表示由南向北,c=1表示由北向南
{
int turn=0;//标志
while (turn! =c);//判断 进入区
Cross();//过桥turn=1-c; 临界区
turn=1-c;//置标志为非 退出区
Leave(void);//离开 剩余区
}
试问,程序中语句while(turn!=c)的作用是()。
A)临界资源访问过程中的临界区
B)临界资源访问过程中的进入区
C)临界资源访问过程中的退出区
D)临界资源访问过程中的剩余区
13.例题
13-1学生小王在选课时编写了一个程序,为了保证有足够的学分,他先选了课程B,然后继续申请心仪的课程A。若能选到课程A,则退掉课程B。部分程序如下:
count.A //表示课程A的信号量
count.B //表示课程B的信号量
{
…
P(count.A);
select_course(A);
relese_course(B);
V(count.B);
…
}
请问:小王的程序能否达到选到课程A又退掉课程B的目的()。
A)一定能
B)一定不能
C)有可能
D)程序无法运行
C【解析】当P(count.A);永远阻塞的情况下,小王选不了A课程;若有人退选,小王将完成选到课程A又退掉课程B的目的。故选择C选项。
注释:
P(count.A);//等待课程A有名额,如果一直没有名额,程序将永远在此等候
select_course(A);//选课程A
relese_course(B);//退掉课程B
V(count.B);//课程B剩余数量+1
13.例题
13-5下列哪一种进程间通信方式不会在系统中产生多份相同的拷贝()。
A)管道通信pipe
B)消息传递message
C)共享内存shared memory
D)套接字socket
C【解析】共享内存指在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是Unix下的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。在相互通信的进程间设置一个公共内存区,一组进程向该公共内存中写,另一组进程从该公共内存中读,通过这种方式实现两组进程间信息交换。通过共享内存不需要多份内容的拷贝来传递信息,特点是可以高效的共享
13-6在直接通信方式中,系统提供的发送原语是()。
A)send(receiver,message) SRM【发送送原】
B)send(sender,message) RSM【接收原语】
C)send(sender,receiver)
D)send(receiver,sender)
receiver接受者 message消息
13-9通过连接两个进程的一个打开的共享文件,可以实现进程间的数据通信。这种通信方式称为()。
A)共享内存
B)消息机制
C)管道通信
D)套接字
C【解析】管道通信(pipe)即发送进程以字符流形式将大量数据送入管道,接收进程可从管道接收数据,二者利用管道进行通信。通过连接两个进程的一个打开的共享文件,可以实现进程间的数据通信。管道通信具有传送数据量大的优点,但通信速度较慢。故选择C选项。
13-10不同进程之间进行通信时,可以按需要采用同步或异步的方式,下列方法中,哪一种通信方式是同步的()。
A)共享内存
B)消息机制
C)管道通信
D)套接字
•C【解析】共享内存即共享缓冲区方式进行通信,缓冲区数目不为1时可同步或异步;消息机制是指进程间通过相互发送消息进行通信,可同步或异步;套接字是一组进程间交换数据的协议,可以是异步或同步;管道通信,是一方进程发送另一方只能接收,此方式只为同步。所以选C选项。
11下列关于管程的叙述中,哪一个是错误的()。
A)管程中不允许同时存在两个或两个以上的运行进程
B)Hoare提出了管程的一种实现方案
C)管程的互斥是由信号量及PV操作实现的
D)条件变量是用于解决同步问题的
C【解析】管程的互斥是由管程本身性能实现的,管程中一次只能有一个进程可以在管程内活动,所以C是错误的,故选C选项。Hoare(霍尔)是英国计算机专家。
管程在功能上和信号量及PV操作类似,属于一种进程同步互斥工具,但是具有与信号量及PV操作不同的属性。一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。局部于管程的数据结构,只能被局部于管程的过程所访问,任何管程之外的过程都不能访问它;反之,局部于管程的过程也只能访问管程内的数据结构。由此可见,所有进程要访问临界资源时,都必须经过管程才能进入,而管程每次只允许一个进程进入管程,从而实现了进程的互斥,但是管程无法保证本身互斥。
13-13采用消息缓冲方式可以完成进程间通信,该通信机制包含下列哪些内容()。
A)消息缓冲区、消息正文、消息队列和消息收发者
B)消息缓冲区、消息队列、同步互斥信号量和收发消息原语
C)消息队列、同步互斥信号量、消息发送者和收发消息原语
D)消息队列、消息正文、消息计数指针和消息收发者
(有 "者" 的全部排除)
B【解析】消息缓冲通信机制包括:消息缓冲区、消息队列首地址、同步互斥信号量、发送接收消息原语,答案选B。
13-14采用管道方式可以完成进程间通信,该方式的不足是()。
A)需要文件系统的支持
B)需要进行同步操作
C)通信容量太大
D)通信速度较慢
【管道方式可以发送大量的数据,但是通信速度较慢】
•D【解析】管道通信(pipe)即发送进程以字符流形式将大量数据送入管道,接收进程可从管道接收数据,二者利用管道进行通信。通过连接两个进程的一个打开的共享文件,可以实现进程间的数据通信。管道通信具有传送数据量大的优点,但通信速度较慢,答案选D。
13-16下列进程间通信的各种方法中,哪一个是“消息缓冲”通信方式()。
A)在相互通信的进程之间设一公共区域,一组进程向该公共区域写,另一组进程从公共区域读,通过这种方式实现两组进程间的信息交换 【共享内存】
B)在内存中开辟若干区域,发送进程申请一个区域,并将信息送入,然后把它插入到接收进程的相应队列中,之后通知接收进程 【消息缓冲】
C)发送进程首先创建一个链接两个进程的通信机制,然后把信息送入该机制;发送进程和接收进程不直接建立联系,而接收进程可以在任何时刻从该机制中取走信息 【信箱方式】
D)发送进程创建好连接两个进程的一个打开的共享文件,然后写入数据流;接收进程在需要时可以从该共享文件读出数据,写入和读出数据的长度是可变的 【管道方式】
【对比蓝色字体】
•B【解析】在内存中开辟若干区域,发送进程申请一个区域,并将信息送入,然后把它插入到接收进程的相应队列中,之后通知接收进程,答案选B。
13-17下列进程间通信的各种方法中,哪一个是“共享内存”通信方式()。
A)在相互通信的进程之间设一公共区域,一组进程向该公共区域写,另一组进程从公共区域读,通过这种方式实现两组进程间的信息交换
B)在内存中开辟若干区域,发送进程申请一个区域,并将信息送入,然后把它插入到接收进程的相应队列中,之后通知接收进程
C)发送进程首先创建一个链接两个进程的通信机制,然后把信息送入该机制;发送进程和接收进程不直接建立联系,而接收进程可以在任何时刻从该机制中取走信息
D)发送进程创建好连接两个进程的一个打开的共享文件,然后写入数据流;接收进程在需要时可以从该共享文件读出数据,写入和读出数据的长度是可变的
13-18下列进程间通信的各种方法中,哪一个是“信箱”通信方式()。
A)在相互通信的进程之间设一公共区域,一组进程向该公共区域写,另一组进程从公共区域读,通过这种方式实现两组进程间的信息交换
B)在内存中开辟若干区域,发送进程申请一个区域,并将信息送入,然后把它插入到接收进程的相应队列中,之后通知接收进程
C)发送进程首先创建一个链接两个进程的通信机制,然后把信息送入该机制;发送进程和接收进程不直接建立联系,而接收进程可以在任何时刻从该机制中取走信息
D)发送进程创建好连接两个进程的一个打开的共享文件,然后写入数据流;接收进程在需要时可以从该共享文件读出数据,写入和读出数据的长度是可变的
•C【解析】进程间通信可以使用消息机制,消息机制具体包括消息缓冲通信,信箱通信和管道通信;其中信箱通信是当一个进程希望与另一进程通信时,就创建一个链接两个进程的信箱,发送进程把信件投入信箱,而接收进程可以在任何时刻取走信件,选项C正确。故本题答案选择C选项。
13-19下列进程间通信的各种方法中,哪一个是“管道”通信方式()。
A)发送进程创建好连接两个进程的一个打开的共享文件,然后写入数据流;接收进程在需要时可以从该共享文件读出数据,写入和读出数据的长度是可变的
B)在相互通信的进程之间设一公共区域,一组进程向该公共区域写,另一组进程从公共区域读,通过这种方式实现两组进程间的信息交换
C)在内存中开辟若干区域,发送进程申请一个区域,并将信息送入,然后把它插入到接收进程的相应队列中,之后通知接收进程
D)发送进程首先创建一个链接两个进程的通信机制,然后把信息送入该机制;发送进程和接收进程不直接建立联系,而接收进程可以在任何时刻从该机制中取走信息
•A【解析】所谓管程,就是连接两个进程之间的一个打开的共享文件,专用于进程之间数据通信。发送进程可以源源不断地从管道一端写入数据流,每次写入的信息长度是可变的;接收进程在需要时可以从管道的另一端读出数据,读出单位的长度也是可变的。故本题答案选择A选项。
13-20下列进程通信的方法中,哪一项属于低级通信方法()。
A)共享内存
B)消息机制
C)信号量
D)管道通信
★13-21在各种进程通信的方法中,共享内存通信方法的优点是() 。
A)公共内存的互斥访问由系统控制,相对较方便
B)公共内存的互斥访问由程序员控制,相对较灵活
C)公共内存的大小由程序员设置,可以满足大数据的通信
D)公共内存的数量由程序员设定,没有最大数量限制
【解析】共享内存通信模式需要解决两个问题:第一个问题是怎样提供共享内存;第二个是公共内存中的读写互斥问题。操作系统一般只提供要共享的内存空间,而处理进程间在公共内存中的互斥关系则是程序开发人员的责任
★13-23在各种进程通信的方法中,管道通信方法的优点是()
A)利用公共内存,通信速度快
B)管道的容量大,没有限制
C)发送方和接收方不必直接建立联系
D)同步与互斥都由操作系统自动进行,对用户是透明的
★13-24当采用消息机制进行进程间通信时,下列哪一项不是消息通信机制必须包括的内容()
A)消息ID号
B)消息缓冲区
C)消息队列首指针
D)互斥信号量
14.例题
★14-1 下列存储管理方案中,允许动态扩充内存容量的方案是()。
A)固定分区
B)可变分区
C)页式
D)虚拟页式 【利用外存来扩充内存(虚拟内存)】
D【解析】虚拟页式存储管理:在进程开始运行之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程运行的需要,动态装入其他页面;当内存空间已满,而又需要装入新的页面时,则根据某种算法置换出某个页面,以便装入新的页面。故虚拟页式是动态扩充内存容量。故选择 D 选项。虚拟页式存储技术的基本思想就是利用大容量的外存来扩充内存。使用交换技术才能动态扩充内存容量,题目选项中也只有该选项使用了交换技术,从而能够动态扩充内存容量。
★14-2 采用动态地址映射方式向内存装入程序时,其地址转换工作是在什么时间完成的(C)。
A)装入程序时刻
B)选中程序时刻
C)每一条指令执行时刻
D)移动程序时刻
C【解析】动态重定位是指在装入程序时,不进行地址转换,而是直接把程序装入内存中,程序在执行过程中,每当执行一条指令时都由硬件的地址转换机构将指令中的逻辑地址转换成绝对地址。故选择C 选项。
★14-4 下列各种方法中,哪一种既可以满足多道程序设计且设计上又最简单(A)。
A)可变分区 【满足多道程序设计且设计上又最简单】
B)交换技术 【都不能满足】
C)单一连续区 【不支持多道程序设计】
D)分页技术 【复杂】
★14-5 每个进程在得到处理机运行前,必须首先进行下列哪一种操作(C)。
A)全部装入内存
B)链接动态库
C)部分装入内存
D)调入交换区.
★14-6 将多个目标程序装配成可运行的程序的过程称为(A)。
A)编译
B)链接
C)装载
D)编辑
B【解析】链接是指把所有编译后得到的目标模块连接装配起来,再与函数库相连接成一个整体的过程,由此概念可知,选择B选项。
14-8 下列存储管理方案中,需要采用移动技术解决碎片问题的是(B)。
A)固定分区
B)可变分区
C)页式
D)段页式
14-9 在装入程序时,先直接把程序装入到所分配的内存区域中,然后在程序执行过程中,每当执行一条指令时再由硬件地址转换机构将指令中的逻辑地址转换成物理地址,这一过程称为
(B)。
A)静态重定位
B)动态重定位
C)静态地址分配
D)动态地址分配
B【解析】动态重定位是指在装入程序时,不进行地址转换,而是直接把程序装入内存中,程序在执行过程中每当执行一条指令时都由硬件的地址转换机构将指令中的逻辑地址转换成绝对地址。故选择B选项。
14-10 在装入一个程序时,把程序中的指令地址和数据地址经过计算,全部转换成物理地址后
再装入物理内存,这一过程称为(A)。
A)静态重定位
B)动态重定位
C)静态地址分配
D)动态地址分配
14-13 下列存储管理方案中,不能采用移动技术解决碎片问题的是(C)。
A)段式
B)可变分区
C)页式 【不能用移动技术解决碎片】
D)动态分区
16.例题
★16-1 【只考过一次】
页式存储管理方案中,若一个进程的虚拟地址空间为 2GB,页面大小为 4KB,当用 4 字节表示物理页号时,页表需要占用多少个页面()。
A)128
B)256
C)512
D)1024
13-4 某虚拟页式存储管理系统采用二级页表进行地址转换,若不考虑高速缓存和快表,则进程每执行一条指令至少需要访问几次内存(C)。
A)0
B)1
C)2
D)3 【—次访问—级索引,二次访问二级索引,三次访问该指令。】
16-18 在虚拟页式存储管理系统中,假设内存按字节编址。若系统采用 20 个二进制位表示虚拟地址,其中页内地址部分占用 12 个二进制位,则每个页面的大小为多少字节()。
A)2^8
B)2^20
C)2^12
D)2^32
16-19 在虚拟页式存储管理系统中,假设内存按字节编址。若系统采用 20 个二进制位表示虚拟页号,页内地址部分占用 12 个二进制位,则允许一个进程最大有多少个字节(B)。
A)2^8
B)2^20 【问进程总空间有多大】
C)2^12
D)2^32
【与19题类似】16-21某页式存储管理系统中内存按字节编址。若系统采用24位二进制位表示逻辑地址,页内地址部分占用10个二进制位,则允许一个进程最大有多少字节?
A、2^14
B、2^24 【问进程总空间有多大】
C、2^12
D、2^10
【与18题类似】16-22某页式存储管理系统中内存按字节编址。若系统采用24位二进制位表示逻辑地址,页内地址部分占用10个二进制位,则每个页面的大小是多少字节?
A、2^14
B、2^24
C、2^12
D、2^10
【与19、21题类似】23某页式存储管理系统中内存按字节编址。若该系统采用32位二进制位表示逻辑地址,页内地址部分占用14个二进制位,则允许进程最大为多少字节?
A、2^18
B、2^14
C、2^12
D、2^32
17.例题
★17-4 在一个请求调页的虚拟存储管理系统中,页面的大小为 1024B。某进程在运行过程中要访问的虚拟地址分别为 2050、4121、89、1056、2100、144、4097、156、1121、2200、3996、288、2200、567、5109,系统给该进程分配 3 个页框。若采用 LRU 页面置换算法,该进程的缺页率为多少()。
A)73%
B)67%
C)60%
D)80%