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