[考研类试卷]计算机专业(基础综合)模拟试卷57及答案与解析.doc

上传人:unhappyhay135 文档编号:844855 上传时间:2019-02-21 格式:DOC 页数:32 大小:299KB
下载 相关 举报
[考研类试卷]计算机专业(基础综合)模拟试卷57及答案与解析.doc_第1页
第1页 / 共32页
[考研类试卷]计算机专业(基础综合)模拟试卷57及答案与解析.doc_第2页
第2页 / 共32页
[考研类试卷]计算机专业(基础综合)模拟试卷57及答案与解析.doc_第3页
第3页 / 共32页
[考研类试卷]计算机专业(基础综合)模拟试卷57及答案与解析.doc_第4页
第4页 / 共32页
[考研类试卷]计算机专业(基础综合)模拟试卷57及答案与解析.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、计算机专业(基础综合)模拟试卷 57 及答案与解析一、单项选择题1-40 小题,每小题 2 分,共 80 分。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。1 若一个栈的输入序列为 1,2,3,n,输出序列的第一个元素是 i,则第 j 个输出元素是( ) 。(A)i-j-1(B) i-j(C) j-i+1(D)不确定2 若循环队列以数组 Q0m-1作为其存储结构,变量 rear 表示循环队列中的队尾元素的实际位置,其移动按 rear=(rear+1)MOD m 进行,变量 length 表示当前循环队列中的元素个数,则循环队列的队首元素的实际位置是( )。(A)rear-lengt

2、h(B) (rear-length+m)MOD m(C) (1+rear+m-length)MOD m(D)m-length3 已知有一维数组 A0m ax-n-1,若要对应为 m 行、n 列的矩阵,将元素 Ak(0km*n) 表示成矩阵的第 i 行、第 j 列的元素(0i是:、 、。请回答下列问题。(1)访问时,对应的页框号是什么?(2)访问时,对应的页框号是什么,说明理由;(3)访问时,对应的页框号是什么,说明理由;(4)该策略是否适合于时间局部性好的程序? 说明理由。47 一台设置为 IP 地址自动获取的主机 H 接入到仅有一台服务器的局域网络中,在H 上截获到如表 42 所列的两个以太

3、网数据帧前 48 个字节的十六进制报文,请参考表中的数据回答如下问题:(1)主机 H 采用何种方式获得 IP 地址,一般需要哪几个报文过程才能完成?(2)主机 H 和服务器的 MlAC 地址分别是多少,服务器的 IP地址是多少?(3)假设 IP 租赁期是 60s,那么多少时间后主机 H 发送重新续租 IP 的报文,请填充这个报文的目的 MAC 地址,IP 地址和端口号。注:以太网帧、IP 分组头和 LIDP 段头结构分别如图 4-5(a)、图 4-5(b)和图 4-5(c)所示。计算机专业(基础综合)模拟试卷 57 答案与解析一、单项选择题1-40 小题,每小题 2 分,共 80 分。下列每题

4、给出的四个选项中,只有一个选项是最符合题目要求的。1 【正确答案】 D【试题解析】 一串数据依次通过一个栈,并不能保证出栈数据的次序总是倒置,可以产生多种出栈序列。一串数据通过一个栈后的次序由每个数据之间的进栈、出栈操作序列决定,只有当所有数据“全部进栈后再全部出栈”才能使数据倒置。事实上,存在一种操作序列“进栈、出栈、进栈、出栈”可以使数据通过栈后仍然保持次序不变。题目中输出序列的第一个元素是 i,则第 j 个输出元素是不确定的。2 【正确答案】 C【试题解析】 按照循环队列的定义,因为元素移动按照 rear-(rear+1)MOD m 进行,则当数组 Qm-1存放了元素之后,下一个人队的元

5、素将存放到 Q0中,因此队列的首元素的实际位置是(rear-length+1+m)MOD m。3 【正确答案】 C【试题解析】 本题是求一维数组向二维数组转化的问题。最简单的方法是把数组A 的第 0n-1 共 n 个元素放到数组 B 的第一行,数组 A 的第 n2n-1 共 n 个元素放到数组 B 的第二行中,依次类推,数组 A 的最后 n 个元素放到数组 B 的最后一行中。求 Ak在数组 B 中的位置,应先确定 Ak处在哪一行,显然应该是 kn行;然后再确定处在 k n 行的哪一列,显然是 kn。4 【正确答案】 D【试题解析】 二叉排序树的构造方法如下:每读入一个数据,建立一个新结点,若二

6、叉排序树为空,则新结点为二叉排序树的根结点;若二叉排序树非空,则新结点的值和根结点比较,若小于根结点,则插入左子树;否则插入右子树。结点的平衡因子是指结点的左子树的深度减去它的右子树的深度。由数据(27,16 ,75,38,51) 构造平衡二叉树,插入 51 后首次出现不平衡子树,易知最小不平衡子树的结点为 75。5 【正确答案】 C【试题解析】 由于先序遍历是“根左子树右子树”,而后序遍历是“左子树右子树根”,题目中二叉树的先序遍历序列中 x 在 y 之前,而在其后序遍历序列中 x 在 y 之后,则 x 一定是 y 的祖先。6 【正确答案】 A【试题解析】 由完全二叉树的性质可知,在一棵完全

7、二叉树第 h(h1)层上的结点p 和 q,它们序号范围应是 2k-1p,q2 h-1,因此有log 2p=log2q成立。7 【正确答案】 B【试题解析】 n 个结点的无向图中,边数 en(n-1)2,将 e=36 代入,有 n9,现已知无向图非连通,则 n=10。8 【正确答案】 A【试题解析】 长度为 12 的折半查找判定树如下图 34 所示,判定树中有 12 个内结点。 对于长度为 12 的有序表,折半查找成功时的平均查找长度为:=(120+221+k2kk-1)n=(11+22+34+45)12=37 1 29 【正确答案】 A【试题解析】 设线性探测法查找成功的平均查找长度为 Sn1

8、=1+1(1-a) 2,其中 a 为装填因子。因此算得 a=05,最小表项数为 20005=400 。10 【正确答案】 B【试题解析】 因组与组之间已有序,故将 nk 个组分别排序即可,基于比较的排序方法每组的时间下界为 nkO(klog 2k),因此全部时间下界应为 O(nlog2k)。11 【正确答案】 B【试题解析】 序列48 ,62,35,77,55,14,35,98)建立初始堆的过程如图 35 所示。由图35 所示,(a)调整结点 77,交换 1 次;(b)调整结点 35,不交换;(c) 调整结点62,交换 2 次;(d)调整结点 48,交换 3 次。所以上述序列建初始堆,共交换元

