操作系統期末總複習

一.計算機系統概述

1.操作系統是系統軟件,操作系統設計的主要設計目標是方便性、可靠性
2.操作系統是對計算機資源進行管理的軟件
3.特徵:
  併發 共享 虛擬 異步
  併發:若干事件在同一時間間隔發生
  並行:若干事件在同一時刻發生
  最基本特徵:併發、共享(兩者互爲存在條件
4.功能:(基本功能)控制和管理系統內的各種資源重點
(1)作爲計算機系統資源的管理者

處理機管理、存儲器管理、文件管理、設備管理與中斷處理

(2)作爲用戶與計算機硬件系統之間的接口

命令接口:允許用戶直接使用
               聯機用戶接口:說一句做一句
               脫機用戶接口:說一堆做一堆
程序接口(系統調用):只能通過用戶程序間接使用(避免用戶直接訪問外設)
                   (提供給編程人員的接口)
                    用戶態轉換爲核心態
                    目的:請求系統服務
                    執行過程:
傳遞系統調用參數---執行陷入指令(trap)指令----執行相應的服務程序----返回用戶態

用戶可以通過命令接口和系統調用兩種方式來使用計算機

5.開機後操作系統最終被加載到RAM
6.發展

(1)手工操作階段
(2)批處理階段(中斷技術使得多道批處理系統和I/O設備可與CPU並行工作)
        1.單道批處理階段
          特徵:自動性、順序性、單道性、封閉性
          缺點:系統資源利用率不充分
        2.多道批處理階段(操作系統形成的標誌)
          用戶脫機使用計算機
          特徵:制約性、間斷性、共享性
          作用:提高單機資源利用率
          優點:CPU利用率高
               系統吞吐量大
               I/O設備利用率高
          缺點:系統開銷大
                用戶響應時間較長
                不提供人機交互能力(缺少交互性)
(3)分時操作系統(不可以插隊,有了人機交互)
         可以多個用戶同時使用計算機
         運行時間分成時間片,用戶以交互式的方式使用計算機“時間片輪轉”
         時間片一定,用戶數越多響應時間越長
         系統響應時間
         算法:優先級+非搶佔式調度算法
         特點:同時性、交互性、獨立性、及時性
         響應時間=用戶數*時間片
         時間片=切換時間+處理時間
(4)實時操作系統(可以插隊)
        特點:及時性、可靠性
        目標:安全可靠、及時響應、快速處理
        算法:搶佔式優先級高者優先
        硬實時系統:必須在被控制對象規定時間內完成(火箭發射)
        軟實時系統:可以不再(訂票)

從可靠性看實時操作系統更強,從交互性看分時操作系統更強

7.指令

 特權指令:不允許用戶程序使用(只允許操作系統使用)
          設備管理、文件管理、進程管理、進程控制、進程通信、內存管理
 非特權指令:普通的運算指令

8.處理機狀態

 用戶態:cpu只能執行非特權(訪管指令)
 核心態:都能執行
 用戶態-----核心態:通過中斷(是硬件完成的)
 核心態-----用戶態:特權指令psw的標誌位0用戶態1核心態

常考誰在用戶態執行,誰在覈心態執行
9.兩種程序

內核程序:都可執行(實現內核功能的程序)
應用程序:非特權(工作在用戶態)

操作系統必須提供中斷處理功能
10.中斷和異常

中斷(信號來源於cpu外部):強迫中斷I/O結束中斷
                    處理外部中斷,PC值由中斷隱指令自動保存
                   通用寄存器內容由操作系統保存         
異常(信號來源於cpu內部):系統調用、缺頁、整數除0

11.中斷處理和子程序調用

子程序調用:保存程序斷點,即下一條指令的地址
中斷:保存PC 和 PSW

二.進程管理

1.進程目的:爲了更好地描述和控制程序併發執行
2.進程實體(進程映像):PCB、程序段、數據段
進程實體也叫進程,進程是動態的,程序是靜態的。進程是進程實體的運行過程,是系統資源分配和調度的一個獨立單位
進程控制塊是進程存在的唯一標誌
(PCB中有四大類:進程標誌信息、進程控制信息、進程資源信息、CPU現場信息)
3.進程特徵:

動態性、併發性、獨立性、異步性、結構性
併發性的特徵(間斷性、失去封閉性、不可再現性)

4.進程狀態在這裏插入圖片描述

1)進程運行滿一個時間片以後讓出中央處理器,他的狀態變爲就緒態
2)一個進程的狀態變化不一定引起另一個進程的狀態變換
3)進程獲得處理機運行時通過調度得到的
4)進程申請處理機得不到滿足時,其狀態變爲就緒態
5)系統進程所請求一次I/O操作完成後進程狀態由阻塞態變爲就緒態
6)進程在處理機上執行時進程之間可能是無關的也有可能是有交互性
7)進程自身決定從運行態到阻塞態
8)對進程的管理和控制使用原語
9)被優先級高的搶佔了CPU,由運行態變爲就緒態
10)進程的最大數目受內存大小

