(2)临界区 并发进程中与共享变量有关的程序段定义为临界区。进入临界区的准则是:①一次只准 个进程进入临界区:②本进程结束负责通知下一进程:③进程调度,不能阻塞 (3)原语 原语是不可中断的过程 加锁/开锁( LOCK/UNLOCK)原语 优点是实现互斥简单;缺点是效率很低。 信号量( Semaphore)及PⅤ操作 PⅤ操作能够实现对临界区的管理要求。它由P操作原语和ⅴ操作原语组成,对信号量 进行操作,具体定义如下 P(S):①将信号量S的值减1,即S=S-1 ②如果S0,则该进程继续执行:否则该进程置为等待状态,排入等待队列。 V(S):①将信号量S的值加1,即S=S+1 ②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程 信号量的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量 的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量:当它的值 小于0时,其绝对值表示等待使用该资源的进程个数。注意信号量的值仅能由PV操作来改 一般来说,信号量S0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个 单位资源,因此S的值减1:当S∽时,表示已经没有可用资源,请求者必须等待别的进程 释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的 值加1:若S0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之 运行下去。 消息缓冲通信原语 高级通信原语,用于一组信息发送(Send)与读取(Read 5、死锁 (1)死锁的概念
(2)临界区 并发进程中与共享变量有关的程序段定义为临界区。进入临界区的准则是:①一次只准 一个进程进入临界区;②本进程结束负责通知下一进程;③进程调度,不能阻塞。 (3)原语 原语是不可中断的过程。 ·加锁/开锁(LOCK/UNLOCK)原语 优点是实现互斥简单;缺点是效率很低。 ·信号量(Semaphore)及 PV 操作 PV 操作能够实现对临界区的管理要求。它由 P 操作原语和 V 操作原语组成,对信号量 进行操作,具体定义如下: P(S):①将信号量 S 的值减 1,即 S=S-1; ②如果 S0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。 V(S):①将信号量 S 的值加 1,即 S=S+1; ②如果 S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。 信号量的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量 的值与相应资源的使用情况有关。当它的值大于 0 时,表示当前可用资源的数量;当它的值 小于 0 时,其绝对值表示等待使用该资源的进程个数。注意信号量的值仅能由 PV 操作来改 变。 一般来说,信号量 S0 时,S 表示可用资源的数量。执行一次 P 操作意味着请求分配一个 单位资源,因此 S 的值减 1;当 S<0 时,表示已经没有可用资源,请求者必须等待别的进程 释放该类资源,它才能运行下去。而执行一个 V 操作意味着释放一个单位资源,因此 S 的 值加 1;若 S0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之 运行下去。 ·消息缓冲通信原语 高级通信原语,用于一组信息发送(Send)与读取(Read)。 5、死锁 (1)死锁的概念
死锁是两个或两个以上的进程中的每一个,都在等待其中另一个进程释放资源而被封 锁,它们都无法向前推进,称这种现象为死锁现象。 产生死锁的原因是共享资源有限,多个进程对共享资源的竞争,而且操作不当。 (2)产生死锁的四个必要条件是资源互斥使用、保持和等待、非剥夺性、循环等待。 (3)解决死锁的方法 般有死锁的预防,即破坏产生死锁的四个必要条件中的一个或多个,使系统绝不会进 入死锁状态;死锁的避免,即在资源动态分配的过程中使用某种办法防止系统进人死锁状态 和允许系统产生死锁,然后使用检测算法及时地发现并解除它。 第七章操作系统结构和程序设计 1、操作系统研制过程 总体设计:制订设计原则和要求、功能设计和结构设计等方案论证 具体设计:程序框图、库程序和程序设计 调试:分块和分阶段实现 维护:建立或选用专门的维护程序 2、系统结构设计原则 性能完善,系统效率高 系统可靠性高 易于掌握:面对一般用户、系统管理员和程序开发人员 适应性要强:具有可扩充性和可移植性 3、结构方案 模块结构、层次结构、内核扩充结构(层次化核扩充结构和微内核层次化核扩充结构) 4、模块接口法 用一个模块实现一个简单的功能 模块实现比较容易 模块间相互依赖和“链接”很复杂
死锁是两个或两个以上的进程中的每一个,都在等待其中另一个进程释放资源而被封 锁,它们都无法向前推进,称这种现象为死锁现象。 产生死锁的原因是共享资源有限,多个进程对共享资源的竞争,而且操作不当。 (2)产生死锁的四个必要条件是资源互斥使用、保持和等待、非剥夺性、循环等待。 (3)解决死锁的方法 一般有死锁的预防,即破坏产生死锁的四个必要条件中的一个或多个,使系统绝不会进 入死锁状态;死锁的避免,即在资源动态分配的过程中使用某种办法防止系统进人死锁状态; 和允许系统产生死锁,然后使用检测算法及时地发现并解除它。 第七章 操作系统结构和程序设计 1、操作系统研制过程 总体设计:制订设计原则和要求、功能设计和结构设计等方案论证 具体设计:程序框图、库程序和程序设计 调试:分块和分阶段实现 维护:建立或选用专门的维护程序 2、系统结构设计原则 ·性能完善,系统效率高 ·系统可靠性高 ·易于掌握:面对一般用户、系统管理员和程序开发人员 ·适应性要强:具有可扩充性和可移植性 3、结构方案 模块结构、层次结构、内核扩充结构(层次化核扩充结构和微内核层次化核扩充结构) 4、模块接口法 ·用一个模块实现一个简单的功能 ·模块实现比较容易 ·模块间相互依赖和“链接”很复杂
实现整个系统的总功能不太容易 调试和修改,牵动面很大 5、操作系统的分层原则 (1)按程序的嵌套情况排成有序的层次 (2)把活动频繁的模块和为很多模块所公用的模块放在最低软件层,存储器管理模块 设置在较低软件层 (3)为获得可移植性和可适应性而设置的软件层,应分别放在较低的层次和最外层。 (4)在严格的层次结构中,只允许高层调用低层中的软件,决不允许低层调用高层的 软件。 、难点分析 如何理解操作系统在计算机系统中的地位? 操作系统是软件,而且是系统软件。它在计算机系统中的作用,大致可以从两方面体会 对内,操作系统管理计算机系统的各种资源,扩充硬件的功能:对外,操作系统提供良好的 人机界面,方便用户使用计算机。它在整个计算机系统中具有承上启下的地位 系统调用与一般过程调用的区别 系统调用在本质上是一种过程调用,但它是一种特殊的过程调用,它与一般过程调用的 主要区别如下: (1)运行状态不同。一般的过程调用,其调用和被调用过程都是用户程序,它们都运 行在同一系统状态下;而系统调用的调用过程是用户程序,它运行在用户态,其被调用过程 是系统过程,运行在系统态 (2)进入方式不同。一般过程调用可以直接通过过程调用语句将控制转移到被调用过 程:而执行系统调用时,由于调用和被调用过程处于不同系统状态,必须通过访管中断进入。 (3)代码层次不同。一般过程调用中的被调用程序是用户级程序,而系统调用是操作 系统中的代码程序,是系统级程序。 下表给出作业1、2、3的提交时间和运行时间。采用先来先服务调度算法和短作业优先 调度算法,试问平均周转时间各为多少?(时间单位:小时,以十进制进行计算。) 解:采用先来先服务调度策略,则调度顺序为1、2、3
·实现整个系统的总功能不太容易 ·调试和修改,牵动面很大 5、操作系统的分层原则 (1)按程序的嵌套情况排成有序的层次; (2)把活动频繁的模块和为很多模块所公用的模块放在最低软件层,存储器管理模块 设置在较低软件层; (3)为获得可移植性和可适应性而设置的软件层,应分别放在较低的层次和最外层。 (4)在严格的层次结构中,只允许高层调用低层中的软件,决不允许低层调用高层的 软件。 二、难点分析 ·如何理解操作系统在计算机系统中的地位? 操作系统是软件,而且是系统软件。它在计算机系统中的作用,大致可以从两方面体会: 对内,操作系统管理计算机系统的各种资源,扩充硬件的功能;对外,操作系统提供良好的 人机界面,方便用户使用计算机。它在整个计算机系统中具有承上启下的地位。 ·系统调用与一般过程调用的区别。 系统调用在本质上是一种过程调用,但它是一种特殊的过程调用,它与一般过程调用的 主要区别如下: (1)运行状态不同。一般的过程调用,其调用和被调用过程都是用户程序,它们都运 行在同一系统状态下;而系统调用的调用过程是用户程序,它运行在用户态,其被调用过程 是系统过程,运行在系统态。 (2)进入方式不同。一般过程调用可以直接通过过程调用语句将控制转移到被调用过 程;而执行系统调用时,由于调用和被调用过程处于不同系统状态,必须通过访管中断进入。 (3)代码层次不同。一般过程调用中的被调用程序是用户级程序,而系统调用是操作 系统中的代码程序,是系统级程序。 ·下表给出作业 l、2、3 的提交时间和运行时间。采用先来先服务调度算法和短作业优先 调度算法,试问平均周转时间各为多少?(时间单位:小时,以十进制进行计算。) 解:采用先来先服务调度策略,则调度顺序为 l、2、3
平均周转时间T=(8+11.6+12)/3=10.53 采用短作业优先调度策略,则调度顺序为l、3、2 平均周转时间T=(8+8+126)/3=9.53 试述文件管理系统设置打开文件、关闭文件命令的原因。 解:操作系统需要处理大量用户文件,而访问一个文件需要查询目录,有时甚至需要多 次查询目录。由于文件目录与文件一起存放在辅存上,当存取文件时,必须先到辅存中读取 文件目录信息,从中获得文件的存放地址,然后再去存取文件。这样一来,文件信息的存取 将花费很多时间。如果将整个文件目录放入主存,虽然可以提高存取速度,但这需要占用大 量主存空间,显然这也是不可取的。 实际上,在一段时间内使用的文件数总是有限的,因此只要将目录中当前要使用的那些 文件的目录表目复制到内存中就可以了。这样既不占用太多的主存空间,又可显著提高查询 文件目录的速度。为此,大多数操作系统中设置了两个文件操作:打开文件和关闭文件。 打开文件操作完成的功能是将文件的有关目录信息复制到主存活动文件表中,以建立用 户和这个文件的联系。关闭文件操作的功能是用户宣布这个文件当前不再使用,系统将其在 主存中的相应目录信息删去,因而也就切断了用户同这个文件的联系 有一个文件系统如图(a)所示,图中的框表示目录,圈表示普通文件。根目录常驻内 存,目录文件组织成链接文件,不设文件控制块,普通文件组织成索引文件。目录表目指示 下一级文件名及其磁盘地址(各占2个字节,共4个字节)。若下级文件是目录文件,指示 其第一个磁盘块地址。若下级文件是普通文件,指示其文件控制块的磁盘地址。每个目录文 件磁盘块最后4个字节供拉链使用。下级文件在上级目录文件中的次序在图中为从左至右 每个磁盘块有512字节,与普通文件的一页等长 普通文件的文件控制块组织结构如图(b)所示,其中每个磁盘地址占2个字节,前10 个地址直接指示该文件前10页的地址。第11个地址指示一级索引表地址,一级索引表中每 个磁盘地址指示一个文件页地址;第12个地址指示二级索引表地址,二级索引表中每个地 址指示一个一级索引表地址:第13个地址指示三级索引表地址,三级索引表中每个地址指 示一个二级索引表地址。问 (1)一个普通文件最多可有多少个文件页? (2)若要读文件J中的某一页,最多启动磁盘多少次? (3)若要读文件W中的某一页,最少启动磁盘多少次?
平均周转时间 T=(8+11.6+12)/3=10.53 采用短作业优先调度策略,则调度顺序为 l、3、2。 平均周转时间 T=(8+8+12.6)/3=9.53 ·试述文件管理系统设置打开文件、关闭文件命令的原因。 解:操作系统需要处理大量用户文件,而访问一个文件需要查询目录,有时甚至需要多 次查询目录。由于文件目录与文件一起存放在辅存上,当存取文件时,必须先到辅存中读取 文件目录信息,从中获得文件的存放地址,然后再去存取文件。这样一来,文件信息的存取 将花费很多时间。如果将整个文件目录放入主存,虽然可以提高存取速度,但这需要占用大 量主存空间,显然这也是不可取的。 实际上,在一段时间内使用的文件数总是有限的,因此只要将目录中当前要使用的那些 文件的目录表目复制到内存中就可以了。这样既不占用太多的主存空间,又可显著提高查询 文件目录的速度。为此,大多数操作系统中设置了两个文件操作:打开文件和关闭文件。 打开文件操作完成的功能是将文件的有关目录信息复制到主存活动文件表中,以建立用 户和这个文件的联系。关闭文件操作的功能是用户宣布这个文件当前不再使用,系统将其在 主存中的相应目录信息删去,因而也就切断了用户同这个文件的联系。 ·有一个文件系统如图(a)所示,图中的框表示目录,圈表示普通文件。根目录常驻内 存,目录文件组织成链接文件,不设文件控制块,普通文件组织成索引文件。目录表目指示 下一级文件名及其磁盘地址(各占 2 个字节,共 4 个字节)。若下级文件是目录文件,指示 其第一个磁盘块地址。若下级文件是普通文件,指示其文件控制块的磁盘地址。每个目录文 件磁盘块最后 4 个字节供拉链使用。下级文件在上级目录文件中的次序在图中为从左至右。 每个磁盘块有 512 字节,与普通文件的一页等长。 普通文件的文件控制块组织结构如图(b)所示,其中每个磁盘地址占 2 个字节,前 10 个地址直接指示该文件前 10 页的地址。第 11 个地址指示一级索引表地址,一级索引表中每 个磁盘地址指示一个文件页地址;第 12 个地址指示二级索引表地址,二级索引表中每个地 址指示一个一级索引表地址;第 13 个地址指示三级索引表地址,三级索引表中每个地址指 示一个二级索引表地址。问: (1)一个普通文件最多可有多少个文件页? (2)若要读文件 J 中的某一页,最多启动磁盘多少次? (3)若要读文件 W 中的某一页,最少启动磁盘多少次?