程序是什麼?程序是正在執行的程式;程序是正在計算機上執行的程式例項;程序是能分配給處理器並由處理器執行的實體。 程序一般會包括指令集和系統資源集,這裡的指令集是指程式**,這裡的系統資源集是指i/o、cpu、記憶體等。 綜合起來,我們也可以理解程序是具有一定獨立功能的程式在關於某個資料集合上的一次執行活動, 程序是系統進行資源分配和排程的乙個獨立單位。
在程序執行時,程序都可以被唯一的表示,由以下一些元素組成:
以上的這些元素都會放在乙個叫做程序控制塊的資料結構中。程序控制塊是作業系統能夠支援多程序和提供多處理的結構。 當作業系統做程序切換時,它會執行兩步操作,一是中斷當預處理器中的程序,二是執行下乙個程序。 不管是中斷還是執行,程序控制塊中的程式計數器、上下文資料和程序狀態都會發生變化。 當程序中斷時,作業系統會把程式計數器和處理器暫存器(對應程序控制塊中的上下文資料)儲存到程序控制塊中的相應位置, 程序狀態也會有所變化,可能進入阻塞狀態,也有可能進入就緒態。 當執行下乙個程序時,作業系統按規則將下乙個程序設定為執行態,並載入即將要執行程序的程式上下文資料和程式計數器等。
程序的狀態: 就緒態,阻塞態,掛起,執行態
作業系統維護著四種不同型別的表:記憶體,i/o,檔案和程序
記憶體表:用於跟蹤記憶體和虛擬記憶體
i/o表:管理計算機系統中的i/o裝置和通道
檔案表:file tables ,維護著檔案是否存在,當前狀態和檔案屬性
程序表:process tables
記憶體,i/o,檔案是代表程序而被管理的,因此程序中必須有對這些資源的直接或間接引用
程序控制塊:
程序有兩個特性部分:資源所有權和排程執行。 資源所有權是指程序包括了程序執行所需要的記憶體空間、i/o等資源。 排程執行是指程序執行過程中間的執行路徑,或者說程式的指令執行流。 這兩個特性部分是可以分開的,分開後,擁有資料所有權的通常稱為程序,擁有執行**的可分派部分的被稱之為執行緒或輕量級程序。
執行緒有「執行的線索」的意思在裡面,而程序在多執行緒環境中被定義為資源所有者,其還是會儲存程序的程序控制塊。 執行緒的結構與程序不同,每個執行緒包括:
每個程序都有乙個程序控制塊和使用者位址空間,每個執行緒都有乙個獨立的棧和獨立的控制塊,都有自己乙個獨立執行上下文。 其結構如圖8.1所示。
執行緒在執行過程中與程序有一些不同。每個獨立的執行緒有乙個程式執行的入口、順序執行序列和程式的出口。 但是執行緒不能夠獨立執行,必須依存在於程序之中,由程序提供多個執行緒執行控制。 從邏輯角度來看,多執行緒的意義在於乙個程序中,有多個執行部分可以同時執行。 此時,程序本身不是基本執行單位,而是執行緒的容器。
執行緒較之程序,其優勢在於乙個快,不管是建立新的執行緒還是終止乙個執行緒;不管是執行緒間的切換還是執行緒間共享資料或通訊,其速度與程序相比都有較大的優勢。
併發又稱共行,是指能處理多個同時性活動的能力,併發事件之間不一定要同一時刻發生。 比如,現代計算機系統可在同一段時間內以程序的形式將多個程式載入到儲存器中,並借由處理器的時分復用, 以在乙個處理器上表現出同時執行的感覺。
並行是指同時發生的兩個併發事件,具有併發的含義,而併發則不一定並行。
併發和並行的區別就是乙個處理器同時處理多個任務和多個處理器或者是多核的處理器同時處理多個不同的任務。 前者是邏輯上的同時發生(simultaneous),而後者是物理上的同時發生。
參考:《作業系統精髓與設計原理》
併發,執行緒,程序
乙個是實力的體現,乙個是商用的必須需求。以往 windows creatthread beginthred beginthredexe linux pthread create 建立執行緒 臨界區,互斥量。以往多執行緒 不能跨平台。從c 11開始,c 語言本身增加可移植性。整個程序是否執行完畢的標誌...
程序 併發 執行緒 032
一 計算機操作原理簡介 硬碟 永久儲存資料的 記憶體 暫存資料 cpu 運算 三者之間關係如下圖 二 併發 提高程式的工作效率 偽並行 遇到io就進行切換 1程序切換 2儲存現場 儲存程式執行的資訊 並行 3個cpu同時執行 3個程式 三 程序的建立 開啟裝置上安裝的程式使其進入執行狀態即建立了乙個...
程序 併發 執行緒 032
一 計算機操作原理簡介 硬碟 永久儲存資料的 記憶體 暫存資料 cpu 運算 三者之間關係如下圖 二 併發 提高程式的工作效率 偽並行 遇到io就進行切換 1程序切換 2儲存現場 儲存程式執行的資訊 並行 3個cpu同時執行 3個程式 三 程序的建立 開啟裝置上安裝的程式使其進入執行狀態即建立了乙個...