5.進程的組織方式

鏈接方式(指針隊列)
索引方式(索引表)

在這裏插入圖片描述
在這裏插入圖片描述
6.進程通信
進程間的信息交換

  低級通信方式:PV操作(基於數據結構的共享)
  高級通信方式:(基於存儲區的共享)
        1.共享存儲
        2.消息傳遞:兩個原語(發送消息、接收消息)
             1)直接通信方式
             2)間接通信方式(信箱通信方式)
             
        3.管道通信 
  (寫滿時不能再寫,讀完時,不能再讀,沒寫滿不能讀,沒讀空不能寫)  
          緩衝區只允許一邊寫入,另一邊讀出                                                                                                                                                                                                                                                                                             

7.進程的創建:

1)申請空白PCB
2)爲新進程分配資源
3)初始化進程控制塊
4)將新進程插入就緒隊列中

8.線程
在這裏插入圖片描述

1)線程爲調度和分派的基本單位
2)進程擁有資源,線程不能擁有資源
3)進程間可以併發執行,一個進程中的多個線程也可以併發執行
4)線程切換開銷遠小於進程間切換
5)引入線程可提高程序併發執行的速度,可進一步提高系統效率
6)同一進程和不同進程內的線程都可以併發執行

9.線程的實現方式

 1)用戶級線程
 2)內核級線程
 線程切換可以在用戶態下完成

10.多線程模型

 一對一
 一對多
 多對多

進程可以創建進程或線程,線程也可以創建線程,但線程不能創建進程
11.臨界資源這裏要記住會經常考

 一次只能爲一個進程使用的資源(互斥共享)

12.臨界區

每個進程訪問臨街資源的代碼(上鎖)

13.操作系統中把做出“決定把CPU分配給誰用”的程序成爲“進程調度程序”

 進程調度與進程切換的區別(自己下去去了解)

14.調度層次

作業調度、內存調度、進程調度

要做什麼 調度發生在 發生頻率 對進程影響
高級調度(作業調度) 從後備隊列中選擇合適的作業調入內存,併爲其創建進程 外存—內存(面向作業) 最低 無—創建態—就緒態
中級調度(內存調度) 掛起隊列中選擇合適進程將數據調回內存 外存—-內存(面向進程) 中等 掛起態—就緒態/阻塞掛起----阻塞態
低級調度(進程調度) 從就緒隊列中選擇合適的進程爲其分配處理機 內存—CPU 最高 就緒態----運行態

15.進程調度的方式

 非剝奪調度方式(非搶佔式)
 剝奪調度方式(搶佔式)

16.調度的評價準則

1)CPU利用率
2)系統吞吐量:單位時間內完成作業的數量
3)週轉時間:
    
    週轉時間=作業完成時間—作業提交時間
    平均週轉時間=(作業1週轉時間+作業2週轉時間+......)/n
    帶權週轉時間=作業週轉時間/作業實際運行時間
    平均帶權週轉時間=(作業1的帶權週轉時間+作業2的帶權週轉時間+......)n
4)等待時間:等待時間越長,用戶滿意度越低

14.常用進程調度算法非常重要!!!
點擊這裏查看詳細的講解

 (1)先來先服務調度算法
 根據進程到達的先後順序執行進程,不考慮等待時間和執行時間,會產生飢餓現象。屬於非搶佔式調度,優點是公平,實現簡單;缺點是不利於短作業。
 不會飢餓
 (2)短作業調度算法
會飢餓
 (3)優先級調度算法
 會飢餓
 (4)高響應比優先調度算法
        根據“響應比=(進程執行時間+進程等待時間)/ 進程執行時間”這個公式得到的響應比來進行調度。高響應比優先算法在等待時間相同的情況下,作業執行的時間越短,響應比越高,滿足段任務優先,同時響應比會隨着等待時間增加而變大,優先級會提高,能夠避免飢餓現象。優點是兼顧長短作業,缺點是計算響應比開銷大,適用於批處理系統。
  不會飢餓
 (5)時間片輪轉調度算法
 不會飢餓
 (6)多級反饋隊列調度算法
 會飢餓

