壮志凌云,脚踏实地。
改变,坚持。

Chapter5 并发性:互斥和同步

一、   列出与并发相关的四种设计问题

1、  进程间通信(通信合作解决

2、  资源共享与竞争(如内存、文件、I/O访问)(共享合作解决

3、  多个进程间的同步(信号量、管程解决

4、  分配给进程的处理器时间(时间片轮转技术解决

二、   产生并发的三种上下文环境是什么?

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

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

3、  操作系统结构。同样的结构化程序设计优点可以用于系统程序员,我们已经知道操作系统自身常常作为一组进程或线程实现。

三、  执行并发进程的最基本要求是什么?

并发进程的最基本要求是增加进程间的互斥能力。

四、  列出进程间的三种互相知道的程度,并简单给出各自的定义。

1、  竞争情况。进程之间相互完全不知道对方的存在。

2、  共享合作行为。进程间接知道对方的存在,它们不需要知道对方的进程ID,但可以共享I/O等对象,在共享同一个对象时表现出合作行为。

3、  通信合作行为。进程直接知道对方的存在,它们直接可以通过进程ID进行通信。

五、 竞争进程和合作进程间有什么区别?

区别:竞争进程完全不知道对方的存在,他们不能一起工作。而合作进程间直接或间接的知道对方的存在,他们可以通过共享合作或通信合作一起工作。

六、 列出与竞争相关的三种控制问题,并简单的给出各自的定义。

互斥:当一个进程在临界区访问共享资源时,其他进程不能进入该临界区访问任何共享资源。

死锁(活锁应该是合作问题):两个或两个以上的进程因其中的每个进程都在等待其他进程做完某些事情而不能继续执行(两人过独木桥问题:同时过,死锁;互相等对方过,活锁)。

饥饿:是指一个可以运行的进程尽管能继续执行,但被调度器无限期忽视,而不能被调度执行的情况。

七、  列出对互斥的要求。

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

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

3、  不能出现死锁或饥饿的状态。不允许出现需要访问临界区的资源被无限期延迟的情况。

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

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

6、  一个进程驻留在临界区中的时间必须是有限的(防止饥饿和死锁)。

八、 在信号量上可用执行什么操作?

信号量:用于进程间传递信号的一个整数值。只能进行三种原子操作,初始化、递减和增加。递减可以用于阻塞一个进程,增加操作可以用于解除阻塞一个进程。

九、  二元信号量和一般信号量有什么区别?

二元信号量只能有两个值,01。(非二元信号量也叫计数信号量或一般信号量)

十、  强信号量和弱信号量有什么区别?

针对信号量,都需要使用队列来保存在信号量上等待的进程,由此产生了一个新问题:进程按照什么顺序从队列中移出?

若按照先进先出顺序策略,被阻塞时间最久的进程最先从队列释放,采用这种策略定义的信号量叫强信号量。

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

十一、  什么是管程?

一种编程语言结构,在一个抽象数据类型中封装了变量、访问过程和初始化代码。

管程的变量只能由管程自己的访问过程来访问,每次只能有一个进程在其中执行。

访问过程即临界区。管程可以有一个等待进程队列。

十二、    对于消息,阻塞和无阻塞有什么区别?

??进程交互时,必须满足两个基本要求:同步和通信。为实施互斥,进程间需要同步;为了合作,进程间需要交换信息,提供这些功能的一种方法是消息传递。

十三、  通常与读者—写者问题相关联的有哪些条件?

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

2、  一次只有一个写进程正在写文件。

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

posted on 2011-09-12 10:02  woxf  阅读(4026)  评论(0编辑  收藏  举报