資源描述:
《孫鐘秀-操作系統(tǒng)教程-第三章 .pdf》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、《孫鐘秀.操作系統(tǒng)教程》注釋(稿)(第三章同步,通信與死鎖)校注:陳懷臨2014年10月8日[注釋]:同步是為了協(xié)同工作。通信分為:共享內(nèi)存(memory)方式和基于消息(message)方式。通信可以來(lái)實(shí)現(xiàn)同步。例如,send/recv。死鎖和餓死都是調(diào)度要避免的。[注釋]:學(xué)習(xí)同步和并發(fā)控制時(shí),要注意幾個(gè)要點(diǎn):1.同步原語(yǔ)都是等價(jià)的。2.為什么需要原子性?因?yàn)?,一個(gè)簡(jiǎn)單的value++在指令級(jí)別時(shí)需要3條指令才能完成:從內(nèi)存中Load;寄存器操作-加一。Save到內(nèi)存中。在3個(gè)指令之間,中斷可以任意發(fā)生。形成并發(fā)。[注釋]:同步機(jī)制可以通過(guò)Sem(信號(hào)量)。但語(yǔ)義較低。需要在共
2、享內(nèi)存模式下(例如,多線(xiàn)程),寫(xiě)比較難的控制代碼。容易出錯(cuò)。管程(Monitor)是一等價(jià)的同步機(jī)制。把共享數(shù)據(jù)和訪(fǎng)問(wèn)的代碼封裝為對(duì)象。提供一個(gè)一致的同步API接口。語(yǔ)義友善。Java等編程語(yǔ)言對(duì)Monitor機(jī)制的支持已經(jīng)很完善并被廣泛使用,例如”Synchronized”的關(guān)鍵字的使用。[注釋]:Monitor是一個(gè)很有用的機(jī)制,特別是在面向?qū)ο蟮某绦蛘Z(yǔ)言中,都提供了相應(yīng)的機(jī)制。其特點(diǎn)是:通過(guò)sem,mutex的封裝,使得程序員不需要過(guò)多的關(guān)心低級(jí)同步原語(yǔ)(rawprimitives)的使用,從而可以在比較高的語(yǔ)義上把握同步,并專(zhuān)注其應(yīng)用問(wèn)題本身。[注釋]:SystemVIPC
3、通信機(jī)制是實(shí)現(xiàn)多進(jìn)程之間通信和同步的重要手段。例如,messagequeue,sharedmemory,pipe等。其重要前提是:不同地址空間上的多進(jìn)程之間的通信和數(shù)據(jù)交換。SystemV的IPC用的比較少了。重要原因是:多線(xiàn)程的同一進(jìn)程編程模型的流行。[注釋]:DeadLock,LiveLock,Starvation都是在并發(fā)編程中需要注意的事情。DeadLock需要避免進(jìn)程之間互相要鎖然后都進(jìn)入了等待睡眠的狀態(tài);LiveLock要避免雖然各個(gè)進(jìn)程不都在睡眠狀態(tài),但都在原地抖動(dòng),停止不前;例如,吃飯時(shí)互相謙讓誰(shuí)先動(dòng)筷子,結(jié)果誰(shuí)也沒(méi)有吃,在無(wú)解的謙讓?zhuān)籗tarvation餓死的場(chǎng)景
4、很直接,避免資源的不公平利用,例如,不能某些任務(wù)總是獲得資源,有些任務(wù)即使長(zhǎng)期在等待下,卻沒(méi)有被分配到資源。[注釋]:1.Sem和Spinlock的用法區(qū)別在于:如果等待資源時(shí)間短和可預(yù)期,可以用自旋鎖;否則用Sem,通過(guò)睡眠/喚醒來(lái)處理。Sem由于涉及隊(duì)列操作,系統(tǒng)存在不確定的延時(shí)效率問(wèn)題。2.在多核多CPU情況下,關(guān)中斷只能排除當(dāng)前CPU的并發(fā),只有通過(guò)另外一個(gè)全局自旋鎖的介入,才能封住其他CPU的競(jìng)爭(zhēng)。