15.進程同步兩種制約關係

間接相互制約
直接相互制約
制約關係:是一種相互影響的關係,即某一個進程的運行除了受到系統影響外,還會受到其他進程運行的情況

16.爲了禁止兩個進程同步進入臨界區,同步機制應遵守以下準則

1)空閒讓進
2)忙則等待
3)有限等待
4)讓權等待

17.進程同步的方式
在這裏插入圖片描述

1)軟件實現方法
在進入區設置和檢查一些標誌來表明是否有進程在臨界區,入好已有進程在臨界區則在進入區通過循環檢查進行等待,進程離開臨界區後則益處區修改標誌 
    1.算法一:單標誌法
    2.算法二:雙標誌法先檢查
    3.算法三:雙標誌法後檢查
    4.算法四:Peterson's Alogorithm
2)硬件實現方式
    1.中斷屏蔽法
    2.硬件指令法
       1)TestAndSet指令:這條指令是原子操作,功能是讀出指定標誌後把該標誌設置爲真
       2)Swap指令:該指令的功能是交換兩個字節內容

18.信號量點擊這裏去詳細瞭解信號量

只能被兩個標準的原語訪問wait(S)和signal(S)記爲“P操作”“V操作”
由硬件實現是不可分割的指令序列(原語與數據庫中的事務一樣)
P,V操作是低級進程通信原語
信號量機制是一種有效實現進程同步和互斥的工具
用來解決互斥與同步問題

1)整型信號量

       信號量是一個特殊的整形變量,只有初始化和PV操作纔可以改變其值
       信號量分爲互斥量和資源量
       互斥量的初值一般爲1,表示臨界區只允許一個進程進入,從而實現互斥,當互斥量爲0時表示臨界區已有一個進程進入,臨界區外尚無進程等待,互斥量小於0時,表示臨界區只有一個進程,互斥量的絕對值表示在臨界區外等待進入的進程數,初值可以爲任意值,表示可用資源數,當資源量小於0時表示資源全部用完            

2)記錄型信號量
3)利用信號量實現同步:
4)利用信號量實現互斥
常考:信號量表示相關資源的當前可用數量,當信號量K>0時,表示還有K個資源可用,無等待資源。當信號量<0時,表示有|K|個進程正在等待該資源
19.管程
定義:

由一組數據以及定義在這組數據之上的對這組數據的操作組成的軟件(把信號量及其操作原語“封裝”在一個對象內部)

組成:

局部於管程的共享結構數據說明
對該數據結構進行操作的一組過程
對局部於管程的共享數據設置初始值的語句

特點;

 1.任何進程只能通過調用管程提供的過程入口才能進入管程訪問共享數據
 2.任何時刻,僅允許一個進程在管程中執行某個內部過程

管程如何實現同步

 1.對共享變量互斥操作:
 管程的特點直接實現了該要求,進程一次一個進入管程調用內部過程操作共享變量
 管程互斥訪問完全由編譯程序在編譯時自動天上,無需程序員關心,能保證正確
 2.操作的同步控制:
 靠條件變量的操作管理實現
 進入管程但不能獲取資源操作的過程將阻塞,並在滿足條件時被喚醒執行

管程的優點

1.保證進程互斥的訪問共享變量,並方便的阻塞和喚醒進程。管程可以以函數庫的形式實現,相比之下管程比信號量號控制
2.管程可增強模塊的獨立性:系統資源管理的觀念分成若干模塊,用數據表示抽象系統資源,使用同步操作相對集中,從而增加了模塊的相對性
3.引入管程可以提高代碼的可讀性,便於修改和維護,正確性抑鬱保證:採用集中式同步機制,一個操作系統或併發程序由若干個這樣的模塊所構成,一個模塊通常較短,模塊之間關係清晰

管程的缺點

大多數常用的編程語言中沒有實現管程,如果某種語言本身不支持管程,那麼假如管程是很困難大

20.死鎖點擊這裏具體瞭解死鎖

   就是指多個進程因競爭資源而造成的一種僵局(互相等待),若無外力作用這些進程都無法前進
   若干個進程因競爭資源而無限等待被該組進程中另一進程所佔有的資源

死鎖處理策略

在這裏插入圖片描述
產生原因一定要牢記,會考