9、素6 次。12 【正确答案】 D【试题解析】 在补码表示中,真值 O 的表示形式是唯一的;符号位可作为数值位的一部分看待,和数值位一起参加运算;加减法统一采用加法操作实现。故、均正确。而是原码表示的特点。13 【正确答案】 A【试题解析】 求 z=2*x+y2,就是将 x 左移一位,y 右移一位,然后再相加。由于x 补 =11110100,则 2x补 =11101000y 补 =10110000,则 12y 补 =11011000,两者相加结果为 11000000。14 【正确答案】 D【试题解析】 移码全为 0 时,它所对应的真值最小(绝对值最大的负数)。所以当阶码为全 0,尾数也为全 0

10、时,表示机器零。15 【正确答案】 B【试题解析】 当浮点运算结果尾数不是规格化数时,执行左规或右规。向左规格化规则:尾数每左移 1 位,阶码减 1。向右规格化规则:尾数右移 1 位,阶码加1。16 【正确答案】 D【试题解析】 这是一个部分译码的片选信号,高 8 位地址中有 2 位(A14 和 A16)没有参与译码,根据译码器电路,译码输出的逻辑表达式应为: =A19*(A18+A1 7)*A15*A13*A1217 【正确答案】 A【试题解析】 “push eax”是一条进栈指令,进栈时要先修改栈指针,32 位数据占4 个字节,存储器按字节编址,所以栈指针-4。18 【正确答案】 C【试题

11、解析】 常用的溢出判断方法主要有三种:采用一个符号位、采用进位位和采用变形补码。19 【正确答案】 D【试题解析】 当采用流水线时,第一条指令完成的时间是 3t,以后每 t 都有一条指令完成,8 条指令总共需要的时间为 3t+(10-1)t=12t,若不采用流水线,完成 10条指令总共需要的时间为 103t=30t,所以加速比=30t12t=25。20 【正确答案】 B【试题解析】 由于传送 4 个字节的数据需要 5 个时钟周期,4B500 MHz5=400 MBs。21 【正确答案】 C【试题解析】 量化后的每个声音样本用 2 个字节(16 位)表示,2 16=65536,其倒数就是量化的分

