作業系統 程序和執行緒

2021-10-22 16:35:05 字數 1747 閱讀 2610

從處理機只能執行單一程式,到處理機可以通過不停的切換所執行的程式,達到看似同時處理多個程序的過程,經歷了很長一段時間。

從單道程式設計到多道程式設計,主要解決了在執行過程中需要頻繁等待資源或者i/o操作的問題,因為這類操作通常都是很耗時間的(相對於cpu的快速執行來說),進而提高了整個cpu執行的效率和系統的吞吐量。

一、程序的定義與控制

為了能夠更好的組織起使用者交給處理機完成的任務,同時還要滿足多道程式設計的需要,就必須對一段程式、任務進行組織和管理。支援多道程式設計的處理機通常將所需要完成的工作組織成為乙個程序,比如給每個程序起乙個名字——「小a,你可以進來完成你的工作了」。

乙個程序,通常是在乙個上下文環境中執行的。例如在執行時,需要讀取某些記憶體、占用cpu中某些暫存器。而當下乙個程序在處理機中執行時,就需要根據它上次執行過程中cpu和記憶體的狀態來繼續它之後的操作。所以處理機將程序抽象為由pcb(程序控制塊)、程式區、資料區和工作區構成的乙個集合體,裡面包含了在程序控制和排程的過程中能夠用的的所有資訊。

程式部分:描述或者記錄了程序所要完成的工作,通常不可修改

資料部分:指在程序執行過程中所需要用到的資料

工作區:指單數傳遞和系統呼叫時的執行環境

——程式和資料是程序的實體,程序控制塊則是程序的靈魂。

在處理機中建立乙個程序的過程:

由於實現了多道程式設計,那麼在實際使用中肯定會涉及到資源共享的操作,例如對一塊記憶體區域進行讀寫,這樣就涉及到併發過程中的通過部與互斥問題。

二、執行緒

程序作為計算機排程的基本單位,在作業系統發展中也慢慢展現出了一些不足。例如,在現代計算機執行的過程中,通常都會涉及到大量的程序的分配和排程,程序的並行效率也開始達不到人們的預期。

因此人們又進行進一步探索,將程序視為資源分配的基本單位,而將執行緒視為乙個單獨的實體,參與程序排程過程。下面是多執行緒模型。

在多執行緒中,程序被定義為保護單位和資源分配單位,在乙個程序中可以有多個執行緒,每個執行緒都具有如下特徵:

所由圖中可以看到,執行緒像是被縮小了的程序,並且被安排在程序中,這麼做有什麼用?而且是如何做到的提高效率呢?

首先,建立執行緒所需要的開銷非常小,只需要在程序空間中進行執行緒塊的劃分,搜尋的空間會少很多;其次,同乙個程序中的執行緒切換(在程序部分涉及到使用者態和核心態的切換),開銷會小很多;最後,由於使用的是相同的程序空間,不用借助核心提供的系統呼叫就能完成執行緒間的通訊。

至於為什麼執行緒的切換會比程序的切換開銷小,涉及到使用者態和和核心態的轉換。大意就是,由於作業系統和使用者提交的任務都需要在同一臺處理機上執行,為了保障作業系統的執行安全,必須隔離出來乙份部分區域不能提供給使用者使用,以免一些直接操作記憶體的**直接影響到作業系統的執行。而且在作業系統執行過程中,有一些工作是對使用者隱藏了的,例如程序管理、裝置管理、檔案管理等等、這些操作同樣需要使用計算機的資源,所以才有了使用者態和核心態之說。這兩個狀態的切換主要也是一些暫存器、堆疊指標等的切換,頻繁的切換會需要很多時間。

現代作業系統 程序和執行緒

概念 對正在執行程式的乙個抽象。偽並行 由於cpu在各個程序中的切換時間很短 幾十毫秒到幾百毫秒 所以在1s內它可以執行多個程序,這樣就產生了並行的錯覺。這就是說乙個cpu在乙個時間點只能執行乙個程序,在下乙個時間點切換到另外乙個程序,造成同時執行的錯覺。程序和程式 程式就是一些 用一些語言來描述演...

作業系統之執行緒和程序

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

作業系統 程序與執行緒

程序 作業系統結構的基礎,是乙個正在執行的程式 計算機中正在執行的程式例項 可以分配給處理器並由處理器執行的乙個實體 由單一順序的執行顯示,乙個當前狀態和一組相關的系統資源所描述的活動單元。程序切換 從正在執行的程序中收回處理器,然後再使待執行程序來占用處理器。這裡所說的從某個程序收回處理器,實質上...