(1)互斥使用(資源獨佔):一個資源每次只能給一個進程使用
(2)佔有且等待(請求和保持,部分分配):進程在申請新的資源的同時保持對原有資源的佔有
(3)不可搶佔(不可剝奪):資源申請者不能強行的從資源佔有者手中奪取資源,資源只能由佔有者自願釋放
(4)循環等待:存在一個進程等待隊列 {P1 , P2 , … , Pn},其中P1等待P2佔有的資源,P2等待P3佔有的資源,…,Pn等待P1佔有的資源,形成一個進程等待環路。

當死鎖產生的時候一定會有這四個條件,有一個條件不成立都不會造成死鎖。其中互斥使用資源時無法破壞的
死鎖預防

防止產生死鎖的四個必要條件中任何一個條件發生即破壞產生死鎖的四個條件之一。

(1)破壞“互斥使用/資源獨佔”條件

 資源本身的特性是獨佔的,是排他性使用的,所以要使用一種資源轉換技術,把獨佔資源變爲共享資源。例如針對於打印機,SPOOLing技術的引入解決不允許任何進程直接佔有打印機的問題。設計一個“守護進程/線程”負責管理打印機,進程需要打印時,將請求發給該daemon,由它完成打印任務。

(2)破壞“佔有且等待”條件

  指一個進程佔有了一部分資源,在申請其他資源的時候由於得不到滿足而進入等待狀態。有下面兩種方案實現:

實現方案1:要求每個進程在運行前必須一次性申請它所要求的所有資源,且僅當該進程所要資源均可滿足時纔給予一次性分配。這種實現會使得資源的利用率很低,當一個進程所需要的資源不能同時滿足的情況下可能一直處於等待狀態,會產生飢餓現象。
實現方案2:在允許進程動態申請資源前提下規定,一個進程在申請新的資源不能立即得到滿足而變爲等待狀態之前,必須釋放已佔有的全部資源,若需要再重新申請。

(3)破壞“不可搶佔”條件

 實現方案是當一個進程申請的資源被其他進程佔用時,可以通過操作系統搶佔這一資源(兩個進程優先級不同)。這種方法具有侷限性,適用於狀態易於保存和恢復的資源,如CPU、內存資源。

(4)破壞“循環等待”條件

主要思想是通過定義資源類型的線性順序實現,實現方案是資源有序分配法,把系統中所有資源編號,進程在申請資源時必須嚴格按資源編號的遞增次序進行,否則操作系統不予分配。實現資源的有序分配時需要考慮如何對資源進行編號,通常可以利用資源使用的頻繁性進行排序。

 假如有P1,P2…Pn共n個進程,每個進程都需要一定的資源,一定可以找到某個進程所需要申請的資源的序號是最大的這個進程,從這個進程開始執行;這個進程執行完之後再繼續找下一個所需要資源序號最大的進程,以此類推,因此使用資源的有序分配法一定可以解決死鎖問題。

死鎖避免(預防系統進入不安全狀態)

 安全狀態
 銀行家算法

銀行家算法經典講解重點重點要考的
(一)知識點

(1)Available【j】=k系統中現有Rj類資源K個
(2)Max【i,j】=k進程i需要Rj類資源最大數目爲K個
(3)Allocation【i,j】=k表示進程i當前已分配Rj類資源的數目爲K個
(4)need【i,j】=k表示進程i還需要Rj類資源數目K個

need=Max-Allocation
(二)安全性算法舉例

 假定系統中有5個進程{P0,P1,P2,P3,P4}和三類資源{A,B,C}各種資源的數目分別是10,5,7,T0時刻的資源分配情況如下表

在這裏插入圖片描述

 (1)第一步:先利用公式Need=Max-Allocation求出Need
     Max矩陣-Allocation矩陣=Need矩陣

在這裏插入圖片描述

   (2)第二步:將Available向量和Need矩陣的各行進行比較

找出Available小於Need的加入安全序列
例如在初始時

(3,3,2)>(1,2,2)(p1)
(3,3,2)>(0,1,1)  (p2)

對應兩個進程爲P1.P3(兩個都可以選擇),我先選P1

  (3)第三步:釋放P1所佔的資源

Available=Allocation(P1)+Available
(3 3 2)+(2 0 0)=(5 3 2)
此時Need矩陣更新爲
在這裏插入圖片描述

 (4)重複(2)最後得到一個安全序列{P1,P3,P4,P2,P0}