12、辨率。22 【正确答案】 B【试题解析】 在 DMA 方式下,数据从主存传送到外设需要通过 DMA 控制器中的数据缓冲寄存器。23 【正确答案】 B【试题解析】 本题考查中断的概念。所谓中断(interrupt)是指处理机对系统中或系统外发生的异步事件的响应。异步事件是指无一定时序关系的随机发生的事件。正是因为如此,所以计算机系统每时每刻都必须关注中断何时发生,同时为避免这种随机发生的中断破坏当前运行的节奏,特别设计为处理机在每一条指令结束时去检测中断是否发生,其他的时机都是在上述中断的基本方式上来实现的。由用户态转入内核态是通过访管指令实现的,即是一种特殊的中断,或称陷阱。中断可以屏蔽,屏蔽

13、期间在指令执行结束后不会去检测中断。一个特殊的中断,即缺页中断可以发生在指令中间而不是在指令的末尾。24 【正确答案】 C【试题解析】 本题考查引起进程退出的事件。当一个进程退出时,一般有这么几种情况,进程运行结束正常退出:进程由于出错而退出,例如需要打开一个文件而该文件不存在;程序设计自动退出,上述两种退出都是自愿的;下面两种退出是被迫的:当程序出现致命错误,例如被 0 除,或者存储器溢出,或者对只读的页面进行写操作等,进程将会被强制退出,当然进程被管理员或其他进程杀死也是进程退出的一种。本题中,用户从服务器注销是正常退出,被 0 除是强制退出,杀病毒是进程杀死进程,均可以造成进程退出。只有

14、死锁的情形不能使得进程退出,死锁时进程相互僵持而无法推进,若无一进程让步或外界干预,进程将无法继续运行,但是不会退出。25 【正确答案】 C【试题解析】 本题考查进程的关系。进程运行过程中必须保持独立性。这种独立性表现为进程的封闭性,但是并不意味着进程不与外界进行交互。大部分进程互相之间有制约,可能是直接的制约或间接的制约,直接的制约如生产者消费者进程,间接制约如调用共享库代码等。当然,进程间也存在着无任何关系的情形,例如仅用显示器的图像显示程序和仅放音的播放程序(假设不用磁盘等共享资源)。除 C 外的其他选择均不正确。26 【正确答案】 B【试题解析】 本题考查的是父进程和子进程之间的关系。

15、操作系统调用进程创建原语、创建子进程,父、子进程同时并发执行,不必等待父进程执行完毕;在撤销父进程时,要根据子进程是否执行完来决定是否撤销子进程,一般父进程会利用wait()函数来等待子进程执行结束才撤销子进程。否则,父进程提前撤销后,子进程会变成孤儿进程,其不会自动撤销。而当子进程运行完毕以后,在没有撤销以前,子进程将会变成僵尸进程,直到父进程回收子进程,故子进程撤销以后,父进程是不会随同撤销的。27 【正确答案】 B【试题解析】 本题考查页式存储的基本概念。页内只能存放同一个段的信息,不能容纳不同段的内容。根据题意,系统给每个进程最多分配有 655364096=16 个页面,进程创建时需要

16、代码段 327684096=8 页;数据段 163964096=4 页余 12,占用 5 页;堆栈段 10244096=0 页余 3072,占用 1 页。8+5+1=14 1 6,因此进程可以创建。当运行中堆栈段增长到最大 15284 时,需要页面 152844096=3 页余2996,需占用 4 页,那么 8+5+4=1716,超出了系统分配给一个进程的最大地址空间,因此将会在申请第 17 个页面时出现一个致命的错误,进程退出。死锁的发生一定是二个或二个以上的进程之间发生的时间和空间上的竞争,本题没有涉及其他进程,因此不会死锁。28 【正确答案】 C【试题解析】 在虚拟页式存储管理中,除了有

17、主存和辅存以外,为满足虚拟技术,CPU 还需要有缺页中断机制;为满足页式存储管理,CPU 中需要有地址加法器和地址寄存器来计算页表到页框的映射,而 cache 并不是必需的,因为 cache 的存在只是提高了 CPU 寻址的效率,并不是虚拟页式存储技术的重要单元,缺少cache,CPU 每次执行一个双字的指令(以 32 位为例)或取一个数据均需要二次访问内存,当然这是很不利的,可能会实际上造成虚拟页式的使用障碍。增加了cache,使得虚拟页式存储技术的实际使用提供了方便。29 【正确答案】 B【试题解析】 对于记录型文件,构成文件的基本单位是记录。记录文件是具有符号名,并且在逻辑上具有完整意义

