欢迎来到天天文库
浏览记录
ID:50282065
大小:7.93 MB
页数:52页
时间:2020-03-05
《孙钟秀-操作系统教程-第三章 .pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《孙钟秀.操作系统教程》注释(稿)(第三章同步,通信与死锁)校注:陈怀临2014年10月8日[注释]:同步是为了协同工作。通信分为:共享内存(memory)方式和基于消息(message)方式。通信可以来实现同步。例如,send/recv。死锁和饿死都是调度要避免的。[注释]:学习同步和并发控制时,要注意几个要点:1.同步原语都是等价的。2.为什么需要原子性?因为,一个简单的value++在指令级别时需要3条指令才能完成:从内存中Load;寄存器操作-加一。Save到内存中。在3个指令之间,中断可以任意发生。形成并发。[注释]:同步机制可以通过Sem(信号量)。但语义较低。需要在共
2、享内存模式下(例如,多线程),写比较难的控制代码。容易出错。管程(Monitor)是一等价的同步机制。把共享数据和访问的代码封装为对象。提供一个一致的同步API接口。语义友善。Java等编程语言对Monitor机制的支持已经很完善并被广泛使用,例如”Synchronized”的关键字的使用。[注释]:Monitor是一个很有用的机制,特别是在面向对象的程序语言中,都提供了相应的机制。其特点是:通过sem,mutex的封装,使得程序员不需要过多的关心低级同步原语(rawprimitives)的使用,从而可以在比较高的语义上把握同步,并专注其应用问题本身。[注释]:SystemVIPC
3、通信机制是实现多进程之间通信和同步的重要手段。例如,messagequeue,sharedmemory,pipe等。其重要前提是:不同地址空间上的多进程之间的通信和数据交换。SystemV的IPC用的比较少了。重要原因是:多线程的同一进程编程模型的流行。[注释]:DeadLock,LiveLock,Starvation都是在并发编程中需要注意的事情。DeadLock需要避免进程之间互相要锁然后都进入了等待睡眠的状态;LiveLock要避免虽然各个进程不都在睡眠状态,但都在原地抖动,停止不前;例如,吃饭时互相谦让谁先动筷子,结果谁也没有吃,在无解的谦让;Starvation饿死的场景
4、很直接,避免资源的不公平利用,例如,不能某些任务总是获得资源,有些任务即使长期在等待下,却没有被分配到资源。[注释]:1.Sem和Spinlock的用法区别在于:如果等待资源时间短和可预期,可以用自旋锁;否则用Sem,通过睡眠/唤醒来处理。Sem由于涉及队列操作,系统存在不确定的延时效率问题。2.在多核多CPU情况下,关中断只能排除当前CPU的并发,只有通过另外一个全局自旋锁的介入,才能封住其他CPU的竞争。
此文档下载收益归作者所有