在這裏插入圖片描述
(三)知識點
設requesti是進程Pi的請求向量
Requesti[j]=K表示進程Pi需要j類資源K個
當Pi發出資源請求後,系統按下述步驟進行檢查

 (1)若Request~i~[j]<=Need[i,j]轉向步驟(2);否則認爲出錯,因爲他所需的資源數已經超過他所宣佈的最大值
 (2)若Request~i~[j]<=Available[j]則轉向步驟(3),否則尚無資源,pi
 (3)系統試探着把資源分配給進程pi,並修改下面數據結構中的數值
        Available=Available-Request~i~
        Allocation[i,j]=Allocation[i,j]+Request ~i~[j]
        Need[i,j]=Need[i,j]-Request~i~[j]
 (4)系統執行安全算法,檢查此次資源分配後,系統是否處於安全狀態,若安全才正式將資源分配給進程P~i~,已完成本次分配;否則將此次的試探分配作廢,恢復原來的資源分配狀態,讓進程P~i~等待

(四)銀行家算法舉例
假設系統資源的分配和剩餘情況如下
在這裏插入圖片描述
(1)P1請求資源:P1發出請求向量
Request1(1,0,2),系統按銀行家算法進行檢測:

 	Request1(1,0,2)<=Need1(1,2,2)
 	Request1(1,0,2)<=Available1(3,3,2)
 	資源分配給進程P1,並修改
 	 Available=Available-Request~1~=(2,3,0)
     Allocation1=Allocation1+Request ~1~(3,0,2)
     Need1=Need1-Request~1~(0,2,0)
 	此時資源發生變化
 	Available=(2,3,0)按照安全算法檢查是否安全找到安全序列

在這裏插入圖片描述
找到一個安全序列{P1,P3,P4,P2,P3,P0}
在這裏插入圖片描述
所以系統是安全的可以立即將P1所申請的資源分配給他,分配後資源如上表。
(2)P4請求資源:
P4發出請求向量Request4(3,3,0),系統按照銀行家算法進行檢查

 Request4(3,3,0)<=Need4(4,3,1)
 Request4(3,3,0)<=Available4(2,3,0)(不成立)所以讓P4等待

銀行家算法一定要掌握考試必考內容
檢測死鎖

兩種方法
資源有向圖(死鎖檢測時檢測的是資源有向圖)
資源矩陣法

解除死鎖
21.死鎖與安全狀態的關係
在這裏插入圖片描述
系統處於不安全狀態,系統便可以避免進入死鎖狀態
以下內容是內存管理
詳細瞭解請點擊內存管理
22.進程運行的基本原理

將用戶源程序變爲可以在內存中執行的程序
   編譯:將用戶源代碼編譯成若干目標模塊
   鏈接:邏輯地址變爲物理地址
   裝入:將裝入模塊裝入內存

23.邏輯地址空間與物理地址空間

 0號單元開始編址(邏輯地址

24.擴充內存節省主存空間

1覆蓋(同一程序或進程中)
      固定區:經常活躍的部分
      覆蓋區:即將要訪問的段
2交換(不同進程/作業之間進行)
       把處於等待狀態的程序從內存移到輔存,換出
       把準備好競爭cpu運行的程序從輔存移到內存,換入
       中級調度就是交換技術

25.交換技術注意:

   交換需要備份存儲
   執行時間比交換時間長
   若換出進程必須確保進程完全處於空閒狀態

26.連續分配管理方式
一個用戶程序分配一個連續的內存空間

   1單一連續分配
   2固定分區分配
   3動態分區分配

27.非連續分配管理方式
允許一個程序分散的裝入不相領的內存分區

   分頁存儲管理
           基本分頁存儲管理方式
                把主存空間劃分爲大小相同且固定的塊,作爲主存的基本單位
                把進程也以塊爲單位進行劃分
                在執行時以塊爲單位逐個申請主存中的塊空間

28.基本概念:

  1 進程中的塊稱爲頁,內存中的塊稱爲頁框
   2頁面大小爲2的整數冪
   3地址結構:頁號  |頁內偏移量
        地址長度32位,0~11位爲頁內地址,每頁4kb
        12~32位爲頁號,
    4頁表存放在內存
    5頁表項與地址對比

29.基本地址變換
邏輯地址變爲內存中的物理地址

   請求分頁存儲管理方式
   分段存儲管理

總結考點
在這裏插入圖片描述
這裏對內存管理就不做詳細介紹了,內容太多,想學習請點擊上面鏈接

下面總結一下以上所有內容

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
內存管理大小太大無法上傳想要的評論區

持續更新中…

以免迷路請關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章