第二章 程序的描述與控制

2022-03-30 18:01:03 字數 3017 閱讀 3745

概念:

所謂前趨圖:指乙個有向無迴圈圖(dag),它用於描述程序之間執行的先後順序。

特徵:特徵:定義

為了使程式併發執行,並且可以對併發執行的程式加以描述和控制,人們引入了程序的概念。

為了使參與併發執行的每個程式都能獨立執行,在作業系統中必須為之分配乙個專門的資料結構,稱為程序控制塊(pcb)。系統利用pcb來描述程序的基本情況和活動過程,進而控制和管理程序。

因此程序的定義為:由程式段、相關的資料段和pcb三部分構成的程序實體。

比較典型的定義有:

程序的特徵程序三種基本狀態

由於多個程序在併發執行時共享系統資源,致使他們在執行過程中呈現間斷性的執行規律,所以程序在生命週期內可能具有不同狀態。一般而言,每個程序至少應處於以下三種基本狀態:

三種基本狀態的轉換

建立狀態和終止狀態

建立狀態

申請pcb,填寫用於控制和管理程序的資訊--->分配必須資源--->把程序轉入就緒狀態並插入就緒佇列。

引入建立狀態是為了保證程序排程必須在建立工作完成後進行,以確保對程序控制塊操作的完整性。

終止狀態

兩個步驟: 首先,是等待作業系統進行善後處理,最後將其pcb清零,並將pcb空間返還系統。

當掛起操作作用與某個程序時,該程序被掛起,意味著此時該程序處於靜止狀態。如果程序在執行,那麼將暫停執行。

引入掛起的原因

引入掛起原語操作後三個程序的狀態轉換

引入掛起原語suspend和啟用原語active後,程序可能發生以下幾種狀態轉換:

2.2.4 程序管理中的資料結構

程序控制塊的作用

程序控制塊的作用是使乙個在多道程式環境下不能獨立執行的程式成為乙個能獨立執行的基本單位,乙個能與其他程序併發執行的程序。

引起程序終止的事件:

外界干預

程序終止的過程引起程序阻塞和喚醒的事件:

程序阻塞過程

如果程序執行,則立刻停止,把pcb插入阻塞佇列。

程序喚醒過程

當阻塞程序所期待的事件發生,則呼叫喚醒原語wakeup,從阻塞佇列移出,將pcb狀態由阻塞變為就緒,然後把pcb插入就緒佇列中。

程序的掛起

檢查程序狀態,如果活動就緒改為靜止就緒;如果活動阻塞改為靜止阻塞。為了方便使用者或父程序考察該程序的運**況,把程序pcb複製到制定記憶體區域;最後若被掛起的程序正在執行,則扎ungxiangdiaodu程式重新排程。

程序的啟用狀態

利用啟用原語active,把程序從外存調入記憶體,檢查其狀態,若靜止就緒改為活動就緒;若靜止阻塞改為活動阻塞。

程序同步機制的主要任務,是對多個相關程序在執行次序上進行協調,使併發執行的程序之間能夠按照一定的規則共享系統資源,並且很好地相互合作,從而使程式的執行具有可再現性。

兩種形式的制約關係

由於共享資源或者為完成某一任務相互合作,而產生制約關係

臨界資源

只能乙個程序訪問的資源。程序之間採取互斥方式,實現對這種資源的共享。通過生產者---消費者問題(程序同步問題)可說明這一過程。 (具體不再說明該問題) 。

臨界區每個程序中訪問臨界資源的那段**稱為臨界區。可把乙個訪問臨界資源的迴圈程序描述如下:

while(true)

同步機制應遵循的規則再次不再介紹

整型訊號量

記錄型訊號量

and型訊號量

訊號量集程序通訊是指程序之間的資訊交換。

高階通訊機制可歸為以下四大類:

* 管道(pipe)以及有名管道(named pipe)

管道可用於具有親緣關係的程序之間的通訊,有名管道克服了管道沒有名字的限制。因此,除具有管道所有具有的功能外,它還允許無親緣關係的程序通訊

