1、操作系统复习试题制作人:胡辉辉1、选择题1. 操作系统是一种()A. 系统软件 B. 系统硬件 C. 应用软件 D. 支援软件92从用户的观点看,操作系统是 。A用户与计算机之间的接口B控制和管理计算机资源的软件C合理地组织计算机工作流程的软件D由若干层次的程序按一定的结构组成1以下著名的操作系统中,属于多用户、分时系统的是( )。ADOS 系统 BUNIX 系统CWindows NT 系统 D OS2 系统64下列关于网络操作系统工作模式描述正确的是( )。A.Client 和 Server 不能在同一台机器上BServer 是一个具体的机器硬件,和软件没有关系C.在文件服务器上,各用户可以
2、同时对相同的数据做同时的更新D.CS 模式可以给用户提供理想的分布环境,减少网络传输负担2在操作系统中,进程的最基本的特征是( )。A动态性和并发性 B顺序性和可再现性C与程序的对应性 D执行过程的封闭性2.为了使系统中所有的用户都能得到及时的响应,该操作系统应该是()A.多道批处理系统 B.分时系统 C.实时系统 D.网络系统3.操作系统内核与用户程序、应用程序之间的接口是()A.shell 命令 B.图形界面 C.系统调用 D.C 语言函数5系统抖动是指 ( )。A使用机器时,屏幕闪烁的现象B由于主存分配不当,偶然造成主存不够的现象C系统盘有问题,致使系统不稳定的现象D被调出的页面又立刻被
3、调入所形成的频繁调入调出现象8SPOOLing 技术可以实现设备的( )分配。A独占 B共享C虚拟 D物理2.MSDOS 的存贮管理采用了()A. 段式存贮管理 B. 段页式存贮管理C. 单用户连续存贮管理 D. 固定式分区存贮管理3.用户程序在目态下使用特权指令将引起的中断是属于()A. 硬件故障中断 B. 程序中断 C. 外部中断 D. 访管中断4.下列算法中用于磁盘移臂调度的是()A. 时间片轮转法 B. LRU 算法 C. 最短寻找时间优先算法 D. 优先级高者优先算法7.在以下存贮管理方案中,不适用于多道程序设计系统的是()A. 单用户连续分配 B. 固定式分区分配C. 可变式分区分
4、配 D. 页式存贮管理10.进程从运行状态进入就绪状态的原因可能是()A. 被选中占有处理机 B. 等待某一事件C. 等待的事件已发生 D. 时间片用完14.文件系统采用多级目录结构后,对于不同用户的文件,其文件名()A. 应该相同 B. 应该不同 C. 可以相同,也可以不同 D. 受系统约束15.在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减 1 的情况是()A. 无上邻空闲区,也无下邻空闲区 B. 有上邻空闲区,但无下邻空闲区 C. 有下邻空闲区,但无上邻空闲区 D. 有上邻空闲区,也有下邻空闲区10.文件管理实际上是管理
5、()A.主存空间 B.辅助存储空间C.逻辑地址空间 D.物理地址空间3、从用户的观点看,操作系统是( ) 。A. 用户与计算机硬件之间的接口 B.控制和管理计算机资源的软件C. 合理组织计算机工作流程的软件 D.计算机资源的的管理者4、当 CPU 处于管态时,它可以执行的指令是( ) 。A. 计算机系统中的全部指令 B. 仅限于非特权指令 C. 仅限于访管指令 D. 仅限于特权指令5、用户在程序中试图读取某文件的第 100 个逻辑块时,使用操作系统提供的( )接口。 A. 系统调用 B.图形用户接口 C.原语 D.键盘命令7、当一个进程处于( )状态时,称其为等待(或阻塞)状态。A. 它正等待
6、中央处理机 B. 它正等待合作进程的一个消息 C. 它正等待分给它一个时间片 D. 它正等待进入内存8、一个进程释放一种资源将有可能导致一个或几个进程( ) 。A.由就绪变运行 B.由运行变就绪 C.由阻塞变运行 D.由阻塞变就绪11、在下面的 I/O 控制方式中,需要 CPU 干预最少的方式是( ) 。A程序 I/O 方式 B中断驱动 I/O 控制方式 C直接存储器访问 DMA 控制方式 DI/O 通道控制方式14、某系统采用了银行家算法,则下列叙述正确的是( ) 。A.系统处于不安全状态时一定会发生死锁 B.系统处于不安全状态时可能会发生死锁C.系统处于安全状态时可能会发生死锁 D.系统处
7、于安全状态时一定会发生死锁15、CPU 输出数据的速度远远高于打印机的打印速度,为解决这一矛盾,可采用( )A并行技术 B缓冲技术 C虚拟存储器技术 D覆盖技术16、下面最有可能使得高地址空间成为大的空闲区的分配算法是( ) 。A.首次适应法 B.最佳适应法 C.最坏适应法 D.循环首次适应法20、MS-DOS 系统中的磁盘文件物理结构属于( ) 。A. 连续文件 B. 链接文件 C. 索引文件 D. 散列文件7在下述文件系统目录结构中,能够用多条路径访问同一文件(或目录) 的目录结构是( )A单级目录 B二级目录C纯树型目录 D非循环图目录4支持程序浮动的地址转换机制是()A、动态重定位 B
8、、段式地址转换C、页式地址转换 D、静态重定位6设计批处理多道系统时,首先要考虑的是( 系统效率和吞吐量 )。A、灵活性和可适应性 B、系统效率和吞吐量C、交互性和响应时间 D、实时性和可靠性10按逻辑结构划分,文件主要有两类:(记录式文件 )和流式文件。A、记录式文件 B、网状文件 C、索引文件 D、流式文件11UNIX 中的文件系统采用(、流式文件 ) 。A、网状文件 B、记录式文件 C、索引文件 D、流式文件12文件系统的主要目的是( A ) 。A、实现对文件的按名存取 B、实现虚拟存贮器C、提高外围设备的输入输出速度 D、用于存贮系统文档13文件系统中用( D )管理文件。A、堆栈结构
9、 B、指针 C、页表 D、目录16一种既有利于短小作业又兼顾到长作业的作业调度算法是( C )。A、先来先服务 B、轮转 C、最高响应比优先 D、均衡调度17两个进程合作完成一个任务。在并发执行中,一个进程要等待其合作伙伴发来消息,或者建立某个条件后再向前执行,这种制约性合作关系被称为进程的( B ) 。A、互斥 B、同步 C、调度 D、伙伴 19数据文件存放在到存储介质上时,采用的逻辑组织形式是与( A )有关的。A、文件逻辑结构 B、存储介质特性 C、主存储器管理方式 D、分配外设方式25.除操作系统占用的内存空间之外,所剩余的全部内存只供一个用户进程使用,其他进程都放在外存上,这种设计称
10、为()A.覆盖技术 B.虚拟技术 C.对换技术 D.物理扩充30.以下不属于分布式系统特征的是()A.分布性 B.并行性 C.全局性 D.可定制性33. 索引式(随机) 文件组织的一个主要优点是( )oA不需要链接指针 B能实现物理块的动态分配C回收实现比较简单 D用户存取方便48、裸机配备了操作系统,则构成了( )A、系统软件 B、应用软件C、虚拟机 D、硬件系统37在磁盘调度算法中,选择与当前磁头移动方向一致、磁头单向移动且距离最近的进程的算法为 。A:FIFO B:SCANC:CSCAN D:FSCAN二、填空题.1、存贮管理应实现的功能是:主存空间的分配与保护,_主存空间的重定位_,主
11、存空间的共享和_主存的扩充_。2、用户程序使用_系统调用_请求操作系统服务。3、分页式存贮管理中,页表是用来指出作业的_逻辑页好_与_主存块号_的对应关系.4、进程主要由_程序_、_数据_和_PCB_三部分内容组成,其中_PCB_是进程存在的惟一标识,而_数据_部分也可以为其它进程共享。5、进程调度的方式通常有(抢占 )和(非抢占)两种方式。6、程序并发执行时的特征是( 间断性 )、( 失去了封闭性 )、( 不可再现性 )和独立性。7、操作系统为用户提供两种类型的使用接口,它们是(操作员接口)和(程序员接口 ) 。8、操作系统中,进程可以分为(系统进程)和(用户进程)两类。9、主存储器与外围设
12、备之间的信息传送操作称为(输入输出操作).10、现代计算机系统采用自成独立系统的能与主机并行工作的 I/O 结构,主存储器与外围设备之间传送信息的输入输出操作由_通道_完成。由于它能独立完成输入输出操作,所以也称为_输入输出处理机_。11、MS-DOS 操作系统中文件的逻辑结构是_文件。12、死锁的四个必要条件是互斥使用资源,占有等待资源,循环等待资源(或不可抢夺资源) 和不可抢夺资源(或循环等待资源)13、 是计算机系统的一个重要部分,中断机制包括 中断 操作系统的中断服务程序。14、作业控制方式有_批处理 方式和_交互控制方式二种。15、当一个进程独占处理器顺序执行时,具有两个特性:封闭性
13、 可再现性。16、不可中断的过程称为_原语_。17、设备 I/O 方式有如下三种:询问 中断 通道。18、从用户观点看,UNIX 系统将文件分三类:普通(用户) 目录 特殊。19、引起死锁的四个必要条件是 .互斥使用 、保持和等待 非剥夺性 循环等待。20、设计实时操作系统时特别要注意两点,第一是_可靠性_,第二是_安全_。21、辅助存储器只能与_内存_相互传递信息。22、被中断进程的现场信息是由_中断处理程序_程序将其保存到 PCB 中的。23、文件存取方式主要取决于两个方面的因素,与_文件管理 _有关和与_设备管理_有关。24、可变分区方式管理主存时,往往采用_动态 _重定位方式来实现地址
14、转换。25、为了防止各种系统故障破坏文件,文件系统可以采用_建立副本_和_定时转储_两种方法在保护文件。26、固定分区存储管理中的作业装入固定的主存区域,故可采用_静态重定位_方式装入。27、操作系统为用户提供三种类型的使用接口,它们是命令方式和系统调用和图形用户界面。28、主存储器与外围设备之间的数据传送控制方式有程序直接控制、中断驱动方式、DMA 方式和通道控制方式。 29、在采用请求分页式存储管理的系统中,地址变换过程可能会因为缺页和越界等原因而产生中断。30、常用的内存管理方法有分区管理、页式管理、段式管理和段页式管理。31、 常用的进程通信方式有管道、共享存储区、消息机制和邮箱机制。
15、32、进程由程度、数据集合、进程控制块及相关表格组成。 33、程序经编译或汇编以后形成目标程序,其指令的顺序都是以零作为参考地址,这些地址称为相对地址(或:逻辑地址、虚拟地址) 。34、操作系统五大功能中作业管理包含( 用户任务管理) 和 ( 人机交互界面管理);文件管理又称( 信息管理 );存储管理主要讲解 ( 内存管理);设备管理是最原始的( 监控程序管理) ;进程管理实质上是( CPU 的执行调度管理 )。 35、文件的物理结构有顺序文件、链接文件文件和索引文件三种。36、用户接口:操作系统提供给用户和编程人员的界面和接口。包括程序接口、命令行方式和图形用户界面。3、简答题31、什么是进
16、程?什么是线程?进程与线程有何区别?答:(1)进程是具有独立功能程序在某个数据集合上的一次执行过程。(2)线程是进程内的一个执行实体或执行单元。(3)进程和线程的区别:(a)不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。一个进程的线程在另一个进程内是不可见的。(b) 在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。2、什么是死锁?产生死锁的原因和必要条件是什么?答:(1)在多道程序系统中,当一组进程中的每个进程均无限期地等待被改组进程中的另一进程所占有且永远不会释放的资源,此时
17、的系统处于死锁状态,简称死锁。(2)死锁产生的原因:(a)系统提供的资源有限;(b)进程推进顺序不当。(3)产生死锁的必要条件:互斥条件、不可剥夺条件、请求和保持条件、循环等待条件。3、什么是操作系统 ?它的主要功能是什么 ?1) 操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。2) 操作系统的主要功能包括:存储器管理、处理机管理、设备管理、文件管理以及用户接口管理4、操作系统中存储器管理的主要功能是什么? 什么叫虚拟存储器 ?1) 存储器管理的主要功能是:内存分配,地址映射,内存保护,内存扩充。2) 虚拟存储器是用
18、户能作为可编址内存对待的存储空间,在这种计算机系统中虚地址被映象成实地址。或者:简单地说,虚拟存储器是由操作系统提供的一个假想的特大存储器。5、什么是设备独立性,它是如何实现的?设备独立性即应用程序独立于使用的物理设备,在应用程序中使用逻辑设备名称来请求使用某类设备。系统在执行时,是使用物理设备名称。要实现设备独立性必须由设备独立性软件完成,包括执行所有设备的公有操作软件提供统一的接口,其中逻辑设备到物理设备的映射是由逻辑设备表 LUT 完成的。 6、页式和段式内存管理有什么区别?怎样才能实现共享和保护?答:段式与页式存储管理的比较如下表所示。段式 页式分段由用户设计划分,每段对应一个相应的的
19、程序模块,有完整的逻辑意义。分页用户看不见,由操作系统为内存管理划分。段面是信息的逻辑单位 页面是信息的物理单位便于段的共享,执行时按需动态链接装入。 页一般不能共享段长不等,可动态增长,有利于新数据增长。 页面大小相同,位置不能动态增长。二维地址空间:段名、段中地址;段号、段内单元号 一维地址空间管理形式上象页式,但概念不同 往往需要多次缺页中断才能把所需信息完整地调入内存7、说明进程的结构、特征和基本状态。答:结构:PCB (进程控制块)+程序+数据集合。特征:动态性、并发性、独立性、制约性、结构性。基本状态:就绪态、执行态、等待态。8、进程的基本状态有哪些?这些状态之间是如何转换的?进程
20、的基本状态有:就绪,阻塞,执行三种。 (2 分)就绪到执行:进程调度执行到就绪:时间片完执行到阻塞:I/O 请求或等待事件发生阻塞到就绪:I/O 完成或事件已发生 进程的基本状态有:新、就绪,阻塞,执行、挂起和终止六种。新到就绪:交换,创建原语就绪到执行:进程调度执行到阻塞:I/O 请求,阻塞原语阻塞到就绪:I/O 完成,唤醒原语执行到就绪:时间片完阻塞到挂起:挂起原语挂起到就绪:唤醒原语执行到终止:进程执行完毕10、 试比较进程和程序的区别(1)进程是一个动态概念,而程序是一个静态概念,程序是指令的有序集合,无执行含义,进程则强调执行的过程。 (2)进程具有并行特征(独立性,异步性) ,程序
21、则没有。 3)不同的进程可以包含同一个程序,同一个程序在执行中也可以产生多个进程。11、分时操作系统和批处理操作系统的区别答:(1)最求目标不同(2) 适应作业不同(3) 资源利用率不同(4) 作业控制方式不同12、临界区和临界资源,临界区管理的基本原则临界区并发进程中与共享变量有关的程序段。临界资源共享变量代表的资源。临界区管理的基本原则:(1)一次至多一个进程能够在它的临界区内;(2)不能让一个进程无限地留在它的临界区内;(3)不能强迫一个进程无限地等待进入它的临界区。特别,进入临界区的任一进程不能妨13、缓冲技术及其基本思想引入缓冲技术的理由:改善中央处理器与外围设备之间速度不匹配的矛盾
22、。 1协调逻辑记录大小与物理记录大小不一致的问题。 2提高 CPU 和 I/O 设备的并行性。 3减少 I/O 对 CPU 的中断次数和放宽对 CPU 中断响应时间的要求。 4缓冲技术实现的基本思想:当一个进程执行写操作输出数据时,先向系统申请一个输出缓冲区,将数据高速送到缓冲区。若为顺序写请求,则不断把数据填到缓冲区,直到它被装满为止。此后,进程可以继续它的计算,同时,系统将缓冲区内容写到 I/O 设备上。当一个进程执行读操作输入数据时,先向系统申请一个输入缓冲区,系统将一个物理记录的内容读到缓冲区中,根据进程要求,把当前需要的逻辑记录从缓冲区中选出并传送给进程。4、计算题(1)多道程序执行
23、图(2)作业调度算法1、设有三道作业,它们的提交时间及执行时间由下表给出:作业号 提交时间 执行时间1 8.5 2.02 9.2 1.63 9.4 0.5试计算在单道程序环境下,采用先来先服务调度算法和最短作业优先调度算法时的平均周转时间 (时间单位:小时,以十进制进行计算;要求写出计算过程)(10 分)FCFS: 作业号 提交时间 执行时间 开始时间 完成时间 周转时间1 8.5 2.0 8.5 10.5 2.02 9.2 1.6 10.5 12.1 2.93 9.4 0.5 12.1 12.6 3.2平均周转时间=(2.0+2.9+3.2)/3=2.7( 小时)SJF: 作业号 提交时间
24、执行时间 开始时间 完成时间 周转时间1 8.5 2.0 8.5 10.5 2.02 9.2 1.6 11.0 12.6 3.43 9.4 0.5 10.5 11.0 1.6平均周转时间=(2.0+3.4+1.6)/3=2.3( 小时)(3)银行家算法1考虑一个有 150 个存储器单元的系统,如下分配给三个进程:进程 最大 占有1 70 452 60 403 60 15使用银行家算法,以确定下面的任何一个请求是否安全:a第 4 个进程到达,最多需要 60 个存储单元,最初需要 25 个单元;b第 4 个进程到达,最多需要 60 个存储单元,最初需要 35 个单元;如果安全给出安全序列;若不安全
25、给出结果分配简表。 (10分)解:进程 最大 占有 尚需 可用1 70 45 25 252 60 40 203 60 15 454 60 25 35安全序列为:1、2、3、4所以系统是安全的,可以进行分配。b进程 最大 占有 尚需 可用1 70 45 25 152 60 40 203 60 15 454 60 35 25当前可用的资源不够任何一个进程运行完毕,所以不安全。(4)页面替换算法1、设某作业占有 7 个页面,如果在主存中只允许装入 4 个工作页面(即工作集为 4),作业运行时,实际访问页面的顺序是:1, 2, 3, 6, 4, 7, 3, 2, 1, 4, 7, 5, 6, 5, 2
26、, 1。试用 FIFO、LRU 和 CLOCK 页面置换算法,列出各自的页面淘汰顺序和页面置换次数。(10 分)解:FIFO :1, 2, 3, 6, 4, 7, 3, 2, 1, 4, 7, 5, 6, 5, 2, 11 1 1 1 4 4 4 4 5 52 2 2 2 7 7 7 7 63 3 3 3 2 2 2 26 6 6 6 1 1 1页面置换次数为:6 次LRU:1, 2, 3, 6, 4, 7, 3, 2, 1, 4, 7, 5, 6, 5, 2, 11 1 1 1 4 4 4 1 1 1 1 6 6 62 2 2 2 7 7 7 4 4 4 4 2 23 3 3 3 3 3 3
27、 7 7 7 7 16 6 6 2 2 2 2 5 5 5 5页面置换次数为:10 次CLOCK:1, 2, 3, 6, 4, 7, 3, 2, 1, 4, 7, 5, 6, 5, 2, 11 1 1 1 4 4 4 1 1 1 1 6 6 62 2 2 2 7 7 7 4 4 4 4 2 23 3 3 3 3 3 3 7 7 7 7 16 6 6 2 2 2 2 5 5 5 5页面置换次数为:10 次(5)分页与分段存储管理中逻辑地址与物理地址转换1、某虚拟存储器的用户编程空间共321KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:页号 物理块号1
28、52 103 44 7则逻辑地址 0A5C(H)所对应的物理地址是什么?答:逻辑地址 0A5CH)所对应的二进制表示形式是:0000 1010 0101 1100 ,由于 1K=210,下划线部分前的编码为 000010,表示该逻辑地址对应的页号为 3 查页表,得到物理块号是 4(十进制) ,即物理块地址为:0001 0010 0000 0000 ,拼接块内地址 0000 0000 0101 1100,得 0001 0010 0101 1100,即125C(H) 。2、某段表内容如下:段号 段首地址 段长度0 120K 40K1 760K 30K2 480K 20K3 370K 20K一逻辑地
29、址为(2,154)的实际物理地址为多少?答:逻辑地址(2154)表示段号为 2,即段首地址为 480K,154 为单元号,则实际物理地址为 480K+154。3、一个由 3 个页面(页号为 0、1、2),每页有 2048 个字节组成的程序,假定在某时刻调入 8 个物理块的内存,其页面的页号和物理块号的对照表如下:逻辑页号 主存块号0 41 72 1请根据页表,计算下列给出的逻辑地址对应的绝对地址。(1)100 (2)2617 (3)5196答:(4 分)首先根据逻辑地址查页表,得到主存的块号,再根据公式绝对地址=块号块长+页内地址进行计算。(1)100 的页号为 0(100/2048=2),页
30、内地址为 100mod2048=100;查表得主存块号为 4,于是绝对地址=42048+100=8292;(2)2617 的页号为 1(2617/2048=1),页内地址为 2617mod2048=569;查表得主存块号为 7,于是绝对地址=72048+569=14905;(3)5196 的页号为 2(5196/2048=2),页内地址为 5196mod2048=1100;查表得主存块号为 1,于是绝对地址=12048+1100=3148;(6)磁盘调度算法和磁盘优化1、若干个等待访问磁盘者依次要访问的磁道为 20,44,40,4,80,12,76,假设每移动一个磁道需要 3 毫秒时间,移动臂
31、当前位于 40 号柱面,请按下列算法分别写出访问序列并计算为完成上述各次访问总共花费的寻道时间。 (1)先来先服务算法; (2)最短寻道时间优先算法。(3)扫描算法(当前磁头移动的方向为磁道递增)解:(1)磁道访问顺序为:20,44,40,4,80,12,76寻道时间=(20+24+4+36+76+68+64)*3=292*3=876(2)磁道访问顺序为:40,44,20,12,4,76,80寻道时间=(0+4+24+8+8+72+4)*3=120*3=360(3)磁道访问顺序为:40,44,76,80,20,12,4寻道时间=(0+4+32+4+60+8+8)*3=116*3=348(7)文
32、件五、分析设计题 (1)生产者与消费者(1)一个生产者,一个消费者,公用一个缓冲区。定义两个同步信号量:empty表示缓冲区是否为空,初值为 1。full表示缓冲区中是否为满,初值为 0。生产者进程while(TRUE)生产一个产品;P(empty);产品送往 Buffer;V(full);消费者进程while(True)P(full);从 Buffer 取出一个产品;V(empty);消费该产品; (2)一个生产者,一个消费者,公用 n 个环形缓冲区。 生产者进程while(TRUE)生产一个产品;P(empty);产品送往 buffer(in) ;in=(in+1)mod n;V(full
33、);消费者进程while(TRUE)P(full);从 buffer(out)中取出产品;out=(out+1)mod n;V(empty);消费该产品; (3)一组生产者,一组消费者,公用 n 个环形缓冲区 empty表示缓冲区是否为空,初值为 n。full表示缓冲区中是否为满,初值为0。mutex1生产者之间的互斥信号量,初值为1。mutex2消费者之间的互斥信号量,初值为1。设缓冲区的编号为1n1,定义两个指针 in 和 out,分别是生产者进程和消费者进程使用的指针,指向下一个可用的缓冲区。生产者进程while(TRUE)生产一个产品;P(empty);P(mutex1);产品送往 b
34、uffer(in) ;in=(in+1)mod n;V(mutex1);V(full);消费者进程while(TRUE)P(full)P(mutex2);从 buffer(out)中取出产品;out=(out+1)mod n;V(mutex2 ) ;V(empty);消费该产品;(2)读者与写者读者优先算法:rwmutex 用于写者与其他读者/ 写者互斥的访问共享数据rmutex 用于读者互斥的访问readcount 读者计数器var rwmutex, rmutex : semaphore := 1, 1 ;int readcount = 0;cobeginprocedure reader_i
35、begin / i=1,2,.P(rmutex);Readcount + +;if (readcount = = 1) P(rwmutex);V(rmutex);读数据;P(rmutex);Readcount - -;if (readcount = = 0) V(rwmutex);V(rmutex);endprocedure Writer_jbegin / j = 1,2,.P(rwmutex);写更新;V(rwmutex);写者优先:1)多个读者可以同时进行读2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)如
36、果读者数是固定的,我们可采用下面的算法:rwmutex:用于写者与其他读者/ 写者互斥的访问共享数据rmutex: 该信号量初始值设为 10,表示最多允许 10 个读者进程同时进行读操作var rwmutex, rmutex : semaphore := 1, 10 ;cobeginprocedure reader_ibegin / i=1,2,.P(rwmutex); /读者、写者互斥P(rmutex);V(rwmutex); / 释放读写互斥信号量,允许其它读、写进程访问资源读数据;V(rmutex);endprocedure Writer_jbegin / j = 1,2,.P(rwmu
37、tex);for (i = 1;i = 10;i + +) P(rmutex);/禁止新读者,并等待已进入的读者退出写更新;for (i = 1;i = 10;i + +) V(rmutex);/ 恢复允许 rmutex 值为 10V(rwmutex);(3)司机与售票员1设公共汽车上,司机和售票员的活动分别是:司机: 启动车辆 售票员: 上乘客正常行车 关车门到站停车 售票开车门 下乘客在汽车不断地到站,停车,行使过程中,这两个活动有什么同步关系?并用 wait 和 signal 原语操作实现它们的同步。解:BEGIN integer stop,run;Stop:=0;Run:=0;Proc
38、ess :Driver: L1: wait(run);启动车辆;正常行车;到站停车;signal(stop);Goto L1;Process:Conductor:L2:上乘客;关车门;signal(run);售票;wait(stop);开车门;下乘客;Goto L2;(4)过桥问题有一座东西方向的独木桥;用 P,V 操作实现: 当独木桥上有行人时,同方向的行人可以同时过桥,相反方向的人必须等待。设信号量: MUTEX=1 (东西方互斥)MD=1 (东向西使用计数变量互斥)MX=1 (西向东使用计数变量互斥)设整型变量: CD=0 (东向西的已上桥人数)CX=0 (西向东的已上桥人数)从东向西:
39、P (MD)IF (CD=0)P (MUTEX) CD=CD+1V (MD)过桥P (MD)CD=CD-1IF (CD=0)V (MUTEX) V (MD)从西向东:P (MX)IF (CX=0)P (MUTEX) CX=CX+1V (MX)过桥P (MX)CX=CX-1IF (CX=0)V (MUTEX) V (MX)(5)理发师问题有一个理发师,有 n 张可供顾客等待理发的椅子,如果没有顾客,则理发师睡觉;如果有一顾客进入理发店发现理发师在睡觉,则把他叫醒进行理发,如果理发师正在理发时又有顾客来到,若有空椅子,就在空椅子上等待,若没有空椅子就离开理发店。写一个算法描述理发师和顾客之间的关系
40、。要求不能带有竞争条件。 (西安电子科技大学)Main( ) Int mutex=1; /可否修改顾客数Int wakeup=0; /理发师等唤醒的信号Int wait=0; /顾客是否可以等待Int rc=0; /初始顾客数P1( ); /顾客进程P2( ); /理发师进程P1( )P(mutex); /可否修改顾客数rc=rc+1; if (rc=1) /如果是第一个顾客就唤醒理发师V(wakeup);else if (rc=n) /当顾客人数少于 n 时,在椅子上等待P(wait);elserc=rc-1;该顾客离开理发店V(mutex);P2( )P(wakeup); /理发师睡觉,等
41、待被唤醒While(rc!=0)理发P(mutex); rc=rc-1;if(rc!=0) V(wait); /让等待中的一个顾客理发V(mutex);(6)吃水果问题当水果盘空时,父亲可以放香蕉或者母亲可以放苹果,但盘中已有水果时,就不能放,父母等待。当盘中有香蕉时,女儿可吃香蕉,否则,女儿等待;当盘中有苹果时,儿子可吃,否则,儿子等待。解 设信号量:SE=1 ( 空盘子) ;SA0 (放了苹果的盘子) ;SB=0 (放了香蕉的盘子)父亲REPEAT剥香蕉P(SE)放香蕉V(SB)UNTIL FALSE母亲REPEAT削苹果P(SE)放苹果V(SA)UNTIL FALSE儿子P(SA)拿苹果
42、V(SE)吃苹果女儿P(SB)拿香蕉V(SE)吃香蕉(7)合作加工问题如图 2 所示,系统中有三个进程 GET、PRO 和 PUT,共用两个缓冲区 BUF1 和 BUF2。假设BUF1 中最多可放 11 个信息,现已放入了两个信息;BUF2 最多可放 5 个信息。GET 进程负责不断地将输入信息送入 BUF1 中,PRO 进程负责从 BUF1 中取出信息进行处理,并将处理结果送到 BUF2 中,PUT 进程负责从 BUF2 中读取结果并输出。试写出正确实现GET、PRO、PUT 的同步与互斥的算法(要求:(1)用类 C 语言描述,条理清楚,注释恰当;(2)信号量原语统一使用 wait 和 si
43、gnal。 )图 2 进程合作答:semaphore empty1=9;/空 buf1 的数目full1=2; /有数据的 buf1 的数目empty2=5; /空 buf2 的数目full1=0; /有数据的 buf2 的数目mutex1=mutex2=1; /互斥信号量int main()Cobegin /并发开始GET();PRO();PUT();Coend /并发结束return 0; (3 分)/GET 进程void GET()while(1)wait(empty1);wait(mutex1);将信息送入 buf1;signal(mutex1);signal(full1); (3 分
44、)/PRO 进程void PRO()while(1)BUF1 BUF2GET PRO PUT wait(full1);wait(mutex1);从 buf1 中取出信息;signal(mutex1);signal (empty1);wait(empty2);wait(mutex2);将信息送入 buf2;signal(mutex2);signal(full2); (4 分)/PUT 进程void PUT()while(1)wait(full2);wait(mutex2);从 buf2 中取出信息;signal(mutex2);signal (empty2); (3 分)(8)猎人兔子1、有一只
45、最多能装 2 只兔子的铁笼子,猎人仅能向笼子中放入兔子(每次只能放入 1 只) ,若笼子是满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出 1 只) ,若笼子是空的则他也必须等待。假设初始时笼子是空的。定义信号量并初始化,使用 P、V 操作模拟猎人和饭店老板进程之间的同步与互斥mutex,empty,fullsemaphore;;mutex=1,empty=2;full=0; pcocedure Hunter(x)begin:P(empty) ;P(mutex) ;/放兔子;V(mutex ) ;V(full) ;Goto begin;pcocedure Boss(x)begin:P(full) ;P(mutex) ;/放兔子;V(mutex) ;V(empty) ;Goto begin;