操作系统饥饿现象_操作系统心得体会
一、操作系統
1.基本概念
操作系統簡稱OS,是配置在計算機硬件上的第一層軟件,它能夠有效的組織和管理計算機系統中的硬件和軟件資源,合理的組織計算機工作流程,控制程序的執行,并向用戶提供各種服務功能。OS是現代計算機系統中最基本和最重要的系統軟件。
2.操作系統的作用
它有三個作用:第一,OS作為用戶與計算機硬件系統之間的接口;第二,OS作為計算機系統資源的管理者;第三,OS實現了對計算機資源的抽象。
3.操作系統的主要特征
操作系統的主要特征是:并發,共享,虛擬和異步,這四個特征之間也有緊密的聯系。
(1)并發和共享是操作系統的最基本特征
(2)并發和共享互為存在條件
(3)虛擬以并發和共享為前提條件
(4)異步是并發和共享的必然結果
4.操作系統的主要功能
操作系統的主要功能是:處理機功能,存儲器功能,設備管理和文件管理等基本功能。
二、進程與線程
1.進程
進程是操作系統進行資源分配的基本單位。進程控制塊 (PCB) 描述進程的基本信息和運行狀態,所謂的創建進程和撤銷進程,都是指對 PCB 的操作。
進程具有三種狀態:就緒,阻塞和執行
2. 線程
一個線程中可以有多個線程,是獨立調度和分派的基本單位。同一個進程中的多個線程之間可以并發執行,它們共享進程資源。
3. 調度算法
(1)批處理系統中的調度:先來先服務(FCFS),短作業優先(SJF),最短時間剩余優先(SRTN)
(2)交互式系統中的調度:優先權優先,時間片輪轉,多級反饋隊列,短進程優先
(3)實時系統中的調度:硬實時和軟實時
4. 進程同步
(1)同步與互斥
同步指多個進程按一定順序執行;互斥指多個進程在同一時刻只有一個進程能進入臨界區。
同步是在對臨界區互斥訪問的基礎上,通過其它機制來實現有序訪問的
(2)信號量
如果信號量的取值只能為 0 或者 1,那么就成為了互斥量(Mutex),0 表示臨界區已經加鎖,1 表示臨界區解鎖。
typedef int samaphore;
samaphore mutex = 1;
void PA() {
While(1){
wait(mutex);
// 臨界區
signal(mutex);
//剩余區
}
}
void PB() {
While(1){
wait(mutex);
// 臨界區
signal(mutex);
//剩余區
}
}
(3)經典進程同步問題
1.使用信號量實現生產者-消費者問題:
假定在生產者和消費者之間的公共緩沖池中具有n個緩沖區,使用一個互斥量 mutex 來對臨界資源進行訪問;empty 記錄空緩沖區的數量,full 記錄滿緩沖區的數量。
如果將該問題用賣衣服形容,大致過程如下:
商家生產衣服(生產者制造數據)->商家把生產好的衣服放到店里賣(生產者把數據放入緩沖區)->顧客買衣服(消費者從緩沖區取出數據)->顧客拿回去進行裁剪之類的動作(消費者處理數據)
2.讀者-寫者問題
允許多個進程同時對數據進行讀操作,但是不允許讀和寫以及寫和寫操作同時發生。
一個整型變量 count 記錄在對數據進行讀操作的進程數量,一個互斥量 count_mutex 用于對 count 加鎖,一個互斥量 data_mutex 用于對讀寫的數據加鎖。
3.哲學家進餐問題
五個哲學家圍著一張圓周,每個哲學家面前放著飯。哲學家的生活有兩種交替活動:吃飯以及思考。當一個哲學家吃飯時,需要先一根一根拿起左右兩邊的筷子。為了防止死鎖的發生,可以加一點限制,只允許同時拿起左右兩邊的筷子,方法是引入一個互斥量,對拿起兩個筷子的那段代碼加鎖。
三、死鎖
集合中的每一個進程都在等待只能由本集合中的其他進程才能引發的事件,那么該組進程是死鎖的。
1. 死鎖產生的必要條件
互斥條件,請求和保持條件,不可搶占條件,循環等待條件
2. 死鎖的處理方法
(1)預防死鎖
破壞不可搶占條件、破壞請求和保持條件、破壞循環(環路)等待條件
注:不可破壞互斥條件,因為互斥條件是非共享設備所必須的。
(2)避免死鎖
利用銀行家算法避免死鎖:
可利用資源向量Available,最大需求矩陣Max,分配矩陣Alloc,需求矩陣Need。
(3)死鎖檢測與解除
四、存儲器管理
1. 分頁和分段
(1) 分頁
用戶程序的地址空間被劃分為若干固定大小的區域,稱為“頁”。相應地,內存空間分成若干個物理塊,頁和塊的大小相等,頁與塊的對應關系稱為“頁表”。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配,由一個頁表來維護它們之間的映射關系。
(2)分段
分段的做法是把每個表分成段,一個段構成一個獨立的地址空間。每個段的長度可以不同,可以動態改變。
每個段都需要程序員來劃分。
(3)段頁式
用分段方法來分配和管理虛擬存儲器。程序的地址空間按邏輯單位分成基本獨立的段,而每一段有自己的段名,再把每段分成固定大小的若干頁。
用分頁方法來分配和管理實存。即把整個主存分成與上述頁大小相等的存儲塊,可裝入作業的任何一頁。程序對內存的調入或調出是按頁進行的。但它又可按段實現共享和保護。
(4)分頁與分段區別
地址空間的維度:分頁是一維地址空間,分段是二維的。
大小是否可以改變:頁的大小不可變,段的大小可以動態改變。
對程序員的透明性:分頁透明,但是分段需要程序員顯示劃分每個段。
2. 存儲管理
(1)分頁式存儲管理
需要訪問兩次內存,目的是提高內存利用率
物理地址=頁的大小頁號+頁內位移
頁號=相對地址/塊尺寸
頁內位移=相對地址%塊尺寸
(2)分段式存儲管理
目的:方便用戶使用編程,存儲共享,存儲保護,動態增長, 動態鏈接
段表:段號、段長、該段在內存的基址(起始地址) {段號,段內位移}
物理地址=段的起始地址+段內地址
邏輯地址=段號+段內地址
(3)分段式存儲管理(三次訪問內存)
基本原理:萬段和力頁原理的結合,即先將用戶程序力成若干個段,再把每個段分成若干個頁,并為每一個段賦予一個段名。
邏輯地址= 段號+頁號+頁內位置
虛擬存儲器:是具有請求調入功能和置換功能,能從邏輯上對內存容里加以擴充的一種存儲器系統,其邏輯容里由內存容里和外存容里之和所決定,其運行速度接近于內存速度。
3. 頁面置換算法
(1) 最佳(Optimal)
所選擇的被換出的頁面將是最長時間內不再被訪問,通常可以保證獲得最低的缺頁率。
舉例:一個系統為某進程分配了三個物理塊,并有如下頁面引用序列:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
進程運行時,先將 7,0,1 三個頁面裝入內存。當進程要訪問頁面 2 時,產生缺頁中斷,會將頁面 7 換出,因為頁面 7 再次被訪問的時間最長。
(2)先進先出(FIFO)
所選擇換出的頁面是最先進入的頁面。
該算法會將那些經常被訪問的頁面也被換出,從而使缺頁率升高。
(3)最近最久未使用(LRU, Least Recently Used)
雖然無法知道將來要使用的頁面情況,但是可以知道過去使用頁面的情況。LRU 將最近最久未使用的頁面換出。
可以用棧來實現該算法,棧中存儲頁面的頁面號。當進程訪問一個頁面時,將該頁面的頁面號從棧移除,并將它壓入棧頂,這樣,最近被訪問的頁面的頁面號總是在棧頂,而最近最久未使用的頁面的頁面號總是在棧底。
五、設備管理
1. 磁盤調度算法
當多個進程同時請求訪問磁盤時,需要進行磁盤調度來控制對磁盤的訪問。磁盤調度的主要目標是使磁盤的平均尋道時間最少。
(1)先來先服務(FCFS)
根據進程請求訪問磁盤的先后次序來進行調度。優點是公平和簡單,缺點也很明顯,因為未對尋道做任何優化,使平均尋道時間可能較長。
(2)最短尋道時間優先(SSTF)
要求訪問的磁道與當前磁頭所在磁道距離最近的優先進行調度。這種算法并不能保證平均尋道時間最短,但是比 FCFS 好很多。
(3)掃描算法(SCAN)
SSTF 會出現進行饑餓現象。考慮以下情況,新進程請求訪問的磁道與磁頭所在磁道的距離總是比一個在等待的進程來的近,那么等待的進程會一直等待下去。
當一個磁頭自里向外移動時,移到最外側會改變移動方向為自外向里,這種移動的規律類似于電梯的運行,因此又常稱 SCAN 算法為電梯調度算法。
(4) 循環掃描算法(CSCAN)
CSCAN 對 SCAN 進行了改動,要求磁頭始終沿著一個方向移動。
2. 對I/O設備的控制方式
(1)程序循環測試方式(程序查詢式) .
是指用戶進理使用。Start指令啟動設備后,不斷地執行指令,去測試所自動設備的狀態寄存器。
數據寄存器:用來存放傳輸的數據
狀態寄存器:用來記錄設備當前所處狀態
(2)中斷方式
所謂“中斷”是一種使CPU暫時中止正在執行的程序而轉去處理特殊時間的操作。
引起中斷的時間稱為中斷源。
程序中產生的中斷,由CPU的某些錯誤結果(如,計算機溢出)產生的中斷稱為“內中斷”,由外部設備控制器引起的中斷稱為“外中斷”
(3)直接存儲器存取方式(DMA 方式)
特點:能使I/0設備直接和內存儲器進行成批數據的快速傳輸。
DMA控制器包括四個寄存器:數據寄存器,狀態寄存器,地址寄存器,字節計數器
(4)通道方式
通道方式能夠使CPU徹底從I/O中解放出來。CPU進行善后處理和啟動。
通道是一個獨立于CPU的,專門用來管理輸入/輸出操作的處理機。
通道是通過執行通道程序并與設備控制器共同實現對I/O設備的控制的。
它規定了設備應該執行的各種操作的順序。由-系列通道指令所構成,CPU對I/O請求只去做啟動和善后處理工作,輸入/輸出的管理以及數據傳輸等事宜,全部由通道獨立完成。
六、文件管理
(1)目標:提高外存儲空間的利用率
(2)主要任務:對用戶文件和系統文件進行管理,方便用戶使用,并保證文件的安全性
文件存儲設備是以塊為單位進行管理的
(3)所謂“文件”是指具有完整邏輯意義的一-組相關信息的集合,它是在磁盤上保存信息,而且能方便以后讀取的方法,文件用符號名加以標識,這個符號名就被稱為“文件名”
(4)文件的存取
順序存取
隨機存取
(5)磁盤空間的管理
a.磁盤是以塊為單位進行分配的
b.磁盤與內存之間是 以磁盤塊為信息傳輸的單位
c. 選定了塊的大小,還要對它們進行管理,即要記住哪些已經分配,哪些仍然空閑。
d. 常采用的磁盤存儲空間管理方案有:位示圖,空閑塊表,空閑塊鏈
(6)文件的操作:
創建文件、刪除文件、打開文件、關閉文件、讀文件、寫文件
(7)目錄的層次結構
如果把所有文件的FCB都登記在一一個文件目錄中,這樣由文件名查文件目錄項,直接就能夠找到所需要的文件,那么就成這種文件目錄為一級目錄結構
優點:
簡單,能實現目錄管理中最基本的功能-按名存職
缺點:
查找速度慢,不允許重名,不便于實現文件共享
二級目錄結構:
由“主目錄”與“用戶目錄”二級構成,在主目錄(根目錄)中,每個目錄項的內容只是給出文件主名以及它的目錄所在的磁盤地址。
優點:
提高了檢索目錄的速度
b. 在不同的文件目錄中,可以使用相同的文件名
c.不同用戶還可使用不同的文件名訪問系統中的同一個共享文件
缺點:
a. 若一個用戶可以擁有很多文件,則查找時間仍然很長
b.用戶無法對自己的文件進行再分類安排
以上是我對這本書大概學過內容的整理,但是對操作系統的學習遠遠不止于此,本學期學的內容還有很多我沒有掌握的地方,很多地方也可以結合生活中的例子,化抽象為具體,我們就會更加清楚的了解它。
總結
以上是生活随笔為你收集整理的操作系统饥饿现象_操作系统心得体会的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中音萨克斯指法表图_萨克斯的几个特殊指法
- 下一篇: 组态王怎么做超级曲线_鸭肉怎么做?大叔教