前言
速成的精髓在于,掌握是什么,而不是理解为什么。
——提莫莫
操作系统期末复习,根据考点进行针对性地复习。
分为考点知识和练手题目两大模块
文章目录
考点知识
目录前的数字序号表示第X章,带*号的是俺寄几补充的
1 操作系统引论
操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
操作系统的目标:
- 方便性
- 有效性
- 可扩充性
- 开放性
操作系统的作用:
- 作为用户与计算机硬件系统之间的接口
- 作为计算机系统资源的管理者
- 实现了对计算机资源的抽象
多批道处理系统
优点:
- 资源利用率高
- 系统吞吐量大
缺点:
- 平均周转时间长
- 无交互能力
分时系统
采用轮转运行方式。
如果一个作业独占CPU连续运行,那么其他作业就没有机会被调度运行。为避免一个作业长期独占处理机,引入了时间片的概念。
一个时间片,就是一段很短的时间。
系统规定每个作业每次只能运行一个时间片,然后就暂停该作业的运行,并立即调度下一个作业运行。
如果在不长的时间内能使所有的作业都执行一个时间片的时间,便可以使每个用户都能及时地与自己的作业进行交互,从而可使用户的请求得到及时响应。
微内核
基本概念:
- 足够小的内核
- 基于客户/服务器模式
- 应用“机制与策略分离策略”原理
- 采用面向对象技术
基本功能:
- 进程(线程)管理
- 低级存储器管理
- 中断和陷入处理
优点:
- 提高了系统的可扩展性
- 增强了系统的可靠性
- 可移植性强
- 提供了对分布式系统的支持
- 融入了面向对象技术
2 进程的描述与控制
进程的描述
程序:静态的
进程:动态的
进程实体,由程序段、相关的数据段和PCB构成
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
进程的特征:
- 动态性
- 并发性
- 独立性
- 异步性
- 结构性
五状态模型:
图就不画了,懒
- 创建态
- 就绪态
- 阻塞态
- 执行态
- 终止态
有时候考具有挂起状态的进程状态:
就绪状态分成了活动就绪和静止就绪
阻塞状态分成了活动阻塞绪和静止阻塞
临界资源:一个时间段内,只允许一个进程使用的资源
临界区:访问临界资源的代码
*进程管理中的数据结构
PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据)称为一个能独立运行的基本单位,一个能并发执行的进程。
下面对PCB的具体作用做进一步的阐述:
- 作为独立运行基本单位的标志
- 能实现间断性运行方式
- 提供进程管理所需要的信息
- 提供进程调度所需要的信息
- 实现与其他进程的同步与通信
进程控制块中的信息:
- 进程标识符
- 处理机状态
- 进程调度信息
- 进程控制信息
进程控制块的组织方式:
- 线性方式
- 链接方式
- 索引方式
进程控制
通常将处理机的执行状态分成系统态和用户态
- 系统态:又被称为管态,也称为内核态。它具有较高的特权,能执行一切指令,访问所有寄存器和存储区
- 用户态:又被称为目态。它是具有较低特权的执行状态,仅能执行特定的指令,访问指定的寄存器和存储区
一般情况下,应用程序只能在用户态运行,不能去执行OS指令以及访问OS区域,这样可以防止应用程序对OS的破坏。
内核态 -> 用户态:执行一条特权指令,修改PSW标志位
用户态 -> 内核态:由“访管中断”引发,硬件自动完成变态过程
*进程的创建
引起创建进程的事件:
- 用户登录
- 作业调度
- 提供服务
- 应用请求
创建进程的步骤:
- 申请空白PCB
- 为新进程分配其运行所需要的资源
- 初始化PCB
- 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列
进程同步
同步机制应遵循的规则:
- 空闲让进。当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源
- 忙则等待。当已有进程进入临界区时,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问
- 有限等待。对要求访问临界区资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态
- 让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态
在记录型信号量机制中,S -> value的初值表示系统中某类资源的数目,因而又被称为资源信号量
3 处理机调度与死锁
处理机调度的层次
- 高级调度(作业调度)
- 低级调度(进程调度)
- 中级调度(内存调度)
批处理系统的目标:
- 平均周转时间短
- 系统吞吐量高
- 处理机利用率高
作业与作业调度
作业运行三个阶段与三种状态:
- 收容阶段:后备状态
- 运行阶段:运行状态
- 完成阶段:完成状态
进程调度
进程调度任务有三:
- 保存处理机的现场信息
- 按某种算法选取进程。调度程序按某种算法从就绪队列中选取一个进程,将其状态改为运行状态,并准备把处理机分配给它
- 把处理器分配给进程
调度算法:
- 轮转调度算法
- 优先级调度算法
- 多队列调度算法
- 多级反馈队列调度算法
- 基于公平原则的调度算法
*死锁
各进程互相等待对方手里的资源,导致各进程阻塞
产生的必要条件:
- 互斥条件
- 不可剥夺条件
- 请求和保持条件
- 循环等待条件
4是死锁的必要不充分条件
处理死锁的三种方式:
- 预防死锁
- 避免死锁
- 检测与解除
4 存储器管理
程序的装入和链接
三种装入方式:
- 绝对装入方式
- 可重定位装入方式
- 动态运行时装入方式
在采用可重定位装入程序将装入模块装入内存后,会使装入模块中的所有逻辑地址与实际装入内存后的物理地址不同。
可重定位装入方式:通常,把在装入时对目标程序中指令和数据地址的修改过程称为重定位。又因为地址变换通常是在进程装入时一次完成的,以后不再改变,故称为静态重定位。
动态运行时装入方式:作业装入内存时,所有地址仍是逻辑(相对)地址。真正执行时才转换为物理地址。
新增了重定位寄存器,用来存放程序在内存中的起始地址。真正的内存地址 = 逻辑地址 + 寄存器中地址
连续分配存储管理方式
基于顺序搜索的动态分配算法:
- 首次适应算法。地址递增,找空闲空间
- 循环首次适应算法。从上次找到的空闲空间开始查找
- 最佳适应算法。空闲分区容量从小到大
- 最坏适应算法。空闲分区容量从大到小
分页存储管理方式
离散分配三种基本方式:
- 分页存储管理方式
- 分段存储管理方式
- 段页式存储管理方式
页表:
在分页系统中,允许将进程的各个页离散地存储在内存的任一物理块中,为保证能在内存中找到每个页面所对应的物理块,系统为每个进程建立了一张页面映象表,简称页表
页表的作用是实现从页号到物理块号的地址映射
分段地址由段号和段内地址组成
相关公式:
页号 = 逻辑地址 // 页面大小
页面偏移量 = 逻辑地址 % 页面大小
物理地址 = 页面始址 + 页面偏移量
分页分段区别:
- 页是信息的物理单位
- 页的大小固定且由系统决定
- 分页的用户程序地址空间是一维的,分段是二维的
分页是物理的,分段是逻辑的
5 虚拟存储器
基本工作情况:
基于局部性原理可知,应用程序在运行之前没有必要将之全部装入内存,其余部分暂留在盘上。
程序运行时,如果它所要访问的页(段)已调入内存,便可继续执行下去;
如果程序所要访问的页(段)尚未调入(缺页或缺段),便发出缺页(段)中断请求,此时OS将利用请求调页(段)功能将它们调入内存,以使进程能够继续执行下去。
如果此时内存已满,无法再装入新的页(段),OS还须再利用页(段)置换功能,将内存中暂时不用的页(段)调至盘上,腾出足够的内存空间后,再将要访问的页(段)调入内存,使程序继续执行下去。
这样,便可使一个大的用户程序在较小的内存中运行,也可在内存中同时装入更多的进程,使他们并发执行。
6 I/O系统
确保对设备的正确共享:
- 独占设备
- 共享设备
- 虚拟设备
I/O通道是一种特殊的处理机。它具有执行I/O指令的能力,并通过执行通道(I/O)程序来控制I/O操作。
一个物理记录存储再一个扇区上,磁盘上能存储的物理记录块数目是由扇区数、磁道数以及磁盘面数所决定的。
磁道数 = 柱面数
磁头数 = 盘面数
7 文件管理
功能
管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法;实现文件从标识到实际地址的映射(即按名存取),实现文件的控制操作和存取操作(包括文件的建立、撤销、打开、关闭,对文件的读、写、修改、复制、转储等),实现文件信息的共享并提供可靠的文件保密和保护措施,提供文件的安全措施(文件的转储和恢复能力)。
- 文件属性及操作
- 文件共享
- 文件保护
文件划分
文件的逻辑结构从是否有结构来分,分为两大类:
- 有结构文件。由一个以上的记录构成的文件,又称为记录式文件
- 无结构文件。由字符流构成的文件,又被称为流式文件
从文件的组织方式来分,分为:
- 顺序文件
- 索引文件
- 索引顺序文件
两级文件目录
主文件目录记录用户名和指向用户文件目录的指针
优点:
- 提高了检索目录的速度
- 不同的用户目录中可以使用相同的文件名
- 不同用户使用不同的文件名访问系统中同一个共享文件
缺点:不便于共享
绝对路径:从树根开始的路径名称
相对路径:从当前目录开始直到数据文件为止所构成的路径名称
练手题目
下面的题目,有的不是上述考点出现的,但为了以防万一,也练练吧,就当是对上述考点的补充
选择
第一章
-
操作系统的不确定性是指 程序运行次数的不确定性 和 程序多次运行时间的不确定性
-
在单处理机系统中,可并发的是 处理机与设备 、处理机与通道、设备与设备
-
允许多个用户以交互方式使用计算机的操作系统称为 分时操作系统;
允许多个用户将多个作业提交给计算机集中处理的操作系统称 批处理操作系统;
计算机系统能及时处理过程控制数据并做出响应的操作系统称为 实时操作系统
-
所谓 多道程序设计 是指将一个以上的作业放入内存,并且同时处于运行状态,这些作业共享处理机的时间和外围设备等其他资源
-
实时操作系统必须在 规定时间 内处理完来自外部事件
-
用户程序在目态下使用系统调用引起的中断属于 访管中断
-
在中断发生后,进入中断处理的程序属于 操作系统程序
第二章
- 并发执行的程序具有 间断性 特征
- 在操作系统中,要想读取文件中的数据,通过 系统调用来实现
- 在进程状态转换图中,等待(阻塞)态->运行态 是不可能的
- 进程和线程的区别是 是否拥有资源
- 建立进程就是 为其建立进程控制块
- 对进程的管理和控制使用 原语
- 多道程序环境中,操作系统分配资源是以 进程 为单位
- 并发程序失去了封闭性是指 并发进程共享变量,其执行结果与速度有关
- 进程是多道程序环境中的一个程序 不正确
- 当一个进程处于 进程正等待着给它一个时间片 状态时,不属于等待状态
- 进程的并发执行是指若干个进程 在执行时间上是重叠的
- 进程是一个具有一定独立功能的程序在其数据集合上的一次 运行活动
- 一个进程被唤醒意味着 进程变为就绪状态
- 在单机处理系统中有n(n>2)个进程,有2个进程运行,有1个就绪进程,n-3个等待进程 情况不可能发生
- 在单处理机系统实现并发后,各进程在某一时间段并行运行,CPU与外设之间并行工作
- 一个进程变为等待状态 必定引起进程切换
- 轻量级线程 不是线程的实现方式
第三章
- 管程 技术是用来解决进程同步的
- 操作系统的进程通信手段有 管道、套接字、文件映射
- 如果有三个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为 2
- 设有四个进程共享一个资源,如果每次只允许一个进程使用该资源,则用P、V操作管理时信号量S的可能取值是 1,0,-1,-2,-3
- 进程执行的相对速度不能由进程自己来控制 是正确的
- 信号灯可以用来实现进程之间的 同步与互斥
- 对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示 有1个进程进入了临界区
- 信箱通信是一种 间接通信 方式
- 信号量的初值非负,在其上只能做P、V操作 是正确的
- 并发是指 可同时执行的进程
- 临界区是 一段程序,进程中访问临界资源的那段代码
- 进程在处理机上执行,它们的关系是 进程之间可能有关,也可能无关
- 在消息缓冲通信中,消息队列是一种 临界 资源
- P、V操作是 低级通信原语
- 在单机处理中,如果系统中有n个进程,则就绪队列中的进程个数最多是 n-1个
- 在单机处理中,如果系统中有n个进程,则等待队列中的进程个数最多是 n个
- 在单机处理中,如果系统中有n个进程,则运行队列中的进程个数最多是 1个
- 过程调用 不是进程之间的通信方式
- 消息传递、共享存储器、信箱通信 是进程之间的通信方式
- 同步是指进程之间逻辑上的 制约 关系
第四章
-
段式存储管理系统的优点:方便编程、方便程序共享、方便对程序保护
-
在分区存储管理方式中,如果在按地址升序排列的未分配分区表中顺序登记了下列未分配分区:
1-起始地址17KB,分区长度为9KB;
2-起始地址54KB,分区长度13KB,
现有一个分区被释放,其起始地址为39KB,分区长度为15KB,则系统要 合并第二个为分配分区
-
段页式管理 不存在碎片问题
-
在页式存储管理中,分页是由 硬件 完成的
-
在段式存储管理中,分段是由 程序员 完成的
-
某系统采用基址、限长寄存器的方法来保护进程的存储信息,判断是否越界的公式为 0<=被访问的逻辑地址
-
在段式存储管理系统中,若程序的逻辑地址用24位表示,其中8位表示段号,则每个段的最大长度是 2的16次方
-
有利于动态链接的内存管理方法是 段式管理
第五章
- 固定分配、局部置换 容易引起系统抖动
- 页式虚拟存储管理的主要特点是 不要求将作业同时全部装入主存的连续区域
- 设主存的容量为4MB,辅存的容量为40MB,计算机的地址线24位,则虚存的最大容量是 16MB
- 在请页式存储管理中,当所访问的页面不在内存时将产生缺页,缺页中断属于 内中断
- 在请页式存储管理中,页的大小与缺页率的关系是 成反比
- 在请页式存储管理中,若采用FIFO页面置换算法,则当分配给进程的页面增加时,缺页的次数 可能增加也可能减少
- 虚拟存储器的理论基础是 局部性原理
- 内存空间是 一维的
- 逻辑地址对应的是 相对的地址
- 物理地址对应的是 内存的地址
- 系统抖动现象的发生是由 置换算法选择不当 引起的
第六章
- 按 信息交互单位 分类可将设备分为块设备和字符设备
- 用户程序发出磁盘I/O请求后,系统的正确处理流程是 用户程序→系统调用处理程序→设备驱动程序→中断处理程序
- 如果I/O设备与存储设备进行数据交换不经过CPU来完成,这种数据交换方式是 DMA方式
- 设备的独立性是指 用户编程时使用的设备与实际使用的设备无关
- 缓冲技术中缓冲池在 内存 中
- 如果I/O所花费的时间比CPU处理时间短得多,则缓冲区是 几乎无效
填空
第二章
- 单道程序执行时,具有 顺序性、封闭性 、可再现性的特点
- 多道程序执行时,具有 间断性,将失去 封闭性 、可再现性 的特点
- 判断一个进程是否处于挂起状态,要看该进程是否在 内存 ,挂起状态又分为 就绪挂起、阻塞挂起
- 进程映像通常由 程序、数据、栈、PCB这四部分组成
- 根据线程的切换是否依赖于内核把线程分为 用户级线程、内核级线程
第三章
- 在利用信号量实现互斥时,应将 临界区 置于 P操作 和 V操作 之间
- 在实现了用户级线程的系统中,CPU调度的对象是 进程
- 在实现了内核级线程的系统中,CPU调度的对象是 线程
- 在一个单处理机系统中,若有6个用户进程,且假设当前时刻为用户态,则处于就绪队列的进程最多有 5 个,最少有 0 个
- 有n个进程共享某一临界资源,如用信号量机制实现对临界资源的互斥访问,则信号量的变化范围是 -(n-1)到 1
- 对信号量的操作,只能是 P操作 操作和 V操作 操作,P操作操作相当于进程申请资源, V操作 操作相对于进程释放资源。如果 P操作 操作使用不当,可能导致系统死锁
- 在多道程序环境中,进程之间存在的相互制约关系可以分为两种,即 互斥 和 同步。其中 互斥 是指进程之间使用共享资源时的相互约束关系,而 同步 是指进程之间的相互写做、相互配合关系
- 如果信号量的初始值为3,则表示系统有3个 共享资源 ;如果信号量的当前值为-4,则表示在该信号量上有 4 个进程等待
- 信号量的物理意义是:信号量的初始值大于0表示系统中 共享资源的个数 ;信号量的初始值等于0表示系统中 没有该类共享资源;信号量的初始值小于0,其绝对值表示系统中 等待该共享资源的进程数。
- 并发进程中涉及相同变量的程序段叫做 临界区,对这段程序要 互斥 执行
- 对信号量S的P操作定义中,使进程进入等待队列的条件是 S < 0;V操作定义中,唤醒进程的条件是 S <= 0
- AND信号量的基本思想是,将进程在整个运行期间所需要的所有临界资源 一次性 地全部分配给进程,待该进程使用完后再一起释放
- 管程由三部分组成 共享变量的定义、能使进程并发招待的一组操作 对共享变量的初始化
- 高级通信机制可分为三大类:共享存储器系统、消息通信系统、管道通信
- 产生死锁的原因是 资源不足、进程推进顺序非法
- 资源预先静态分配方法和资源有序分配方法分别破坏了产生死锁的 请求与保持 条件和 环路 条件
- 解决死锁通常采用预防、避免、检测和解除等方法,其中银行家算法属于 避免死锁的方法,资源的有序分配属于 预防死锁的方法,剥夺资源属于 解除死锁的方法
- 在有n个进程的系统中,死锁进程个数k应满足的条件是 2 <= k <= n
- 判断资源分配图是否可以简化是 检测 死锁的方法。
第四章
-
在可变分区的分配算法中,倾向于优先使用低地址部分空闲区的是 首次适应算法
能使内存空间的空间区分布得较均匀的是 下次适应算法
每次分配时,若内存中有和进程需要的分区的大小相等的空闲区,一定能分配给进程的是 最佳适应算法
-
两个目标模块链接在一起时需要解决 相对地址的修改 、外部符号引用的变换的问题
-
在段式存储管理系统中,程序使用的最大段数和每段的最大长度是由 逻辑地址 解决的
-
进程有8页,页的大小为1KB,它被映射到共有64个存储块的物理地址空间中,则该进程的逻辑地址的有效位是 13位,物理地址的有效位是 16位
-
在段页式系统中,先将程序分 段 , 段 内分 页 。内存分配以 页 为单位,如果不考虑使用快表的情况,每条访问内存的指令需要 3 次访问内存,其中第 2 次是查页表
-
在段式存储管理系统中,如果一个进程有15段,每段的大小不超过2KB,则该进程的逻辑地址空间的大小是 30KB ,其逻辑地址用 15 个二进制位表示
判断
第二章
- 用户态和核心态是由操作系统设定的。(×)
- Bernstein(伯恩斯坦)提出了控制进程并发执行的条件。(√)
- 只有处在阻塞状态的进程才可能被挂起。(×)
- 线程所占有的存储空间一定比进程小。(×)
- 创建原语用来创建一个新进程,并将此新进程投入等待队列。(×)
- 进程是一段独立的程序。(×)
- 并发是指若干事件在不同时刻发生。(×)
- 一个程序在执行过程中可能产生多个进程。(√)
第三章
- 一个进程正在临界区中执行时不能被中断。(×)
- 一个临界资源可以对应多个临界区。(√)
第四章
- 页是信息的物理单位,段是信息的逻辑单位。(√)
- 存储管理就是管理存储设备的,包括内存和外存。(×)
- 为了减少内部碎片,页的大小越小越好。(√)
- 页式系统的优点是消除了外部碎片,更有效的利用了内存。(√)
- 段式系统中段的共享比页式系统中页的共享更方便。(√)
简答
1
同步机制应遵循的规则?
答:
- 空闲让进。当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源
- 忙则等待。当已有进程进入临界区时,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问
- 有限等待。对要求访问临界区资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态
- 让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态
2
虚拟存储器的基本工作情况?
答:
- 基于局部性原理可知,应用程序在运行之前没有必要将之全部装入内存,其余部分暂留在盘上。
- 程序运行时,如果它所要访问的页(段)已调入内存,便可继续执行下去;
- 如果程序所要访问的页(段)尚未调入(缺页或缺段),便发出缺页(段)中断请求,此时OS将利用请求调页(段)功能将它们调入内存,以使进程能够继续执行下去。
- 如果此时内存已满,无法再装入新的页(段),OS还须再利用页(段)置换功能,将内存中暂时不用的页(段)调至盘上,腾出足够的内存空间后,再将要访问的页(段)调入内存,使程序继续执行下去。
- 这样,便可使一个大的用户程序在较小的内存中运行,也可在内存中同时装入更多的进程,使他们并发执行。
3
PCB的具体作用?
答:
- 作为独立运行基本单位的标志
- 能实现间断性运行方式
- 提供进程管理所需要的信息
- 提供进程调度所需要的信息
- 实现与其他进程的同步与通信
4
创建进程的步骤:
答:
- 申请空白PCB
- 为新进程分配其运行所需要的资源
- 初始化PCB
- 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列
5
基于顺序搜索的动态分配算法?
答:
- 首次适应算法。地址递增,找空闲空间
- 循环首次适应算法。从上次找到的空闲空间开始查找
- 最佳适应算法。空闲分区容量从小到大
- 最坏适应算法。空闲分区容量从大到小
6
分页和分段的区别?
答:
- 页是信息的物理单位
- 页的大小固定且由系统决定
- 分页的用户程序地址空间是一维的,分段是二维的
应用
1
假定某页式管理系统,主存为64KB,分成16块,块号为0,1,2,3,4,……,15,设某作业有4页,其页号为0,1,2,3,被分别装入主存的2,4,1,6块,试问:
- 该作业的总长度是多少字节?(按十进)
- 写出该作业每一页在主存中的起始地址
- 若给出逻辑地址[0,100],[1,50],[2,0],[3,60],请计算出相应的内存地址.(方括号内的第一个元素为页号,第二个元素为页内地址)
答:
-
每块长度=64KB/16=4KB
于是由题目可知,每页也是4KB。故作业长4KB×4=16KB
-
页表为
页号 块号 0 2 1 4 2 1 3 6 -
第0页在主存中的起始地址为4K×2=8K
第1页在主存中的起始地址为4K×4=16K
第2页在主存中的起始地址为4K×1=4K
第3页在主存中的起始地址为4K×6=24K
-
逻辑地址[0,100]的内存地址为4K×2+100=8192+100=8292
逻辑地址[1,50]的内存地址为4K×4+50=16384+50=16434
逻辑地址[2,0]的内存地址为4K×1+0=4096
逻辑地址[3,60]的内存地址为4K×6+60=24576+60=24636
2
有一只铁笼子,每次只能放入一只动物,猎人向笼中放入老虎,农民向笼中放入羊,野生动物园等待取笼中的老虎,饭店等待取笼中的羊,试用P.V操作写出能同步执行的程序.
答:
这是两个生产者和两个消费者共享只能存放一件产品的缓冲区,利用P.V操作编程如下:
猎人进程 | 农民进程 | 动物园进程 | 饭店进程 |
---|---|---|---|
P(S) | P(S) | P(S1) | P(S2) |
放入虎 | 放入羊 | 取老虎 | 取羊 |
---|---|---|---|
V(S1) | V(S2) | V(S) | V(S) |
信号量初值:
S=1,S1=0,S2=0
答案到此就可以了,但如果要编程,可编程如下:
begin
S, S1, S2:Semaphore;
S:=1;S1:=0;S2:=0;
cobegin
process hunter
begin
repeat
have a tiger
P(S)
put a tiger
V(S1)
forever
end
process peasant
begin
repeat
have a goat
P(S)
put a goat
V(S2)
forever
end
process hotel
begin
repeat
P(S2)
get a goat
V(S)
eat a goat
forever
end
process zoo
begin
repeat
P(S1)
get a tiger
V(S)
get a tiger
forever
end
cobegin
end
3
桌上有一只盘子,每次只能放入一个水果,进程P1向盘中放苹果,进程P2向盘中放桔子,进程P3取走盘中苹果,进程P4取走盘中桔子。试用P,V操作写出它们能正确执行的程序。
答:
设信号量S的初值1,信号量的S1和 S2初值均为0。程序如下:
4
设某公共汽车上,司机和售票员的活动分别是:
司机 | 售票员 |
---|---|
启动车辆 | 上乘客 |
正常行车 | 关车门 |
到站停车 | 售票 |
开车门 | |
下乘客 |
在汽车不断地到站,停车、行驶过程中,这两个活动有什么同步关系?用P,V操作编制同步程序。
答:
设P1为司机进程,P2为售票员进程,信号量S1表车开,S2表车停,假定汽车初始状态为停车状态,信号量初值S1:=0,S2:=0.则同步程序如下:
5
在一个盒子里,混装了数量相同的围棋白子和黑子。现要由进程P1和P2把白子和黑子分开。P1拣白子,P2拣黑子,规定每个进程每次只拣一子,当一进程不在拣子时,不允许另一个进程去拣,当一进程拣了一子时,必须让另一进程接着去拣。试用P.V操作写出这两个进程正确执行的程序。
答:
由规定,每进程每次只拣一子,且每次只能一进程拣子,故两进程互斥进入,但每进程拣一子后,另一进程必须进入拣子。则其实是同步问题,故设置两信号量S1、S2,如果先让P1拣白子,则信号量初值S1=1,S2=0,两并发进程程序如下: