現代操作系統(tǒng)的功能
提供抽象
提供標準接口
調度資源使用
消費資源
死鎖的必要條件
互斥:同一時間只有一個線程可以占有鎖
占有并等待:至少一個線程占有著鎖并等待其他線程解鎖
非搶占:只有占有鎖的線程可以解鎖
循環(huán)等待:t1在等t2霹陡,t2在等t3高诺,…葛峻,tn在等t1
進程的三種狀態(tài)
運行(running):進程正在CPU運行
就緒(ready):準備好運行但還未在CPU運行
等待(waiting):等待一些事件比如I/O發(fā)生
當進程執(zhí)行I/O操作時胧卤,進入等待狀態(tài)
Much of operating system history driven by relative cost factors of hardware and people. Hardware started out fantastically expensive relative to people and the relative cost has been decreasing ever since. Relative costs drive the goals of the
operating system.
■ In the beginning: Expensive Hardware, Cheap
People Goal: maximize hardware utilization.
■ Now: Cheap Hardware, Expensive People Goal:
make it easy for people to use computer.
驅動操作系統(tǒng)發(fā)展的因素
操作系統(tǒng)的發(fā)展取決于人和硬件的相對價值或粮。起初硬件成本顯著高于人导匣,后來硬件成本不斷下降干旧。這種相對價值決定了操作系統(tǒng)的目標斥杜。
起初:硬件成本高人力成本低速妖,操作系統(tǒng)目標:最大化硬件的使用
現在:硬件成本低人力成本高高蜂,操作系統(tǒng)目標:讓人更加方便地使用計算機
現代操作系統(tǒng)在進程管理提供的三種抽象
進程,虛擬內存罕容,文件系統(tǒng)备恤,同步和通信機制
多道程序設計(multiprogramming)
同一時間有多個進程稿饰。
操作系統(tǒng)通過上下文切換實現進程的抽象
上下文切換
終止一個進程,開始(或重啟)另一個進程
上下文切換的實現
上下文切換時保存和恢復硬件狀態(tài)露泊。狀態(tài)保存在進程控制塊(PCB)中喉镰。
原子操作
Typically build complex atomic operations up out of sequences of primitive operations. In our case the primitive operations are the individual machine instructions.
原子操作是執(zhí)行時不受其他任何操作干擾的操作〔研Γ總而言之侣姆,他作為一個整體執(zhí)行
原子操作執(zhí)行時不會被線程調度機制打斷。
如果一些原子操作按相同的序列執(zhí)行沉噩,最終結果保證是相同的
什么是信號量(semaphore)
信號量是同步的第一步抽象捺宗,概念上,指一個支持P和V兩個原子操作的計數器
P原子地等待直到計數器大于0屁擅,然后減小計數器并返回
V原子地增加計數器
對應到線程偿凭,一個線程釋放(release)時,將信號量加一派歌。
當信號量<=0時弯囊,線程等待。
當信號量>0時胶果,線程通過匾嘱,將信號量減一。
臨界區(qū)(critical section)
每個線程中訪問臨界資源的那段代碼早抠,不論是硬件臨界資源霎烙,還是軟件臨界資源,多個線程必須互斥地對它進行訪問蕊连。
進程:進程
線程:線程是相應線程狀態(tài)下的執(zhí)行流悬垃。
進程和線程的區(qū)別
線程是相應線程狀態(tài)下的執(zhí)行流。線程和進程間的關鍵區(qū)別在于多線程可以共享他們的部分狀態(tài)甘苍。通常尝蠕,允許多線程在相同的內存上讀取、寫入(一個進程不可訪問另一個進程的內存)载庭。每一個線程也有它自己的寄存器看彼、棧,但是其他線程也可在該線程棧所在的內存上讀取和寫入囚聚。
多線程程序出錯
當并發(fā)執(zhí)行時靖榕,結果取決于指令是如何交織的,這導致結果是不確定的
所以有可能產生錯誤顽铸,且再現bug是很困難的
為確保正確茁计,必須使一些指令原子化,即當執(zhí)行這些指令時阻止指令的交織
CPU調度
搶占調度
在搶占模式下谓松,操作系統(tǒng)負責分配CPU時間給各個進程簸淀,一旦當前的進程使用完分配給自己的CPU時間瓶蝴,操作系統(tǒng)將決定下一個占用CPU時間的是哪一個線程。因此操作系統(tǒng)將定期的中斷當前正在執(zhí)行的線程租幕,將CPU分配給在等待隊列的下一個線程。
非搶占調度
在非搶占的調度模式下,每個線程可以需要CPU多少時間就占用CPU多少時間拧簸。
短作業(yè)優(yōu)先調度
進程 | 到達時間 | CPU突發(fā)時間 |
---|---|---|
P1 | 0 | 8 |
P2 | 1 | 6 |
P3 | 2 | 4 |
P4 | 3 | 6 |
搶占調度
執(zhí)行順序
P1,P2,P3(4),P2(5),P4(6),P1(7),
P1等了16劲绪,P2等了4,P3等了0盆赤,P4等了8
平均等待時間(Average Waiting Time, AWT)為28/4
非搶占調度
執(zhí)行順序
P1(8),P3(4),P2(6),P4(6)
P1等了0贾富,P2等了11,P3等了6牺六,P4等了15
平均等待時間(Average Waiting Time, AWT)為8