第六章   计算机系统

[      浏览次数:0 ]

 

FSA

 

案例9让两名学生分别扮演OS和用户,由扮演用户的学生发出命令,由扮演OS的学生执行命令。

 

        在许多情况下,如果给出指令较为明确,如编写一个菜谱、给出驾驶指示,或是介绍一个爹跌至步骤,在这些例子中,用只言片语描述的指令言简意赅,如”加一勺盐“、”红绿灯的地方要左转”、“沿对角线折叠”。若干这种小志玲的组合,往往就能描述出完成某项任务的复杂过程。计算机同样也能执行特定的指令集合,尽管其中的每个小指令都非常简单,可使一个接一个地输出这些指令,就能让计算机帮助用户解决各种各样复杂的事情。无论是敲打键盘,还是单击屏幕上的按钮,计算机都需要了解它收到的输入信息。有许多方式可以完成这项工作,其中一个最简单而有效的表示方法是有限状态自动机,简称为自动机,是一种可以有效分析各种计算机问题的逻辑图,特别适合对计算机输入进行处理。

 

案例10:在地图中任意挑选两个相距较远的地点,中间会经过多个中转地点,从源地点开始使用不同的交通工具如汽车或火车,如何在地图中寻找一条从源地点到目的地之间的路径?

 

       如果用双线圆圈表示目的地,用圆圈表示图中出现的每个地点,用箭头表示移动的方向并在箭头上方标明乘坐的交通工具,就可以用有限状态自动机的形式画出各个地点之间通过箭头工具连接形成的相互关系。用FSA术语讲,一个地点称为一个状态,目的地则称为终结状态,之所以称为状态是因为它说明了输入事件后状态之间的转换,初始状态由没有标记的箭头指示,到达终结状态说明输入是能被接受的。

 

案例11:在下图所示的FSA中,能够接受的 指令由哪些字母构成?

 

      从状态1开始到状态2结束,无论选择多少个字母,只要指令中包含奇数个A,都能被该FSA所接受,这是因为A是接受状态的开关,而B则没有这种功能。FSA其实就是一张能够指导计算机输入的简单的流程图,尽管这种流程图非常简单,它们却能适应好多问题,不仅能处理输入计算机的文不能信息,还能帮助设计计算机接口。

                      

同步、互斥

 

案例12:同一首歌,你唱你的,我唱我的,会出现什么情况?

 

       如果对进程的活动不加约束,就会出现系统混乱,如多个进程的输出结果混在一起,数据出来的结果不唯一,系统中某些空间的资源无法得到利用等,为了保证系统中所有进程都能正常运行,使得出现的执行具有可预见性,就不像提供进程同步机制。进程间的相互关系主要分为:

 

      同步:各个进程不知道对方的名字,但通过对某些对象的共同存取来协同完成同一项任务。

      

      互斥:各个进程彼此不知道对方的存在,逻辑上没有关系,由于竞争同一资源而发生相互制约。

      

       通信:各个进程可以通过名字彼此之间直接进行通信,交换信息,合作完成一项工作。

 

同步

 

案例13:在接力跑比赛中,运动员之间的默契配合,前一棒运动员只是把棒接到了后面的运动员后,后面的运动员才能赛跑,前后两帮运动员的同步关系是在哪里实现的?

 

       前后两棒运动员的同步关系是在接棒去实现的。在计算机系统中,属于这种关系的进程有很多。

 

互斥

 

案例14 :假定一条双行道的道路再过隧道时合并为一车道。为了防止同时有反向行驶的车辆同时出现在隧道中,安装了如下的信号系统,一辆车无论从哪个入口进入隧道都会使入口出的红灯点亮;当汽车离开隧道时,系红灯熄灭,当一辆车到达隧道发现红灯亮,它要一直等待到的灭时才能进入隧道。请问这个信号系统存在什么问题?

 

        由于共享一条隧道,车辆之间发生了竞争关系,从表面上看,这个系统信号灯的设计可以解决隧道至允许一辆车辆通行的要求,但这个系统存在很大的问题在于车辆进出隧道与信号灯表示可以是两个被分割的过程,仍然无法避免车辆相撞,例如:当一辆车进入隧道后,由于质量问题,很大没有点亮,此时从相反方向开来的车会以为隧道没有车而进入隧道,此时就有两个不同方向的车辆出现在隧道中。

 

        同样,并发程序对共享资源的竞争也会形成各个进程的互斥关系,如果将进程看成车辆,将一段指令看成隧道,将标志位看成信号灯,如果这个隧道一次只允许一个车辆进入,即这段指令称为临界区,标志位为信号量。当进程进入临界区时,必须确定信号量是清零态,进入临界区就要将信号量设置为职位态,离开临界区时要将信号量再设置为清零态。如果进程必须等待到该信号量为清零态为止。

 

死锁

 

案例15在一条河上有一座桥,桥面较窄,只能容纳一辆汽车通过,无法让两辆汽车并行。如果有两辆汽车分别由桥的两端驶上该桥,会发生什么情况?

  

        对于两辆车而言,由于他们都走过了桥面的一段路,要想过桥还须等待另一辆车让出桥面,因此两辆车都不能前行,如果两辆车都不倒车,互相等待对方让出桥面,结果将无休止的等下去,这种现象就是死锁。

 

        如果把车看成是进程,桥面看成资源,由于该资源 不允许两个进程同时占有,两个进程都不会执行,出现循环带灯的现象,发生了进程死锁。在计算机系统中,涉及软件、硬件资源都会发生死锁,如当一个进程已经拥有打印机的使用权时,还想访问CD播放机,而另一个占用CD播放机的进程,又想访问打印机,则这两个进程将会因为各自均不放弃自己占有设备的使用权,而又得不到对方设备的使用权,而又得不到对方设备的使用权,从而陷入死锁。又如当系统中已经没有额外内存空间的进程不释放空间而使得该进程陷入死锁。

 

案例16为了解决单行桥上两车相遇死锁的问题,通常会采用什么方法?

 

       第一种方法:在桥上再加一个车道;第二种方法:有车辆在桥上时,不允许其他车辆过桥;第三种方法:有有车如果两车相遇时,让其中一车倒退。

 

        如果将单行桥看成独占资源,车辆看成独占资源的进程,则第一种方法解除了思索的第一个条件,对于操作系统而言,就是讲独占资源转变成共享资源,第二种方法解除了死锁的第二个条件,: 就是要求进程必须一次性请求它所需要的全部资源。这两种方法都称为死锁避免。第三种方法解除了死锁的第三个条件,在死锁出现时,通过强制收回已经分出去的部分资源,如清除某些进程,迫使它们释放部分资源,则其他进程就可以继续执行了,这种方法叫做死锁检测。

 


                                                                                                                              上一页               下一页