系統調⽤是⼀群預先定義好的模塊; 提供⼀條管道讓應⽤程式能由此到核⼼程式的服務; 系統調⽤是系統程式與⽤戶程式之間的接⼝ ...
一、進程的描述
程式的順序執⾏: 先進⼊記憶體的程式先執⾏,在⼀個程式執⾏完畢之前,不能執⾏其他程式。
特點:順序性、 封閉性 、可再現性
程式的併發執⾏:程式併發執⾏是指在同⼀時間間隔內運⾏多個程式。⼀個程式執⾏結束 前,可以運⾏其他程式
- 巨集觀並行:用戶看到多個程式同時向前推進
- 微觀串列:任意時刻一個CPU上只有一個程式在執行
特點:
- 間斷性:程式在CPU上執⾏時,是時斷時續的
- 失去封閉性: 系統的狀態不再只對正在執⾏的程式可⻅
- 不可再現性: 同⼀個程式在輸⼊相同的情況下多次運⾏,可能出現不同的結果
使用12306買票時,每個用戶提交訂單,餘票都會減少,這體現了 程式併發執行的(失去封閉性)特點
********************************進程**********************************
程式:具有獨立功能的 一組指令的集合;靜態的、永久的
進程:允許併發執行的程式在某個 數據集合上的運行過程;進程是由正文段、用戶數據段及進程式控制制塊共同組成的執行環境;動態的、暫時的
- 正文段:存放被執⾏的機器指令
- 用戶數據段:存放⽤戶數據
- 進程式控制制塊: 存放進程的運⾏環境
進程的特征:
- 併發性: 多個進程實體能在一段時間間隔內同時運行 ,併發性是進程和現代操作系統的重要特征
- 動態性:進程是實體的執行過程(執⾏程式—>創建進程 ;獲得CPU—>執⾏指令; 運⾏中⽌—>被撤銷)
- 獨立性:獨⽴運⾏和資源調度的基本單位
- 非同步性: 進程的執⾏時斷時續,何時執⾏、何時暫停都⽆法預知
- 結構特征 :進程實體包括⽤戶正⽂段、⽤戶數據段和進程式控制制塊(PCB)
進程與程式的聯繫:
- 進程是程式的的一次執行
- 一個程式可以對應多個進程
- 同一個程式可以在不同的數據集合上運行,構成不同的進程
進程式控制制塊:進程式控制制塊是進程實體的⼀部分,是操作系統中最重要的數據結構;進程式控制制塊中記錄了操作系統所需要的、⽤於描述進程及控制進程運⾏所需的全部信息
- 進程標識符信息: ⽤於唯⼀標識⼀個進程
- 處理機狀態信息:通用寄存器 、指令計數器、 程式狀態字PSW、 用戶棧指針
- 進程調度信息:包括進程狀態信息、進程優先順序 和進程調度所需的其他信息
- 進程式控制制信息:包括程式和數據的地址、進程同步和 通信機制、資源清單,以及鏈接指針
進程的狀態:
進程的組織方式:鏈接⽅式、 索引⽅式 、進程隊列
- 鏈接⽅式:把系統中具有相同狀態的進程式控制制塊PCB⽤其中的鏈接字連成⼀個隊列
- 索引⽅式:系統根據所有進程的狀態,建⽴索引表,索引表的每⼀個表項指向⼀個PCB物理塊
- 進程隊列:把具有相同狀態的進程式控制制塊⽤隊列組織起來
二、 進程的控制
創建:⽤戶登錄、 作業調度 、提供服務、 應⽤請求 時需要創建進程
創建新進程的步驟
- 1.申請空⽩PCB
- 2.為新進程分配資源
- 3.初始化進程式控制制塊
- 4.將新進程插⼊到就緒隊列
阻塞:請求系統服務 、啟動某種操作 、新數據尚未到達、 ⽆新⼯作可做 進入阻塞狀態
- 1.將進程的狀態改為阻塞態
- 2.將進程插⼊相應的阻塞隊列
- 3.轉到進程調度程式,從就緒隊列中選擇進程為其分配CPU
喚醒
- 1.將進程從阻塞隊列中移出
- 2.將進程狀態由阻塞態改為就緒態
- 3.將進程插⼊就緒隊列
終止
- 1.從進程PCB中讀進程狀態
- 2.若進程正在執⾏,則終⽌進程的執⾏
- 3.釋放資源
- 4.將終⽌進程的PCB移出
三、操作系統內核
操作系統管理電腦系統資源,提供⽅便的接⼝,擴充硬體的功能等
操作系統內核是電腦硬體的第⼀次擴充 與硬體關係密切
內核的功能:
- ⽀撐功能:中斷處理、時鐘管理、原語操作
- 資源管理功能 : 進程管理、存儲管理、設備管理
什麼是中斷
中斷是改變處理器執⾏指令順序的⼀種事件;出現中斷時,電腦停⽌現在程式的運⾏,轉向對這些中斷事件的處理,處 理結束後再返回到現⾏程式的間斷處
為什麼需要中斷
引⼊中斷機制後,CPU可以與其他設備並⾏⼯作,能有效提⾼CPU的利⽤率
***********************************時鐘******************************************
時鐘的重要性:時鐘是電腦系統的脈搏,電腦的很多活動都是由定時測量來驅動的
時鐘的應用:
- 屏幕保護
- 時間顯示
- ⽂件時間標記
- CPU分配給進程的時間
電腦系統中的時鐘: 實時時鐘RTC(CMOS時鐘)、 OS時鐘
OS時鐘產生於PC主板上的定時/計數晶元,在開機時有效,由操作系統控制。
電腦開機加電後,操作系統通過BIOS獲取當前( RTC時鐘)的值作為系統時間
操作系統的 時鐘機制: 依靠時鐘硬體和 時鐘驅動程式來保存當前的⽇期和時間 、維持定時器
時鐘驅動程式的功能:
- 1)維護⽇期和時間
- 2)遞減當前進程在⼀個時間⽚內的剩餘執⾏時間,防⽌運⾏超時
- 3)對CPU的使⽤情況記賬
- 4)遞減報警計數器
*************************系統調⽤************************
系統調⽤:系統調⽤是⼀群預先定義好的模塊; 提供⼀條管道讓應⽤程式能由此到核⼼程式的服務; 系統調⽤是系統程式與⽤戶程式之間的接⼝
⽤戶空間:⽤戶進程所處的地址空間
⽤戶態執⾏:CPU執⾏⽤戶空間的代碼時,稱該進程處於⽤戶態執⾏
系統空間:含有⼀切系統核⼼代碼的地址空間
系統態執⾏:CPU執⾏系統核⼼代碼時,稱該進程處於系統態執⾏
系統調用與一般函數調用的區別如下:
- 1) 系統調用運行在系統態,而一般函數運行在用戶態。
- 2) 系統調用與一般函數調用的執行過程不同。系統調用執行時,當前進程被中 斷,由系統找相應的系統調用子程式,併在系統態下執行,執行結果返回進程。
- 3) 系統調用要進行“中斷處理”,比一般函數調用多了一些系統開銷。
四、進程同步
同步機制:保證在多任務共用系統資源的情況下,程式執⾏能得到正確的結果
多道程式環境下 進程之間的關係
- 資源共用關係:保證各進程以互斥的⽅式訪問 臨界資源
- 相互合作關係:保證相互合作的各進程協調執⾏
臨界資源:必須以互斥⽅式訪問的共用資源稱為臨界資源
臨界區:進程中訪問臨界資源的那段代碼稱為臨界區
同步機制:保證在多任務共用系統資源的情況下,程式執⾏能得到正確的結果
同步機制應遵循的準則:
- 空閑讓進 :沒有進程處於臨界區,應允許⼀個請求進⼊臨界區的進程進⼊
- 忙則等待:臨界區已有進程,其他試圖進⼊臨界區的進程必須等待
- 有限等待:對於要訪問臨界資源的進程,應保證有限時間內進⼊臨界區
- 讓權等待:申請不到訪問權,應釋放處理機,以免浪費CPU資源
同步機制的方法:信號量機制、
******************************信號量機制****************************
信號量機制:⽤信號量的取值來表示資源的使⽤狀況,以此為基礎實現進程同步;信號量(某種類型的變數,如整型、記錄型)
信號量機制分類:
- 整型信號量機制
- 記錄型信號量機制
- AND型信號量機制
整型信號量機制:整型信號量是表示共用資源狀態且只能由特殊的原⼦操作改變的整型量;
原理:定義⼀個整型變數,⽤該變數的值來標記資源的使⽤情況,初始值為1
整型信號量 >=0 有資源可⽤ ;整型信號量 <=0 資源忙,需等待
整型信號量機制中,用於申請資源的是 wait 原子操作
整型信號量機制中,用於釋放資源的是 signal 原子操作
記錄型信號量機制:原理:定義⼀個記錄型變數,⽤該變數的值來標記資源的使⽤情況
s.value>=0時,s.value的值表示資源數量; s.value<0時,s.value的絕對值表示等待隊列中 阻塞進程的數量
***********************管程*******************************
管程是描述共用資源的數據結構和在數據結構上的共用資源管理程式的集合。 包括變數的定義、變數的初始化代碼,以及管理共用資源的過程
管程的說明: 管程是可供程式員調⽤的軟體包; 每次只有⼀個進程調⽤管程執⾏,任意時刻管程中只有⼀個活躍進程; 管程是⼀種編程語⾔的構件
五、進程通信
進程通信機制:
- 共用存儲器系統(⾼級通信機制 ):相互通信的進程共用某些數據結構或共用存儲區
- 消息傳遞系統(⾼級通信機制 ):進程間通過操作系統提供的⼀組通信程式傳遞消息
- 管道通信(⾼級通信機制 ):進程間通過管道(鏈接讀寫進程的特殊⽂件)進⾏信息通信
- 消息緩衝隊列:利⽤消息緩衝區、發送原語和接收原語實現信息通信
六、 線程
線程的概念:線程是進程中可以 獨立執行的子任務;線程是進程中的一個實體,是被系統獨立調度和分派的基本單位
線程只擁有在運行中必需的資源,包括程式計數器、一組寄存器和 棧,但它可與同一進程的其他線程共用進程所擁有的全部資源。
在支持線程的操作系統中,線程 是被系統獨立調度和分派的基本 單位,而進程 則是資源分配的基本單位。
線程分類:
- 內核級線程:依賴於內核
- 用戶級線程 不依賴內核
線程式控制制塊:
- 每一個線程都由一個數據結構表示,包括它的基本狀態等,這個數 據結構就是線程式控制制塊TCB。
- TCB記錄了操作系統需要的、用於描述線程情況及控制線程運行所 需的全部信息
線程與進程的關係
- 1、資源和調度。線程是程式執行的基本單位,進程是擁有資源的基本單位。
- 2. 地址空間資源。不同進程的地址空間是相互獨立的,而同一進程中的各 線程共用同一地址空間。
- 3. 通信關係。進程之間的通信必須使用操作系統提供的進程間通信機制, 而同一進程中的各線程間可以通過直接通信。
- 4. 併發性。多進程之間可以併發執行,多線程之間也可以併發執行。
- 5. 系統開銷。線程切換的開銷比進程切換的開銷小
管程的說明 管程是可供程式員調⽤的軟體包 每次只有⼀個進程調⽤管程執⾏,任意時刻管程中只有⼀個活躍進程 管程是⼀種編程語⾔的構件