版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、嵌入式操作系統(tǒng)補充:操作系統(tǒng)基礎,主講教師:謝謙 計算機大樓501,1,嵌入式操作系統(tǒng)概述,A.1 操作系統(tǒng)范圍界定 A.2 操作系統(tǒng)的運行 A.3 程序的并發(fā)運行 A.4 內存管理 A.5 外部設備管理 A.6 文件系統(tǒng)管理,2,A.1 操作系統(tǒng)范圍界定,操作系統(tǒng)的層次 認識內核 用戶態(tài)和核心態(tài) 內核對外服務接口,3,操作系統(tǒng)的層次,用戶對操作系統(tǒng)的印象來自對外層軟件的操作經驗 操作系統(tǒng)課程重點關注內核 中間層次主要與應用開發(fā)相關 內核是理解OS關鍵,4,認識內核,直觀認識1:磁盤上對應哪個(哪些)文件? Linux:vmlinuz(經過壓縮,典型大小10MB以內) Windows:多個文件
2、(WindowsSystem32目錄下)Ntoskrnl.exe、HAL.Dll、NTDll.Dll、Win32k.Sys,還有很多驅動程序模塊 直觀認識2:在內存中占據(jù)多大空間? 與硬件配置、軟件負載相關 很難界定內核占用內存空間的具體數(shù)值 真正的區(qū)分方法:內核運行于核心態(tài),5,用戶態(tài)和核心態(tài)(系統(tǒng)態(tài)),為什么要區(qū)分用戶態(tài)和核心態(tài) 保護操作系統(tǒng)代碼免遭破壞 避免應用程序代碼相互之間干擾 內核代碼(且只有內核代碼)運行于核心態(tài) 不同的“態(tài)” 靠CPU硬件實現(xiàn) CPU寄存器中設定保護級狀態(tài)位,據(jù)此對當前指令的執(zhí)行權限進行控制 系統(tǒng)啟動時一般處于非保護狀態(tài),當內核代碼初始化時設置區(qū)分運行態(tài)并保護自
3、身,6,用戶態(tài)和核心態(tài)(系統(tǒng)態(tài)),特權指令和非特權指令 CPU指令集中部分關系到系統(tǒng)全局的指令被歸入特權指令,只有在核心態(tài)下可執(zhí)行 其他指令作為非特權指令,在核心態(tài)和用戶態(tài)均可執(zhí)行 特權指令的例子:外部設備訪問、開關中斷、修改存儲器管理寄存器、停機、轉換執(zhí)行狀態(tài)等 核心態(tài)的另一特權:內存訪問能力 越權執(zhí)行時:產生異常(中斷),7,內核對外服務接口:系統(tǒng)調用,通過CPU和OS內核軟硬件結合的保護機制,系統(tǒng)資源的管理權始終在內核代碼控制下,應用程序無法直接訪問 另一方面,應用程序又必須訪問這些資源否則應用程序幾乎無法作任何有價值的事情,甚至無法運行 因此,內核需要在不破壞自身保護機制前提下,把應用
4、程序需要用到的資源服務功能以某種形式提供出來,8,內核對外服務接口:系統(tǒng)調用,OS內核會選取應用程序需要訪問的系統(tǒng)功能,以子程序(過程)方式實現(xiàn),供應用程序調用 但是不允許應用程序采用一般的過程調用方式來直接調用這些過程,而是采用系統(tǒng)調用這種特殊的調用方式,9,內核對外服務接口:系統(tǒng)調用,系統(tǒng)調用區(qū)別于一般的過程調用 調用者和被調用者運行在不同狀態(tài),調用者在用戶態(tài)、被調用者在核心態(tài)運行 調用通過特殊的指令實現(xiàn):陷入指令或軟中斷指令進入 intel芯片:int指令(Linux使用int 0 x80,Windows使用int 0 x2e) arm芯片:swi指令(swi 0,或swi 調用號) 內
5、核之外,通過C函數(shù)庫對系統(tǒng)調用進行封裝,從而屏蔽這些細節(jié),10,內核對外服務接口:系統(tǒng)調用,系統(tǒng)調用的處理步驟,11,A.2 操作系統(tǒng)的運行,系統(tǒng)初啟 內核正常運行:中斷驅動 應用程序的運行 系統(tǒng)安裝,12,系統(tǒng)初啟,CPU怎樣工作? CPU正常加電時,會在時鐘信號激勵下不斷地進行取指、執(zhí)行的循環(huán)(取指令、解碼、取操作數(shù)、執(zhí)行指令、存結果等) 指令要從存儲器中讀取,對應地址由CPU內部特定寄存器決定(PC,程序計數(shù)器) PC的改變:自動增加(順序執(zhí)行)、跳轉指令、外部中斷和內部異常 初始加電時,CPU會進入特定狀態(tài),PC也會被初始化為一個固定的值 intel芯片:實模式,F(xiàn)FFF:0000=0
6、 xFFFF0 ARM芯片:0 x0,13,系統(tǒng)初啟,基于BIOS模式計算機的啟動過程(EFI有所區(qū)別) 加電,CPU初始化,到固定地址取指開始執(zhí)行,激活BIOS程序; BIOS程序檢測系統(tǒng)配置;加載MBR程序 MBR程序加載OS Loader;OS Loader加載OS 進行OS初始化:根據(jù)系統(tǒng)配置等準備系統(tǒng)表格;加載Driver,標識設備等 創(chuàng)建系統(tǒng)初始進程,進而建立其它進程 控制權交給調度程序,進入OS正??刂?14,內核正常運行:中斷驅動,當系統(tǒng)啟動完成后,根據(jù)內核調度程序的調度結果,CPU會轉入用戶態(tài)執(zhí)行某個應用程序的代碼,其后內核代碼僅在需要時才會運行 這種“需要”可以是: 外部設
7、備有事件發(fā)生,需要內核代碼處理 用戶態(tài)程序執(zhí)行錯誤,需要內核代碼處理 用戶態(tài)程序需要使用內核提供的功能 對內核的“需求”通過中斷來體現(xiàn),即內核代碼通過各種中斷入口反復執(zhí)行,15,內核正常運行:中斷驅動,中斷機制的作用 使CPU能夠轉入執(zhí)行預設的例程,以響應突發(fā)事件或處理異常情況 中斷響應 CPU中止當前指令或下一條指令;保存當前運行狀態(tài);轉入相應處理程序(通過硬件機制自動實現(xiàn));執(zhí)行完畢后返回斷點繼續(xù)執(zhí)行 中斷是實現(xiàn)OS功能的基礎 中斷使得立即處理緊急事件成為可能 中斷是實現(xiàn)處理機與外設并行的基礎 中斷是實現(xiàn)多道程序之間調度切換的基礎 中斷是實現(xiàn)系統(tǒng)調用的基礎,16,內核正常運行:中斷驅動,C
8、PU的中斷源 內部:執(zhí)行指令過程中由CPU自身產生,包括指令異常和陷阱(軟中斷)指令 外部:硬件中斷(可屏蔽中斷和不可屏蔽中斷),通過中斷控制器接到CPU的引腳 內部中斷 內存訪問相關異常是現(xiàn)代OS內存管理的基礎 軟中斷,是系統(tǒng)調用的唯一入口 硬件中斷 I/O設備通過可屏蔽中斷通知CPU有事件發(fā)生,是設備驅動程序工作基礎 時鐘中斷,是分時調度的觸發(fā)來源,17,應用程序的運行,一些基本概念 程序一般以二進制可執(zhí)行文件形式存在于磁盤上 CPU執(zhí)行的指令和訪問的數(shù)據(jù)須預先被裝入內存 OS內核要負責讀取可執(zhí)行文件裝入內存 執(zhí)行文件的格式 由OS內核裝入內存,規(guī)定了執(zhí)行文件中必須提供的信息(如內存區(qū)域劃
9、分、外部模塊入口等) 由編譯、鏈接程序生成,需符合OS規(guī)定的格式 常見的執(zhí)行文件格式:Windows的PE,Linux的ELF,一般上述關鍵信息都存在于“文件頭部”,18,應用程序的運行,應用程序運行過程中與內核的關系 最初的創(chuàng)建和裝入 由另一個程序發(fā)起,OS內核實施 程序執(zhí)行過程中要時常轉入執(zhí)行內核代碼 因為需要OS內核的服務而產生系統(tǒng)調用 外部設備發(fā)出中斷信號 程序執(zhí)行完成后,要求OS內核結束自身,19,OS內核與應用程序的交替執(zhí)行,20,應用程序的運行,一個簡化實例 場景 Windows下通過開始菜單打開記事本程序 輸入一些內容 然后保存到文件,21,應用程序的運行,一個簡化實例 分析
10、顯示開始菜單的程序explorer.exe explorer程序發(fā)現(xiàn)快捷方式對應notepad.exe explorer程序發(fā)出系統(tǒng)調用,要求內核執(zhí)行notepad.exe 內核讀入notepad.exe文件,初始化內存中數(shù)據(jù)結構,讀入代碼和數(shù)據(jù) 內核調度程序選定notepad程序執(zhí)行,返回用戶態(tài),從其執(zhí)行入口處開始執(zhí)行,22,應用程序的運行,一個簡化實例 分析(續(xù)) notepad程序需要OS內核顯示其用戶界面,進行一系列的系統(tǒng)調用,完成界面顯示 notepad程序需要調用OS內核功能來獲取輸入事件(鼠標和鍵盤),調用相應系統(tǒng)調用 如果沒有輸入事件發(fā)生(notepad程序邏輯無法繼續(xù)),OS
11、內核會調度CPU執(zhí)行其他程序 有輸入事件發(fā)生(例如按鍵),系統(tǒng)調用返回,notepad程序獲得輸入,進行相應處理(放入緩沖區(qū)),如有必要進一步調用系統(tǒng)調用(例如字符回顯),23,應用程序的運行,一個簡化實例 分析(續(xù)) 上述獲取輸入事件、處理輸入過程反復進行 如果輸入事件對應保存文件,調用相應系統(tǒng)調用創(chuàng)建文件,并將緩沖區(qū)內容寫入 如果輸入事件對應退出程序,調用相應系統(tǒng)調用,結束用戶態(tài)程序邏輯的執(zhí)行 OS內核代碼釋放notepad程序所占據(jù)的資源,該程序運行結束 簡化:如果實際跟蹤系統(tǒng)調用會看到數(shù)目及其龐大,24,操作系統(tǒng)安裝,操作系統(tǒng)安裝的目標 安裝完成后,使OS可以自行啟動 OS安裝的位置與
12、系統(tǒng)類型、引導方式相關 安裝的一般過程與系統(tǒng)類型相關 對于通用計算機,一般安裝過程將OS部署在硬盤上,過程相對簡單、通用 對于嵌入式系統(tǒng),安裝過程有較大區(qū)別,引導程序、操作系統(tǒng)、文件系統(tǒng)需分別安裝,一般安裝到flash存儲,要通過特殊操作方法進行部署,經常被稱為“刷機”、“燒寫”,25,操作系統(tǒng)安裝,通用計算機OS一般安裝過程 從安裝介質加載并啟動OS,檢測系統(tǒng)配置,運行安裝程序 運行分區(qū)工具對硬盤進行分區(qū),將啟動代碼復制到硬盤特定區(qū)域(MBR,.) 格式化硬盤分區(qū)(制作文件系統(tǒng)),將OS內核及所選軟件包復制到硬盤分區(qū) 對OS部件進行設置,指定啟動使用的OS內核及相關參數(shù) 重新啟動,用新安裝內
13、核啟動OS 進一步配置系統(tǒng)(如網(wǎng)絡設置等),26,A.3 程序的并發(fā)運行,程序的順序執(zhí)行與并發(fā)執(zhí)行 進程的引入 進程的創(chuàng)建與撤銷 進程的調度和切換 線程的引入 同步、互斥和進程間通信,27,程序的順序執(zhí)行與并發(fā)執(zhí)行,程序的順序執(zhí)行 前一程序執(zhí)行完成,后一程序才能開始 問題:CPU利用率低,程序在執(zhí)行過程中的I/O操作,會導致CPU空轉等待 程序的并發(fā)執(zhí)行 多個程序都裝入內存等待執(zhí)行,當一個程序因I/O不能繼續(xù)執(zhí)行時,CPU可以轉而執(zhí)行其他程序,從而提高了CPU利用率 并發(fā)概念(區(qū)別于并行):微觀看任一時刻只有一個程序在運行,宏觀看一段時間內多個程序都在運行,28,程序的順序執(zhí)行與并發(fā)執(zhí)行,并發(fā)
14、執(zhí)行增加了操作系統(tǒng)設計難度 多個程序都裝入內存,互相不能干擾(屬于內存管理功能) 需要記錄內存中程序的不同狀態(tài):有一個正在運行,有一些隨時可以運行,有一些等待I/O事件而不能執(zhí)行 當運行中的程序因為I/O等原因不能繼續(xù)運行時,需要在可以運行的程序中選一個,轉去執(zhí)行新選中程序。在此過程中需要保存前一程序的執(zhí)行現(xiàn)場,保證以后能再次正確運行,29,進程的引入,當OS需要把程序的運行作為一個管理對象時,需要引入相應的數(shù)據(jù)結構 程序在內存中的指令和數(shù)據(jù)不能修改,否則會影響程序執(zhí)行邏輯 OS需要為每一個在內存中的程序附加一個數(shù)據(jù)結構,由OS代碼進行修改和訪問,在其中記錄程序狀態(tài)、保存執(zhí)行現(xiàn)場等 這種引入管
15、理數(shù)據(jù)結構后可以被OS管理的程序被稱為進程(process),30,進程的引入,進程控制塊PCB 為管理進程所引入的數(shù)據(jù)結構,記錄了系統(tǒng)管理所需的全部信息 OS根據(jù)PCB而感知進程的存在,PCB是進程存在的唯一標志 PCB會先于程序的載入而創(chuàng)建,31,進程的引入,PCB的內容 進程標志符:包括唯一的進程號,以及所屬用戶號、創(chuàng)建此進程的父進程號等 處理機狀態(tài)(斷點信息):進程切換時保存的處理機中各種寄存器的內容 進程調度信息:記錄了進程調度相關的信息(狀態(tài)、調度優(yōu)先級、等待事件等) 其他信息:如內存中程序區(qū)和數(shù)據(jù)區(qū)的地址,打開的資源清單,同步和通信機制等,32,進程的引入,進程的基本狀態(tài) 運行
16、就緒 阻塞,33,進程的創(chuàng)建與撤銷,進程的創(chuàng)建 除了個別進程在系統(tǒng)啟動時由OS內核直接創(chuàng)建以外,其他進程都是另外進程通過系統(tǒng)調用要求內核創(chuàng)建 這種進程之間的創(chuàng)建關系形成一個樹形結構,34,進程的創(chuàng)建與撤銷,進程的創(chuàng)建 OS內核創(chuàng)建新進程的過程 申請一個空閑的PCB 為新進程分配資源 對PCB初始化 將PCB插入就緒隊列 返回進程號,35,進程的創(chuàng)建與撤銷,進程的撤銷 進程在完成其任務后,應該撤銷,以便釋放所占據(jù)資源 正常結束的進程會主動調用進程終止系統(tǒng)調用,從而觸發(fā)進程撤銷 一些程序執(zhí)行過程中發(fā)生的異常情況可能導致OS內核直接撤銷進程,36,進程的創(chuàng)建與撤銷,進程的撤銷 OS內核撤銷進程的過程
17、 找到指定進程的PCB 回收該進程所占用的全部資源 處理子孫進程(終止所有子孫進程并回收它們所占用的資源,或者“過繼”以免成為孤兒) 將被終止進程的PCB從原來隊列中摘走,37,進程的調度和切換,進程調度算法 調度算法的目的是在多個候選者中選出一個進程作為下面要執(zhí)行的進程 不同的調度算法會影響系統(tǒng)的總體性能,是OS設計中的關鍵問題 從理解OS工作機制角度出發(fā),不必關心調度算法的細節(jié),38,進程的調度和切換,進程切換(上下文切換) 當調度算法選中新進程后執(zhí)行 首先保存當前進程的執(zhí)行現(xiàn)場:保存將要執(zhí)行的指令地址,把各類CPU寄存器存到PCB中特定區(qū)域 然后找到新選中進程的PCB,讀取上次保存的執(zhí)行
18、現(xiàn)場信息裝入對應CPU寄存器,轉到上次斷點處指令開始執(zhí)行 通用的進程切換程序能保證進程多次被調度執(zhí)行時除了時間間斷之外,與連續(xù)執(zhí)行的狀態(tài)完全一致,39,進程的調度和切換,進程調度的時機:調度算法何時執(zhí)行? 以Unix/Linux為例,主要有兩類時機 一是當前進程主動放棄CPU 進程終止,或因為請求I/O進入阻塞狀態(tài) 二是OS內核決定終止當前進程執(zhí)行 中斷處理程序中發(fā)現(xiàn)需要重新調度,如當前進程時間片用完,或高優(yōu)先級進程進入就緒狀態(tài) 中斷處理程序中一般不會直接調用調度算法,而是設置一個全局標志 當OS內核從核心態(tài)返回用戶態(tài)之前,會檢查該標志,如置位則調用調度程序進而切換進程,40,進程的調度和切換
19、,進程調度方式 非搶占方式 處理機分配給某進程后便一直執(zhí)行,直到該進程主動放棄,OS不搶占進程的執(zhí)行 搶占方式 OS內核可根據(jù)某種原則停止當前進程的執(zhí)行,轉而執(zhí)行另一進程 一般的操作系統(tǒng)內核不可搶占,即:只有從核心態(tài)返回用戶態(tài)時才會發(fā)生進程切換 一些實時OS要求內核可搶占,以最大限度保證實時進程優(yōu)先運行。內核搶占將大大增加OS的實現(xiàn)難度,41,線程的引入,OS加入進程管理后,可以讓不同應用程序并發(fā)執(zhí)行 如果一個應用程序內部希望并發(fā)執(zhí)行時,進程模型很不方便 應用程序需要并發(fā)的例子:用word進行耗時的打印操作時還希望進行輸入處理;用瀏覽器查看同時包含動畫和音頻的網(wǎng)頁 如果打印和輸入處理在不同進程
20、,其數(shù)據(jù)區(qū)相互隔離,難以協(xié)調 如果打印和輸入處理在同一進程,沒有程序在兩者之間進行通用的切換,只能在程序主循環(huán)中反復查詢,增加編程難度,42,線程的引入,進程的角色 傳統(tǒng)進程是兩種角色的混合 資源分配的單位:主要表現(xiàn)為進程間的內存隔離 CPU調度的單位:以進程為單位進行調度切換 線程(Thread)的引入 保留進程作為資源分配單位,以更輕量級的線程作為CPU調度單位 多個線程存在于同一進程中,共享資源,獨立調度執(zhí)行 多線程提高了應用的并發(fā)能力,也加大了編程難度,43,同步、互斥和進程間通信,同步和互斥:解決并發(fā)中的問題 同步:解決并發(fā)進程的協(xié)作關系 例:多線程流媒體播放下載解碼 互斥:解決并發(fā)
21、進程的資源爭用關系 例:多窗口聯(lián)機售票查詢和售出不可交疊 廣義的同步機制:包括同步和互斥 同步機制早期主要針對OS內核編程,因為并發(fā)的應用進程之間默認內存隔離,沒有共用資源 多線程應用編程必須考慮同步互斥,44,同步、互斥和進程間通信,進程間通信(IPC) 由于不同進程間的內存隔離,如果不同進程間需要交換信息,需要OS內核中轉 主要的高級進程間通信機制包括:共享存儲區(qū)、管道機制、消息機制 同一進程的線程間因為共享內存空間,沒有通信需求,但是有普遍的同步互斥需求 對于采用進程間通信機制的不同進程,采用共享存儲區(qū)機制需要考慮同步問題,管道和消息機制自帶同步機制,45,A.4 內存管理,內存管理目標
22、和功能 基本概念 內存管理方式演變 基本分頁管理 基于分頁的虛擬存儲管理 進程地址空間的布局,46,內存管理目標和功能,內存管理的目標 將多道程序同時裝入內存,并使其互不干擾;盡可能提高內存利用率和訪問效率 內存管理的功能 實現(xiàn)內存的分配和回收 提供實現(xiàn)地址變換所需的信息 利用外存“擴充”內存容量 實現(xiàn)存儲保護,避免越權訪問,47,基本概念,名字空間(符號地址) 源程序中通過變量名和標號標識地址 邏輯地址(相對地址) 源程序經匯編/編譯后形成目標代碼,通常約定模塊首地址為0,其余地址都相對于首地址而編址 物理地址(絕對地址) 內存中存儲單元的地址,通過總線尋址 地址轉換(地址映射) CPU執(zhí)行
23、指令時內部使用邏輯地址,為了正確訪問存儲單元,需將其轉換為可由總線直接尋址的物理地址,這一過程稱為地址映射,48,內存管理方式演變,邏輯地址連續(xù)是內存管理的基本前提 CPU執(zhí)行程序時,大多數(shù)情況下執(zhí)行一條指令后程序計數(shù)器PC自動增加 若程序邏輯地址不連續(xù),則不能順序執(zhí)行 早期OS采用連續(xù)分區(qū)管理方式 早期CPU的內存管理部件簡單,只能進行簡單地址映射 連續(xù)的邏輯地址要求連續(xù)的物理地址 現(xiàn)代OS一般采用離散分區(qū)管理 可以把連續(xù)邏輯地址映射到離散物理地址 離散映射可以基于定長的分頁或變長的分段,49,基本分頁管理,分頁基本思想 空間劃分 頁面:將用戶進程的地址空間劃分成大小相等的區(qū)域,稱為頁面(p
24、age), 從0開始編號 頁框:將內存空間也劃分成與頁面大小相等的區(qū)域,稱為頁框(frame),從0開始編號 內存分配 為進程分配內存時以頁框為單位,將進程中的編號連續(xù)的頁面裝入到多個頁框中(不需要相鄰),50,基本分頁管理,頁面和頁框對應示意,51,基本分頁管理,頁表 頁表是實現(xiàn)分頁管理的關鍵數(shù)據(jù)結構 頁表由OS設置,供CPU存儲管理部件使用 作用:從頁面號到頁框號的映射 頁表一般存放在內存中 頁表的基址(物理地址)及長度由頁表寄存器給出,52,基本分頁管理,分頁地址變換機構(硬件實現(xiàn)),53,基本分頁管理,分頁地址變換機構(硬件實現(xiàn)) 將邏輯地址分成頁面號和頁內地址 根據(jù)頁表寄存器中頁表起
25、始地址和頁號查找頁表,找到對應于該頁式地址的頁表目 頁表目地址=頁表起始地址+頁面號*頁表目長度 取出頁面號對應的頁框號,和邏輯地址的頁內地址相加形成物理地址 物理地址頁框號頁框長度頁內位移量 按物理地址訪問內存,54,基于分頁的虛擬存儲管理,基本分頁管理的優(yōu)點和問題 實現(xiàn)了頁框的離散分配,相對于連續(xù)分區(qū)管理,提高了物理內存的利用率 仍然要求在程序運行前把所有的指令和數(shù)據(jù)裝入內存,這實際上并非必要 局部性原理 程序運行過程中,CPU訪問的邏輯地址從時間和空間兩方面都是局部化的 局部性原理源自人們編程時的自然習慣,55,基于分頁的虛擬存儲管理,虛擬存儲器管理 基于局部性原理,程序運行前沒有必要全
26、部裝入內存,僅須把將要運行的頁面裝入即可 運行中如訪問的頁面未在內存中(缺頁),再動態(tài)將該頁面調入內存 如物理內存已用完,則按某種置換算法將內存中的一些頁面交換到外存 虛擬存儲器是指具有請求頁調入功能和頁置換功能,能從邏輯上對內存容量進行擴充的一種存儲器系統(tǒng),56,基于分頁的虛擬存儲管理,請求分頁系統(tǒng) 在基本分頁系統(tǒng)基礎上,增加了請求調頁功能、頁面置換功能所形成的頁式虛擬存儲器系統(tǒng) 允許只裝入少量程序和數(shù)據(jù)頁面,便啟動運行;以后在硬件支持下通過調頁功能和置換功能,陸續(xù)將要訪問的頁面調入內存,同時把暫不訪問的頁面換到外存 請求分頁系統(tǒng)需要硬件支持和管理軟件 硬件支持:擴展頁表機制、缺頁中斷機構和
27、地址變換機構 管理軟件:請求調頁功能和頁置換功能的軟件,57,基于分頁的虛擬存儲管理,硬件支持:擴展頁表表目 狀態(tài)位:指示該頁是否已調入內存(OS置/CPU用,觸發(fā)缺頁中斷) 訪問位:記錄該頁在一段時間內是否被訪問過(CPU置/OS用,選擇換出頁) 修改位:表示該頁調入內存后是否被修改過(CPU置/OS用,決定是否需寫到外存) 外存地址:指出該頁在外存上的地址(OS置/OS用,調入頁面時使用),58,基于分頁的虛擬存儲管理,硬件支持:缺頁中斷 在請求分頁系統(tǒng)中,當CPU訪問的頁不在內存時,CPU產生一缺頁中斷,觸發(fā)OS內核的請求調頁代碼 缺頁中斷與一般中斷的區(qū)別: 在指令執(zhí)行期間產生和處理中斷
28、 中斷處理完后會重啟指令執(zhí)行 一條指令在執(zhí)行期間,可能產生多次缺頁中斷,59,基于分頁的虛擬存儲管理,管理軟件 請求調頁:由缺頁中斷觸發(fā),通過讀取CPU相關寄存器,可以獲得引發(fā)缺頁的頁面號,從對應頁表表目可獲得該頁面對應的外存地址(來自交換區(qū)或執(zhí)行文件),分配空閑頁框后讀入,最后更新頁表表目 頁面置換:頁面置換一般是當OS發(fā)現(xiàn)空閑頁框數(shù)不多時自動執(zhí)行,把最近長期不用的頁框內容換出,標記為空閑。 為了提高效率,頁面置換和請求調頁各自獨立運行,保證在調頁時總是有空閑頁框,60,進程地址空間的布局,進程的地址空間針對其邏輯地址 地址空間大小與CPU架構相關,例如:32位CPU最大4GB(232) 不
29、同OS的進程地址空間分配可以不同,61,進程地址空間的布局,Linux下不同進程地址空間映射 內核地址空間部分固定且連續(xù)映射,所有進程中此區(qū)域共享(即頁表中這一部分內容相同) 不同進程用戶地址空間部分映射各不相同,62,63,A.5 外部設備管理,對設備硬件的訪問 設備分類 設備獨立性 設備驅動程序 簡化示例:Unix設備訪問過程,64,對設備硬件的訪問,CPU對外部設備的訪問 外部設備一般通過設備控制器進行管理 設備控制器的管理寄存器使CPU可以控制設備動作、交換數(shù)據(jù)、查詢狀態(tài) 控制寄存器:CPU寫,用于控制器接收命令 數(shù)據(jù)寄存器:雙向/單向訪問,進行數(shù)據(jù)交換 狀態(tài)寄存器:CPU讀,用于查詢
30、設備當前狀態(tài) 設備控制器的管理寄存器編址 獨立的I/O空間編址:CPU有專用IN、OUT指令 與內存一起編址,65,對設備硬件的訪問,I/O控制方式 問題由來:高速CPU如何適應低速設備 輪詢方式 CPU循環(huán)讀取狀態(tài)寄存器,確定外部設備處于特定狀態(tài)時才寫控制寄存器或讀寫數(shù)據(jù)寄存器 CPU在輪詢期間,不能執(zhí)行其他程序 中斷方式 外部設備發(fā)生的事件通過CPU中斷線通知 CPU在向控制寄存器寫入,啟動設備動作后即可轉入其他程序執(zhí)行,CPU和I/O設備并行 中斷處理程序一般在設備驅動程序中提供,66,對設備硬件的訪問,I/O控制方式 DMA方式 對于傳輸大量數(shù)據(jù)的磁盤、網(wǎng)卡而言,雖然中斷機制使CPU和
31、設備可以并行工作,但是從設備控制器上的緩沖區(qū)到內存之間的數(shù)據(jù)交換如果還是需要CPU介入,會降低CPU利用率 引入DMA機制用于提高大量數(shù)據(jù)從設備控制器到內存的交換,DMA控制器利用CPU訪問內存的間隙進行數(shù)據(jù)交換 DMA控制器在設備控制器上提供,需要CPU啟動DMA控制器的動作,相應代碼在設備驅動程序中提供,67,設備分類,與設備驅動類型相關分類 字符設備 以字符為單位傳輸數(shù)據(jù),數(shù)據(jù)量小,速度慢 設備不可尋址,數(shù)據(jù)不可重用 塊設備 以定長塊為單位傳輸數(shù)據(jù),數(shù)據(jù)量大,速度快 設備可尋址,數(shù)據(jù)可重復訪問 網(wǎng)絡設備 以不定長幀為單位傳輸數(shù)據(jù),數(shù)據(jù)量大,速度快 設備不可尋址,數(shù)據(jù)不可重用,68,69,
32、設備獨立性,設備獨立性(設備無關性)概念 指OS設備管理為上層提供一致的訪問入口并屏蔽訪問細節(jié),使上層獨立于物理設備 設備獨立性軟件 在OS內核設備管理中設計的一個軟件層次 提供設備訪問的一致入口和驅動框架 設備開關表(與設備類型相關) 邏輯設備名 實現(xiàn)獨立于設備的通用功能 設備保護,緩沖區(qū)管理,差錯控制,70,設備驅動程序,設備驅動程序特點 與設備硬件、設備控制器寄存器、I/O控制方式密切相關 在核心態(tài)運行,作為內核一部分 一般由硬件廠商編寫,OS規(guī)定編寫框架 設備驅動程序功能 接收設備獨立性軟件發(fā)來抽象命令,轉換為設備相關的底層操作序列 檢查設備狀態(tài),發(fā)出I/O命令或將操作排隊 響應中斷請
33、求,調用中斷處理程序,71,設備驅動程序,設備驅動程序處理過程 現(xiàn)代OS設備訪問一般是中斷驅動的,處理過程分兩部分:啟動過程和中斷處理過程 啟動過程 檢查I/O請求合法性 檢查設備狀態(tài),確定是否可以啟動請求的操作 如果需要,傳送參數(shù)/設置工作模式 向控制寄存器發(fā)出命令,啟動設備 中斷處理過程 檢查設備狀態(tài),確定中斷原因,進行相應處理 如果前一I/O請求完成,啟動排隊的下一請求,72,簡化示例:Unix設備訪問過程,Unix的設備獨立性軟件層 設備開關表 實際是一個按照設備類型定義的函數(shù)指針結構體 具體設備驅動程序在初始化時用自己提供的函數(shù)填入該結構體 所有同類設備的結構體合起來構成設備開關表
34、例:Unix塊設備開關表示意,73,簡化示例:Unix設備訪問過程,Unix的設備獨立性軟件層 設備文件 是應用程序訪問設備的通用入口 記錄了設備文件名到設備驅動程序入口的對應 例:設備文件信息 brw-rw-. 1 root disk 7, 0 Nov 1 19:00 /dev/loop0 crw-w-. 1 root tty 4, 1 Nov 1 19:00 /dev/tty1,設備類型: 決定用哪個設備開關表,主設備號: 訪問設備開關表的索引,從設備號: 驅動程序找具體設備,74,簡化示例:Unix設備訪問過程,簡化示例 假想場景 一個應用程序要讀取/dev/hd0上的某一塊內容 設備獨
35、立性軟件工作過程 根據(jù)設備文件, /dev/hd0的主設備號是0,對應程序開關表項是gd開頭的一行 基于/dev/hd0的從設備號和要讀取的塊號,設備獨立性軟件構造請求數(shù)據(jù)結構bp 調用gdstrategy(bp),把I/O請求塊掛到I/O請求隊列尾部,75,簡化示例:Unix設備訪問過程,簡化示例 設備驅動程序工作過程 在gdstrategy(bp)函數(shù)內,調用gdaddr(bp),把I/O請求塊中的邏輯塊號轉換為物理塊號 如果當前設備空閑,調用gdstart(),從I/O請求隊列頭部取出一個I/O請求塊進行處理,發(fā)出相應I/O命令,啟動磁盤設備 磁盤中斷處理過程 檢查設備狀態(tài) 如果出錯,嘗
36、試重做以便排除錯誤 若上次操作成功完成,繼續(xù)查找I/O請求隊列是否為空,若非空調用gdstart(),76,A.6 文件系統(tǒng)管理,文件系統(tǒng)的任務 文件系統(tǒng)的核心功能 實例:FAT文件系統(tǒng)格式 從應用角度看文件系統(tǒng),77,文件系統(tǒng)的任務,文件系統(tǒng)的核心任務 按文件名存取文件 文件系統(tǒng)的主要功能 實施對文件空間的管理 實施對文件目錄的管理 實施對存儲器空間的分配和回收 提供文件訪問保護 為應用程序提供文件訪問接口,78,文件系統(tǒng)的核心功能,文件空間的管理 記錄哪些磁盤塊的內容屬于同一個文件 常用文件空間管理方法 連續(xù)方式 文件占據(jù)連續(xù)的若干磁盤塊,只需要記起始塊號和長度 適用于只讀或順序訪問設備上
37、的文件系統(tǒng)(光盤或磁帶),主要用作備份介質 連續(xù)方式不能用于管理經常改變的文件系統(tǒng) 典型例子:ISO9660,79,文件系統(tǒng)的核心功能,常用文件空間管理方法(續(xù)) 鏈接方式 文件占據(jù)的離散磁盤塊通過鏈表查找 為了提高鏈表訪問效率,一般通過獨立于文件數(shù)據(jù)的文件分配表FAT顯式保存鏈接信息 典型例子:FAT文件系統(tǒng) 索引方式 文件占據(jù)的離散磁盤塊通過索引表查找 為了使索引表能夠適應文件動態(tài)增長并管理大小差異巨大的文件,一般采用混合索引方式 典型例子:EXT2文件系統(tǒng),80,文件系統(tǒng)的核心功能,文件目錄的管理 實現(xiàn)從文件名到文件內容訪問入口的映射 文件目錄的組織方式 一般作為順序存儲的記錄文件 文件
38、目錄記錄項:保存文件屬性信息 主要信息:文件名、文件類型、文件長度、文件盤塊位置 其他信息:存取控制相關、文件訪問相關 文件目錄記錄項的兩種處理方式 文件名與其他屬性一起存放:FAT 文件名與其他屬性分來存放:EXT2,81,文件系統(tǒng)的核心功能,存儲器空間的分配和回收 記錄磁盤塊的分配/空閑狀態(tài) 常用方法 空閑盤塊表:將空閑盤塊號記入數(shù)組中 位示圖:用1bit代表一個盤塊的空閑狀況 一種在FAT中變化:一個表目對應一個盤塊 成組管理:把相關數(shù)據(jù)結構以組為單位分散到磁盤空閑塊中 成組鏈接法:分組+空閑表 成組位示圖:分組+位示圖,82,實例:FAT文件系統(tǒng)格式,磁盤布局 引導記錄中關鍵數(shù)據(jù)結構:BPB 主要內容:磁盤總空間、每簇扇區(qū)數(shù)、FAT占用扇區(qū)數(shù)、根目錄長度等 目錄項內容,83,實例:FAT文件系統(tǒng)格式,FAT實例分析(FAT16) 00000200 f8 ff
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版人工智能技術研發(fā)與應用合同15篇
- 常州2025版二手房過戶稅費處理與過戶手續(xù)辦理合同2篇
- 二零二五版智慧城市建設合作合同范本2篇
- 二零二五版在線教育管理系統(tǒng)定制開發(fā)合同3篇
- 二零二五版ISO9001質量管理體系認證與質量管理體系審核與監(jiān)督合同3篇
- 水電工程2025年度施工安全評估合同2篇
- 二零二五版LED顯示屏戶外廣告位租賃合同協(xié)議3篇
- 二零二五年海鮮餐飲業(yè)特色菜品開發(fā)與銷售合同3篇
- 二零二五年度虛擬現(xiàn)實游戲開發(fā)電子合同承諾3篇
- 二零二五版智能零售企業(yè)兼職銷售員勞動合同3篇
- 2025新北師大版英語七年級下單詞表
- 2024公路瀝青路面結構內部狀況三維探地雷達快速檢測規(guī)程
- 《智慧城市概述》課件
- 2024年北京市家庭教育需求及發(fā)展趨勢白皮書
- GB/T 45089-20240~3歲嬰幼兒居家照護服務規(guī)范
- 中建道路排水工程施工方案
- 拆機移機合同范例
- 智能停車充電一體化解決方案
- 化學驗室安全培訓
- 天書奇譚美術課件
- GB/T 18916.15-2024工業(yè)用水定額第15部分:白酒
評論
0/150
提交評論