程序模型
計算機上所有可執行的軟體,通常也包括作業系統,被組織成若干順序程序,簡稱 程序。乙個程序就是乙個正在執行程式的例項。包括程式計數器、計數器和當前變數的值。
cpu在程序之間快速來回切換被稱作是多道程式設計。
程序的建立
四種事件會導致程序的建立
1.系統初始化
2.正在執行的程式執行了建立程序的系統呼叫。
3.使用者建立乙個新程序。
4.乙個批處理作業的初始化。
守護程序:停留在後台處理諸如電子郵件、web頁面、新聞、列印之類活動的程序成為守護程序。
在unix和windows中,程序建立之後,父程序和子程序有各自不同的位址空間
程序的終止
1.正常退出(自願的)
2.出錯退出(自願的)
3.嚴重錯誤(非自願)
4.被其它程序殺死(非自願)
程序的結構層次
unix:樹
windows: 沒有程序層次概念,所有的程序層次相同,唯一類似的是,建立子程序的時候,父程序得到乙個特別的令牌(控制代碼),可以用來控制子程序,但它有權把控制代碼傳給其它程序,這樣就不存在程序層次,unix中則不能剝
奪子程序的繼承權。
程序的狀態
程序的實現:
作業系統維護這一張**(乙個結構陣列),即程序表。乙個程序占用乙個程序表項(程序控制塊),該表項中包含了程序狀態的重要資訊,程式計數器,堆疊指標,記憶體分配狀態,所開啟檔案的狀態,賬號和排程資訊等等。
執行緒
為什麼需要多執行緒
執行緒其實就是迷你程序,需要多執行緒的理由是一些程序中進行著許多活動,分解成執行緒的話會簡單很多,
還有個原因是,執行緒比程序更輕量級,建立和撤銷都比程序容易,建立乙個執行緒較建立乙個程序要快10到100倍,在有大量程序需要動態和快速修改時,這一特性很有用。
3.效能。存在大量計算和大量io處理會加快。
4.多cpu系統中,真正的並行有了實現的可能。
由於執行緒擁有程序的某些性質,有時也被稱為輕量級程序。
ieee標準3.1c中定義了執行緒的標準,定義了執行緒包pthread
在使用者空間實現執行緒
在使用者空間管理執行緒,每個程序需要有其專用的執行緒表,用來跟蹤該程序中的執行緒。
在核心空間實現執行緒
此時不需要執行時系統,每個程序中也沒有執行緒表。
彈出式執行緒
乙個訊息的到來導致系統建立乙個處理該訊息的執行緒,這種執行緒稱為彈出式執行緒。
程序間通訊
臨界區把共享記憶體進行訪問的程式片段稱作臨界區域或臨界區。
忙等待的互斥實現:1.遮蔽中斷 2.鎖變數 3.嚴格輪換法4.pesterson解法 5.tsl指令
睡眠與喚醒
生產者-消費者問題(有界緩衝區問題)
訊號量
使用乙個整型變數來累計喚醒次數,供以後使用,通過兩種操作,down和up,訊號量減為0則睡眠。
互斥量
不需要訊號量的計數能力,就可以用它的簡化版本,稱為互斥量,僅適用於管理共享資源或一小段**,在實現洪湖空間執行緒包的時候非常有用。
它處於兩態之一:解鎖和加鎖。只需乙個二進位制位來表示。
快速使用者區互斥量futex:包含兩個部分,核心服務和乙個使用者庫。
pthread中的互斥量:使用乙個可以被鎖定和解鎖的互斥量來保護每個臨界區。
管程
一種高階同步原語。
特性:任一時刻管程中只能有乙個活躍程序。
條件變數:wait signal
訊息傳遞
使用兩條原語:send 和 receive ,像訊號量,是系統呼叫而不是語言。庫例程:
send(destination,&message);
receive(source,&message);
(感覺像tcp中的ack)
屏障
當乙個京城到達屏障時,被屏障所攔截,知道所有程序都到達該屏障為止,屏障可用於一組程序同步。
排程
何時排程?
1.建立新程序時,父子程序選擇執行誰
2.程序退出
3.程序阻塞
4.i/o中斷
排程演算法分類:
1.批處理
2.互動式
3.實時。
批處理系統中的排程:
1、先來先服務 2、最短作業優先 3、最短時間優先
互動式系統中的排程;
1、輪轉排程(時間片、程序切換、上下文切換等)2、優先順序排程3、多級佇列 4、最短程序優先(最短響應時間)5、保證排程(向使用者做出效能保證,然後實現這個保證)
6、彩票排程(在保證排程的基礎上,隨機抽出乙個來執行,就買彩票一樣)7、公平分享排程
實時系統中的排程
實時系統:硬實時:絕對的截止時間
軟實時:可容忍的截止時間
策略和機制:將排程機制與排程策略分離。
經典ipc問題:哲學家就餐同步問題。
程序與執行緒
程序 process 管理單元,管理分配應用程式的資料,的記憶體空間.執行緒 thread 執行單元,執行緒負責執行乙個預先編排好的 段,執行 棧是基於執行緒的.乙個應用程式啟動的時候,程序自動建立,並且會預設建立主線程,主線程負責執行main 方法.thread t new thread new ...
程序與執行緒
程序 是擁有資源的實體,包括 1。乙個程序有乙個虛擬位址空間,不同程序位於不同的 虛擬位址空間中。程序之間若要通訊,必須通過作業系統 的功能呼叫 ipc 2。程序擁有其他資源,例如開啟的檔案和i o裝置。程序結束時,作業系統會自動釋放該程序擁有的所有資源。例如,如果 open乙個檔案而不close它...
程序與執行緒
程序包括 1 私有的虛位址空間 2 可執行程式 與資料 3 開啟系統資源列表控制代碼 4 安全訪問標誌 5 程序id 6 至少有乙個執行執行緒 執行緒包括 1 一組cpu暫存器狀態 2 兩個堆疊 系統態與使用者態 3 tls 執行緒區域性儲存區 4 執行緒id 5 安全特性 因此程序是不活潑的,它從...