基本概念
1:程序的順序執行
順序性,封閉性,可再現性
2:前趨圖
3:程序的併發執行
間斷性,失去封閉性,不可再現性
4:進程的特徵和定義
結構特徵。程序段,數據段,PCB
動態性。由創建而產生,由調度而執行,由撤銷而消亡。
併發性:併發是引入進程的目的。
獨立性。獨立運行,獨立分配資源和獨立接受調度
異步性。
5:進程的狀態
就緒,執行,阻塞,掛起
6:進程控制塊
記錄了os所需要的,用於描述進程的當前狀態以及控制進程的全部信息。作用是將程序變成可併發執行的進程。PCB是進程存在的唯一標誌。
包含:進程標誌符,處理機狀態,進程調度和控制信息
進程控制
進程控制是os的內核通過原語來實現的。
系統狀態:操作系統內核運行於系統狀態下。
用戶狀態:用戶程序運行在用戶狀態。
1:進程創建
創建原語。父進程子進程。主要是創建PCB。
先從PCB集合中申請一個空閒的PCB,爲新進程分配內存等資源,根據父進程提供的參數和分配到的資源情況來初始化PCB,最後將新進程插入到就緒隊列。
2:進程終止
實質是回收PCB。
找到要終止的進程PCB,若該進程正在執行,終止其執行,置重新調度標誌;終止所有子進程,釋放終止進程擁有的資源;將終止進程移出它所在的隊列並回收PCB。
3:進程的阻塞和喚醒
見書
4:進程的掛起與激活
見書
進程同步
1:基本概念
兩種形式的制約:直接相互制約,間接相互制約
臨界資源和互斥:互斥是一種特殊的同步
同步機制應遵循的準則:空閒讓進,忙則等待,有限等待,讓權等待
2:信號量機制:整型,記錄型
3:信號量的應用
前趨關係
互斥
4:經典進程同步問題
生產者-消費者:mutex,empty,full
哲學家進餐
讀者寫者:rmutex,wmurex,readcount
管程機制
1:定義
管程是由一組局部變量和對局部變量進行操作的一組過程以及對拒不變量初始化的語句序列構成的軟件模塊。
特點:
局部變量之恩能夠被局部於管程內的過程所訪問。反之亦然。
任何進程只能夠通過調用管程提供的過程入口進入管程
任何一個時刻,最多隻有一個進程在管程中執行
保證進程互斥進入管程是由編譯器負責的。
2:條件變量
wait操作
signal操作
進程通信
1:類型
共享存儲器:對共享數據結構的設置和對進程間的同步都由程序員完成,少量數據交換,低級通信方式
消息傳遞:直接通信和間接通信,實時。間接通信使用信箱來完成,實時或非實時。
管道通信:必須對發送進程和接收進程在利用管道進行通信時實施同步和互斥,並且只有在確定了對方存在時方可通信。
2:消息緩衝隊列通信機制
直接通信方式
PCB中添加mq(隊列頭指針),mutex(隊列互斥信號量),sm(隊列資源信號量)
線程
1:概念
目的:減少程序在併發執行時付出的時空開銷,使os具有更好的併發性。
進程是擁有資源的基本單位,而不再是一個可執行的實體;每個線程是可執行的實體,CPU調度和分派的基本單位是線程。
線程:線程標識付和一組狀態參數(寄存器,堆棧,運行狀態等現場信息)
特點:輕型實體,獨立調度和分派的基本單位;可併發執行;共享進程資源
2:線程的控制
線程由線程創建,但之間不存在父子關係的支持
執行,就緒,阻塞狀態
3:線程同步
互斥鎖
條件變量
信號量機制:私有信號量和工友信號量
4:內核支持線程和用戶級線程
用戶級:存在用戶空間,與內核無關。內核只管理常規進程-單線程進程。
優點是不需要得到內核支持,切換無需陷入內核,故切換開銷小,速度快;線程庫對用戶線程的調度算法和os調度算法無關。
缺點:一個線程的阻塞將導致整個進程的所有線程阻塞,無法享受到多處理機系統中多個處理器的好處。
內核級:在覈心空間實現。
克服了用戶及線程的缺點。首先黑河可以把同一個進程中的多個線程調度到多個處理器中;其次如果進程中一個線程阻塞,內核可以調度同一個進程中的另一個線程。三:內核本身可以用多線程的方式實現。
缺點:及時在一個進程的多個線程間切換,也需要陷入內核,速度效率不好。
用戶級和內核級的結合
LWP