18、的记录序列。用户对记录型文件的访问是以记录为基本单位的。一个记录由一组在逻辑上相关的信息项构成。每个文件内部有一个读写指针,通过系统调用可以将读写指针移动到文件的某一位置处,以后的读写系统调用命令将从该指针所确定的位置处开始。因此索引顺序文件、链接文件和索引文件都是记录文件。只有分区文件不是记录文件,故正确答案为 B。30 【正确答案】 A【试题解析】 本题考查学生对文件系统的理解。文件存放在物理存储介质上需要首先对其进行格式化,格式化的过程就是建立文件系统的过程,在建立文件系统的过程中,规定了记录文件大小的字段。该字段的长度是有限的,一般为 4 个字节或更多,因此,能够记录文件大小的最大值也

19、是有限的。例如 FAT32 文件系统中用32 位来记录文件的大小。则文件最大不能超过 4 GB,而 UNIX 的 UFS 文件系统采用多级索引方式,能索引的文件块的数量取决于直接、一级和二、三级索引指针的数量。最大文件就是所有这些索引指针与文件块大小的乘积。扇区大小和簇的大小只是决定文件块的容量大小,不能限制文件的大小。文件格式与文件大小并无直接关系,缓存与 IO 有关,与文件大小无关。31 【正确答案】 C【试题解析】 文件的共享主要有三种方式:绕道法(或称软链接法)、链接法(或称硬链接法)和基本文件目录表法。文件共享可以使得多个用户共同使用同一个文件,不仅是为完成共同任务所必须,而且还节省

20、了大量存储空间,减少重复性劳动,减少实际 IO 文件的个数。其中,绕道法通过文件的路径名来实现共享。链接法直接将文件的指针指向文件所在的目录,并在文件控制块中记录下文件的共享链接数。基本文件目录利用符号文件目录和基本文件目录,用户访问基本文件目录,系统采用符号文件目录,利用指针将基本文件目录映射到符号文件目录,从而实现共享。文件映射不是文件共享的方式,而是进程间进行通信的一种内存共享方式。32 【正确答案】 A【试题解析】 本题考查通道的作用与功能。通道主要是连接 IO 设备与内存的一个硬件设施,又称为 IO 处理机,是一个独立于 CPU 的专门管理 IO 的控制器,它可以控制设备与内存直接进

21、行数据交换,所以它与 CPU 是并行的。通道具有执行IO 指令的能力,并通过执行通道程序来控制 IO 操作。但是,通道又与一般的处理机不同,它的结构简单,指令较少且单一。这些指令一般均与 IO 操作有关。同时,通道一般没有自己独立的内存,它的程序大多是放在主存中的,与 CPU 共享。33 【正确答案】 C【试题解析】 本题考查层次结构,计算机网络分层使各层之间是独立的,灵活性好,结构上可以分开,易于实现和维护,促进标准化工作,这是最主要的原因,选项 A 只涉及一个功能方面,选项 B 层次和模块化各有优缺点,不能相提并论,而选项 D 也是涉及一个方面,因此答案是 C。34 【正确答案】 A【试题

22、解析】 本题考查奈奎斯特定理,注意根据题意有 4 种相位2 个幅值一 8 种信号状态,这里要注意给出的是波特,而不是带宽赫兹,因此根据公式C=Wlog2V=1200log28=12003=3600bps,因此答案为 A。35 【正确答案】 D【试题解析】 本题考查以太网 MAC 层的基本概念,以及以太网和 IEEE8023的关系。IEEE8023 描述物理层和数据链路层的 MAC 子层的实现方法,在多种物理媒体上以多种速率采用 CSMACD 访问方式,对于快速以太网,该标准说明的实现方法有所扩展,是以太网的 MAC 子层遵守的标准,因此答案是 D。36 【正确答案】 A【试题解析】 本题考查

23、CSMACD 的二进制指数退避算法。首先每个站点确定一个基本推迟时间 T,然后从整数集合0,1,2,3,2 k-1)中随机抽取一个整数 r,其中 r=Min(重发次数,10) ;随机等待时间 Tw=rT;注意当某 MAC 帧重发 16 次不能成功,则放弃该帧。并向高层报告。现已知冲突次数为 4,所以k=4,2 k=1 6。由此可得,在下一次重发前最多要等待 15 个时间片。在 10M 以太网的情况下,一个时间片=512s,所以等待的最大时间为 15512=768s,因此答案是 A。37 【正确答案】 B【试题解析】 本题考查以太网 CSMACD 协议的原理,由于采用随机访问和竞争技术,CSMA