* 訊號(signal)

訊號是比較負載的通訊方式,用於通知接收程序有某種事件發生,除了用於程序通訊外,程序還可以傳送訊號給程序本身。

* 報文(message)佇列(訊息佇列)

訊息佇列是訊息的鏈結表。有足夠許可權的程序可以想佇列新增訊息,被賦予讀許可權的程序可以讀走佇列中的訊息。

* 共享記憶體

是多個程序可以訪問同一塊記憶體,是最快的ipc形式。

* 訊號量(samaphore)

主要作為程序之間以及統一程序不同執行緒之間的同步手段。

* 套介面(socket)

更為一般的程序間通訊機制,可以用於不同機器之間程序間的通訊

##2.6 執行緒(threads)的基本概念

###執行緒的引入

如果說在os中引入程序的目的是為了使多個程式能夠併發執行,以提高資源利用率和系統吞吐量,那麼,在作業系統中再引入執行緒,則是為了減少程式在併發執行時所付出的時空開銷,使os具有更好的併發性。

#####程序的兩個基本屬性

* 程序是乙個可擁有資源的獨立單位,乙個基礎南橫要能獨立執行它必須擁有一定的資源。

* 程序同時又是乙個可獨立排程和分派的基本單位。

程式併發執行所需付出的時空開銷

由於程序是乙個資源擁有者,因而在建立、撤銷和切換中,系統必須為之付出較大的時空開銷。

執行緒是排程和分派的基本單位。

執行緒具有許多傳統程序所具有的特徵,所以又稱為輕型程序或程序元。相應地把傳統程序稱為重型程序。它相當於有乙個執行緒的任務。

總的來說:可以用占有資源的多少,併發性,獨立性和支援多處理機系統方面來概述。

執行緒狀態

執行、就緒、阻塞。和程序一樣

執行緒控制塊(tcb)執行緒的實現方式

其缺點是: 對於使用者執行緒切換而言,其模式切換的開銷較大,在同乙個程序中,從乙個執行緒切換到另乙個執行緒時,需要從使用者態轉到核心態進行,這是因為使用者程序的執行緒在使用者態執行,而執行緒排程和管理在核心實現,系統開銷較大。

使用者級執行緒ult(user level threads)

使用者級執行緒是在使用者空間中實現的。對執行緒的建立、撤銷、同步與通訊等功能,都無需核心支援,即使用者級執行緒與核心無關。排程仍是以程序為單位進行。使用者級執行緒的優點:

執行緒切換不需要轉換到核心空間

排程演算法可以是程序專用的

使用者執行緒的實現與os平台無關。

第二章 程序的描述與控制

經典程序的同步問題 哲學家就餐問題 避免死鎖的解決方法 1 5位哲學家就餐只允許4位同時去拿左邊的筷子,剩乙個堵塞 問題 為什麼不讓3個或者2個同時去拿左邊的筷子?回答 為了充分利用資源,不讓cpu空閒 2 利用and訊號量,如果同時拿到兩邊的筷子就執行,否則就堵塞 3 奇數號哲學家拿左邊的筷子,偶...

作業系統 第二章程序的控制與描述(5)

通訊鏈路 communication link 要在傳送程序和接收程序之間能進行通訊,必須在兩者之間建立一條通訊鏈路。兩種方式 顯式的 建立連線 和拆除鏈路。用命令 原語 請求系統做。這種方式主要用於計算機網路中 系統自動地建立一條鏈路。無須明確提出建立鏈路的請求,只須利用系統提供的傳送命令 原語 ...

第二章 程序通訊

1 低階通訊 程序之間的互斥和同步 訊號量機制是有效的同步工具,但作為通訊工具缺點如下 1 效率低 通訊量少 2 通訊對使用者不透明 程式設計師實現,作業系統只提供共享儲存器供 操作 2 高階程序通訊 使用者直接利用作業系統提供的一組通訊命令,高效地傳送大量資料的通訊方式。作業系統隱藏了程序通訊的細...