操作系统-速记版(个人幕布导出)
生活随笔
收集整理的這篇文章主要介紹了
操作系统-速记版(个人幕布导出)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 緒論
- OS硬件模型:馮,諾伊曼模型5部分:內存(MDR和MAR),處理單元(ALU和TEMP),控制單元(PC程序計數器和IR指令寄存器), 輸入,輸出
- OS的形成與發(fā)展
- 手工操作階段
- 脫機輸入輸出(緩沖區(qū)或者spooling技術)
- 批處理技術
- 多道程序設計
- OS基本類型
- 技術:
- 單道批處理技術
- 解決人機矛盾中,CPU和I/O設備不匹配的矛盾中形成的
- 多道批處理技術
- 高效利用CPU的資源
- 特點:多道,宏觀上并行,微觀上串行;
- 優(yōu)點:資源利用率高,系統(tǒng)吞吐量大;缺點:用戶響應的時間比較長,不提供人機交互能力
- 單道批處理技術
- 批處理OS:用戶脫機使用計算機或者批處理
- 分時OS:多路性,交互性,獨占性
- 實時OS:提供及時響應和高可靠性
- 其他類型OS:嵌入式,集群,網路,分布式OS(統(tǒng)一,共享,透明,自治)
- 技術:
- OS特征
- 并發(fā)性
- 共享性(互斥共享和同時訪問)
- 虛擬性
- 異步性
- OS分層
- 內部層次結構
- 軟件分層
- 操作系統(tǒng)的性能指標:
- 資源利用率,吞吐量,周轉時間,平均周轉時間
- 進程的處理機制
- 持續(xù)透明,殺死或重新執(zhí)行;等待或持續(xù)
- 系統(tǒng)調用和函數調用的區(qū)別:
- 系統(tǒng)調用比函數調用更加安全,但開銷會增加
- 系統(tǒng)啟動時,堆棧切換和權限的切換,常用調用時無堆棧切換
- X86中斷處理:iret與ret,retf
- iret彈出EFI,AGS和SS/ESP
- ret彈出EIP
- retf彈出CS(code Segement)與EIP
- OS的體系結構
- 模塊組合結構
- 層次結構
- 微內核結構:適合分布式系統(tǒng)
- 進程和線程管理(作業(yè)管理,處理器管理):控制,同步,通信,調度,死鎖
- 進程
- 定義:執(zhí)行中的文件,即程序和程序運行的狀態(tài)
- 特點:動態(tài)性,并發(fā)性,獨立性,異步性和結構性
- 組成:進程控制塊(PCB),程序段和數據段
- 進程轉換圖(省略)
- 操作系統(tǒng)的內核功能:中斷,時鐘和原語相關
- 進程間通信:
- 共享存儲器系統(tǒng):內存
- 消息傳遞系統(tǒng)
- 定義:以消息為單位,直接利用一組通信命令(原語或者信號量)來實現通信
- 直接通信:直接把消息發(fā)送給接收進程,接收進程從消息緩存隊列中取得消息
- 間接通信:發(fā)送給某個中間件實體,類似于程序中的MQ
- 管道通信系統(tǒng)(pipe):
- 類似于一個OS類
- 特點:半雙工通信,數據只能單向流動,只能存在于子父進程中,如linux的kill命令
- 只有一個線程時可臨時放棄,進程則不同放棄,原語也不可中斷
- 特征:
- 管程類的數據只能被局限于管程內進行訪問
- 進程只有通過調用管程才能
- 每次僅允許一個進程在管程內執(zhí)行某個過程
- 信號量(Semophore):
- 信號量是一個計數器,可以用來控制多個進程對共享資源的訪問。它常作為一種鎖機制,防止某進程正在訪問共享資源時,其他進程也訪問該資源。因此,主要作為進程間以及同一進程內不同線程之間的同步手段;
- OS是管理者,優(yōu)先級高于進程
- 信號量可表示系統(tǒng)資源二代數量,由Dijsktra提出
- 主要由一個整型變量(sem)和兩個原子(記錄型信號量)操作
- P, V->wait(S),signal(S);表示資源信號量,前者保證互斥,后者保證釋放
- P過程:
- 檢查s.value>=0是否成立
- 成立:表示存在該類資源,則將該資源分配給進程,將s.value-1;
- 不成立:表示該資源已經分配完畢,進程自我阻塞,放棄處理機;
- 檢查s.value>=0是否成立
- V過程:
- 釋放一個資源,執(zhí)行操作s.value+1
- 執(zhí)行后,若s.value>0,表示存在該資源;
- s.value<=0表示信號量在等待隊列中,仍然繼續(xù)等待;
- 釋放一個資源,執(zhí)行操作s.value+1
- 實現進程同步:V(s)完成后進行釋放,P(s)檢查是否互斥;
- 實現進程互斥:在一個進程中先P(s)進行加鎖和進入臨界區(qū),結束和用V(s)進行釋放相應的資源;
- 實現前驅關系:用P(s)檢測前者是否已經完成,用V(s)表示前者已經完成;
- 信號(signal):與信號配合使用,用于通知接收進程某個事件已經發(fā)生
- 套接字(socket):與其他通信機制不同的是,它可用于不同進程間的通信
- 線程間通信(與同步互斥的方法有交叉):
- 鎖機制:
- 互斥鎖:提供了以排他方式防止數據結構被并發(fā)修改的方法
- 條件變量:條件變量可以以原子的方式阻塞進程。對條件的測試是在互斥鎖的保護下進行的,條件變量始終與互斥鎖一起使用
- 讀寫鎖:允許多個線程同時讀共享數據,而對寫操作是互斥的
- 信號量機制(Semaphone):包括無線線程信號量和命名線程信號量
- 信號機制(Signal)類似進程間的信號處理,但是主要用于線程同步,所以線程沒有數據通信機制
- 鎖機制:
- 作業(yè):計算機完成某項任務而要求計算機所做的工作集合,可由多個進程組成,一般存在于批處理OS
- 線程(多個組成進程):為了更好使多道程序并發(fā),共享相同的地址空間。指令執(zhí)行流量最小單位,CPU調度的基本單位。
- 線程與進程的比較
- 資源
- 進程是資源分配單位,線程是CPU的調度單位;
- 進程擁有完整資源平臺,而線程只獨立指令流執(zhí)行的必要資源
- 調度:三態(tài)狀況幾乎一致
- 并發(fā)性:線程能減少并發(fā)的時空開銷,共享內存和文件資源,可直接通信。
- 資源
- 線程的實現方式:
- 多對多模型(輕量級進程)
- 優(yōu)點:開發(fā)者能夠創(chuàng)建所用的用戶級線程
- 舉例:SOLARIS2,IRIX,HP-UX
- 多對一模型(用戶-線程級)
- 優(yōu)點:線程在用戶空間進行管理,效率相對較高
- 缺點:只要一個用戶阻塞則全部阻塞
- 舉例:POSIX,PTHREDS,Solaris Thread
- 一對一模型(內核級線程)
- 優(yōu)點:相對獨立,并發(fā)性好
- 缺點:創(chuàng)建,終止和切換相對較大,創(chuàng)建用戶線程,同時創(chuàng)建內核線程,以線程為單位耗費更多時間
- 舉例:Windows,Solaris,Linux
- 多對多模型(輕量級進程)
- 不同os對線程的支持:
- 單進程系統(tǒng)。MSDOS
- 單進程多線程。PSOS,如路由器
- 多進程系統(tǒng)。傳統(tǒng)unix
- 多進程系統(tǒng)。現代UNIX
- 為什么PCB是進程存在的唯一標志?
- PCB是一個能與其他進程并發(fā)執(zhí)行的數據結構,因此,PCB是為了保證程序的并發(fā)執(zhí)行能力。
- 調度
- 處理器的三級調度:高級調度(作業(yè):一組進程)->中級調度(內存管理與擴充)->低級調度(運行頻率很高)
- 進程切換調度程序SWITCH主要任務:
- 保存現運行進程的現場信息
- 就緒隊列中選擇一個在內存且最優(yōu)資格運行的進程,以免使其占用CPU
- 為新選中的進程恢復現場
- 調度的基本準則:CPU使用率,吞吐量,周轉時間,等待時間,響應時間
- 進程調度的方式:搶占式(剝奪),非搶占式(非剝奪)
- 引起進程調度的原因:
- 進程結束
- 因某種原因:如I/O請求,P操作,阻塞原語
- 執(zhí)行完系統(tǒng)調用等系統(tǒng)程序后返回用戶進程
- 高優(yōu)先級的進程進入
- 分時系統(tǒng)中,分配給進程的時間片已用完
- 帶權周轉時間 = 作業(yè)周轉時間/作業(yè)實際運行時間
- 典型調度算法:
- 作業(yè)調度
- 先來先服務FCFS
- 短進程優(yōu)先SPN
- 優(yōu)點:具有最優(yōu)平均周轉時間
- 缺點:可以產生饑餓;預估未來
- 最高相應比
- 相應比 = 作業(yè)響應時間 /估計運行時間
- 特點:不可搶占,關注進程的等待時間
- 優(yōu)先級調度算法
- 靜態(tài)優(yōu)先級:按進程類確定,按作業(yè)的資源要求確定,按用戶類型和要求確定
- 動態(tài)優(yōu)先級:根據進程占有CPU時間的長短來確定,根據就緒進程等待CPU時間的長短確定
- 進程調度
- 時間片輪RR
- 時間片:分配處理機資源的時間基本單位
- 時間片結束,按FCFS切換到下一個片
- 缺點:時間片太長退化成FCFS,時間片太小產生大量切換影響系統(tǒng)的吞吐量,時間片長度合適
- 多級反饋隊列MFQ
- 定義:就緒隊列分成獨立的隊列,每一個隊列一個策略,前臺交互,后臺批量處理
- 固定優(yōu)先級:無前臺,無后臺可能會導致饑餓
- 時間片輪轉:每個都得到一些隊列分配
- 公平共享調度 Fair Sharing Schedule
- 一些用戶組比其他更重要,保證不重要無法形成壟斷
- 未使用按比例,沒有達到資源使用率目標優(yōu)先級更高
- 時間片輪RR
- 處理機調度:
- 定義:每個處理器運行自己的程序,調度程序對共享資源的訪問需要同步
- 特點:多個處理機組成,處理機間可以共享
- 動態(tài)進程分配:
- 特點:可以任意分配,共享公共隊列
- 缺點:調度開銷
- 優(yōu)點:負載均衡
- 作業(yè)調度
- 同步
- 定義:不同進程之間存在著相互制約的關系,為了協(xié)調進程之間的相互制約關系,引入了進程同步的概念
- 并發(fā)進程的正確性:共享性,不確定性,不可重現性,間歇性程序錯誤
- 臨界資源的訪問過程
- entry section //進入區(qū)
- critical section //臨界區(qū)
- exit section //退出區(qū)
- reminder section //剩余區(qū)
- 臨界資源:把一次僅允許一個進程使用的資源
- 臨界區(qū):訪問臨界資源的那段程序
- 同步互斥(互斥鎖):OS在利用同步機制在并發(fā)的同時,保證一部分是原子操作;
- 同步互斥應該遵循的原則:空閑讓進,忙則等待,有限等待,讓權等待;
- 實現臨界區(qū)域互斥的方法:
- 1.硬件實現方法【中斷屏蔽,硬件指令等方法】
- 缺點:不滿足讓權等待;
- 關閉中斷,進程也無法停止,導致饑餓發(fā)生;
- 臨界區(qū)時間太長無法確定中斷所需要的時間,要小心使用;
- 優(yōu)點:適用于任意數目的進程,不管是單處理機還是多處理機,簡單容易驗證其正確性,可以支持進程內有多個臨界點,只需要給臨界點設置一個布爾變量
- 缺點:不滿足讓權等待;
- 2.軟件實現方法【單標算法->雙標算法->雙標后檢查算法->Perterson算法】
- 單標算法
- 缺陷:空閑讓進
- 特點:設置一個標志位turn,每次執(zhí)行前檢測
- 偽代碼:一個
- while(turn!=0){
- critical section;
- turn = 1;
- }
- remainder section
- while(turn!=0){
- 雙標算法
- 缺陷:忙則等待,兩個線程可以同時進入
- 優(yōu)點:不用交替進入,可持續(xù)使用
- 特點:標志位:2個線程設置兩個標志位,執(zhí)行前檢測其他線程標志位,執(zhí)行前將自身設置為true,執(zhí)行完成后將自身設置為false
- 偽代碼:Pi
- while(flag[j]){
- flag[i] = true;
- critical section;
- flag[i] = false;
- }
- remainder section;
- while(flag[j]){
- 雙標后檢查
- 缺陷:有限等待
- 特點:將自身標志位設置為true的放在檢測前
- 偽代碼:Pi
- flag[i] = true;
- while(flag[j]){
- critical section;
- flag[i] = false;
- }
- Peterson算法
- 結合雙標和單標
- 單標用來控制進入turn,雙標用來表示想進入flag[i]
- 偽代碼:Pi
- flag[i] = TRUE; turn=j;
- while(flag[j] && turn =j)
- critical section
- flag[i] = false;
- }
- remainder section
- 單標算法
- 3.高級抽象方法【信號量,鎖】
- 信號量(Semophone):
- 1.硬件實現方法【中斷屏蔽,硬件指令等方法】
- 經典同步問題:
- 分析進程同步和進程互斥的方法與步驟:
- 1.關系分析。找出進程數并分析關系,同步,互斥,前驅后進行改寫
- 2.整理思路。確定PV順序
- 3設置信號量。根據上面兩步,設置需要的信號量,確定初值,完善整理。
- 1.生產者-消費者問題
- 關系分析:生產者與消費者對互斥訪問是互斥關系;生產者生產后,消費者才能消費,是同步關系。
- 兩個進程:
- 信號量設置:設置3個信號量。mutex作為互斥信號量,初始為1;full記錄滿緩沖數,初始0;empty記錄對于當前的空緩沖區(qū),記錄為0,
- 實現思路:
- 生成者:produce->P(empty)->P(mutex)->add data to buffer->V(mutex)->V(full);
- 消費者: P(full)->P(mutex)->get data from buffer ->V(mutex)->V(empty)->consume;
- 注意:P(mutex)要緊挨著buffer不然會阻塞;
- 2.讀者-寫者問題
- 關系分析:讀者和寫者是互斥的,寫者和讀者也是互斥的,讀者和讀者無同步互斥問題
- 整理思路: 寫者和任何進程都是互斥的,讀者則會占用一個文件
- 信號量設置:設置3個信號量。count為計數器,初值為0;mutex為互斥信號量,rw用于保護讀寫互斥訪問。##寫者優(yōu)先##將原來的rw分成兩個信號量wmutex,cmutex,表示正在寫或者等待寫
- 實現思路:
- 讀者優(yōu)先:
- writer:P(rw)->writting->V(rw)
- reader:前半部分是為了檢測并阻止寫進程寫,后半部分是讀完后進行處理
- P(mutex)->P(rw)->count+±>V(mutex)->Reading->P(mutex)->count-- ->V(rw)->V(mutex)
- 寫者優(yōu)先(公平算法,更安全):
- reader:P(wmutex)->P(mutex)->count+±>V(mutex)->V(wmutex)->reading->P(mutex)->count-- ->V(mutex)->V(cmutex);
- writer:P(wmutex)->P(mutex)->writting->V(mutex)->V(wmutex);
- 讀者優(yōu)先:
- 3.哲學家進餐問題
- 關系分析:與貪心算法相反,在取筷時獲得互斥信號量
- 整理思路:如奇數號則先拿左筷子,偶數號則先拿右筷子
- 信號量設置:設置一組信號量表示筷子chopsticks[i],和一個取筷子的信號量
- 實現思路:P(mutex)-> P(chopsticks[i])(左筷子)->P(chopstick[(i+1)%5])(右筷子)->V(mutex)->V(chopsticks[i])->V(chopsticks[(i+1)%5])
- 4.理發(fā)師問題
- 關系分析:與生成者和消費者關系類似
- 整理思路:顧客->若顧客人數大于n+1,則離開,否則等待,找凳子坐下->理發(fā)->離開,等待人數-1
- 信號量設置:設置mutex為互斥信號量,bchair代表理發(fā)師信號量,wchair代表凳子的信號量,用于同步理發(fā)師與顧客的信號量,ready,finish同步理發(fā)師與顧客的信號量
- 分析進程同步和進程互斥的方法與步驟:
- 死鎖
- 原因:
- 1.系統(tǒng)資源的競爭
- 2.進程推進順序非法
- 必要條件:
- 1.互斥條件
- 2.不可剝奪條件
- 3.請求和保持條件
- 4.循環(huán)等待條件
- 處理策略:破壞4個必要條件
- 死鎖預防:一次請求所有資源,資源剝奪,【突發(fā)式處理進程】
- 死鎖避免:尋找可能安全運行的順序【不必剝奪】
- 銀行家算法:
- 變量:
- Avaliable可利用的最大資源,Max最大需求矩陣,Allocation分配矩陣,Need需求矩陣
- 核心矩陣:Need[i][j]=Need[i][j]-Allocation[i][j]
- 思路:Request<=Need -> Request <=Avaliable -> Avaliable -= Request ;Allocation += Request;Need -= Request -> (安全檢查)->確認分配否則回滾
- 變量:
- 安全檢查算法:
- 思路:Work= Avaliable, Finish = false->Need[i]<Work(確認重新分配)->Finish=true?->安全,不安全
- 銀行家算法:
- 死鎖檢測及解除:定期檢查死鎖是否已經發(fā)生;
- 死鎖解除:
- 1.資源剝奪法。掛起(suspend)某些進程,并搶占其資源
- 2.撤銷進程法。強制撤銷部分,甚至全部進程并剝奪其資源
- 3.進程回退法。讓一個或多個回退志足以回避死鎖的辦法
- 死鎖解除:
- 原因:
- 進程
- 存儲器管理(內存管理):內存分配,保護,和擴充
- 內存管理
- 內存管理方式:重定位(relocation),分段(segmention),分頁(paging), 虛擬存儲(virtual memory)
- 交換和覆蓋(Swapping & Overlay):
- 定義:多道程序環(huán)境用來擴充內存的兩種方法
- 交換:
- 主要介于外存和內存之間進行;
- 把暫時不用的某個程序以及數據部分(或全部)從內存移到外存中去,以便于騰出不必要的內存空間;
- 不要求程序員給出程序段之間的覆蓋結構,而且交換主要在進程和作業(yè)之間;
- 打破一個程序一旦進入主存運行直到結束的限制。
- 覆蓋:
- 大的程序段進行的一系列覆蓋,每個覆蓋是相對獨立的東西
- 連續(xù)分配的管理方式:
- 單一連續(xù)分配
- 特點:適合單道程序,采用覆蓋技術,不需要硬件支持,無法實現多道程序共享內存
- 優(yōu)點:簡單,無外部碎片,可采用覆蓋技術;【靜態(tài)重定位裝入】
- 缺點:單用戶,單任務的操作中,內部碎片,存儲器的利用率極低。
- 固定分區(qū)分配
- 特點:通常采用靜態(tài)重定位方式裝入內存
- 劃分分區(qū)的方法:
- 分區(qū)大小相等。缺乏靈活性,用一臺計算機控制多個相同對象的場合。
- 分區(qū)大小不等。
- 內存分配:
- 分區(qū)號:大小:地址(起始地址):狀態(tài) = 1:20KB :100KB:是否分配
- 動態(tài)分區(qū)分配
- 特點:用鏈接指針將內存中的空閑分區(qū)鏈接起來,形成空閑分區(qū)鏈塊
- 分區(qū)鏈頭指針352KB -> 32KB ->520KB
- 動態(tài)分區(qū)分配算法:
- 首次適應算法(First Fit):每次都從最開始進行掃描
- 優(yōu)點:簡單,保留了高地址部分大的空閑分區(qū),無內部碎片
- 缺點:外部碎片增加,分配大塊變慢
- 下次適應(Next Fit):也叫循環(huán)首次適應算法,下一次尋找分塊自動從上一次結束時進行尋找
- 優(yōu)點:分塊分區(qū)更加均勻,減少查找的開銷;
- 缺點:導致缺乏大的空閑分區(qū)
- 最佳適應算法(Best Fit):先從小到大進行排序再分配
- 優(yōu)點:避免大的空閑分配被拆分
- 缺點:五拆分難以利用
- 最差適應算法(Worst Fit)
- 優(yōu)點:中等大小分配時效果最好
- 缺點:釋放過于緩慢
- 首次適應算法(First Fit):每次都從最開始進行掃描
- 分區(qū)的回收:在空閑分區(qū)表中檢查是否有相鄰的空閑分區(qū),如有則合并成一個大的空閑分區(qū)
- 四種情況:
- 回收上下鄰接的空閑分區(qū)
- 回收下一個鏈接的空閑分區(qū)
- 回收上下鄰接一個空閑分區(qū)
- 回收不與任何分區(qū)相鄰的分區(qū)
- 分區(qū)分配的動態(tài)管理:
- 拼接技術:時機問題
- 在某個分區(qū)回收時立即進行拼接,這樣在主體中總是有一個連續(xù)的空閑區(qū);
- 當找不到足夠大的空閑分區(qū)總是滿足作業(yè)要求時進行拼接,這樣可降低拼接的頻率
- 動態(tài)重定位分區(qū)分配技術
- 緊湊(compaction): 所有的應用程序可動態(tài)重定位,等待狀態(tài)以利用。
- 分區(qū)兌換(swapping in/out):通過搶占并回收等待狀態(tài)進程的分區(qū),以增大可用內存空間
- 優(yōu)點:
- 實現了多道程序共用主存;
- 管理方案相對簡單,不需要更多時間;
- 實現存儲保護的手段比較簡單;
- 缺點:
- 主存利用不夠充分,存在外部碎片;
- 無法實現多進程共存存儲器信息;
- 無法實現主存的擴充,進程地址空間受實際存儲空間的限制;
- 拼接技術:時機問題
- 單一連續(xù)分配
- 非連續(xù)分配的設計:分頁和分段
- 分頁
- 分頁表存儲管理系統(tǒng)中的邏輯地址:頁號:頁內位移w = P:W
- 物理地址:Pysical Address = 2^w x P + A(偏移地址)
- 分頁管理存在的2個問題:
- 每次訪存都要進行邏輯到物理地址的轉換,過程必須足夠快,否則會降低訪存速度
- 頁表不能太大,否則內存利用率會降低;
- 具有塊表地址變換的機構:頁表緩存(TLB,Translation Lookside Buffer)-> 直接頁號和表號的映射
- 地址變換的過程:
- \1. LA(CPU)->Page(頁表)->Cache, page與快表中的page進行比較;
- 2.1 命中->直接形成物理地址PA,存取數據僅一次訪存便可以實現;
- 2.2 未命中 -> 進入將主存中的頁表存入快表,訪問2次
- 順序:TLB(LA只負責計算) -> 頁表 ->cahce ->主存
- 多級的目的在于建立索引,不用浪費主存儲空間去存儲無用的頁表項,也不用盲目地順序式查找頁表。
- 兩級頁表:為了查詢方便,頂級頁表最多只有一個頁面
- 分頁為內存提供兩種方式的保護:
- 地址越界保護
- 通過頁表訪問信息對內存提供保護
- 分段
- 目的:方便編程,信息共享和信息保護;通過指向相同的頁表,可實現內存間的段共享;
- 段式管理按照用戶進程中的的自然劃分邏輯空間
- 定義:段號:段內偏移量=S:W;
- PA=段起始地址+88(A),注意不是W
- 分段保護和分頁保護類似:
- 一種是地址越界保護;
- 另一種是存取控制保護;
- 環(huán)保護機構(OS處于內核內,APP和S處于中間環(huán))
- 分段與分頁的區(qū)別:
- 分段是信息的物理單位,分頁是信息的邏輯單位;
- 分段的目的為了更好地滿足用戶的需要;分頁的目的是系統(tǒng)管理所需,為了提高內存;
- 段的長度不固定,不同的段有不同的段長;頁的大小固定且系統(tǒng)確定;
- 分段的作業(yè)地址空間是一維的,分頁的地址空間是二維的;
- 有內部碎片,無外部碎片;無內部碎片,有外部碎片
- 分段和分頁的優(yōu)點:
- 便于程序模塊化處理和便于處理變換的DS;
- 便于動態(tài)鏈接
- 便于共享分段
- 可實現虛擬存儲,不受主存容量的控制
- 無內部碎片
- 分段和分頁的缺點:
- 處理機變換地址花費的時間,要為段提供附加存儲空間
- 減少碎片采用拼接技術;
- 分段的最大尺寸受到主存可用限制
- 有外部碎片
- 段頁式管理
- 無外部碎片,訪問一次需要經過三次(先獲取段,再獲取頁,再獲取塊);
- 段號S:頁號P:頁內偏移;
- b(塊號) = d(起始頁)+P* 頁表項大小(2^w),即分段和分頁前兩項的組合;
- PA = b x 頁表大小L + w;
- 分頁提高內存利用率,分段反映邏輯利于共享;
- 優(yōu)點:
- 分散存儲
- 內存利用率較高
- 便于代碼和數據
- 無外部碎片
- 缺點 :
- 訪問效率下降
- 一次訪問轉換成了三次訪問,有內部碎片
- 分頁
- 程序的局部性原理
- 時間局部性原理
- 空間局部性原理
- 分支局部性原理:一條跳轉指令的兩項執(zhí)行,很可能跳轉到相同的內存位置
- 虛擬內存
- 原理:
- 裝載程序時,只將當前指令執(zhí)行需要的頁面或段載入內存;
- 指令執(zhí)行中時,處理器通知OS將相應頁面或者段保存到虛擬存儲;
- 特征:多次性,對換性,虛擬性,離散性(程序離散性存儲)
- 常用技術:請求分頁管理;請求分段管理,請求段頁式管理
- 需要的硬件支持:
- 一定容量的內存和外存,頁表機制。作為主要的數據結構;
- 中斷機構,當用戶程序要訪問的部分未調入內存,則產生中斷;
- 地址變換機構,邏輯地址到物理地址的變換
- 原理:
- 請求分頁式管理:
- 定義;頁號:物理塊號:狀態(tài)位P:訪問位A:修改位A:外存地址
- 頁號:基本定義同基本分頁存儲管理
- 訪問位A:提供給置換算法
- 修改位M:頁面修改則不需寫到外存
- 外存地址:請求分頁系統(tǒng)中的頁表項
- 缺頁中斷:當訪問的頁面不在內存時,便產生一個缺頁中斷
- 與一般中斷的兩個明顯區(qū)別:在指令執(zhí)行期間產生和處理中斷信號,屬內部中斷;一條指令在執(zhí)行期間,可能產生多次缺頁中斷。
- 地址變換機構:
- 若找到要訪問的頁,便修改頁表項中的訪問位(寫指令則還須重置修改位);然后利用頁表項中給出的物理塊號和頁內地址形成物理地址;
- 若未找到該頁的頁表項->內存中查找頁表項-> 對比頁表項中的狀態(tài)位p,看該頁是否已調入內存,未調入則產生缺頁終端,請求外存調入內存中
- 修改訪問位和修改位進而產生物理地址【地址變換結束】
- 在何處保存未被映射的頁?
- 交換空間(文件或磁盤)采用特殊格式存儲未被映射的頁面。
- 尋址路徑:TLB(Translation Lookaside Buffer,即頁表緩存)->頁表->cache->主存->外存
- 1.考慮命中率和缺頁率的有效訪問時間的計算
- 訪問頁在主存且存在塊表中:E=e(查找快表時間)+t(形成物理地址并訪問內存物理數據時間)
- 訪問頁在主存中(不缺頁)但是不存在于快表當中:EAT=e(快表)+t(頁表)+e(修改)+t(快表
- 訪問頁表不存在主存中,設缺頁中斷時間為t1:EAT=e(快表)+t(頁表)+e(修改)+t(快表
- 2.考慮缺頁率和命中率的有效訪問時間的計算
- EAT=查找快表的時間+a x 形成物理地址并訪問內存數據時間+(1-a)x [查找頁表時間+f x (處理缺頁中斷時間+查找快表時間+形成物理地址并訪問+(1-f)x(修改快表時間+形成物理地址并訪問內存時間))]
- 處理缺頁中斷時間;t1=p+ta+(1-p)t6;
- e=0,a=0時,則有效訪問時間為;EAT = t+ f(t1+t)+(1-f)t
- EAT(有效訪問時間)計算
- 無快表,訪問內存所需時間t,EAT= t+2t(對應物理地址訪問);
- 有快表,設表tlb的查找需要時間e,訪問內存一次需要時間t,命中率為a,則有效訪問時間分別為:查頁表項的平均時間為ea+(t+e)(1-a);
- EAT=ea+(t+e)(1-a)+t=2t+e-ta;
- 請求調換頁功能
- 頁面置換算法OPT, FIFO, LFU, LRU, CLOCK
- 評價標準:
- 盡可能減少頁面的調入次數;
- 把不再訪問或短期頁面調出;
- OPT 所淘汰頁面是以后永不使用的或者是長時間不再被訪問的
- FIFO 優(yōu)先淘汰最早進入內存的頁面,會產生bleady現象
- LRU 選擇最長時間未被引用的頁面進行置換
- CLOCK 原理:即最近未使用nru
- 1.增加訪問位,描述過去的訪問時間;
- 2.各頁面形成環(huán)鏈表;
- 3.指針指向最先調入;
- 簡單clock算法:
- 入口->p所指頁面訪問位=0?
- =0,選擇淘汰掉該頁面,后移;
- !=0 ,將頁面訪問位置換位0,后移;
- 入口->p所指頁面訪問位=0?
- 改進clock算法:
- 1.掃描過程中不改變訪問位A,淘汰A=0,M=0;
- 2.1不成立,則淘汰A=0,M=1,將所有a置為0
- 3.2不成立,將所有a置為0重復
- 4種類型頁面:
- a=0,m=0;未被訪問,未被修改
- a=0,m=1;未被訪問,被修改
- a=1,m=0;被訪問,但未被修改
- a=1,m=1;被訪問也被修改
- 評價標準:
- 頁面分配策略
- 物理塊的分配策略:固定的分配局部置換,可變分配全局置換,可變分配局部置換;
- 頁面調入策略:
- 請求調頁策略:缺:每次調入一頁,需花費較大的開銷;
- 預調頁策略:缺:一次性調入多個相鄰頁面無法保證會被訪問到;
- 從何處調入:
- 擁有足夠的對換空間:全部從對換區(qū)調入所需頁面
- 缺少足夠的對換空間:可能被修改的部分,換出時需調至對換區(qū)
- unix方式:與進程有關的文件放在文件區(qū),故未運行的應從文件區(qū)調入
- 定義;頁號:物理塊號:狀態(tài)位P:訪問位A:修改位A:外存地址
- Bleady現象:
- 產生:缺頁率隨著分配的物理塊數的增加而增加
- 出現;被歸類為堆棧算法的頁面置換算法不可能出現, 如LRU,OPT
- 抖動
- 請求分頁系統(tǒng)中的每個進程只能分配所需內存一部分
- 預防抖動:
- 局部置換原則
- 引入工作集算法
- 工作集原理:當局部隨之穩(wěn)定,工作集頁隨之穩(wěn)定,位置改變,工作集則快速擴大或收縮過渡到另一穩(wěn)定值
- 調解常駐集
- 若進程缺失率過高,常駐集增加;
- 若缺失率過低,常駐集減少;
- l=s準則(產生缺頁平均時間與系統(tǒng)處理頁時間相等),掛起若干進程
- 缺頁率=所需調入次數[OPT] / 共需要的次數[實際運行狀況]
- 虛擬地址如何轉換為物理地址
- 1.利用虛擬頁號查找頁表,在TLB中(從前向后取)
- TLB+頁內偏移->查找data cache
- TLB形式:虛擬頁號(TLB標記:TLB索引):頁內
- 2.利用虛擬頁號查找TLB->頁表
- 頁表+頁內偏移->查找data cache表
- 3.除以上兩種產生缺頁中斷
- 1.利用虛擬頁號查找頁表,在TLB中(從前向后取)
- 內存管理
- 文件管理:文件管理,目錄管理,邏輯結構,操作管理,文件保護
- 文件系統(tǒng):文件的基礎
- 有結構的文件:
- 基本數據項:數據元素+字段
- 組合數據項:若干基本數據項
- 無結構的文件(由若干字符組成,可以看作是一個字符流,即流式文件)
- 文件的分類:
- 用途;系統(tǒng)文件,庫文件,用戶文件
- 數據形式:源文件,目標文件,可執(zhí)行文件
- 文件存取控制:只讀文件,讀寫文件,只執(zhí)行文件
- 組織形式和處理方式分類:普通文件,目錄文件,特殊文件(系統(tǒng)中的各類I/O設備)
- 文件的操作:
- 創(chuàng)建文件,刪除文件,讀文件,寫文件,截斷文件,設置文件的讀寫位置
- 其他文件操作:
- 以提供有關文件操作的系統(tǒng)調用
- 關于目錄
- 文件邏輯結構
- 有結構的記錄式文件
- 順序文件
- 串結構;各記錄的順序與關鍵字無關
- 順序結構:所有記錄按關鍵字排序,可遞增排列,也可遞減
- 索引文件
- 索引順序文件
- 直接文件和哈希文件
- 優(yōu):提高存取速度;
- 缺;可以出現沖突;
- 順序文件
- 無結構的流式文件
- 有結構的記錄式文件
- 有結構的文件:
- 目錄結構
- 主要功能;
- 實現按名存取;
- 提高對目錄的檢索速度;
- 文件共享;
- 允許文件重名;
- FCB(文件控制塊);
- 基本信息類;
- 存取控制信息類;
- 通用信息類
- 單級目錄結構:
- 目錄結構:FCB1:FCB2:FCB3…:FCBn:數據文件;
- 優(yōu)點:簡單且能實現目錄管理的按名存取的基本功能;
- 缺點:查找速度慢,不允許重名;不便于實現文件共享;
- 兩級目錄結構:
- 建立一個單獨的用戶目錄UFD(User File Directory),在系統(tǒng)再建立一個文件目錄MFD(Master File Directory);類似于 windows下的用戶/文檔
- 優(yōu)點:提高了檢索目錄的速度,可以解決重命名的問題,不同用戶可使用不同的文件夾進行共享內存
- 缺點:兩級目錄結構缺乏靈活性,不能對文件分類
- 多級目錄結構:
- 結構:樹形名+多級目錄
- 優(yōu)點:就多級目錄與兩級目錄相比而言,其查詢速度更快,同時層次更加清晰,能夠更加有效地進行文件的管理與保護
- 缺點:在多級目錄中查找一個文件,需按路徑訪問中間結點,這就增加了磁盤的訪問速度,將影響查詢速度
- 圖形目錄結構:(無環(huán)圖形目錄結構)
- 主目錄分為:AB兩個部分;A部分為頭文件,另外一部分為偏移部分
- 優(yōu)點:方便文件共享,兩個不同目錄中的同一文件僅在磁盤上保存一份
- 缺點:增加系統(tǒng)實現的難度
- 目錄查詢技術:
- 線性檢索法:搜索目錄,優(yōu)點是編程簡單,執(zhí)行耗時
- Hash法:hash數據結構,優(yōu)點是減少搜索時間。缺點是:可能存在2個沖突文件的hash值相同
- 主要功能;
- 文件共享:
- 索引節(jié)點
- 優(yōu)點:能夠實現文件的異名共享
- 缺點;文件擁有者不能刪除他人共享的文件;由于每一個共享文件具有文件名,遍歷時可能多次遍歷該共享文件
- 符號鏈
- 如果目錄項標記為鏈,那么就獲取真正文件(或目錄的文件),再搜索目錄。
- 共享該文件的其他用戶則只有該文件的路勁名,并不擁有其指向其索引節(jié)點的指針。
- 語義:
- 一致性語義,保證多進程能同時訪問共享文件;
- UNIX語義:用戶可見和允許多人同時寫入;
- 會話語義:
- AFS文件系統(tǒng)使用
- 一旦用戶打開文件的寫不能同時被其他用戶看見
- 一旦文件關閉,對其修改只能從以后打開的會話所看見
- AFS文件系統(tǒng)使用
- 永久共享文件語義
- 一旦創(chuàng)建者聲明為共享,那么不能再被修改
- 索引節(jié)點
- 文件保護:
- 作用;用來防止文件受到物理破壞和非法訪問等
- 訪問類型:R,W,執(zhí)行,ADD,Delete,列表清單,其他操作
- 訪問控制
- 訪問控制矩陣
- 訪問控制列表(ACL),用戶權限表,密碼
- 文件系統(tǒng)與實現
- 文件系統(tǒng)的層次結構圖;
- 應用程序->邏輯文件系統(tǒng)->文件組織模塊->基本文件系統(tǒng)->I/o控制->設備
- 文件實現
- 外存分配方式
- 連續(xù)分配
- 鏈接分配
- 隱式鏈接,必須含有指向鏈接文件第一個盤塊號和最后一個盤塊的指針。如jeep 9 25,表示9->16->1->10->25
- 顯式鏈接(類似于TlB表的Fat表)
- 索引分配
- 單索引分配
- 兩級索引分配
- 混合索引分配
- 文件記錄的成組與分解
- 優(yōu)點:可以提高磁盤的空間利用率,減少磁盤的啟動次數
- 缺點;成組與分解操作必須使用主存中的緩沖區(qū),從而增加系統(tǒng)開銷
- 空閑空表法:適于連續(xù)分配
- 空閑快鏈法;當所有空閑盤區(qū)拉成一條空閑鏈,稱為空閑盤塊鏈,其中每個盤區(qū)上含有用于指示下一個空閑盤區(qū)的指針外,還應能指明本盤區(qū)大小的信息
- 位示圖法
- 當其值為“0”時,表示對應的盤塊空閑;
- 當為"1時’,表示已分配
- 成組鏈表法
- 空閑盤塊號棧的內容 N=100->S.free[99],前者指明區(qū)域和區(qū)域大小,后面是具體存儲;
- 文件需要被掛載才能被訪問,未掛載的文件被掛載到掛載點上
- 外存分配方式
- 操作系統(tǒng)常見的文件系統(tǒng)類型
- 磁盤文件系統(tǒng): FAT->NTFS(>=64)
- 數據庫文件系統(tǒng);可被尋址,如winFS
- 日志文件系統(tǒng);記錄文件系統(tǒng)的修改
- 網絡分布式文件系統(tǒng):NFS,SMB,AFS
- 標準文件共享系統(tǒng):NFS for unix
- 特殊/虛擬文件系統(tǒng);管道(pipe)
- 文件系統(tǒng)的層次結構圖;
- 磁盤的組織與管理:
- 磁盤結構的信息:引導控制塊,分區(qū)控制塊,目錄結構,文件控制塊
- 磁盤的訪問時間計算Ta=Ts+Tr+Tt=m x n +s +1/2r+b/rN
- Ts尋道時間
- Tr旋轉延遲時間
- Tt傳輸時間
- n磁道
- s啟動磁道時間
- r轉速
- b讀寫字節(jié)數
- N磁道上的字節(jié)數
- 磁盤的管理:格式化,壞塊
- 提高磁盤io速度的方法:提前讀,延遲寫,優(yōu)化物理盤分布,虛擬寫
- 磁盤調度算法:
- FCFS:
- SSTF最短尋道時間優(yōu)先
- SCAN電梯調度算法:單方向移動,沿著磁頭去尋找離當前最近的
- CSCAN:單方向移動,在移動到最末尾時,移動點從最開始進行開始
- N-step-Scan N步掃描算法
- 解決以上三個出現的磁頭黏著現象
- 主要步驟:
- 將磁盤請求隊列分成長度為n的子隊列
- 按fifo算法依次處理所有子隊列
- 掃描算法處理每個隊列
- F-Scan 簡化N步掃描算法
- 將隊列數目減少到2個隊列,交替使用算法
- 磁盤緩存:磁盤扇區(qū)在內存中的緩存區(qū),比虛擬存儲復雜,且頻率更低
- 單緩存:io設備-輸入-緩存區(qū)-傳送-工作區(qū)
- 雙緩存:io設備-緩存1,工作區(qū)-緩存2
- UFS多級索引分配
- 文件頭包含13個指針
- 10th指向數據塊
- 11th指向索引塊
- 12th指向二級索引
- 效果:提高了文件大小限制的閾值,動態(tài)分配數據塊,方便文件擴展
- 多磁盤
- 通過并行提高吞吐量,通過冗余提高可靠性和可用性
- RAID
- 軟件:OS內部的文件卷管理
- 硬件:RAID硬件控制器(I/0)
- RAID0:磁盤條帶化,通過獨立磁盤并行數據提高訪問速度
- RAID1:磁盤鏡像:可靠成倍,讀取線性增加
- RAID3:基于位
- RAID4/5:基于數據塊,帶校驗的磁盤條帶化
- -4;帶校驗的磁盤條帶化(允許從任意一個故障中恢復)
- -5;帶分布式校驗的磁盤條帶化(檢驗和分布式存儲)
- 文件系統(tǒng):文件的基礎
- 設備管理(I/O管理):分配,傳輸控制,獨立性
- 分類
- 使用特性:人機交互外部設備,存儲設備,網絡通信設備
- 傳輸速率:低速設備,中速設備,高速設備
- 信息交換單位:
- 塊設備:文件接口和訪問定義
- 字符設備:內存映射文件訪問
- IO控制方式
- 程序直接方式
- 設置標志位busy
- busy=1表示輸入尚未完成,busy=0表示將輸入數據送入設備控制
- 優(yōu):實現簡單;缺:CPU的利用率相當低,因為CPU執(zhí)行指令速度高出io幾個數量級
- 中斷驅動方式
- 提高了CPU的利用率
- 在每臺設備每輸入輸出一個數據都要求中斷CPU,這樣在一次數據傳送的過程中,中斷次數過多而耗費大量的CPU處理時間。
- DMA方式
- 主機與控制器之間成數據塊的方式進行直接交換,必須在DMA控制器中設置。
- 命令狀態(tài)寄存器CR:用于接受IO有關控制信息或設備的狀態(tài)
- 內存地址寄存器MAR:輸入時,它存放把數據從設備傳送到內存的的起使目標地址
- 數據寄存器DR:內存的啟始目標地址,用于暫存從設備到內存,或內存到設備
- 數據計數奇 DC:存放本次要傳送的字節(jié)數
- 程序直接方式
- 通道控制方式:
- 定義:專門用于負責輸入輸出工作的處理機制,它獨立于CPU,有自己的指令系統(tǒng)。指令系統(tǒng)比較簡單,一般至于數據傳送指令,設備控制指令等
- 字節(jié)多路通道
- 數組選擇通道:傳輸速率很高,只含有一個分配型的子通道
- 數組多路通道:存放本次要傳送的字節(jié)數
- io通道與一般處理機的區(qū)別:無自己的內存,通道與CPU共享內存
- Io通道與DMA控制方式的區(qū)別:DMA需要CPU來控制傳輸的數據大小,傳輸的內存位置,而通道控制方式中這些信息由通道控制,一個通道可以控制多個設備
- IO軟件層次結構
- IO請求:用戶層軟件->設備獨立性軟件->設備驅動程序->中斷處理程序
- IO響應:當IO結束時喚醒驅動程序->建立設備寄存器,檢查狀態(tài)->命名,保護,阻塞,緩沖,分配->進行IO調用;格式化IO,Spooling等
- 中斷處理程序:喚醒被阻塞的驅動程序進程->保護被中斷進程的CPU環(huán)境->分析中斷原因->進行中斷處理->恢復中斷進程的現象
- 設備處理程序:讀抽象要求轉換為具體要求->檢查io請求的合法性->讀出和檢查設備的狀態(tài)->傳遞必要參數->設置工作方式->啟動IO設備
- Io調度
- 高速緩存與緩沖區(qū)
- 緩沖的實現
- 硬件緩沖器實現,但由于成本太高,除一些關鍵部位外,一般情況下不采用
- 內存劃出一塊存儲區(qū),專門用來臨時存放輸入輸出數據
- 緩沖的分類
- 單緩沖
- 雙緩沖
- 循環(huán)緩沖:將雙緩沖中特定區(qū)域進行循環(huán)
- 緩沖池:緩沖池中緩沖區(qū)按使用狀況可形成以下三個隊列:空緩沖隊列,裝滿輸入數據的緩沖隊列,裝滿輸出數據的緩沖隊列
- 除以上外,有用于收容輸入數據,提取輸入數據,收容輸出數據,提取輸出數據的工作緩沖區(qū)
- 緩沖的實現
- 設備分配
- 設備管理中的數據結構
- 設備控制表(DCT)
- 設備控制器控制表(COCT):反映通道狀態(tài)
- 設備控制表(CHCT)
- 系統(tǒng)設備表(SDT)
- 設備分配策略
- 使用性質:獨享設備,共享設備,虛擬分配
- 設備分享算法:先來先服務,優(yōu)先級高者優(yōu)先
- 設備分享的安全性:
- 安全分配方式
- 一旦進程已經獲得某種設備后便阻塞,使進程不可能請求任何資源
- 不安全的分配方式
- 僅當進程所請求設備被另一半進程占用才進入阻塞狀態(tài)
- 安全分配方式
- 設備分配的獨立性
- 用戶程序的設備獨立性
- 用戶程序不直接使用物理設備名,而只能使用邏輯設備名。
- 執(zhí)行;邏輯設備名轉換物理設備名
- I/O軟件的設備獨立性
- 除了直接與設備打交道外,其他部分的軟件不依賴于硬件,I/0軟件獨立于設備,就可提高設備管道軟件的設計效率
- 用戶程序的設備獨立性
- 設備管理中的數據結構
- 設備分配程序
- 單IO系統(tǒng)的設備分配:分配設備->分配設備控制器->分配通道;
- 多IO系統(tǒng)的設備分配;
- 1.根據設備類型,檢索設備控制表,找到第一個空閑設備并檢測分配設備的安全性,如安全,則分配,反之,插入該設備的等待隊列。
- 2.設備分配后,檢索設備控制器控制表,找到第一個與已分配設備相連的空閑設備控制器,若無空閑,則返回步驟D查找下一個空閑設備。
- 3.設備控制器分配后,同樣查找與其相連的通道,找到第一個空閑通道,若無則返回2,查找下一個設備控制器,若有,則分配成功
- 設備回收:設備使用完后對占有設備,設備控制器以及通道,系統(tǒng)進行回收,修改對應的數據結構,以便下次分配時進行使用
- 假脫機技術(spooling)
- 外部設備同時聯機的操作
- 特點:
- 提高了IO的速度
- 將獨占設備改造為共享設備
- 實現了虛擬設備的功能
- 應用:打印機的多文件打印
- CPU與設備之間的數據傳輸:
- load/store傳輸指令
- 直接訪問內存(DMA):設備控制器可直接訪問系統(tǒng)總線
- 訪問頻率置換算法:短期用LRU,長期用LFU
- 新區(qū)域(new session):引用計數不變,中間區(qū)域(middle section),舊區(qū)域(old section)(計數都+1)
- 分類
- 分布式系統(tǒng):
- 中間件(midware):標準接口和協(xié)議;一組驅動程序,應用編程接口或用于改善C/S之間的連接件
- C/S分類:
- 基于主機的處理(傳統(tǒng)大型機環(huán)境)
- 基于服務器的處理(易維護,提升效果不明顯)
- 基于客戶的處理(拋開驗證服務,其余都在本地進行)
- 合作處理
- 胖客戶端 fat client
- 瘦客戶端 thin client
- 中間件在C/S的結構
- 表示服務
- 應用服務
- 應用邏輯
- 中間件
- 通信服務
- os
- 硬件平臺
- 集群:集群與對稱多處理技術swap是相對的,這種方法提供了高性能和高可用性
- 開發(fā)swap主要難點:故障管理,負載平衡,并行計算(并行編譯,參數化計算)
- 用戶接口:命令接口,程序接口,圖形接口
總結
以上是生活随笔為你收集整理的操作系统-速记版(个人幕布导出)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python随机函数
- 下一篇: java rfc接口_java调用sap