24、CD 只用于总线拓扑结构网络,因此答案为 B。38 【正确答案】 D【试题解析】 本题考查 TCP 的拥塞控制机制,该类题型一般要涉及拥塞控制算法,即慢开始,拥塞避免,加法增大,乘法减小,解题时一定绘制出拥塞窗口变化曲线图,然后列举出拥塞窗口大小变化序列,尤其要注意在特殊点的变化情况,一个是 cwnd=ssthresh,一个是发生拥塞的时候。注意本题中在慢启动和拥塞避免算法中,拥塞窗口初始值为 1,窗口大小开始按指数增长。当拥塞窗口大于慢启动门限后,停止使用慢启动算法,改用拥塞避免算法。此时,慢启动的门限值初始为8,当拥塞窗口增大到 8 时改用拥塞避免算法,窗口大小按线性增长,每次增长 1个报

25、文段。当增加到 12 时,出现超时,重新设置门限值为 6(12 的一半),拥塞窗口再重新设为 1,执行慢启动算法,到门限值为 6 时执行拥塞避免算法。按照上面的算法,拥塞窗口的变化为:1,2,4,8,9,10,11,12,13,14,15,16,1,2,4,6,8,9,n,从该序列可以看出,第 17 次传输时拥塞窗口大小为 8,答案是 D。39 【正确答案】 B【试题解析】 本题考查交换机和集线器的区别。选项 A,交换机是数据链路层设备,对于网络层来说是透明的,表述有问题。选项 C,集线器是物理层设备,和交换机不在同一个层次。选项 D,交换机的优势就是每个端口是一个冲突域,整个交换机是一个广播

26、域,因此答案是 B。40 【正确答案】 C【试题解析】 本题考查 FTP 的工作原理,FTP 使用两条 TCP 连接完成文件传输,一条是控制连接,另一条是数据连接。平时 FTP 服务器总在端口 21 上等待客户的连接请求,当用户需要传输文件时,FTP 客户与 FTP 服务器的端口 21 建立一个控制连接,用来传送客户的命令和服务器的响应。当客户在控制连接上发出数据传输命令时,服务器在另一个端口上主动与客户建立一条数据连接,然后在数据连接上传输文件。当一个文件传输结束时,关闭数据连接。如果用户请求另一个文件的传输,则服务器和客户再建立一个数据连接,用于传输新的文件。虽然数据连接频繁地建立和释放,

27、但控制连接在整个会话期间一直保持,直到客户与服务器通信结束为止,因此答案为 C。二、综合应用题41-47 小题,共 70 分。41 【正确答案】 该图的邻接矩阵如下: 利用 Floyd 算法可求得两顶点之间最短路径长度。最后求得:从 A4 中可求得每对村庄之间的最少交通代价。假设医院建在 i 村庄时,其他各村庄往返总的交通代价如下所示:医院建在村庄 0 时,各村庄往返总的交通代价为 12+1 6+4+7+1 3+1 6+4+18=90;医院建在村庄 1 时,各村庄往返总的交通代价为13+29+17+20+12+11+8+5=11 5;医院建在村庄 2 时,各村庄往返总的交通代价为16+11+1

28、2+6+16+29+12+34=136;医院建在村庄 3 时,各村庄往返总的交通代价为4+8+12+3+4+17+12+22=82;医院建在村庄 4 时,各村庄往返总的交通代价为18+5+34+22+7+20+6+3=115。 显然,把医院建在村庄 3 时总体交通代价最少。42 【正确答案】 int partition(RecType r,int low ,int high)int i=low, j=high,avg=0;for(;i=high ;i+) avg+=Ri key;i=low;avg=avg(high-low+1);temp=R10w3;while(ij)while(i j&Rj

29、key=avg)j-;if(ij)Ri=REj;while(i j&REi3key =avg)i+ ;if(ij)Rj=Ri;ai3=temp;if(Rikey =avg)return i:else return i-1;void quicksort(RecType R,int S ,int T) ;if(ST)k=partition(R,S ,T) ;quicksort(R,S,k);quicksort(R,k+1,T);43 【正确答案】 单重分组即组内并行、组间串行的进位方式;双重分组即组内并行,组间也并行。双重分组跳跃进位链中一个按 3,5,3,5 分组,大组中产生的进位输出是 C4、

