《操作系统》第5章:互斥和同步

预习笔记:

操作系统设计的核心问题是:进程和线程的管理

多道程序设计技术:管理单处理器系统中的多个进程

多处理器技术:管理多处理系统中多个进程

分布式处理器技术:管理多台分布式计算机系统中多个进程的执行



多应用程序:多道程序设计技术允许在多个活动的应用程序间动态共享处理器时间

结构化应用程序:作为模块化设计和结构化程序设计的扩展,一些应用程序可以被有效地设计成一组并发进程

操作系统结构:同样的结构化程序设计有点可用于系统程序员,操作系统通常作为一组进程或线程实现。


并发:在同一时间间隔内发生的进程或线程,在此期间内,它们可能交替地共享相同的资源。

异步性:相对执行速度不可预测是多道程序系统的基本特征。

影响进程执行速度的因素:a,其他进程的活动

                                       b,OS处理中断的方式

                                       c,OS的调度策略



多道程序设计存在的问题(P141):1,全局资源共享充满了危险

                                       2,操作系统很难对资源进行最优分配

                                       3,定位程序设计错误是非常困难的


操作系统关注的问题(P143):1,操作系统必须能够跟踪各种进程,知道它们的状态。

                                             2,必须为每个活跃进程分配和释放资源。资源包括:进程调度,内存管理,文件系统,I/O管理。

                                             3,必须保护每个进程的数据和物理资源,避免其他进程的无意干扰

                                             4,一个进程的功能和输出结果必须与执行速度无关(相对于其他并发进程的执行速度)


复习题

5.1 列出与并发相关的四种设计问题(P143)

    1,进程间的交互     2,共享资源之间的竞争   3,多个进程的同步问题      4,对进程的处理器时间分配问题


5,2产生并发的三种上下文环境是什么(P140)

   1,多应用程序

   2,结构化应用程序

   3,操作系统结构


5,3执行进程最基本的要求是什么(P140)

    加强互斥能力


5,4列出进程间三种互相知道的程度,并简单地给出各自的定义(P144)

    1,进程之间不知道对方的存在,此时为竞争关系,一个进程的结果与另一进程的活动无关,潜在的控制问题:互斥,死锁(可复用的资源),饥饿。

    2,进程间接知道对方的存在(如共享对象),此时通过共享合作,一个进程的结果可能依赖于另一个进程获得的信息,潜在的控制问题:互斥,死锁(可复用资源),饥饿,数据相关性。

   3,进程直觉知道对方的存在(它们有可用的通信原语),此时通过通信合作,一个进程的结果可能依赖于从另一个进程获得信息,潜在的控制问题:死锁(可消耗的资源),饥饿


5,5竞争进程和合作进程间有什么区别?(P173)

     竞争进程需要同时访问相同的资源,像磁盘,文件,或打印机。

     合作进程要么共享访问一个共有的资源,像一个内存访问区,要么就与其他进程相互通信,在一些应用程序或活动上进行合作


5,6列出与竞争进程相关的三种控制问题,并简单的地给出各自的定义(P144)

     互斥:竞争进程仅可以访问一个临界资源(一次仅有一个进程可以访问临界资源),并发机制必须满足一次只有一个进程可以访问临界资源。

     死锁: 每个进程都在等待另一个资源,且在获得其他资源并完成功能前,谁都不会释放自己已经拥有的资源,这两个进程就会发生死锁

     饥饿:一组进程可能会无期限地拒绝进入到一个需要资源,因为其他成员组成垄断这个资源。


5,7互斥的要求是什么?(P146)

     1,必须强制实施互斥:在与相同资源或共享对象的临界区有关的所有进程中,一次只允许一个进程进入临界区。

      2,一个在非临界区停止的进程不能干涉其他进程。

     3,决不允许出现需要访问临界区的进程被无限延迟的情况,即不会死锁或饥饿。

     4,当没有进程在临界区中时,任何需要进入临界区的进程必须能够立即进入

      5,对相关进程的执行速度和处理器的数目没有任何要求和限制。

      6,一个进程驻留在临界区中的时间必须是有限的。



5.8在信号量上可以执行什么操作?(P150)

     1,一个信号量可以初始化成非负数。

      2,semWait (P)操作使信号量减1.若值为负数,则执行semWait的进程被阻塞,否则进程继续执行。

       3,semSingal(V)操作使信号量加1,若值小于或等于零,则被semWait操作阻塞的进程被解除阻塞。



5.9二元信号量和一般信号量有什么区别?(P150)

     1,一个二元信号量可以初始化成0或1

      2,semWaitB操作检查信号的值,如果值为0,那么进程执行semWaitB就会受阻,如果值为1,那么讲值改变为0,并且继续执行该进程。

       3,semSingalB操作检查是否有任何进程在该信号上受阻,如果有,那么通过semWaitB操作,受阻的进程就会被唤醒,如果没有进程受阻,那么值被设置为1.



5.10强信号量和弱信号量有什么区别?(P151)

       强信号量:被阻塞时间最久的进程最先从队列释放(先进先出,FIFO)

       弱信号量:没有规定进程从队列中移出顺序的信号量。





5,11什么是管程?(P159)

       管程是由一个或多个过程、一个初始化序列和局部数据组成的软件模块。有以下特点:

         1,局部数据变量只能被管程的过程访问,任何外部过程都不能访问

          2,一个进程通过调用管程的一个过程进入管程。

          3,在任何时候,只能有一个进程在管程中执行,调用管程的任何其他进程都被阻塞,以等待管程可用。





5.12对于消息,阻塞和无阻塞有什么区别?

      发送者和接受者任一方阻塞则消息传递需要等待,都无阻塞则不需要等待。





5.13通常与读者/写者问题相关联的条件有哪些?(P168)

      1,任意多的读进程可以同时读这个文件

       2,一次只有一个写进程可以写文件

        3,如果一个写进程正在写文件,那么禁止任何读进程读文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值