操作系統(tǒng)的發(fā)展
1. 手工操作系統(tǒng)
-
缺點
用戶獨占全機睦裳,資源利用率低
cpu等待手工操作蹄咖,cpu利用不充分
2. 批處理操作系統(tǒng)
-
單道批處理操作系統(tǒng)
-
特征
自動性
順序性
單道性
-
缺點
- 每次主機僅能放一次作業(yè),運行期間高速的cpu等待低速的I/O完成的狀態(tài)
-
-
多道批處理操作系統(tǒng)
-
特點
多道
宏觀上運行
微觀上運行
-
面臨的問題
如何分配處理器
多道程序內(nèi)存分配
I/O設(shè)備如何分配
如何組織和存放大量程序和數(shù)據(jù),以方便用戶使用保證其安全性和一致性
-
優(yōu)點
資源利用率高
多道程序共享計算機資源越走,使各資源充分利用
系統(tǒng)吞吐量大
-
缺點
用戶響應(yīng)時間長
不提供人機交互能力
用戶不了解計算機情況,不能控制計算機
-
3. 分時操作系統(tǒng)
-
特點
交互性
同時性
獨立性
及時性
-
問題
- 解決了人機交互問題靠欢,對一些事件不能及時做出處理
4. 實時操作系統(tǒng)
硬實時操作系統(tǒng)
軟實時操作系統(tǒng)
5. 網(wǎng)絡(luò)操作系統(tǒng)和分布式操作系統(tǒng)
- 網(wǎng)絡(luò)中各種資源共享以及個計算機之間的通信
6. 個人操作系統(tǒng)
- 如Windows廊敌,Linux等
操作系統(tǒng)運行機制
-
兩種指令
特權(quán)指令 指計算機不允許用戶直接使用的指令。只能在和心態(tài)下執(zhí)行
非特權(quán)指令 既可以在核心態(tài)游客一再用戶態(tài)下執(zhí)行
-
兩種處理狀態(tài)
核心態(tài) 此時cpu可以執(zhí)行特輕輕按指令
用戶態(tài)
-
兩種程序
內(nèi)核程序 管理者门怪,管理應(yīng)用程序骡澈,可以執(zhí)行一些特權(quán)指令
應(yīng)用程序
操作系統(tǒng)
-
內(nèi)核功能(最核心基礎(chǔ)的功能,是計算機配置上的底層軟件掷空,實現(xiàn)操作系統(tǒng)內(nèi)核功能的程序就是內(nèi)核程序)
時鐘管理
中斷處理
原語(設(shè)備驅(qū)動肋殴、CPU切換)
注意:以上三個功能是最接近硬件的層次,若僅僅包含以上三個就是內(nèi)核,若還包括以下的就稱之為大內(nèi)核
-
系統(tǒng)控制的數(shù)據(jù)處理結(jié)構(gòu)
進程管理
存儲器管理
設(shè)備管理
非內(nèi)核功能
系統(tǒng)調(diào)用
指系統(tǒng)中各種資源都有操作系統(tǒng)統(tǒng)一掌管坦弟,因此在用戶程序中疼电,凡是與資源有關(guān)的操作(如存儲分配,I/O操作减拭、文件管理等)蔽豺,都必須通過系統(tǒng)調(diào)用的方式像操作系統(tǒng)提出服務(wù)請求,由操作系統(tǒng)代為完成拧粪。這樣可以保證系統(tǒng)的穩(wěn)定性和安全性修陡,防止用戶非法操作沧侥。 會使處理器從用戶態(tài)進入核心態(tài)
1. 設(shè)備管理
完成設(shè)備的請求/釋放/啟動等功能
2. 文件管理
完成文件的 讀/寫/創(chuàng)建/刪除等功能
3. 進程管理
完成進程的創(chuàng)建/撤銷/阻塞/喚醒等功能
4. 進程通信
完成進程之間的消息傳遞/信號傳遞等功能
5. 內(nèi)存管理
完成內(nèi)存分配/回收等功能
系統(tǒng)調(diào)用的過程
(系統(tǒng)調(diào)用發(fā)生在用戶態(tài),對系統(tǒng)調(diào)用的處理發(fā)生在核心態(tài))
傳遞系統(tǒng)調(diào)用參數(shù)
-
執(zhí)行陷入指令[用戶態(tài)]
(產(chǎn)生內(nèi)中斷魄鸦,使處理器從用戶態(tài)進入核心態(tài))
(操作系統(tǒng)獲得CPU控制權(quán) )
執(zhí)行系統(tǒng)調(diào)用相應(yīng)服務(wù)程序[核心態(tài)]
-
返回用戶程序
注意:
陷入指令在用戶態(tài)執(zhí)行宴杀,執(zhí)行陷入指令之后立即引發(fā)一個內(nèi)中斷,從而CPU進入核心態(tài)
發(fā)出系統(tǒng)請求旨在用戶態(tài)拾因,而對系統(tǒng)調(diào)用的相應(yīng)處理在核心態(tài)下進行
陷入指令是唯一一個只能在用戶態(tài)執(zhí)行旺罢,而不可以在核心態(tài)執(zhí)行的指令
陷入指令又稱為訪管指令
進程
程序:一個指令序列
進程實體:
PCB
程序段:程序本身
數(shù)據(jù)段:運行程序要處理的數(shù)據(jù)
1. 定義
理解:
為了方便操作系統(tǒng)管理,完成各種程序并發(fā)執(zhí)行绢记,引入了進程扁达,進程實體的概念。
系統(tǒng)為每個運行的程序配置一個數(shù)據(jù)結(jié)構(gòu)蠢熄,稱為進程控制塊(PCB)跪解,用來描述進程的各種信息(如程序代碼存放位置)
-
一般把進程實體簡稱為進程所謂創(chuàng)建進程,實質(zhì)上是為了創(chuàng)建進程實體中的PCB签孔;而撤銷進程叉讥,實質(zhì)上是撤銷進程實體中的PCB
三種定義
進程是程序的一次執(zhí)行過程
進程是一個程序及其數(shù)據(jù)在處理及上順序執(zhí)行所發(fā)生的活動。
進程是具有獨立功能的程序在數(shù)據(jù)集合上運行的過程饥追,他是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位
總:進程是進程實體的運行過程图仓,是系統(tǒng)進行資源分配和調(diào)度的一個單位。
對比進程實體和進程
進程實體:主要強調(diào)創(chuàng)建的PCB(靜態(tài))
進程:強調(diào)運行過程(動態(tài))
注意:在沒有特別要求的時候但绕,可以當(dāng)進程實體就是進程
2. 組成
PCB
-
進程描述信息
-
進程標識符PID
進程被創(chuàng)建時透绩,操作系統(tǒng)會為該進程分配一個唯一的,不重復(fù)的ID壁熄,用于區(qū)分不同的進程(類似一身份證號)
用戶標識符UID
-
-
進程控制和管理信息
進程當(dāng)前狀態(tài)
進程優(yōu)先級
-
資源分配清單
程序段指針
數(shù)據(jù)段指針
鍵盤
鼠標
-
處理機相關(guān)信息
-
各種寄存器值
進程切換時需要把進程當(dāng)前運行的情況記錄下來保存在PCB中,如程序計數(shù)器的值表示了當(dāng)前程序執(zhí)行到哪一句
-
-
其他
進程標識碼
處理機狀態(tài)
進程調(diào)度信息
進程控制信息
3.組織方式
一個操作系統(tǒng)中碳竟,通常由數(shù)十草丧、數(shù)百乃至數(shù)千個PCB。為了能對其有效管理莹桅,應(yīng)當(dāng)用適當(dāng)?shù)姆绞桨堰@些PCB組織起來
-
鏈接方式
按照進程狀態(tài)將PCB分為多個隊列
-
操作系統(tǒng)持有執(zhí)行各個隊列的指針
執(zhí)行指針
就緒隊列執(zhí)指針
-
阻塞隊列指針
[圖片上傳失敗...(image-39b9cf-1629181963277)]
-
索引方式
根據(jù)進程狀態(tài)不同昌执,建立幾張索引表
-
操作系統(tǒng)有指向哥哥索引表的指針
執(zhí)行指針
就緒隊列執(zhí)指針
-
阻塞隊列指針
[圖片上傳失敗...(image-bedf32-1629181963277)]
4. 特征
動態(tài)性:進程時程序一次執(zhí)行過程,動態(tài)產(chǎn)生诈泼、變化懂拾、消亡
并發(fā)性 :內(nèi)存中有多個進程實體,個進程可并發(fā)執(zhí)行
獨立性:進程是能獨立運行铐达、獨立獲得資源岖赋、獨立接受調(diào)度的基本單位
異步性:各進程按各自獨立的,不可預(yù)知的速度向前推進瓮孙,操作系統(tǒng)要提供“進程同步機制”來解決異步問題
結(jié)構(gòu)性:每個進程都會配置一個PCB唐断,從結(jié)構(gòu)上看选脊,進程有程序段、數(shù)據(jù)段脸甘、PCB組成
進程的狀態(tài)和轉(zhuǎn)換
進程是程序的一次執(zhí)行恳啥,執(zhí)行過程中,有時需要被CPU處理丹诀,有時又需要等待CPU服務(wù)钝的,可見進程的狀態(tài)會有各種變化,為了方便對各個進程的管理铆遭,操作系統(tǒng)需要將進程合理劃分為幾種狀態(tài)硝桩。
1. 狀態(tài)
-
運行狀態(tài):占有CPU,并在CPU上運行cpu √ 其他資源 √
注意:單核處理機環(huán)境下疚脐,每一時刻最多只有一個 進程處于運行態(tài)(雙核有兩個)
-
就緒狀態(tài):已經(jīng)具備運行條件亿柑,但由于沒有空閑CPU,而暫時不能運行cpu √ 其他資源 ×
注意:此時進程已經(jīng)擁有除了處理及之外所有的資源棍弄,一旦獲得處理機望薄,即立刻進入運行態(tài)
-
阻塞狀態(tài):因等待某一件事而暫停不能運行cpu × 其他資源 ×
注意:如等待操作系統(tǒng)分配打印機,等待讀磁盤操作的結(jié)果
以上三種為三種基本狀態(tài)
-
創(chuàng)建狀態(tài):進程正在被創(chuàng)建呼畸,操作系統(tǒng)為系統(tǒng)分配資源痕支、初始化PCB
操作系統(tǒng)需要完成創(chuàng)建進程,為該進程分配所需要的內(nèi)存空間等系統(tǒng)資源蛮原,為其創(chuàng)建初始化PCB
終止狀態(tài):進程正在從系統(tǒng)中撤銷卧须,操作系統(tǒng)會回收進程擁有的資源、撤銷PCB
2. 進程狀態(tài)間的轉(zhuǎn)換
進程控制
1. 什么是進程控制
進程控制主要功能是對系統(tǒng)中的所有晉城市是有效的管理儒陨,它具有創(chuàng)建新進程花嘶、撤銷已有進程、實現(xiàn)進程狀態(tài)轉(zhuǎn)換等功能蹦漠。(實現(xiàn)進程狀態(tài)轉(zhuǎn)換)
2. 如何實現(xiàn)進程及控制
用原語實現(xiàn)進程控制椭员。原語的特點是執(zhí)行期間不允許中斷,只能一起呵成
這種不可以中斷的操作即原子操作
原語采用“關(guān)中斷指令”和“開中斷指令”實現(xiàn)
3. 進程控制相關(guān)的原語(三類)
更新PCB中的信息
將PCB插入合適的隊列
分配/回收資源
進程的創(chuàng)建
-
創(chuàng)建原語
申請空白PCB
為新進程分配所需資源
初始化PCB
將PCB插入就緒隊列
-
引起進程創(chuàng)建的事件
-
用戶登錄
分時系統(tǒng)中笛园,用戶登陸成功隘击,系統(tǒng)為用戶建立一個新的進程
-
作業(yè)調(diào)度
多道批處理系統(tǒng)中,有新的作業(yè)放入內(nèi)存時研铆,會建立一個新的進程
-
提供服務(wù)
用戶向操作系統(tǒng)提出某些請求時埋同,會新建一個進程處理該請求
-
應(yīng)用請求
由用戶進程主動請求創(chuàng)建一個進程
-
進程的終止
-
撤銷原語
從PCB集合中找到種植進程的PCB
若進程正在運行,立即剝奪進程棵红,將CPU分配給其它進程
終止其所有子進程
將該進程擁有的所有資源歸還父進程或操作系統(tǒng)
刪除PCB
-
引起進程終止的事件
正常結(jié)束
異常結(jié)束
外界干預(yù)
進程的阻塞
-
阻塞原語
找到要阻塞的進程對應(yīng)的PCB
保護進程運行現(xiàn)場凶赁,將PCB狀態(tài)信息設(shè)置為“阻塞態(tài)”,暫時停止進程運行
將PCB插入響應(yīng)時間的等待隊列
-
引起進程阻塞的事件
需要等待系統(tǒng)分配某種資源
需要等待相互合作的其他進程完成工作
進程的喚醒
-
喚醒原語
在時間等待隊列中到PCB
將PCB從等待隊列溢出,設(shè)置進程為就緒
將PCB插入就緒隊列哟冬,等待被調(diào)度
-
引起進程喚醒的事件
- 等待事件的發(fā)生
系統(tǒng)阻塞原語和喚醒原語要成對出現(xiàn)楼熄,因何事阻塞就因何事被喚醒
進程的切換
-
切換原語
將運行環(huán)境信息存入PCB
PCB移入相應(yīng)隊列
選擇另一個進程執(zhí)行,并更新其PCB
根據(jù)PCB回復(fù)進程所需運行環(huán)境
引起進程切換的事件
* 當(dāng)前進程事件片到
* 有更高優(yōu)先級的進程到達
* 當(dāng)前進程主動阻塞
* 當(dāng)前進程終止
進程通信
定義:進程通信指進程之間的信息交換
(進程是分配系統(tǒng)資源的單位<u style="box-sizing: border-box;">包括內(nèi)存地址空間</u>,因此各進程擁有內(nèi)存地址空間相互獨立)
進程是不能直接訪問另一個進程空間的
1. 共享儲存
基于數(shù)據(jù)結(jié)構(gòu)的共享
基于存儲空間的共享
兩個進程對共享空間是互斥的
2. 管道通信
3. 消息傳遞
消息: 消息頭 消息體
總結(jié)
線程概念與多線程模型
什么是線程浩峡?為什么引入線程可岂?
引入線程概念之后,cpu調(diào)用對象由進程變?yōu)榱司€程
線程相當(dāng)于輕量級進程翰灾,是一個最基本的CPU單元缕粹,也是程序執(zhí)行流的小單位
線程是進程的一個實體,是被系統(tǒng)獨立調(diào)度和分配的基本單位
統(tǒng)一進程內(nèi)的存在許多線程纸淮,線程共享此進程內(nèi)的資源
線程的組成
線程ID
程序計數(shù)器
寄存器集合
推棧
引入線程帶來的變化
-
資源分配平斩、調(diào)度
傳統(tǒng)進程機制中,進程是資源分配咽块、調(diào)度的基本單位
引入線程后绘面,進程是資源分配的基本單位,線程是調(diào)度的基本單位
-
并發(fā)性
傳統(tǒng)進程機制中侈沪,只能進程間并發(fā)
引入線程后揭璃,個線程之間也能并發(fā)
-
系統(tǒng)開銷
傳統(tǒng)進程間并發(fā),需要切換進程的運行環(huán)境亭罪,系統(tǒng)開銷很大
線程間并發(fā)瘦馍,如果是同一進程內(nèi)的線程切換,則不需要切換線程
引入線程后应役,并發(fā)所帶來的系統(tǒng)開銷減少
線程的屬性
線程是處理機調(diào)度單位
多CPU計算機中情组。各個進程可占用不同的CPU
每個線程都有一個線程ID(唯一的線程標識符),線程控制塊(TCB)【數(shù)據(jù)結(jié)構(gòu)】
線程也有就緒箩祥、堵塞院崇、運行三種基本狀態(tài)
線程幾乎不擁有系統(tǒng)資源
同一進程的不同線程間共享進程的資源
由于共享內(nèi)存地址空間,同一進程中的線程間甚至無需系統(tǒng)干預(yù)
同一進程中的線程切換袍祖,不會引起進程切換
不同進程中的線程切換底瓣,會引起線程切換
切換同進程內(nèi)的線程,系統(tǒng)開銷很小
切換進程盲泛,系統(tǒng)開銷很大
線程的實現(xiàn)方式
-
用戶級線程
用戶級線程用戶可以看到,操作系統(tǒng)看不到
-
內(nèi)核級線程
相當(dāng)于從操作系統(tǒng)內(nèi)核視角能看到的線程键耕,必須在核心態(tài)下才能完成寺滚。
總結(jié)
處理機的調(diào)度
1. 基本概念
如有大量任務(wù),但是資源有限屈雄,沒辦法同時處理村视,需要某些規(guī)則決定任務(wù)順序,即調(diào)度>颇獭蚁孔!
進程數(shù)量遠大于處理機個數(shù)奶赔,需要從就緒序列中按照一定算法選擇一個進程并將處理機分配給它運行,實現(xiàn)進程的并發(fā)運行
2. 三個層次
-
高級調(diào)度(作業(yè)調(diào)度)
是輔存(外存)與內(nèi)存之間的調(diào)度
-
中級調(diào)度(內(nèi)存調(diào)度)
將暫時不能運行的進程調(diào)制外存等待杠氢,當(dāng)具備空閑條件時在沖洗調(diào)入內(nèi)存站刑。
暫時調(diào)到外存等待的進程狀態(tài)為掛起狀態(tài),PCB不會調(diào)到外存鼻百,會常駐內(nèi)存绞旅,內(nèi)部會記錄進程數(shù)據(jù)在外存中的存放位置,進程狀態(tài)等信息温艇,被掛起進程PCB會被放到掛起的隊列中因悲。
補充:掛起狀態(tài)與七狀態(tài)模型
-
低級調(diào)度(進程調(diào)度)
3. 三層調(diào)度的聯(lián)系、對比勺爱、
要做什么 | 調(diào)度發(fā)生位置 | 發(fā)生頻率 | 對進程狀態(tài)的影響 | |
---|---|---|---|---|
高級調(diào)度 | 按照某種規(guī)則從后備隊列中選擇合適的作業(yè)將其調(diào)入內(nèi)存晃琳,并為其創(chuàng)建進程 | 外存->內(nèi)存(面向作業(yè)) | 最低 | 無->創(chuàng)建態(tài)->就緒態(tài) |
中極調(diào)度 | 按照某種規(guī)則從掛起隊列中選擇合適的作業(yè)將其數(shù)據(jù)調(diào)回內(nèi)存 | 外存->內(nèi)存(面向進程) | 中等 | 掛起態(tài)->就緒態(tài)(阻塞掛起->阻塞態(tài)) |
低級調(diào)度 | 按照某種規(guī)則從就緒隊列中選擇一個進程為其分配處理機 | 內(nèi)存->CPU | 最高 | 就緒態(tài)->運行態(tài) |
總結(jié)
進程調(diào)度的問題
1. 調(diào)度的時機
需要進行進程調(diào)度的情況
-
當(dāng)前運行進程主動放棄處理機
進程正常終止
運行過程中發(fā)生異常而阻止
進程主動請求阻塞(如 等待I/O)
-
當(dāng)前運行的進程被動放棄處理機
分給進程的時間片用完
有更緊急的事情需要處理(如 I/O中斷)
有更高優(yōu)先級的進程進入就緒隊列
不能進行進程調(diào)度與切換的情況
在處理及中斷過程中。中斷處理過程復(fù)雜琐鲁,與硬件密切相關(guān)卫旱,很難做到在中斷處理過程中進行進程切換進程在操作系統(tǒng)內(nèi)核程序臨界區(qū)中。
在原子操作過程中(原語)绣否。原子操作不可中斷誊涯,要一氣呵成
2. 調(diào)度的切換與過程
- 廣義的進程調(diào)度:包含選一個進程+進程切換兩個步驟
1. 進程切換過程主要完成了各種數(shù)據(jù)的保存
2. 對新的進程各種數(shù)據(jù)的恢復(fù)(如:程序計數(shù)器、程序狀態(tài)字蒜撮、各種數(shù)據(jù)寄存器等處理機現(xiàn)場信息暴构,一般保存在進程控制塊)
頻繁的進程調(diào)動、切換會是否大部分時間花在進程切換上段磨,真正用于執(zhí)行的時間減少
3. 調(diào)度的方式
-
非剝奪調(diào)度方式(非搶占方式)
只允許進程主動放棄處理機取逾,在運行過程中有更緊迫的任務(wù)到達,當(dāng)前進程依然會繼續(xù)使用處理機苹支,知道進程終止或主動要求進入阻塞態(tài)
實現(xiàn)簡單砾隅,系統(tǒng)開銷小但是無法及時處理緊急任務(wù),適合于早期的批處理系統(tǒng)
-
剝奪調(diào)度方式(搶占方式)
搶占方式债蜜。當(dāng)一個進程在處理機上執(zhí)行時晴埂,如果一個更重要或更緊迫的進程要使用處理及。即立即暫停正在執(zhí)行的進程寻定,將處理及分配給更重要更緊迫的那個進程儒洛。
可以有限處理更緊急的進程,也可以實現(xiàn)讓各進程按時間片輪流執(zhí)行的功能(通過時鐘中斷) 更適合于分時操作系統(tǒng)狼速、實時操作系統(tǒng)
總結(jié)
調(diào)度算法的評價指標
-
cpu利用率:CPU“忙碌”的時間占總
系統(tǒng)吞吐量:單位時間完成作業(yè)的數(shù)量
-
周轉(zhuǎn)時間:作業(yè)從提交給系統(tǒng)琅锻,到作業(yè)完成的這段時間間隔
-
等待時間:指進程(作業(yè))處于等待處理及狀態(tài)時間之和,等待時間越長,用戶滿意度越低
對進程來說:等待時間指進程建立后等待被服務(wù)的時間之和恼蓬,在等待I/O完成期間其實進程也是在被服務(wù)的惊完,所以不計入等待時間
對于作業(yè)來說:不僅要考慮建立進程之后的而等待時間,還要加上作業(yè)在外村后被隊列中的等待時間处硬。
響應(yīng)時間:用戶從提出請求到響應(yīng)鎖花費的時間
總結(jié)
-
調(diào)度算法
學(xué)習(xí)思路
1. 算法思想
2. 算法規(guī)則
3. 調(diào)度算法用于作業(yè)調(diào)度 or 進程調(diào)度
4. 搶占式 or 非搶占式
5. 優(yōu)點 and 缺點
6. 是否會饑餓
1. 先來先服務(wù)(FCFS)
2. 短作業(yè)優(yōu)先(SJF)
3. 高響度比優(yōu)先(HRRN)
生產(chǎn)者消費者問題
-
問題描述
系統(tǒng)中有一組生產(chǎn)者進程和一組消費者進程小槐,生產(chǎn)者進程每次生產(chǎn)一個產(chǎn)品放入緩沖區(qū),消費者進程每次從緩沖區(qū)中取出一個產(chǎn)品并使用郁油。(注:這里的“產(chǎn)品”理解為某種數(shù)據(jù))
共享一個緩沖區(qū)
只有緩沖區(qū)沒滿時本股,生產(chǎn)者才能把產(chǎn)品放入緩沖區(qū),否則必須等待桐腌。
只有緩沖區(qū)不空時拄显,消費者才能從中取出產(chǎn)品,否則必須等待案站。
緩沖區(qū)是臨界資源躬审,各進程必須互斥地訪問。