30、C 7、C 12 和 C15 而一个按 4,4,4,4 分组,大组中产生的进位输出是 C8、C 7、 C114 和 C15 虽然这两种方式小组内的位数不同,但产生全部进位的时间是一致的。因为两种方式都被分成 4 个小,假定一级“与门” 、“或门”的延迟时间定为 ty,则每一级进位的延迟时间为 2ty。C -1 经过 2ty 产生第 1 小组的进位及所有组进位产生函数 Gi*和组进位传递函数 Pi*;再经过 2ty,由大组产生相应的进位;再经过 2ty 后,才能产生第 2、3、4 小组内的其余的进位,所以最长的进位延迟时间都为 6ty。44 【正确答案】 (1)将各部件间的主要连接线补充完后,数

31、据通路如图 47 所示。(2)指令 SUB(R1),-(R2)的含义为 (R2)-1R 2(R1)(R 2)(R 2)指令的执行流程如下: (PC)MAR ;取指令ReadM(MAR)MDRIR(PC)+1PC(R 1)MAR ;取被减数ReadM(MAR)MDRC(R 2)1R 2 ;修改目的地址(R 2)MAR ;取减数Read11M(MAR)MDRD12(C)-(D)MDR ;求差并保存结果13Write14MDRMM45 【正确答案】 第一部分:假设临界区能容纳的最大读者数量为 n。则:typedef int semaphore; 定义信号量semaphore mutex=1; 读写的

32、互斥量semaphore readers=n; 读者的资源量void Readers(void) 读者进程 while(TRUE) 调度 P(mutex); 读写互斥P(readers); 读者资源量减一,为负时等待V(mutex); 释放读写互斥read_data(void); 读者读取数据V(readers); 离开时释放读者数量,加一Void writers(void) 写者进程 while(TRUE)P(mutex); 获取读写互斥量for(int i=1; i=n;i+)P(readers); 将许可读者进入的资源量消耗光write_data(void); 写入数据for(int i

33、:1 ;i=n ;i+)V(readers) ; 释放读者的资源量V(mutex);) 释放读写互斥量第二部分:若对读者的数量不加以限制,那么应该如下书写程序。typedef int semaphore; 定义信号量semaphore rwmutex=1; 读写的互斥量semaphore rcmutex=1; 访问读者计数器的互斥量semaphore nrmutex=1; 写者等待读者退出的互斥量int readerscount=0; 读者计数器void Readers(void) 读者进程 while(TRUE) 调度P(rwmutex); 读写互斥P(rcmutex); 进入修改读者计数器

34、互斥readerscount+; 读者数量加一if(readerscount=1)P(nrmutex);若是第一个读者,互斥写者V(rcmutex); 释放读者计数器互斥量V(rwmutex); 及时释放读写互斥量,允许其他进程申请read_data(void); 读者读取数据P(rcmutex); 离开临界区时读者计数器互斥readerscount-; 读者数量减一if(readerscount=0)V(nrmutex);所有读者退出临界区V(rcmutex); 离开时释放读者计数器互斥量Void wr 北 ers(void) 写者进程 while(TRUE)P(rwmutex); 获取读写

35、互斥量P(nrmutex); 若临界区有读者,等待其退出write_data(void); 写入数据V(nrmutex); 允许后续第一个读者进入临界区V(rwmutex); 允许新的读者和写者排队上述程序不能保证在等待队列中写者更优一点,因为上述约束条件只能将读者无限制地进入临界区的情况给屏蔽了,而在临界区外,读者和写者还是按照先来先服务的方式排队。第三部分给出的方法使得访问队列中只要有写者出现,它必然优先进入临界区。typedef int semaphore; 定义信号量semaphore rwmutex=1; 读写的互斥量semaphore rcmutex=1; 访问读者计数器的互斥量s

36、emaphore wcmutex=1; 访问排队写者计数器的互斥量semaphore nrmutex=1; 写者等待读者退出的互斥量int readerscount=0; 读者计数器int writerscount=0; 写者计数器void Readers(void) 读者进程 while(TRUE) 调度P(rwmutex); 读写互斥P(rcmutex); 进入修改读者计数器互斥readerscount+; 读者数量加一if(readerscount=1)P(nrmutex);若是第一个读者,互斥写者V(rcmutex); 释放读者计数器互斥量V(rwmutex); 及时释放读写互斥量,允许其他进程申请read_data(void); 读者读取数据P(rcmutex); 离开临界区时读者计数器互斥readerscount-; 读者数量减一if(readerscount=0)V(nrmutex);所有读者退出临界区V(rcmutex); 离开时释放读者计数器互斥量

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 大学考试

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1