分散式Session共享解決方案
基於《計算機作業系統》(第四版)總結:OS引論、程序描述與控制、處理機排程與死鎖、儲存器管理、虛擬儲存器、輸入輸出系統、檔案系統
1、目標:方便性、有效性、可擴充性、開放性
2、作用:
1、作為使用者與計算機硬體系統之間的介面
2、作為計算機系統資源的管理者
3、實現對計算機資源的抽象
3、發展過程:
1、人工操作方式:使用者獨佔全機,CPU等待人工操作--帶(卡)裝卸
2、離線輸入/輸出方式:事先將裝有使用者程式和資料的紙帶裝入紙帶輸入機,外圍機控制,把紙帶內容輸入到磁帶上(類似於磁碟),CPU需要時,從磁帶高速調入記憶體。反之類同。
優點:減少了CPU的空閒時間、提高了I/O速度
3、單道批處理:首先監督程式將磁帶第一個作業裝入記憶體,執行控制權在該作業,處理完改作業後,控制權回到監督程式,然後進行重複過程,系統自動對作業成批處理。(記憶體始終只保持一道作業---單道批處理)
缺點:記憶體浪費,不能充分利用系統資源
4、多道批處理:所提交的作業先存入外存,排成“後備佇列”,再由作業排程程式按演算法從佇列調若干作業入記憶體。
優缺點:資源利用率高、系統吞吐量大、平均週轉時間長、無互動能力
5、分時系統:作業直接進入記憶體,採用輪轉執行方式,系統配置一個多路卡(實現分時多路複用),及時接收使用者終端命令(資料)。
特徵:多路性、獨立性、及時性、互動性
6、實時系統:系統能及時響應外部事件的請求,在規定的時間內完成對該事件的處理,並控制所有實時任務的協調一致的執行。
特徵:多路性(週期性資訊採集,多個物件或執行機構進行控制)、獨立性、及時性、互動性、可靠性(多級容錯措施)
4、基本特徵:
1、併發:引入程序,並行併發,系統程式獨立併發執行,提高資源利用率,增加系統吞吐量。
2、共享:
①互斥共享,一段時間內只允許一個程序訪問資源(臨界資源)。
②同時共享,允許一段時間內多程序“同時”訪問。
3、虛擬:提高通訊通道的利用率--“虛擬”技術,通過“空分複用”或“時分複用”,將一條物理通道(實)變為若干條邏輯通道(虛)。
空分複用:利用儲存器的空閒空間分割槽域存放和執行其他的多道程式
時分複用:利用處理機的空閒時間執行其他程式
4、非同步:程序以不可預知的速度向前推進。
5、主要功能:
1、處理機管理功能:
①程序控制:建立和撤銷程序,分配資源、資源回收,控制程序執行過程中的狀態轉換。
②程序同步:多程序執行進行協調--程序互斥(臨界資源上鎖)、程序同步。
③程序通訊:實現相互合作之間的程序的資訊交換。
④排程:作業排程,程序排程。
2、儲存器管理功能:為多道程式的執行提供良好的環境,提高儲存器的利用率,方便使用者使用,並能從邏輯上擴充記憶體。
①記憶體分配:靜態分配、動態分配。
②記憶體保護:各在其記憶體空間內執行(設兩界限暫存器),互不干擾。
③地址對映:地址空間中的邏輯地址轉換為記憶體空間中與之對應的實體地址。
④記憶體擴充:藉助於虛擬儲存技術,邏輯上擴充記憶體容量。
3、裝置管理功能:完成使用者程序提出的I/O請求,為其分配所需I/O裝置,完成指定I/O操作;提高CPU和I/O裝置的利用率,提高I/O速度,方便使用者使用I/O裝置。
①緩衝管理
②裝置分配
③裝置處理:裝置驅動程式,用於實現CPU和裝置控制器之間的通訊。
4、檔案管理功能:對使用者檔案和系統檔案進行管理以方便使用者使用,並保證檔案的安全性。
①檔案儲存空間的管理:為檔案分配合理外存空間,檔案儲存空間的使用情況。
②目錄管理:為每個檔案建立一個目錄項。
③檔案的讀/寫管理和保護
5、作業系統與使用者之間的介面:使用者介面,程式介面
6、微核心作業系統:
①核心足夠小
②基於客戶/伺服器
③“機制與策略分離”原理
④面向物件技術
1、前趨圖:用於描述程式執行先後順序 P1->P2,是指一個有向無迴圈圖。
程式的順序執行:按照某種先後次序順序執行,僅當前一程式執行完後,才執行後一段程式。
順序性、封閉性、可在現性
輸入操作I->計算操作C->列印操作P
程式的併發執行:間斷性、失去封閉性、不可再現性
2、程序
1、定義:
程式的一次執行,順序執行時所發生的活動,是具有獨立功能的程式在一個數據集合上的執行過程,系統資源調配的獨立單位。
2、實體:
即程序,由程式段、相關的資料段和PCB組成,所謂建立和撤銷程序實際是對其中的PCB的建立和撤銷。(PCB:程序控制塊Process Control Block)
3、特徵:
①動態性 ②併發性 ③獨立性 ④非同步性
3、程序的三種基本狀態:就緒、執行、阻塞狀態(阻塞原因:I/O請求、申請緩衝區失敗等)
1、程序狀態的轉換:
2、程序的掛起suspend:程序處於靜止狀態,暫停執行(執行狀態下掛起),暫不接受排程(就緒狀態下掛起)。是基於系統和使用者的需求。
3、程序的啟用active:先將程序從外存調入記憶體,檢查程序現行狀態,靜止-->活動
4、程序控制塊PCB:
1、記錄系統所需,用於描述程序的當前情況以及管理程序執行的全部資訊,是作業系統中記錄型資料結構。
2、作用:一個在多道程式環境下不能獨立執行的程式成為一個能獨立執行的基本單位,一個能與其他程序併發執行的程序。
3、三種組織方式:
①線性方式:將系統中所有的PCB都組織在一張線性表中,查表
②連結方式:把具有相同狀態程序的PCB分別通過PCB中的連結字連結成一個佇列
③索引方式:根據所有程序狀態的不同,建立索引表
5、併發程序間的相互制約關係:
①間接相互制約關係:程序間對類臨界資源的間接相互制約關係,為保證程序有序執行,此類資源必須由系統實施統一分配(即使用者使用前,應先提出申請)。
②直接相互制約關係:源於某些程序(隸屬於同一應用程式)之間為完成同一項任務而相互合作(相互間喚醒啟用--制約)。
6、臨界資源:
一次僅允許一個程序使用的資源(如印表機、磁帶機等),程序間互斥來實現對臨界資源的共享。
臨界區:每個程序中訪問臨界資源的那段程式碼,程序互斥地進入自己的臨界區,對臨界資源訪問
①程序進入臨界區前,對臨界資源進行檢查是否正被訪問---進入區
②若未被訪問,進入臨界區對該資源訪問,並設定“正被訪問”的標誌---臨界區
③臨界區後面程式碼,將臨界區“正被訪問”的標誌恢復為“未被訪問”的標誌---退出區
④除進入區(entry)、臨界區(critical)、退出區(exit)程式碼,其餘程式碼---剩餘區
7、同步機制應遵循的原則:
1、為實現程序互斥地進入自己的臨界區
2、空閒讓進、忙則等待、有限等待、讓權等待
8、訊號量機制:解決程序同步問題(程序同步工具)
①整型訊號量:表示資源數目的整型量(S),僅原子操作wait(S)和signal(S)可訪問,執行時不可中斷。(分別被稱為P、V操作)
②記錄型訊號量:在代表資源數目的整型變數value基礎,增加一個程序連結串列指標list,用於連結所有等待程序。不存在“忙等”的程序同步機制。
③AND型訊號量:將程序執行所需所有資源,一次性全部分配給程序,待程序使用完後再一起釋放。
④訊號量集:AND型訊號量基礎上,對程序所申請的所有資源以及每類資源不同的資源需求量,在一次P、V原語操作中完成申請或釋放。
9、管程
1、管程機制:
①共享資源的資料結構
②對該共享資料結構實施操作的一組過程所組成的資源管理程式,共同構成的一個作業系統的資源管理模組。
“一個管程定義了一個數據結構和能為併發程序所執行的一組操作,這組操作能同步程序和改變管程中的資料。”
2、管程的組成:
①管程的名稱
②區域性於管程的共享資料結構說明
③對該資料結構進行操作的一組過程
④對區域性於管程的共享資料設定初始值的語句
管程被請求和釋放資源的程序所呼叫。
10、經典程序同步問題(使用訊號量方法解決)
生產者-消費者問題
哲學家進餐問題
讀者-寫者問題
11、程序通訊的型別:
①共享儲存器系統:相互通訊的程序“共享資料結構”或“共享儲存區”。
②管道通訊系統:“管道”(pipe)是指用於連線一個讀程序和一個寫程序以實現彼此間通訊的一個共享檔案。借花獻佛-管道通訊。
③訊息傳遞系統:將通訊上網資料封裝在訊息中,通過一組通訊命令在程序間傳遞訊息,完成程序間的資料交換。直接通訊方式和間接(郵箱)通訊方式。
④客戶機-伺服器系統:套接字、遠端過程呼叫、遠端方法呼叫。
12、執行緒:“輕級程序”,作為排程和分派的基本單位,是程式執行流的最小單位。
程序與執行緒間的異同:
①排程性:執行緒是作為排程和分派的基本單位,程序只作為資源擁有的基本單位。
②執行緒上下文切換比程序上下文切換快得多。
③併發性:程序間可併發執行,執行緒(無論在同一程序與否)間也可併發執行。
④擁有資源:程序擁有系統資源,執行緒僅有一點必不可少、保證獨立執行的資源。多個執行緒可共享本程序所擁有的資源。
⑤獨立性:同一程序中的不同執行緒之間的獨立比不同程序之間的獨立性低得多。
⑥系統消耗:程序的建立或撤銷的系統消耗“明顯大於”執行緒的建立或撤銷的系統消耗。
1、處理機排程的層次:
①高階排程:(長程排程或作業排程),排程物件是作業,主要功能是根據演算法決定將外存後備佇列中的某些作業調入記憶體,建立程序、分配必要資源,並將入就緒佇列。
②低階排程:(短程排程或程序排程),排程物件是程序,主要功能是根據演算法決定記憶體就緒佇列中的某個程序應獲得處理機,並由分派程式給選中的程序分派處理機。
③中級排程:(記憶體排程),記憶體中暫不能執行的程序調至外存(掛起狀態),待條件齊全且記憶體空閒,中級排程,就緒程序重回記憶體(就緒狀態)入就緒佇列。
2、處理機排程演算法的目標:
①共同目標:資源利用率、公平性、平衡性、策略強制執行
②批處理系統的目標:平均週轉時間、系統吞吐量高、處理機利用率高
③分時系統的目標:響應時間快、均衡性
④實時系統的目標:截止時間的保證、可預測性
3、作業:通常的程式+資料+作業說明書。
1、作業控制塊:作業標識+使用者名稱稱+使用者賬號+作業型別+作業狀態+排程資訊+資源需求+資源使用情況+……。管理和排程作業。
2、作業執行的三個階段(三種狀態):收容階段(後備狀態)、執行階段(執行狀態)、完成階段(完成狀態)。
4、作業排程演算法:
①先來先服務(FCFS):先後次序進行排程(作業排程、程序排程)。
②短作業優先(SJF):作業(或程序)越短(估計執行時間短),優先順序越高。
③高響應比優先順序排程演算法:既考慮作業的等待時間,有考慮作業的執行時間,既照顧短作業,又不致使長作業的等待時間過長,從而改善處理機排程的效能。
R p優先順序=(等待時間+要求服務時間)/要求服務時間=響應時間/要求服務時間
5、程序排程機制:
①任務:儲存處理機的現場資訊、按某種演算法選取程序、把處理機分配給程序
②基本部分:排隊器、分派器、上下文切換器
③程序排程方式:非搶佔方式、搶佔方式
6、輪轉排程演算法原理:
根據FCFS,使用輪轉法處理,讓每一個就緒佇列上的程序每次執行一個時間片(若就緒佇列上有n個程序,每個程序每次大約獲得1/n的處理機時間)。
時間的片的確定:略大於一次典型互動所需時間。
7、多級反饋佇列排程演算法:
①設定多個就緒佇列:每個佇列賦予不同的優先順序、不同大小的執行時間片。
②每個佇列都採用FCFS演算法
③按佇列優先順序排程
8、最早截止時間優先EDF(earliest deadline first)排程演算法:根據任務的截止時間確定優先順序,截止時間愈早的優先順序愈高,具有最早截止時間的任務排佇列首,優先分配處理機。
最低鬆弛度優先LLF(least laxity first)排程演算法:根據任務的緊急(鬆弛)程度,緊急程度愈高的優先順序愈高,優先執行處理。
9、死鎖
1、死鎖的定義:如果一組程序中的‘每一個程序’都在等待僅由該組程序中的‘其它程序’才能引發的‘事件’,那麼該組程序是死鎖的(Deadlock)。
2、死鎖的必要條件(缺一不可):
①互斥條件:程序分配到的資源互斥性使用,資源只能被一個程序佔用,其他請求該資源的程序只能等到被用完釋放。
②請求和保持條件:程序已佔有某資源,又提出新資源請求,而該資源被佔,則程序請求被阻塞,已得資源保持。
③不可搶佔條件:程序已得資源不可被搶佔。
④迴圈等待條件:存在一個程序的資源迴圈鏈。
3、死鎖的處理方法:
①預防死鎖:設定限制條件,破壞死鎖四個必要條件。
②避免死鎖:在資源的動態分配過程中,去防止系統進入不安全狀態。
③檢測死鎖:允許程序死鎖,但檢測機構檢測死鎖發生,措施解決。
④解除死鎖:撤銷某些程序,回收它們的資源分配給處於阻塞狀態的程序,使其能繼續執行。
10、預防死鎖的方法:破壞死鎖四個必要條件
互斥條件是非共享裝置所必須的----主要破壞其他三條件
①破壞“請求和保持”條件:第一種協議,所有程序執行前申請過程所需的全部資源;第二種協議,允許一個程序獲得初期所需資源便開始執行,過程中逐步釋放分配給自己的且用畢的資源,再請求新的所需資源。
②破壞“不可搶佔”條件:新的資源請求得不到滿足時,釋放已經保持的所有資源,待需之時再申請。
③破壞“迴圈等待”條件:對系統所有資源型別進行線性排序,並賦予不同的序號。
11、安全序列:(P1,P2,……,P n)
安全狀態:系統能按某種程序推進順序(P1,P2,……,P n)為每個程序Pi分配其所需資源,直至滿足每個程序對資源的最大需求,使每個程序都可以順利的完成。
12、利用銀行家演算法避免死鎖的方法
1、儲存器的層次結構:
①CPU暫存器:暫存器
②主存(記憶體):快取記憶體、主儲存器、磁碟快取
③輔存:固定磁碟,可移動儲存介質
可執行儲存器:暫存器、主存(掉電資訊丟失)---屬於作業系統儲存管理負責分配、回收,以及提供儲存層次間資料移動的管理機制。
2、使用者程式在系統中執行,先將其裝入記憶體,在將其轉變位一個可執行程式
①編譯:由編譯程式對使用者源程式編譯,形成若干個目標模組。
②連結:由連結程式將一組目標模組及其所需庫函式連結,形成一個完整的裝入模組。
③裝入:由裝入程式將裝入模組裝入記憶體。
1、程式的裝入(地址的變換)
①絕對裝入方式:(系統小,單道程式)編譯時知道程式將駐留在記憶體的位置,將產生絕對地址(即實體地址)的目的碼。絕對裝入程式按照已知地址將裝入模組裝入記憶體,不需對地址修改。
②可重定位裝入方式:裝入時,對目標程式中指令和資料的各地址重定位(虛擬地址到記憶體地址對映)。(靜態重定位)
③動態執行時的裝入方式:裝入程式將裝入模組裝入記憶體後,不對裝入模組進行地址變換(邏輯地址轉換為實體地址),而是推遲到程式真正要執行時才進行。(動態地址重定位)
2、程式的連結
①靜態連結方式:程式執行前,先將各目標模組及其所需庫函式連結成一個完整的裝配模組,以後不再拆開。
②裝入時動態連結:邊裝入邊連結。
③執行時動態連結:對某些目標模組,在程式執行中需要時,才對其進行連結。
3、連續分配管理方式:
①單一連續分配:(單道程式環境下)將記憶體分為系統區和使用者區,系統區僅供OS使用,使用者區僅裝使用者程式(獨佔)。
②固定分割槽分配:(多道程式環境下)將整個使用者空間劃分為若干個固定大小的區域。被劃分幾個分割槽便允許幾個程式併發執行而不會互相干擾。
③動態分割槽分配:根據程序的實際需要,動態地為之分配記憶體空間。(資料結構:空閒分割槽表、空閒分割槽鏈;演算法:順序式搜尋演算法;操作:分配記憶體、回收記憶體)
④動態可重定位分配:系統對記憶體進行“緊湊”使若干程式移位,用該程式在記憶體的新起始地址去置換原來的起始地址。(獲得新起始地址--動態重定位:系統中增設一個重定位暫存器存放程式和資料在記憶體的起始地址,程式執行時,真正訪問的記憶體地址是相對地址與重定位暫存器中的地址相加而形成的)
碎片:因為記憶體中出現不相鄰的小分割槽,而形成的不能被利用的小分割槽。
緊湊:通過移動記憶體中作業的位置,把原來多個分散的小分割槽拼接成一個大分割槽的方法。
4、動態分配分割槽演算法:基於順序搜尋
依次搜尋空閒分割槽鏈上的空閒分割槽,尋找一個其大小滿足要求的分割槽。
①首次適應(FF)演算法:要求空間分割槽鏈以地址遞增的次序連結。分配記憶體時,從鏈首開始順序查詢,直至大小滿足要求,按照作業大小從該空閒分區劃分記憶體空間給請求者,餘下的留在空閒鏈中。
②迴圈首次適應(NF)演算法:從上次找到的空閒分割槽的下一個空閒分割槽開始查詢。設定起始查尋指標,用於指示下一次起始查尋的空閒分割槽,採用迴圈查詢方式。
③最佳適應(BF)演算法:要求將所有的空閒分割槽按其容量以從小到大的順序形成一空閒分割槽鏈。(容易形成許多難以利用的碎片)
④最壞適應(WF)演算法:掃描整個空閒分割槽表或連結串列,挑選一個最大的空閒區,分割一部分儲存空間給作業使用。
5、離散儲存管理方式:
連續分配方式形成的許多“碎片”,不進行“緊湊”,利用離散的方式,將一個程序直接分散地裝入到許多不相鄰接的分割槽中。
①分頁:將使用者程式的地址空間分為若干個固定大小的區域(稱“頁”),相應地,記憶體空間也分為若干個物理塊(頁框),頁和塊的大小相同。離散分配。
②分段:將使用者程式的地址空間分為若干個大小不同的段,每段可定義一組相對完整的資訊,以段為單位離散分配。
③段頁式:分頁和分段相結合。(目前應用較廣泛)
6、分頁儲存管理方式(含義)
①頁面:將程序的邏輯地址空間分成若干個頁,併為各頁加以編號,從0開始,如第0頁、第1頁等。
②物理塊:將記憶體的實體地址空間分成若干個塊,併為各塊加以編號,從0開始,如0#塊、#1塊等。
③地址結構:前一部分為頁號P,後一部分為位(偏)移量W(頁內地址)。
④頁表:記錄相應頁在記憶體中對應的物理塊號,實現從頁號到物理塊號的地址對映。
7、程序在執行期間,需要對程式和資料的地址進行變換,即將使用者地址空間中的邏輯地址變換為記憶體空間中的實體地址。
地址變換方式:設定地址變化機構---利用頁面對映表(頁表),將邏輯地址中的頁號轉換為記憶體中的物理塊號,實現從邏輯地址到實體地址的轉換。
快表:在地址變換機構中增設一個具有並行查尋能力的特殊高速緩衝暫存器。
8、分段系統的基本原理:
使用者程式的地址空間分段,分段地址中的地址結構:段號-段內地址
①在系統中設定段表暫存器,用於存放段表始址和段表長度。
②邏輯地址中的段號S與段表長度TL比較。
③若S>TL,段號太大,訪問越界,產生越界中斷訊號。
④若S<TL,未越界,根據段表始址和該段段號,計算出該段對應段表項的位置,從中讀出該段在記憶體的起始地址。
⑤檢查比較段內地址d和該段的段長SL。
⑥若d>SL,發出越界中斷訊號。
⑦若d<SL,未越界,段基址+段內地址=要訪問的記憶體實體地址。
9、分頁系統和分段系統的區別:
①頁是資訊的物理單位,分頁系統是系統管理的需要,對使用者不可見。
段是資訊的邏輯單位,分段系統是為滿足使用者的需要。
②頁的大小固定且由系統決定。
段的長度不固定,決定於使用者所編寫的程式,根據資訊的性質劃分的。
③分頁的使用者程式地址空間是一維的。
分段的使用者程式地址空間是二維的。(分段是使用者的行為,程式設計師標示一個地址時,既需給出段名,也需給出段內地址。)
10、段頁式儲存管理的基本思想:
分頁系統能有效地提高記憶體的利用率;分段系統能反映程式的邏輯結構,便於段的共享與保護。將分頁與分段兩種儲存方式結合,形成段頁式儲存管理方式。
段頁式儲存管理系統,作業的地址空間首先被分成若干個邏輯分段,每段都有自己的段號,然後再將每段分成若干個大小相等的頁。對於記憶體空間也分成大小相等的頁,記憶體的分配以頁為單位。
1、程式執行時的區域性性原理:一較短時間內,程式執行僅侷限於某個部分,所訪問的儲存空間也僅侷限於某個區域。
①時間侷限性:程式中存在大量的迴圈操作。
②空間侷限性:程式的順序執行,導致訪問區域侷限。
2、虛擬儲存器
1、定義:具有請求調入功能和置換功能,能從邏輯上對記憶體容量加以擴充的一種儲存器系統。(邏輯容量由記憶體容量和外存容量之和決定,執行速度接近於記憶體速度。)
2、特徵:
①多次性:作業無須一次性地全部裝入記憶體執行,允許被分多次調入記憶體執行,即只需將當前要執行的那部分程式和資料裝入記憶體即可開始執行。(基礎:離散分配儲存管理方式)
②對換性:作業執行時程式和資料無須一直常駐記憶體,允許作業執行時進行換進、換出,即程序執行期間允許那些暫不使用的程式碼資料從記憶體調至外存的對換區(換出),待需要時再將其調回至記憶體(換進)。有效提高記憶體利用率。
③虛擬性:能夠從邏輯上擴充記憶體容量,虛擬記憶體容量(實際記憶體容量小),實現小記憶體執行大作業,改善記憶體利用率,提高併發程度,增加系統吞吐量。
虛擬儲存器的實現:請求分頁系統or請求分段系統
3、請求分頁系統:硬體支援、實現請求分頁的軟體
硬體支援:
①請求頁表機制:請求頁表增加四個欄位作為請求分頁的資料結構。(請求分頁系統中頁表諸項:頁號 物理塊號 狀態位P 訪問欄位A 修改位M 外存地址)
②缺頁中斷機構:每當使用者程式要訪問的頁面尚未調入記憶體時,產生缺頁中斷,以請求OS將所缺的頁調入記憶體。
③地址變換機構:分頁系統地址變換機構基礎上為實現虛擬儲存器,增加功能(如產生和處理缺頁中斷、從記憶體換出一頁……)。
4、頁面調入策略:
1、何時調入:預調頁策略(一次調入若干相鄰頁)、請求調頁策略(需要時提出請求)
2、從何處(外存)調入:對換區(存放對換頁面)、檔案區(存放檔案--未執行過的頁面)、UNIX方式(該系統允許頁面共享--程序請求頁面可能被其他程序調入記憶體,直接共享)
3、調入過程:
每當程式所要訪問的頁面未在記憶體(存在位為“0”)
①向CPU發缺頁中斷
②中斷處理程式保留CPU環境去分析中斷原因
③轉入缺頁中斷處理程式
④通過查詢頁表得到該頁所在外存物理塊
⑤若記憶體未滿,啟動磁碟I/O,調該缺頁入記憶體,修改頁表
⑥若記憶體已滿,置換演算法將記憶體中一頁換出,調該缺頁入記憶體,修改頁表
置該頁面存在位為“1”,頁表項寫入快表。
4、缺頁率:程序執行過程中,訪問頁面成功的次數S,訪問頁面失敗的次數F
缺頁率f=F/(S+F)
5、頁面置換演算法:
①最佳置換:淘汰的頁面是以後永不使用的或在未來很長時間裡不再被訪問的。(保證獲得最低的缺頁率,但目前無法預知未來,難以實現,作為標準用來評價其他演算法)
②先進先出:淘汰在記憶體中駐留時間最久的頁面。(效能較差)
③最近最久未使用:根據頁面調入記憶體後的使用情況,記錄一個頁面自上次被訪問以來所經歷的時間t,淘汰現有頁面中t值大的。
④Clock演算法:迴圈地檢查各頁面的應用情況,最近未用演算法。
⑤頁面緩衝演算法:採用可變分配和區域性置換方式的記憶體分配策略,系統為每個程序分配一定數目的物理塊的同時自己保留一部分空閒物理塊。在記憶體中設定一個空閒物理塊連結串列(用於分配給頻繁發生缺頁的程序)、設定一個修改頁面連結串列(已修改的頁面不立即換出至外存,而是將其所在物理塊掛在修改頁面連結串列的末尾)
6、“抖動”的含義:程序的大部分時間用於頁面的換進/換出,幾乎無法去做任何有效的工作。
原因:系統執行的程序過多,分配給每個程序的物理塊少,不能滿足程序正常執行的基本要求,執行過程中,頻繁缺頁。
1、I/O系統的基本功能:
①隱藏物理裝置的細節:對裝置加以適當的抽象,以隱藏掉物理裝置的實現細節。
②與裝置的無關性:對裝置抽象化使用。
③提高處理機和I/O裝置的利用率:儘可能地讓處理機和I/O裝置並行操作。
④對I/O裝置進行控制:驅動程式的功能。(控制方式:輪詢的可程式設計I/O方式、中斷的可程式設計I/O方式、直接儲存器訪問方式、I/O通道方式)
⑤確保對裝置的正確共享:獨佔裝置(印表機、磁帶機)、共享裝置(磁碟)
⑥錯誤處理:臨時性錯誤,重試操作;永續性錯誤,向上層報告。
2、I/O系統的層次結構:
①使用者層I/O軟體:用於實現使用者與I/O裝置互動。
②裝置獨立性軟體:用於實現使用者程式與裝置驅動器的統一介面、裝置命令、裝置保護、以及裝置分配與釋放等。(裝置無關的I/O軟體)
③裝置驅動程式:與硬體直接相關,用來具體實現系統對裝置發出的操作指令,驅動I/O裝置工作。
④中斷處理程式:用於保護被中斷程序的CPU環境,轉入相應的中斷處理程式進行處理,處理完後恢復現場,並返回到被中斷的程序。
⑤硬體:I/O裝置。
3、裝置控制器的基本功能:
①接收和識別命令:相應的控制暫存器,存放接收的命令和引數,進行譯碼。
②資料交換:CPU與控制器之間、控制器與I/O裝置之間,資料交換。
③標識和報告裝置的狀態:控制器記錄裝置的狀態供CPU瞭解。
④地址識別:控制器中配置地址譯碼器,識別其所控制的裝置的地址。
⑤資料緩衝區:主機速率高,I/O裝置速率低,暫存資料匹配速率再進行資料傳送。
⑥差錯控制:I/O裝置傳來的資料,裝置控制器進行差錯檢測,若錯,將差錯檢測碼置位,並向CPU報告,CPU處理,資料作廢,重新傳送。
4、I/O通道:特殊處理機,處於CPU和裝置控制器之間,具有執行I/O指令的能力,並通過執行通道程式來控制I/O操作。(指令型別單一、與CPU共享記憶體)
通道型別:
①位元組多路通道:按位元組交叉方式工作的通道。
②陣列選擇通道:按陣列方式進行資料傳送的陣列選擇通道,可連高速裝置。(易出現獨佔通道現象,利用率低)
③陣列多路通道:位元組多路通道和陣列選擇通道相結合,按陣列方式進行。
5、中斷:I/O裝置向CPU發來中斷訊號,CPU暫停正執行的程式,保護現場,轉而執行該I/O裝置的中斷處理程式,執行完後,返回斷點,繼續執行原程式。(外中斷)
中斷向量表:存放中斷處理程式的入口地址於中斷向量表中的表項中。每種裝置配以相應的中斷處理程式,一個裝置的中斷請求規定一箇中斷號,一箇中斷號直接對應中斷向量表中的一個表項。(I/O裝置發中斷請求訊號,中斷控制器確定中斷號,查詢中斷向量表,取其中斷處理程式的入口地址,轉入執行該程式)
6、中斷處理程式:
①測定是否有未響應的中斷訊號
②保護被中斷程序的CPU環境
③轉入相應的裝置處理程式
④中斷處理
⑤恢復CPU的現場並退出中斷
7、裝置驅動程式:I/O系統的高層與裝置控制器之間的通訊程式。
①接收軟體發來的命令和引數,將其中的抽象要求轉換為與裝置相關的低層操作系列。
②檢查使用者I/O請求的合法性,瞭解I/O裝置工作狀態,傳遞與I/O裝置操作有關的引數,設定裝置的工作方式。
③發出I/O命令,若裝置空閒,啟動I/O裝置,完成指定操作;若裝置忙碌,將請求塊掛在裝置佇列上等待。
④及時響應裝置控制器發來的中斷請求,根據其中斷型別,呼叫相應的中斷處理程式進行處理。
8、對I/O裝置的控制方式:
①使用輪詢的可程式設計I/O方式:不斷迴圈測試狀態暫存器中的忙/閒標誌busy。
②使用中斷的可程式設計I/O方式:CPU中斷處理,I/O裝置可與CPU並行工作。
③直接儲存器訪問方式:利用DMA控制器的直接儲存器訪問方式。
④I/O通道控制方式:DMA方式的發展,進一步減少CPU的干預,實現CPU、通道、I/O裝置三者的並行操作。
9、裝置無關軟體:應用程式中所用的裝置,不侷限於使用某個具體的物理裝置。
①裝置驅動程式的統一介面
②緩衝
③錯誤報告
④分配與釋放專用裝置
⑤提供與裝置無關的塊大小
10、Spooling技術--假離線技術
利用一道程式模擬離線輸入時的外圍控制機功能,把低速I/O裝置的資料傳送到高速磁碟上(離線輸入),再利用另一道程式離線輸出時的外圍控制機功能,把高速磁碟的資料傳送到低速輸出裝置上(離線輸出)。
在聯機情況(主機直接控制離線輸入、輸出)下實現的同時外圍操作的技術。
特點:
①提高I/O的速度。
②將獨佔裝置改造為共享裝置。
③實現虛擬裝置功能。
11、緩衝區:暫儲存區域,I/O裝置與處理機交換資料的場所。
型別:
①單緩衝區:每當使用者程序發出一I/O請求時,OS在記憶體中為其分配一緩衝區。
②雙緩衝區:生產者緩衝區、消費者緩衝區。
1、檔案系統:OS儲存和管理檔案資訊,方便使用者對檔案的存取、共享和保護等,有效提高系統資源的利用率。
2、檔案的型別:
1、按用途分類:
①系統檔案:系統軟體
②使用者檔案:使用者的檔案
③庫檔案:標準子例程及常用的例程
2、按檔案中資料的形式分類:
①原始檔:源程式和資料
②目標檔案:源程式經過編譯,尚未連結的目的碼“.obj”
③可執行檔案:目的碼經過連結後的檔案“.exe”
3、按存取控制屬性分類:
①只執行檔案
②只讀檔案
③讀寫檔案
4、按組織形式和處理方式分類:
①普通檔案:由ASCII碼或二進位制碼組成的字元檔案
②目錄檔案:由檔案目錄組成的檔案(檢索執行下屬檔案)
③特殊檔案:系統中的各類I/O裝置
3、檔案系統的層次結構:檔案系統介面>對物件進行操縱和管理的軟體集合>物件及其屬性
①檔案系統介面:命令介面、程式介面
②對物件進行操縱和管理的軟體集合:(核心)層次組織結構
③物件及其屬性:檔案、目錄、磁碟儲存空間
4、檔案操作:
①最基本的檔案操作:建立、刪除、讀、寫檔案,設定檔案的讀/寫位置
②檔案的“開啟”和“關閉”操作:使用者和檔案的連線建立和斷開
③允許使用者直接設定和獲得檔案的屬性,檔案共享
5、檔案的組織方式:
①順序檔案:一系列記錄按順序進行存取操作,檔案資訊佇列排列。
②索引檔案:建立對應關係的索引表,與主檔案構成索引檔案。
③索引順序:為每一個檔案建立一張索引表,為一組記錄中的第一個記錄建立一個索引表項。
6、檔案結構
1、檔案目錄:資料結構,用於標識系統中的檔案及其實體地址,供檢索時使用。
2、檔案控制塊FCB:基本資訊、存取控制資訊、使用資訊。
3、索引節點:每一個索引節點儲存檔案系統中的一個檔案系統物件的元資訊資料,但不包括資料內容或者檔名。
7、目錄分類:
1、簡單目錄:單級檔案目錄,在整個檔案系統中只建立一張目錄表,每個檔案佔一個目錄項---按名存取(目錄項:檔名、副檔名、檔案長度、檔案型別、檔案實體地址、檔案說明、狀態位)
2、兩級目錄:主檔案目錄(一級,使用者名稱、指向子目錄指標),使用者檔案目錄(二級,檔案控制塊)。
3、樹形目錄:樹形結構目錄,主目錄被稱為‘根目錄’(唯一),每個檔案和每個目錄只能有一個父目錄,子目錄被稱為‘樹節點’,資料檔案被稱為‘樹葉’。
8、路徑名:從主目錄開始,把全部目錄檔名與資料檔名依次用“/”連線起來,構成資料檔案唯一的路徑名。
1、當前目錄:當前訪問工作的目錄。
2、相對路徑名:從當前目錄開始直到資料檔案為止所構成的路徑名。
3、絕對路徑名:從根目錄開始的路徑名。
9、檔案共享方式:
①有向無迴圈圖:允許每個檔案都可以有多個父目錄。
②索引節點:檔案的實體地址及其他的檔案屬性等資訊放在索引節點中,檔案目錄中只設置檔名及指向相應索引節點的指標。
③符號連結:連結父目錄。
10、影響檔案安全的因素:人為、系統、自然
確保檔案系統的安全性:存取控制機制、系統容錯機制、建立後備系統
基於《計算機作業系統》(第四版)總結:OS引論、程序描述與控制、處理機排程與死鎖、儲存器管理、虛擬儲存器、輸入輸出系統、檔案系統
1、目標:方便性、有效性、可擴充性、開放性
2、作用:
1、作為使用者與計算機硬體系統之間的介面
2、作為計算機系統資源的管理者
3、實現對計算機資源的抽象
3、發展過程:
1、人工操作方式:使用者獨佔全機,CPU等待人工操作--帶(卡)裝卸
2、離線輸入/輸出方式:事先將裝有使用者程式和資料的紙帶裝入紙帶輸入機,外圍機控制,把紙帶內容輸入到磁帶上(類似於磁碟),CPU需要時,從磁帶高速調入記憶體。反之類同。
優點:減少了CPU的空閒時間、提高了I/O速度
3、單道批處理:首先監督程式將磁帶第一個作業裝入記憶體,執行控制權在該作業,處理完改作業後,控制權回到監督程式,然後進行重複過程,系統自動對作業成批處理。(記憶體始終只保持一道作業---單道批處理)
缺點:記憶體浪費,不能充分利用系統資源
4、多道批處理:所提交的作業先存入外存,排成“後備佇列”,再由作業排程程式按演算法從佇列調若干作業入記憶體。
優缺點:資源利用率高、系統吞吐量大、平均週轉時間長、無互動能力
5、分時系統:作業直接進入記憶體,採用輪轉執行方式,系統配置一個多路卡(實現分時多路複用),及時接收使用者終端命令(資料)。
特徵:多路性、獨立性、及時性、互動性
6、實時系統:系統能及時響應外部事件的請求,在規定的時間內完成對該事件的處理,並控制所有實時任務的協調一致的執行。
特徵:多路性(週期性資訊採集,多個物件或執行機構進行控制)、獨立性、及時性、互動性、可靠性(多級容錯措施)
4、基本特徵:
1、併發:引入程序,並行併發,系統程式獨立併發執行,提高資源利用率,增加系統吞吐量。
2、共享:
①互斥共享,一段時間內只允許一個程序訪問資源(臨界資源)。
②同時共享,允許一段時間內多程序“同時”訪問。
3、虛擬:提高通訊通道的利用率--“虛擬”技術,通過“空分複用”或“時分複用”,將一條物理通道(實)變為若干條邏輯通道(虛)。
空分複用:利用儲存器的空閒空間分割槽域存放和執行其他的多道程式
時分複用:利用處理機的空閒時間執行其他程式
4、非同步:程序以不可預知的速度向前推進。
5、主要功能:
1、處理機管理功能:
①程序控制:建立和撤銷程序,分配資源、資源回收,控制程序執行過程中的狀態轉換。
②程序同步:多程序執行進行協調--程序互斥(臨界資源上鎖)、程序同步。
③程序通訊:實現相互合作之間的程序的資訊交換。
④排程:作業排程,程序排程。
2、儲存器管理功能:為多道程式的執行提供良好的環境,提高儲存器的利用率,方便使用者使用,並能從邏輯上擴充記憶體。
①記憶體分配:靜態分配、動態分配。
②記憶體保護:各在其記憶體空間內執行(設兩界限暫存器),互不干擾。
③地址對映:地址空間中的邏輯地址轉換為記憶體空間中與之對應的實體地址。
④記憶體擴充:藉助於虛擬儲存技術,邏輯上擴充記憶體容量。
3、裝置管理功能:完成使用者程序提出的I/O請求,為其分配所需I/O裝置,完成指定I/O操作;提高CPU和I/O裝置的利用率,提高I/O速度,方便使用者使用I/O裝置。
①緩衝管理
②裝置分配
③裝置處理:裝置驅動程式,用於實現CPU和裝置控制器之間的通訊。
4、檔案管理功能:對使用者檔案和系統檔案進行管理以方便使用者使用,並保證檔案的安全性。
①檔案儲存空間的管理:為檔案分配合理外存空間,檔案儲存空間的使用情況。
②目錄管理:為每個檔案建立一個目錄項。
③檔案的讀/寫管理和保護
5、作業系統與使用者之間的介面:使用者介面,程式介面
6、微核心作業系統:
①核心足夠小
②基於客戶/伺服器
③“機制與策略分離”原理
④面向物件技術
1、前趨圖:用於描述程式執行先後順序 P1->P2,是指一個有向無迴圈圖。
程式的順序執行:按照某種先後次序順序執行,僅當前一程式執行完後,才執行後一段程式。
順序性、封閉性、可在現性
輸入操作I->計算操作C->列印操作P
程式的併發執行:間斷性、失去封閉性、不可再現性
2、程序
1、定義:
程式的一次執行,順序執行時所發生的活動,是具有獨立功能的程式在一個數據集合上的執行過程,系統資源調配的獨立單位。
2、實體:
即程序,由程式段、相關的資料段和PCB組成,所謂建立和撤銷程序實際是對其中的PCB的建立和撤銷。(PCB:程序控制塊Process Control Block)
3、特徵:
①動態性 ②併發性 ③獨立性 ④非同步性
3、程序的三種基本狀態:就緒、執行、阻塞狀態(阻塞原因:I/O請求、申請緩衝區失敗等)
1、程序狀態的轉換:
2、程序的掛起suspend:程序處於靜止狀態,暫停執行(執行狀態下掛起),暫不接受排程(就緒狀態下掛起)。是基於系統和使用者的需求。
3、程序的啟用active:先將程序從外存調入記憶體,檢查程序現行狀態,靜止-->活動
4、程序控制塊PCB:
1、記錄系統所需,用於描述程序的當前情況以及管理程序執行的全部資訊,是作業系統中記錄型資料結構。
2、作用:一個在多道程式環境下不能獨立執行的程式成為一個能獨立執行的基本單位,一個能與其他程序併發執行的程序。
3、三種組織方式:
①線性方式:將系統中所有的PCB都組織在一張線性表中,查表
②連結方式:把具有相同狀態程序的PCB分別通過PCB中的連結字連結成一個佇列
③索引方式:根據所有程序狀態的不同,建立索引表
5、併發程序間的相互制約關係:
①間接相互制約關係:程序間對類臨界資源的間接相互制約關係,為保證程序有序執行,此類資源必須由系統實施統一分配(即使用者使用前,應先提出申請)。
②直接相互制約關係:源於某些程序(隸屬於同一應用程式)之間為完成同一項任務而相互合作(相互間喚醒啟用--制約)。
6、臨界資源:
一次僅允許一個程序使用的資源(如印表機、磁帶機等),程序間互斥來實現對臨界資源的共享。
臨界區:每個程序中訪問臨界資源的那段程式碼,程序互斥地進入自己的臨界區,對臨界資源訪問
①程序進入臨界區前,對臨界資源進行檢查是否正被訪問---進入區
②若未被訪問,進入臨界區對該資源訪問,並設定“正被訪問”的標誌---臨界區
③臨界區後面程式碼,將臨界區“正被訪問”的標誌恢復為“未被訪問”的標誌---退出區
④除進入區(entry)、臨界區(critical)、退出區(exit)程式碼,其餘程式碼---剩餘區
7、同步機制應遵循的原則:
1、為實現程序互斥地進入自己的臨界區
2、空閒讓進、忙則等待、有限等待、讓權等待
8、訊號量機制:解決程序同步問題(程序同步工具)
①整型訊號量:表示資源數目的整型量(S),僅原子操作wait(S)和signal(S)可訪問,執行時不可中斷。(分別被稱為P、V操作)
②記錄型訊號量:在代表資源數目的整型變數value基礎,增加一個程序連結串列指標list,用於連結所有等待程序。不存在“忙等”的程序同步機制。
③AND型訊號量:將程序執行所需所有資源,一次性全部分配給程序,待程序使用完後再一起釋放。
④訊號量集:AND型訊號量基礎上,對程序所申請的所有資源以及每類資源不同的資源需求量,在一次P、V原語操作中完成申請或釋放。
9、管程
1、管程機制:
①共享資源的資料結構
②對該共享資料結構實施操作的一組過程所組成的資源管理程式,共同構成的一個作業系統的資源管理模組。
“一個管程定義了一個數據結構和能為併發程序所執行的一組操作,這組操作能同步程序和改變管程中的資料。”
2、管程的組成:
①管程的名稱
②區域性於管程的共享資料結構說明
③對該資料結構進行操作的一組過程
④對區域性於管程的共享資料設定初始值的語句
管程被請求和釋放資源的程序所呼叫。
10、經典程序同步問題(使用訊號量方法解決)
生產者-消費者問題
哲學家進餐問題
讀者-寫者問題
11、程序通訊的型別:
①共享儲存器系統:相互通訊的程序“共享資料結構”或“共享儲存區”。
②管道通訊系統:“管道”(pipe)是指用於連線一個讀程序和一個寫程序以實現彼此間通訊的一個共享檔案。借花獻佛-管道通訊。
③訊息傳遞系統:將通訊上網資料封裝在訊息中,通過一組通訊命令在程序間傳遞訊息,完成程序間的資料交換。直接通訊方式和間接(郵箱)通訊方式。
④客戶機-伺服器系統:套接字、遠端過程呼叫、遠端方法呼叫。
12、執行緒:“輕級程序”,作為排程和分派的基本單位,是程式執行流的最小單位。
程序與執行緒間的異同:
①排程性:執行緒是作為排程和分派的基本單位,程序只作為資源擁有的基本單位。
②執行緒上下文切換比程序上下文切換快得多。
③併發性:程序間可併發執行,執行緒(無論在同一程序與否)間也可併發執行。
④擁有資源:程序擁有系統資源,執行緒僅有一點必不可少、保證獨立執行的資源。多個執行緒可共享本程序所擁有的資源。
⑤獨立性:同一程序中的不同執行緒之間的獨立比不同程序之間的獨立性低得多。
⑥系統消耗:程序的建立或撤銷的系統消耗“明顯大於”執行緒的建立或撤銷的系統消耗。
1、處理機排程的層次:
①高階排程:(長程排程或作業排程),排程物件是作業,主要功能是根據演算法決定將外存後備佇列中的某些作業調入記憶體,建立程序、分配必要資源,並將入就緒佇列。
②低階排程:(短程排程或程序排程),排程物件是程序,主要功能是根據演算法決定記憶體就緒佇列中的某個程序應獲得處理機,並由分派程式給選中的程序分派處理機。
③中級排程:(記憶體排程),記憶體中暫不能執行的程序調至外存(掛起狀態),待條件齊全且記憶體空閒,中級排程,就緒程序重回記憶體(就緒狀態)入就緒佇列。
2、處理機排程演算法的目標:
①共同目標:資源利用率、公平性、平衡性、策略強制執行
②批處理系統的目標:平均週轉時間、系統吞吐量高、處理機利用率高
③分時系統的目標:響應時間快、均衡性
④實時系統的目標:截止時間的保證、可預測性
3、作業:通常的程式+資料+作業說明書。
1、作業控制塊:作業標識+使用者名稱稱+使用者賬號+作業型別+作業狀態+排程資訊+資源需求+資源使用情況+……。管理和排程作業。
2、作業執行的三個階段(三種狀態):收容階段(後備狀態)、執行階段(執行狀態)、完成階段(完成狀態)。
4、作業排程演算法:
①先來先服務(FCFS):先後次序進行排程(作業排程、程序排程)。
②短作業優先(SJF):作業(或程序)越短(估計執行時間短),優先順序越高。
③高響應比優先順序排程演算法:既考慮作業的等待時間,有考慮作業的執行時間,既照顧短作業,又不致使長作業的等待時間過長,從而改善處理機排程的效能。
R p優先順序=(等待時間+要求服務時間)/要求服務時間=響應時間/要求服務時間
5、程序排程機制:
①任務:儲存處理機的現場資訊、按某種演算法選取程序、把處理機分配給程序
②基本部分:排隊器、分派器、上下文切換器
③程序排程方式:非搶佔方式、搶佔方式
6、輪轉排程演算法原理:
根據FCFS,使用輪轉法處理,讓每一個就緒佇列上的程序每次執行一個時間片(若就緒佇列上有n個程序,每個程序每次大約獲得1/n的處理機時間)。
時間的片的確定:略大於一次典型互動所需時間。
7、多級反饋佇列排程演算法:
①設定多個就緒佇列:每個佇列賦予不同的優先順序、不同大小的執行時間片。
②每個佇列都採用FCFS演算法
③按佇列優先順序排程
8、最早截止時間優先EDF(earliest deadline first)排程演算法:根據任務的截止時間確定優先順序,截止時間愈早的優先順序愈高,具有最早截止時間的任務排佇列首,優先分配處理機。
最低鬆弛度優先LLF(least laxity first)排程演算法:根據任務的緊急(鬆弛)程度,緊急程度愈高的優先順序愈高,優先執行處理。
9、死鎖
1、死鎖的定義:如果一組程序中的‘每一個程序’都在等待僅由該組程序中的‘其它程序’才能引發的‘事件’,那麼該組程序是死鎖的(Deadlock)。
2、死鎖的必要條件(缺一不可):
①互斥條件:程序分配到的資源互斥性使用,資源只能被一個程序佔用,其他請求該資源的程序只能等到被用完釋放。
②請求和保持條件:程序已佔有某資源,又提出新資源請求,而該資源被佔,則程序請求被阻塞,已得資源保持。
③不可搶佔條件:程序已得資源不可被搶佔。
④迴圈等待條件:存在一個程序的資源迴圈鏈。
3、死鎖的處理方法:
①預防死鎖:設定限制條件,破壞死鎖四個必要條件。
②避免死鎖:在資源的動態分配過程中,去防止系統進入不安全狀態。
③檢測死鎖:允許程序死鎖,但檢測機構檢測死鎖發生,措施解決。
④解除死鎖:撤銷某些程序,回收它們的資源分配給處於阻塞狀態的程序,使其能繼續執行。
10、預防死鎖的方法:破壞死鎖四個必要條件
互斥條件是非共享裝置所必須的----主要破壞其他三條件
①破壞“請求和保持”條件:第一種協議,所有程序執行前申請過程所需的全部資源;第二種協議,允許一個程序獲得初期所需資源便開始執行,過程中逐步釋放分配給自己的且用畢的資源,再請求新的所需資源。
②破壞“不可搶佔”條件:新的資源請求得不到滿足時,釋放已經保持的所有資源,待需之時再申請。
③破壞“迴圈等待”條件:對系統所有資源型別進行線性排序,並賦予不同的序號。
11、安全序列:(P1,P2,……,P n)
安全狀態:系統能按某種程序推進順序(P1,P2,……,P n)為每個程序Pi分配其所需資源,直至滿足每個程序對資源的最大需求,使每個程序都可以順利的完成。
12、利用銀行家演算法避免死鎖的方法
1、儲存器的層次結構:
①CPU暫存器:暫存器
②主存(記憶體):快取記憶體、主儲存器、磁碟快取
③輔存:固定磁碟,可移動儲存介質
可執行儲存器:暫存器、主存(掉電資訊丟失)---屬於作業系統儲存管理負責分配、回收,以及提供儲存層次間資料移動的管理機制。
2、使用者程式在系統中執行,先將其裝入記憶體,在將其轉變位一個可執行程式
①編譯:由編譯程式對使用者源程式編譯,形成若干個目標模組。
②連結:由連結程式將一組目標模組及其所需庫函式連結,形成一個完整的裝入模組。
③裝入:由裝入程式將裝入模組裝入記憶體。
1、程式的裝入(地址的變換)
①絕對裝入方式:(系統小,單道程式)編譯時知道程式將駐留在記憶體的位置,將產生絕對地址(即實體地址)的目的碼。絕對裝入程式按照已知地址將裝入模組裝入記憶體,不需對地址修改。
②可重定位裝入方式:裝入時,對目標程式中指令和資料的各地址重定位(虛擬地址到記憶體地址對映)。(靜態重定位)
③動態執行時的裝入方式:裝入程式將裝入模組裝入記憶體後,不對裝入模組進行地址變換(邏輯地址轉換為實體地址),而是推遲到程式真正要執行時才進行。(動態地址重定位)
2、程式的連結
①靜態連結方式:程式執行前,先將各目標模組及其所需庫函式連結成一個完整的裝配模組,以後不再拆開。
②裝入時動態連結:邊裝入邊連結。
③執行時動態連結:對某些目標模組,在程式執行中需要時,才對其進行連結。
3、連續分配管理方式:
①單一連續分配:(單道程式環境下)將記憶體分為系統區和使用者區,系統區僅供OS使用,使用者區僅裝使用者程式(獨佔)。
②固定分割槽分配:(多道程式環境下)將整個使用者空間劃分為若干個固定大小的區域。被劃分幾個分割槽便允許幾個程式併發執行而不會互相干擾。
③動態分割槽分配:根據程序的實際需要,動態地為之分配記憶體空間。(資料結構:空閒分割槽表、空閒分割槽鏈;演算法:順序式搜尋演算法;操作:分配記憶體、回收記憶體)
④動態可重定位分配:系統對記憶體進行“緊湊”使若干程式移位,用該程式在記憶體的新起始地址去置換原來的起始地址。(獲得新起始地址--動態重定位:系統中增設一個重定位暫存器存放程式和資料在記憶體的起始地址,程式執行時,真正訪問的記憶體地址是相對地址與重定位暫存器中的地址相加而形成的)
碎片:因為記憶體中出現不相鄰的小分割槽,而形成的不能被利用的小分割槽。
緊湊:通過移動記憶體中作業的位置,把原來多個分散的小分割槽拼接成一個大分割槽的方法。
4、動態分配分割槽演算法:基於順序搜尋
依次搜尋空閒分割槽鏈上的空閒分割槽,尋找一個其大小滿足要求的分割槽。
①首次適應(FF)演算法:要求空間分割槽鏈以地址遞增的次序連結。分配記憶體時,從鏈首開始順序查詢,直至大小滿足要求,按照作業大小從該空閒分區劃分記憶體空間給請求者,餘下的留在空閒鏈中。
②迴圈首次適應(NF)演算法:從上次找到的空閒分割槽的下一個空閒分割槽開始查詢。設定起始查尋指標,用於指示下一次起始查尋的空閒分割槽,採用迴圈查詢方式。
③最佳適應(BF)演算法:要求將所有的空閒分割槽按其容量以從小到大的順序形成一空閒分割槽鏈。(容易形成許多難以利用的碎片)
④最壞適應(WF)演算法:掃描整個空閒分割槽表或連結串列,挑選一個最大的空閒區,分割一部分儲存空間給作業使用。
5、離散儲存管理方式:
連續分配方式形成的許多“碎片”,不進行“緊湊”,利用離散的方式,將一個程序直接分散地裝入到許多不相鄰接的分割槽中。
①分頁:將使用者程式的地址空間分為若干個固定大小的區域(稱“頁”),相應地,記憶體空間也分為若干個物理塊(頁框),頁和塊的大小相同。離散分配。
②分段:將使用者程式的地址空間分為若干個大小不同的段,每段可定義一組相對完整的資訊,以段為單位離散分配。
③段頁式:分頁和分段相結合。(目前應用較廣泛)
6、分頁儲存管理方式(含義)
①頁面:將程序的邏輯地址空間分成若干個頁,併為各頁加以編號,從0開始,如第0頁、第1頁等。
②物理塊:將記憶體的實體地址空間分成若干個塊,併為各塊加以編號,從0開始,如0#塊、#1塊等。
③地址結構:前一部分為頁號P,後一部分為位(偏)移量W(頁內地址)。
④頁表:記錄相應頁在記憶體中對應的物理塊號,實現從頁號到物理塊號的地址對映。
7、程序在執行期間,需要對程式和資料的地址進行變換,即將使用者地址空間中的邏輯地址變換為記憶體空間中的實體地址。
地址變換方式:設定地址變化機構---利用頁面對映表(頁表),將邏輯地址中的頁號轉換為記憶體中的物理塊號,實現從邏輯地址到實體地址的轉換。
快表:在地址變換機構中增設一個具有並行查尋能力的特殊高速緩衝暫存器。
8、分段系統的基本原理:
使用者程式的地址空間分段,分段地址中的地址結構:段號-段內地址
①在系統中設定段表暫存器,用於存放段表始址和段表長度。
②邏輯地址中的段號S與段表長度TL比較。
③若S>TL,段號太大,訪問越界,產生越界中斷訊號。
④若S<TL,未越界,根據段表始址和該段段號,計算出該段對應段表項的位置,從中讀出該段在記憶體的起始地址。
⑤檢查比較段內地址d和該段的段長SL。
⑥若d>SL,發出越界中斷訊號。
⑦若d<SL,未越界,段基址+段內地址=要訪問的記憶體實體地址。
9、分頁系統和分段系統的區別:
①頁是資訊的物理單位,分頁系統是系統管理的需要,對使用者不可見。
段是資訊的邏輯單位,分段系統是為滿足使用者的需要。
②頁的大小固定且由系統決定。
段的長度不固定,決定於使用者所編寫的程式,根據資訊的性質劃分的。
③分頁的使用者程式地址空間是一維的。
分段的使用者程式地址空間是二維的。(分段是使用者的行為,程式設計師標示一個地址時,既需給出段名,也需給出段內地址。)
10、段頁式儲存管理的基本思想:
分頁系統能有效地提高記憶體的利用率;分段系統能反映程式的邏輯結構,便於段的共享與保護。將分頁與分段兩種儲存方式結合,形成段頁式儲存管理方式。
段頁式儲存管理系統,作業的地址空間首先被分成若干個邏輯分段,每段都有自己的段號,然後再將每段分成若干個大小相等的頁。對於記憶體空間也分成大小相等的頁,記憶體的分配以頁為單位。
1、程式執行時的區域性性原理:一較短時間內,程式執行僅侷限於某個部分,所訪問的儲存空間也僅侷限於某個區域。
①時間侷限性:程式中存在大量的迴圈操作。
②空間侷限性:程式的順序執行,導致訪問區域侷限。
2、虛擬儲存器
1、定義:具有請求調入功能和置換功能,能從邏輯上對記憶體容量加以擴充的一種儲存器系統。(邏輯容量由記憶體容量和外存容量之和決定,執行速度接近於記憶體速度。)
2、特徵:
①多次性:作業無須一次性地全部裝入記憶體執行,允許被分多次調入記憶體執行,即只需將當前要執行的那部分程式和資料裝入記憶體即可開始執行。(基礎:離散分配儲存管理方式)
②對換性:作業執行時程式和資料無須一直常駐記憶體,允許作業執行時進行換進、換出,即程序執行期間允許那些暫不使用的程式碼資料從記憶體調至外存的對換區(換出),待需要時再將其調回至記憶體(換進)。有效提高記憶體利用率。
③虛擬性:能夠從邏輯上擴充記憶體容量,虛擬記憶體容量(實際記憶體容量小),實現小記憶體執行大作業,改善記憶體利用率,提高併發程度,增加系統吞吐量。
虛擬儲存器的實現:請求分頁系統or請求分段系統
3、請求分頁系統:硬體支援、實現請求分頁的軟體
硬體支援:
①請求頁表機制:請求頁表增加四個欄位作為請求分頁的資料結構。(請求分頁系統中頁表諸項:頁號 物理塊號 狀態位P 訪問欄位A 修改位M 外存地址)
②缺頁中斷機構:每當使用者程式要訪問的頁面尚未調入記憶體時,產生缺頁中斷,以請求OS將所缺的頁調入記憶體。
③地址變換機構:分頁系統地址變換機構基礎上為實現虛擬儲存器,增加功能(如產生和處理缺頁中斷、從記憶體換出一頁……)。
4、頁面調入策略:
1、何時調入:預調頁策略(一次調入若干相鄰頁)、請求調頁策略(需要時提出請求)
2、從何處(外存)調入:對換區(存放對換頁面)、檔案區(存放檔案--未執行過的頁面)、UNIX方式(該系統允許頁面共享--程序請求頁面可能被其他程序調入記憶體,直接共享)
3、調入過程:
每當程式所要訪問的頁面未在記憶體(存在位為“0”)
①向CPU發缺頁中斷
②中斷處理程式保留CPU環境去分析中斷原因
③轉入缺頁中斷處理程式
④通過查詢頁表得到該頁所在外存物理塊
⑤若記憶體未滿,啟動磁碟I/O,調該缺頁入記憶體,修改頁表
⑥若記憶體已滿,置換演算法將記憶體中一頁換出,調該缺頁入記憶體,修改頁表
置該頁面存在位為“1”,頁表項寫入快表。
4、缺頁率:程序執行過程中,訪問頁面成功的次數S,訪問頁面失敗的次數F
缺頁率f=F/(S+F)
5、頁面置換演算法:
①最佳置換:淘汰的頁面是以後永不使用的或在未來很長時間裡不再被訪問的。(保證獲得最低的缺頁率,但目前無法預知未來,難以實現,作為標準用來評價其他演算法)
②先進先出:淘汰在記憶體中駐留時間最久的頁面。(效能較差)
③最近最久未使用:根據頁面調入記憶體後的使用情況,記錄一個頁面自上次被訪問以來所經歷的時間t,淘汰現有頁面中t值大的。
④Clock演算法:迴圈地檢查各頁面的應用情況,最近未用演算法。
⑤頁面緩衝演算法:採用可變分配和區域性置換方式的記憶體分配策略,系統為每個程序分配一定數目的物理塊的同時自己保留一部分空閒物理塊。在記憶體中設定一個空閒物理塊連結串列(用於分配給頻繁發生缺頁的程序)、設定一個修改頁面連結串列(已修改的頁面不立即換出至外存,而是將其所在物理塊掛在修改頁面連結串列的末尾)
6、“抖動”的含義:程序的大部分時間用於頁面的換進/換出,幾乎無法去做任何有效的工作。
原因:系統執行的程序過多,分配給每個程序的物理塊少,不能滿足程序正常執行的基本要求,執行過程中,頻繁缺頁。
1、I/O系統的基本功能:
①隱藏物理裝置的細節:對裝置加以適當的抽象,以隱藏掉物理裝置的實現細節。
②與裝置的無關性:對裝置抽象化使用。
③提高處理機和I/O裝置的利用率:儘可能地讓處理機和I/O裝置並行操作。
④對I/O裝置進行控制:驅動程式的功能。(控制方式:輪詢的可程式設計I/O方式、中斷的可程式設計I/O方式、直接儲存器訪問方式、I/O通道方式)
⑤確保對裝置的正確共享:獨佔裝置(印表機、磁帶機)、共享裝置(磁碟)
⑥錯誤處理:臨時性錯誤,重試操作;永續性錯誤,向上層報告。
2、I/O系統的層次結構:
①使用者層I/O軟體:用於實現使用者與I/O裝置互動。
②裝置獨立性軟體:用於實現使用者程式與裝置驅動器的統一介面、裝置命令、裝置保護、以及裝置分配與釋放等。(裝置無關的I/O軟體)
③裝置驅動程式:與硬體直接相關,用來具體實現系統對裝置發出的操作指令,驅動I/O裝置工作。
④中斷處理程式:用於保護被中斷程序的CPU環境,轉入相應的中斷處理程式進行處理,處理完後恢復現場,並返回到被中斷的程序。
⑤硬體:I/O裝置。
3、裝置控制器的基本功能:
①接收和識別命令:相應的控制暫存器,存放接收的命令和引數,進行譯碼。
②資料交換:CPU與控制器之間、控制器與I/O裝置之間,資料交換。
③標識和報告裝置的狀態:控制器記錄裝置的狀態供CPU瞭解。
④地址識別:控制器中配置地址譯碼器,識別其所控制的裝置的地址。
⑤資料緩衝區:主機速率高,I/O裝置速率低,暫存資料匹配速率再進行資料傳送。
⑥差錯控制:I/O裝置傳來的資料,裝置控制器進行差錯檢測,若錯,將差錯檢測碼置位,並向CPU報告,CPU處理,資料作廢,重新傳送。
4、I/O通道:特殊處理機,處於CPU和裝置控制器之間,具有執行I/O指令的能力,並通過執行通道程式來控制I/O操作。(指令型別單一、與CPU共享記憶體)
通道型別:
①位元組多路通道:按位元組交叉方式工作的通道。
②陣列選擇通道:按陣列方式進行資料傳送的陣列選擇通道,可連高速裝置。(易出現獨佔通道現象,利用率低)
③陣列多路通道:位元組多路通道和陣列選擇通道相結合,按陣列方式進行。
5、中斷:I/O裝置向CPU發來中斷訊號,CPU暫停正執行的程式,保護現場,轉而執行該I/O裝置的中斷處理程式,執行完後,返回斷點,繼續執行原程式。(外中斷)
中斷向量表:存放中斷處理程式的入口地址於中斷向量表中的表項中。每種裝置配以相應的中斷處理程式,一個裝置的中斷請求規定一箇中斷號,一箇中斷號直接對應中斷向量表中的一個表項。(I/O裝置發中斷請求訊號,中斷控制器確定中斷號,查詢中斷向量表,取其中斷處理程式的入口地址,轉入執行該程式)
6、中斷處理程式:
①測定是否有未響應的中斷訊號
②保護被中斷程序的CPU環境
③轉入相應的裝置處理程式
④中斷處理
⑤恢復CPU的現場並退出中斷
7、裝置驅動程式:I/O系統的高層與裝置控制器之間的通訊程式。
①接收軟體發來的命令和引數,將其中的抽象要求轉換為與裝置相關的低層操作系列。
②檢查使用者I/O請求的合法性,瞭解I/O裝置工作狀態,傳遞與I/O裝置操作有關的引數,設定裝置的工作方式。
③發出I/O命令,若裝置空閒,啟動I/O裝置,完成指定操作;若裝置忙碌,將請求塊掛在裝置佇列上等待。
④及時響應裝置控制器發來的中斷請求,根據其中斷型別,呼叫相應的中斷處理程式進行處理。
8、對I/O裝置的控制方式:
①使用輪詢的可程式設計I/O方式:不斷迴圈測試狀態暫存器中的忙/閒標誌busy。
②使用中斷的可程式設計I/O方式:CPU中斷處理,I/O裝置可與CPU並行工作。
③直接儲存器訪問方式:利用DMA控制器的直接儲存器訪問方式。
④I/O通道控制方式:DMA方式的發展,進一步減少CPU的干預,實現CPU、通道、I/O裝置三者的並行操作。
9、裝置無關軟體:應用程式中所用的裝置,不侷限於使用某個具體的物理裝置。
①裝置驅動程式的統一介面
②緩衝
③錯誤報告
④分配與釋放專用裝置
⑤提供與裝置無關的塊大小
10、Spooling技術--假離線技術
利用一道程式模擬離線輸入時的外圍控制機功能,把低速I/O裝置的資料傳送到高速磁碟上(離線輸入),再利用另一道程式離線輸出時的外圍控制機功能,把高速磁碟的資料傳送到低速輸出裝置上(離線輸出)。
在聯機情況(主機直接控制離線輸入、輸出)下實現的同時外圍操作的技術。
特點:
①提高I/O的速度。
②將獨佔裝置改造為共享裝置。
③實現虛擬裝置功能。
11、緩衝區:暫儲存區域,I/O裝置與處理機交換資料的場所。
型別:
①單緩衝區:每當使用者程序發出一I/O請求時,OS在記憶體中為其分配一緩衝區。
②雙緩衝區:生產者緩衝區、消費者緩衝區。
1、檔案系統:OS儲存和管理檔案資訊,方便使用者對檔案的存取、共享和保護等,有效提高系統資源的利用率。
2、檔案的型別:
1、按用途分類:
①系統檔案:系統軟體
②使用者檔案:使用者的檔案
③庫檔案:標準子例程及常用的例程
2、按檔案中資料的形式分類:
①原始檔:源程式和資料
②目標檔案:源程式經過編譯,尚未連結的目的碼“.obj”
③可執行檔案:目的碼經過連結後的檔案“.exe”
3、按存取控制屬性分類:
①只執行檔案
②只讀檔案
③讀寫檔案
4、按組織形式和處理方式分類:
①普通檔案:由ASCII碼或二進位制碼組成的字元檔案
②目錄檔案:由檔案目錄組成的檔案(檢索執行下屬檔案)
③特殊檔案:系統中的各類I/O裝置
3、檔案系統的層次結構:檔案系統介面>對物件進行操縱和管理的軟體集合>物件及其屬性
①檔案系統介面:命令介面、程式介面
②對物件進行操縱和管理的軟體集合:(核心)層次組織結構
③物件及其屬性:檔案、目錄、磁碟儲存空間
4、檔案操作:
①最基本的檔案操作:建立、刪除、讀、寫檔案,設定檔案的讀/寫位置
②檔案的“開啟”和“關閉”操作:使用者和檔案的連線建立和斷開
③允許使用者直接設定和獲得檔案的屬性,檔案共享
5、檔案的組織方式:
①順序檔案:一系列記錄按順序進行存取操作,檔案資訊佇列排列。
②索引檔案:建立對應關係的索引表,與主檔案構成索引檔案。
③索引順序:為每一個檔案建立一張索引表,為一組記錄中的第一個記錄建立一個索引表項。
6、檔案結構
1、檔案目錄:資料結構,用於標識系統中的檔案及其實體地址,供檢索時使用。
2、檔案控制塊FCB:基本資訊、存取控制資訊、使用資訊。
3、索引節點:每一個索引節點儲存檔案系統中的一個檔案系統物件的元資訊資料,但不包括資料內容或者檔名。
7、目錄分類:
1、簡單目錄:單級檔案目錄,在整個檔案系統中只建立一張目錄表,每個檔案佔一個目錄項---按名存取(目錄項:檔名、副檔名、檔案長度、檔案型別、檔案實體地址、檔案說明、狀態位)
2、兩級目錄:主檔案目錄(一級,使用者名稱、指向子目錄指標),使用者檔案目錄(二級,檔案控制塊)。
3、樹形目錄:樹形結構目錄,主目錄被稱為‘根目錄’(唯一),每個檔案和每個目錄只能有一個父目錄,子目錄被稱為‘樹節點’,資料檔案被稱為‘樹葉’。
8、路徑名:從主目錄開始,把全部目錄檔名與資料檔名依次用“/”連線起來,構成資料檔案唯一的路徑名。
1、當前目錄:當前訪問工作的目錄。
2、相對路徑名:從當前目錄開始直到資料檔案為止所構成的路徑名。
3、絕對路徑名:從根目錄開始的路徑名。
9、檔案共享方式:
①有向無迴圈圖:允許每個檔案都可以有多個父目錄。
②索引節點:檔案的實體地址及其他的檔案屬性等資訊放在索引節點中,檔案目錄中只設置檔名及指向相應索引節點的指標。
③符號連結:連結父目錄。
10、影響檔案安全的因素:人為、系統、自然
確保檔案系統的安全性:存取控制機制、系統容錯機制、建立後備系統