理解作業系統之程序和執行緒

2021-09-24 06:37:35 字數 1662 閱讀 8540

在作業系統中,設定了程序和執行緒的概念去描述程式併發執行邏輯。本文屬於研究程序和執行緒的入門級文章。主要從以下五個方面介紹程序以及執行緒的相關概念。

一丶程序和執行緒的定義

二丶作業系統中對程序和執行緒的描述

1. 程序和執行緒實體描述程序和執行緒均是os中的執行實體,都是排程和分派的基本單位。

2. 程序和執行緒的狀態描述

三丶程序的多層排程

從硬碟上的可執行檔案搖身轉為記憶體中的執行程序涉及到如下兩層排程(1)作業排程:作業排程是將硬碟上執行檔案排程到記憶體中成為程序的過程,經歷過該排程的程序處於就緒狀態等待分配cpu資源。當有多個作業請求排程時,有許多經典演算法可以採用

(2)程序排程:程序排程是指在就緒佇列中排隊的就緒程序獲取cpu時間片資源的過程。程序排程演算法是需要介紹的重點,從較大的方向上分,其主要包括兩類:

基於優先權排程的演算法,該排程演算法主要區分以下四種概念

基於時間片輪轉排程演算法基於時間片的排程演算法將就緒程序排列成乙個佇列,為佇列中每個就緒程序分配指定的時間片資源。若在規定的時間片內程序未執行完畢,那麼該程序將再次加入佇列的尾部等待下一次時間片資源分配。上述只是基於時間片的排程演算法的一般思想,在實際工業場景下過於粗糙。下面介紹一種較為常用的多級反饋佇列排程演算法具有更大的實用價值

從圖中可知,該演算法擁有n個用於排程的就緒佇列。當程序剛進入就緒狀態時時,首先進入1級就緒佇列等待cpu分配時間片資源。若未在當前時間片資源內執行完畢,那麼進入2級就緒佇列。後續排程過程以此類推。

只有1級就緒佇列中沒有任何程序時,2級就緒佇列中的程序才能排程之cpu。

從高階就緒佇列中排程到cpu時,會獲取更多的時間片資源。tn>t3>t2>t1.

多級反饋排程演算法,其優越性一般體現在如下三點:

適用於較短的互動型任務。互動型任務一般只需要較短的執行時間能在1級佇列中完成,需要極低的響應延遲

在多級排程的過程中,短作業最多在1-2個時間片輪轉中可以排程完成。周轉時間任然較短

長作業,可以輪轉到高階就緒佇列中,這樣或許更多cpu執行時間。不至於因為短作業過程,長作業分配不到cpu資源而導致飢餓。

四丶程序/執行緒之間同步機制

程序與程序之間的同步,執行緒和執行緒之間的同步基本一致。本文以執行緒和執行緒之間的同步為例子介紹同步概念。

五丶如何避免程序/執行緒之間的死鎖

本節從執行緒的角度來介紹死鎖。執行緒死鎖是執行緒同步不當導致的問題。本節將從執行緒死鎖原因,執行緒死鎖的必要條件,以及規避執行緒死鎖的三個方面來分析。1. 執行緒死鎖產生的原因以哲學家就餐問題,來研究執行緒死鎖原因

2. 執行緒死鎖產生的必要條件死鎖發生具有四個必備條件,當能夠同時滿足這四個條件時,便有可能發生死鎖。

3. 避免死鎖的方法

六丶程序/執行緒之間通訊機制

程序/執行緒之間的同步其實是一種通訊機制,但是同步機制只是一種小規模的資料通訊。此處介紹的通訊機制是應對較大規模的資料傳輸。此處以程序之間的通訊機制為例介紹

作業系統之執行緒和程序

以下內容 於 上面的面試題可以看出,其實都是一回事,只是換了一種提問方式,只要我們能掌握核心要點,隨便面試官怎麼提問,我們都能輕鬆應對!所以我們可以說 程序 是包含 執行緒 的,執行緒 是 程序 的乙個子集。程序 process 是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排...

作業系統 程序和執行緒

從處理機只能執行單一程式,到處理機可以通過不停的切換所執行的程式,達到看似同時處理多個程序的過程,經歷了很長一段時間。從單道程式設計到多道程式設計,主要解決了在執行過程中需要頻繁等待資源或者i o操作的問題,因為這類操作通常都是很耗時間的 相對於cpu的快速執行來說 進而提高了整個cpu執行的效率和...

初探 作業系統之程序執行緒

2016.11.1補充 1.18 fork後,子程序繼承父程序的什麼,父 子程序區別?執行緒 引入的狀態 狀態間的轉換 核心模式到使用者模式 將當前工作目錄更改為根目錄 因為從父程序繼承過來的目錄可能在乙個掛載的檔案系統中,如果不更改為根目錄,則所掛載的檔案系統不能解除安裝 關閉不需要的檔案描述符 ...