UNIX系統(tǒng)內(nèi)核結(jié)構(gòu).ppt_第1頁
UNIX系統(tǒng)內(nèi)核結(jié)構(gòu).ppt_第2頁
UNIX系統(tǒng)內(nèi)核結(jié)構(gòu).ppt_第3頁
UNIX系統(tǒng)內(nèi)核結(jié)構(gòu).ppt_第4頁
UNIX系統(tǒng)內(nèi)核結(jié)構(gòu).ppt_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第10章 UNIX系統(tǒng)內(nèi)核結(jié)構(gòu),本章學(xué)習(xí)目標(biāo) 10.1 UNIX系統(tǒng)概述 10.2 進(jìn)程的描述和控制 10.3 進(jìn)程的同步與通信 10.4 存儲(chǔ)器管理 10.5 設(shè)備管理 10.6 文件管理,開 始,本章學(xué)習(xí)目標(biāo),1. 了解UNIX系統(tǒng)的特點(diǎn) 2. 了解UNIX進(jìn)程描述、控制、通信的基本原理 3. 了解UNIX存儲(chǔ)器管理的基本原理 4. 了解UNIX設(shè)備管理的基本原理 5. 了解UNIX文件管理的基本原理,下一頁,10.1 UNIX系統(tǒng)概述,10.1.1 UNIX系統(tǒng)的發(fā)展史 10.1.2 UNIX系統(tǒng)的特征 10.1.3 UNIX系統(tǒng)的內(nèi)核結(jié)構(gòu),返回本章首頁,10.1.1 UNIX系統(tǒng)的發(fā)展

2、史,一、UNIX系統(tǒng)的發(fā)展 1. 設(shè)計(jì)者:Dennis Ritchie、Ken Thompson 2. 語言:匯編語言、C語言 二、兩大集團(tuán)的對(duì)峙 1. UI(AT&T、SUN、NCR)SVR 4 2. OSF(IBM、DEC)OSF/I,返回本節(jié),三、網(wǎng)絡(luò)操作系統(tǒng)UNIX,1. UNIX的TCP/IP 協(xié)議系統(tǒng) 1980年9月Bell實(shí)驗(yàn)室開發(fā) 1983年8月對(duì)外發(fā)行 2. Novell的Netware 3. SCO的Unixware NOS和Sun的Solaris NOS,返回本節(jié),10.1.2 UNIX系統(tǒng)的特征,一、開放性 二、多用戶、多任務(wù)環(huán)境 三、功能強(qiáng)大、實(shí)現(xiàn)高效 四、豐富的網(wǎng)絡(luò)

3、功能 五、多處理器支持功能,下一頁,10.1.3 UNIX系統(tǒng)的內(nèi)核結(jié)構(gòu),一、UNIX核心結(jié)構(gòu)圖,二、進(jìn)程控制子系統(tǒng),1. 進(jìn)程控制 2. 進(jìn)程通信 3. 存儲(chǔ)器管理 4. 進(jìn)程調(diào)度,返回本節(jié),三、文件子系統(tǒng),1. 文件管理 2. 高速緩沖機(jī)制 3. 設(shè)備驅(qū)動(dòng)程序,返回本節(jié),10.2 進(jìn)程的描述和控制,10.2.1 進(jìn)程控制塊PCB 10.2.2 進(jìn)程狀態(tài)與進(jìn)程映像 10.2.3 進(jìn)程控制 10.2.4 進(jìn)程調(diào)度與切換,返回本章首頁,10.2.1 進(jìn)程控制塊PCB,一、UNIX System V的存儲(chǔ)管理方式 采用段頁式存儲(chǔ)管理方式,其中的段叫做區(qū)(Region)。每個(gè)進(jìn)程都由程序區(qū)、數(shù)據(jù)區(qū)、

4、棧區(qū)和共享存儲(chǔ)區(qū)等組成。 二、進(jìn)程控制塊的組成 1. 進(jìn)程表項(xiàng):存放核心數(shù)據(jù) 2. U區(qū):存放進(jìn)程表項(xiàng)的一些擴(kuò)充數(shù)據(jù) 3. 進(jìn)程區(qū)表:各區(qū)的起始虛地址 和指向系統(tǒng)區(qū)表中對(duì)應(yīng)區(qū)表項(xiàng)的指針 4. 系統(tǒng)區(qū)表:存放各區(qū)的物理地址等,三、進(jìn)程表項(xiàng)(最常用信息,常駐內(nèi)存),1. 進(jìn)程標(biāo)識(shí)符(PID) 2. 用戶標(biāo)識(shí)符(UID) 3. 進(jìn)程狀態(tài) 4. 事件描述符(使進(jìn)程進(jìn)入睡眠狀態(tài)的事件) 5. 進(jìn)程和U區(qū)在內(nèi)(外)存的地址 6. 軟中斷信息(其它進(jìn)程發(fā)來的軟中斷信號(hào)) 7. 計(jì)時(shí)域(進(jìn)程的執(zhí)行時(shí)間和資源利用情況) 8. 進(jìn)程的大小(包括正文和棧段長度) 9. 偏置值nice(計(jì)算進(jìn)程優(yōu)先數(shù)用,可由用戶設(shè)置

5、) 10. P-Link指針(指向就緒隊(duì)列中下一PCB的指針) 11. 指向U區(qū)進(jìn)程正文、數(shù)據(jù)和棧在內(nèi)存的指針,返回本節(jié),四、U區(qū)(私用,不常駐內(nèi)存),1. 進(jìn)程表項(xiàng)指針指向當(dāng)前進(jìn)程的進(jìn)程表項(xiàng) 2. 真正用戶標(biāo)識(shí)符u-ruid由超級(jí)用戶分配,登錄時(shí)使用 3. 有效用戶標(biāo)識(shí)符u-euid用于獲得對(duì)該用戶文件的操作權(quán) 4. 用戶文件描述符表記錄該進(jìn)程打開的所有文件 5. 當(dāng)前記錄和當(dāng)前根給出進(jìn)程的文件系統(tǒng)環(huán)境 6. 計(jì)時(shí)器記錄進(jìn)程及其后代在用戶態(tài)和核心態(tài)運(yùn)行的時(shí)間 7. 內(nèi)部I/O參數(shù)數(shù)據(jù)量、數(shù)據(jù)的地址和文件的I/O偏移量 8. 限制字段進(jìn)程的大小和能“寫”的文件大小的限制 9. 差錯(cuò)字段記錄系統(tǒng)

6、調(diào)用執(zhí)行時(shí)發(fā)生的錯(cuò)誤 10. 返回值記錄系統(tǒng)調(diào)用的執(zhí)行結(jié)果 11. 信號(hào)處理數(shù)組記錄接收到不同信號(hào)時(shí)的處理方式,返回本節(jié),五、系統(tǒng)區(qū)表(System Region Table),設(shè)置系統(tǒng)區(qū)表是為了對(duì)程序區(qū)(正文區(qū))、數(shù)據(jù)區(qū)、棧區(qū)等進(jìn)行共享。該區(qū)表記錄了下述信息。 1. 區(qū)的類型和大小 2. 區(qū)的狀態(tài) 3. 區(qū)的物理位置 4. 引用計(jì)數(shù)(共享該區(qū)的進(jìn)程數(shù)) 5. 指向文件索引結(jié)點(diǎn)的指針,返回本節(jié),六、本進(jìn)程區(qū)表(Per Process Region Table),本進(jìn)程區(qū)表給出進(jìn)程的各個(gè)區(qū)的器始虛地址和指向系統(tǒng)區(qū)表中對(duì)應(yīng)區(qū)表項(xiàng)的指針,通過查找進(jìn)程區(qū)表和系統(tǒng)區(qū)表把區(qū)的邏輯地址映射為物理地址。 進(jìn)程

7、區(qū)表和系統(tǒng)區(qū)表的關(guān)系 進(jìn)程的數(shù)據(jù)結(jié)構(gòu),返回本節(jié),10.2.2 進(jìn)程狀態(tài)與進(jìn)程映像,一、進(jìn)程狀態(tài)及其轉(zhuǎn)換 1. 進(jìn)程狀態(tài) 1) 執(zhí)行狀態(tài) 2) 就緒狀態(tài) 3) 睡眠狀態(tài) 4) “創(chuàng)建”與“僵死”狀態(tài) 5) 被搶占狀態(tài),下一頁,2. 進(jìn)程狀態(tài)轉(zhuǎn)換,進(jìn)程狀態(tài)轉(zhuǎn)換圖,返回本節(jié),二、進(jìn)程映像(Process Image),進(jìn)程映像是正在運(yùn)行中的進(jìn)程實(shí)體,由用戶級(jí)上下文、寄存器上下文和系統(tǒng)級(jí)上下文組成。進(jìn)程是進(jìn)程映像的執(zhí)行過程。 1. 用戶級(jí)上下文 主要是用戶程序,包括正文區(qū)和數(shù)據(jù)區(qū) 2. 寄存器上下文 PC(虛地址)、PSR、棧指針、通用寄存器 3. 系統(tǒng)級(jí)上下文OS為管理進(jìn)程所使用的信息 靜態(tài)部分(進(jìn)

8、程表項(xiàng)、U區(qū)、進(jìn)程區(qū)/系統(tǒng)區(qū)表項(xiàng)、頁表),大小不變 動(dòng)態(tài)部分(核心棧、若干層寄存器上下文),大小可變,返回本節(jié),10.2.3 進(jìn)程控制,一、fork系統(tǒng)調(diào)用 1. UNIX中的0|1進(jìn)程 2. fork進(jìn)程 3. 核心為fork進(jìn)程完成的操作 1) 為新進(jìn)程分配進(jìn)程表項(xiàng)和進(jìn)程標(biāo)識(shí)符 2) 檢查同時(shí)運(yùn)行的進(jìn)程數(shù) 3) 拷貝父進(jìn)程表項(xiàng)中的數(shù)據(jù)到子進(jìn)程的進(jìn)程表項(xiàng) 4) 子進(jìn)程繼承父進(jìn)程的所有文件 5) 為子進(jìn)程創(chuàng)建進(jìn)程上下文 6) 子進(jìn)程執(zhí)行(把U區(qū)計(jì)時(shí)字段初始化后返回0),下一頁,二、exec系統(tǒng)調(diào)用,1. exec系統(tǒng)調(diào)用的作用 把可執(zhí)行文件覆蓋在新進(jìn)程的上下文存儲(chǔ)空間上,以更新新進(jìn)程的用戶級(jí)上

9、下文 。 2. exec V的參數(shù)組織方式,3. exec V系統(tǒng)調(diào)用完成的操作,1) 檢查可執(zhí)行文件 2) 分配內(nèi)存空間 3) 回收內(nèi)存空間 4) 參數(shù)拷貝(把exec參數(shù)由臨時(shí)緩沖區(qū)拷到新的用戶棧區(qū),并設(shè)置用戶態(tài)寄存器上下文,如用戶棧指針、PC等),三、exit系統(tǒng)調(diào)用,1. exit系統(tǒng)調(diào)用的作用 實(shí)現(xiàn)進(jìn)程的自我終止。父進(jìn)程創(chuàng)建子進(jìn)程時(shí),通常在子進(jìn)程的末尾安排一條exit,使子進(jìn)程自行終止。 2. 內(nèi)核為exit完成的操作 1) 關(guān)閉軟中斷 2) 回收資源 3) 寫記賬信息 4) 置進(jìn)程為“僵死”狀態(tài),四、wait系統(tǒng)調(diào)用,1. wait進(jìn)程的作用 把進(jìn)程掛起,直到其子進(jìn)程因停止或終止而

10、發(fā)來軟中斷為止 2. 內(nèi)核對(duì)wait的處理 查找進(jìn)程是否還有子進(jìn)程,若無,就返回出錯(cuò)碼;若找到一個(gè)“僵死”態(tài)子進(jìn)程,就把其執(zhí)行時(shí)間加到父進(jìn)程執(zhí)行時(shí)間上,并釋放子進(jìn)程的進(jìn)程表項(xiàng);若無“僵死”態(tài)進(jìn)程,則進(jìn)程在被中斷的優(yōu)先級(jí)上休眠,等待其子進(jìn)程用軟中斷來喚醒,10.2.4 進(jìn)程調(diào)度與切換,UNIX是純分時(shí)系統(tǒng),只設(shè)置了中級(jí)調(diào)度(進(jìn)程對(duì)換)和低級(jí)調(diào)度(進(jìn)程調(diào)度) 一、引起進(jìn)程調(diào)度的原因 1. 分時(shí)系統(tǒng)時(shí)鐘中斷引起調(diào)度; 2. 執(zhí)行系統(tǒng)調(diào)用wait、exit、sleep后放棄處理機(jī)時(shí); 3. 系統(tǒng)調(diào)用結(jié)束,從核心態(tài)返回用戶態(tài),且有更高級(jí)進(jìn)程等待處理機(jī)時(shí)。,下一頁,二、調(diào)度算法,動(dòng)態(tài)優(yōu)先數(shù)調(diào)度算法,返回本

11、節(jié),三、進(jìn)程優(yōu)先數(shù)分類,1. 核心優(yōu)先級(jí) (1)可中斷 (2)不可中斷 2. 用戶優(yōu)先級(jí) 用戶優(yōu)先級(jí)分為n+1級(jí),0級(jí)最高,n級(jí)最低,返回本節(jié),四、進(jìn)程優(yōu)先數(shù)的計(jì)算,優(yōu)先數(shù)=最近使用CPU的時(shí)間/2+基本用戶優(yōu)先數(shù) 最近使用CPU的時(shí)間當(dāng)前占有CPU的進(jìn)程本次使用CPU的時(shí)間; 內(nèi)核每隔16.667ms對(duì)該時(shí)間執(zhí)行加1操作 基本用戶優(yōu)先數(shù)proc結(jié)構(gòu)中的偏移值nice; 可由用戶設(shè)置,范圍為040,返回本節(jié),五、進(jìn)程切換,進(jìn)行中斷處理核執(zhí)行系統(tǒng)調(diào)用時(shí),需要進(jìn)行進(jìn)程上下文的保存與恢復(fù)操作,返回本節(jié),10.3 進(jìn)程的同步與通信,10.3.1 sleep與wakeup同步機(jī)制 10.3.2 信號(hào)(s

12、ignal)機(jī)制 10.3.3 管道機(jī)制 10.3.4 消息機(jī)制 10.3.5 共享存儲(chǔ)區(qū)機(jī)制 10.3.6 信號(hào)量集機(jī)制,返回本章首頁,10.3.1 sleep與wakeup同步機(jī)制,一、sleep過程 在發(fā)生I/O操作等情況時(shí),使進(jìn)程進(jìn)入睡眠狀態(tài) 內(nèi)核操作:保存處理機(jī)的運(yùn)行優(yōu)先級(jí),再提高處理機(jī)的運(yùn)行優(yōu)先級(jí)以屏蔽中斷,然后把進(jìn)程置為睡眠狀態(tài),置入睡眠隊(duì)列(要求把睡眠地址對(duì)應(yīng)于指定的睡眠事件保存在進(jìn)程表項(xiàng)中) 二、wakeup過程 喚醒在指定事件隊(duì)列中睡眠的所有進(jìn)程,把它們放到可被調(diào)度的進(jìn)程隊(duì)列中(存在比當(dāng)前進(jìn)程優(yōu)先級(jí)高的進(jìn)程時(shí),將引起進(jìn)程調(diào)度),返回本節(jié),10.3.2 信號(hào)(signal)機(jī)

13、制,一、信號(hào)機(jī)制的基本概念 * 信號(hào)機(jī)制用于同一用戶的不同進(jìn)程之間的通信 * 信號(hào)是介于119之間的一個(gè)整數(shù),代表一個(gè)消息 * 進(jìn)程執(zhí)行時(shí)要通過信號(hào)機(jī)制檢查是否有信號(hào)到達(dá),若有信號(hào)到達(dá),就轉(zhuǎn)向該信號(hào)所指示的處理程序(軟中斷),處理完畢,再返回到此前的斷點(diǎn)繼續(xù)執(zhí)行 * 與中斷機(jī)制的區(qū)別是:信號(hào)機(jī)制沒有優(yōu)先級(jí);信號(hào)機(jī)制是在用戶態(tài)運(yùn)行的;對(duì)信號(hào)的響應(yīng)是非實(shí)時(shí)的,下一頁,二、信號(hào)機(jī)制的功能,1. 發(fā)送信號(hào) 由發(fā)送進(jìn)程利用系統(tǒng)調(diào)用kill把信號(hào)寫入目標(biāo)進(jìn)程的proc結(jié)構(gòu)的信號(hào)域的指定位 2. 設(shè)置對(duì)信號(hào)的處理方式 利用系統(tǒng)調(diào)用signal(sig, func)設(shè)置對(duì)信號(hào)的處理方式,其中sig是信號(hào)名,f

14、unc是處理方式 (1) func=1 :屏蔽信號(hào),對(duì)信號(hào)不理會(huì) (2) func=0 :缺省值;進(jìn)程收到信號(hào)后自我終止 (3) func=0、1外的整數(shù):把此func作為指向事件處理程序的指針,返回本節(jié),3、對(duì)信號(hào)的處理,1) 僅當(dāng)進(jìn)程返回到用戶態(tài)時(shí)才處理信號(hào) 2) 對(duì)信號(hào)的處理:根據(jù)func值的情況進(jìn)行處理,返回本節(jié),10.3.3 管道機(jī)制,一、什么是管道 所謂管道,是指能夠連接一個(gè)寫進(jìn)程核讀進(jìn)程,并允許它們以生產(chǎn)者-消費(fèi)者方式進(jìn)程通信的一個(gè)共享文件,此文件也叫做pipe文件。,下一頁,二、管道的類型,1. 無名管道(Unnamed Pipes) 無名管道是一個(gè)臨時(shí)文件,是利用系統(tǒng)調(diào)用pi

15、pe()建立的無名文件(指無路徑名),系統(tǒng)利用系統(tǒng)調(diào)用返回的文件描述符標(biāo)識(shí)該文件(只有調(diào)用pipe的進(jìn)程及其子進(jìn)程才能使用該管道進(jìn)行通信) 2. 有名管道(named Pipes) 有名管道(用mknod系統(tǒng)調(diào)用建立)是具有路徑名的文件,可長期存在,其它進(jìn)程也可以用它來通信,返回本節(jié),三、對(duì)無名管道的讀寫,1. pipe文件的大小(盤塊為4KB時(shí),文件可達(dá)40KB) 2. 進(jìn)程互斥 3. 進(jìn)程寫管道 4. 進(jìn)程讀管道,返回本節(jié),10.3.4 消息機(jī)制,一、消息和消息隊(duì)列 1. 消息 * 格式化的,可變長度的信息單元 * 消息首部:消息類型和大小、消息起始地址、鏈接指針 * 消息數(shù)據(jù) 2. 消息

16、隊(duì)列,下一頁,二、消息隊(duì)列的建立與操作,1. 消息隊(duì)列的建立 2. 消息隊(duì)列的操縱 (1) 消息隊(duì)列信息的查詢 (2) 設(shè)置和改變消息隊(duì)列的屬性 (3) 消除消息隊(duì)列的標(biāo)識(shí)符,下一頁,三、消息的發(fā)送和接收,1. 消息的發(fā)送 2. 消息的接收,下一頁,10.3.5 共享存儲(chǔ)區(qū)機(jī)制,一、共享存儲(chǔ)區(qū) 二、共享存儲(chǔ)區(qū)的建立與操縱 1. 共享存儲(chǔ)區(qū)的建立 2. 共享存儲(chǔ)區(qū)的操縱 三、共享存儲(chǔ)區(qū)的附接與斷開,下一頁,10.3.6 信號(hào)量集機(jī)制,一、信號(hào)量與信號(hào)量集 1. 信號(hào)量 2. 信號(hào)量集,下一頁,二、信號(hào)量集的數(shù)據(jù)結(jié)構(gòu),1. 信號(hào)量表 2. 信號(hào)量集表,下一頁,三、系統(tǒng)調(diào)用,1. Semger()系

17、統(tǒng)調(diào)用 用于建立信號(hào)量集 2. semop()系統(tǒng)調(diào)用 用于對(duì)信號(hào)量集進(jìn)行操作,下一頁,10.4 存儲(chǔ)器管理,10.4.1 請(qǐng)求調(diào)頁管理的數(shù)據(jù)結(jié)構(gòu) 10.4.2 換頁進(jìn)程 10.4.3 請(qǐng)求調(diào)頁,返回本章首頁,10.4.1 請(qǐng)求調(diào)頁管理的數(shù)據(jù)結(jié)構(gòu),一、頁表和磁盤描述表 1. 頁表 UNIX V把進(jìn)程的區(qū)劃分為若干虛頁,這些虛頁被分配到不相臨的頁框中。頁表就用于記錄虛頁與頁框之間的對(duì)應(yīng)關(guān)系。 * 頁框號(hào)內(nèi)存塊號(hào) * 年齡位該頁多長時(shí)間未被訪問 * 訪問位最近是否被訪問過 * 修改位裝入時(shí)為0 * 有效位表示其內(nèi)容是否有效 * 寫時(shí)拷貝字段進(jìn)程修改該頁時(shí),表示是否為該頁建立了拷貝 * 保護(hù)位表示是

18、只讀還是讀/寫,返回本節(jié),2. 磁盤描述表,進(jìn)程的每個(gè)頁都對(duì)應(yīng)著一個(gè)磁盤描述表項(xiàng),以描述每個(gè)虛頁的磁盤拷貝。 磁盤描述表項(xiàng)包括下列信息: 1) 對(duì)換設(shè)備號(hào) 2) 設(shè)備塊號(hào) 3) 存儲(chǔ)器類型,下一頁,二、頁框數(shù)據(jù)結(jié)表和對(duì)換使用表,1. 頁框數(shù)據(jù)表 頁框數(shù)據(jù)表描述內(nèi)存的物理頁,包括下列信息: * 頁狀態(tài) * 內(nèi)存引用計(jì)數(shù) * 邏輯設(shè)備 * 塊號(hào) * 指針1指向空閑頁鏈表中的下一個(gè)頁框數(shù)據(jù)表的指針 * 指針2指向散列隊(duì)列中的下一個(gè)頁框數(shù)據(jù)表的指針,下一頁,2. 對(duì)換使用表,對(duì)換設(shè)備上的每一頁都占有兌對(duì)換使用表中的一個(gè)表項(xiàng)。表項(xiàng)中含有一個(gè)引用計(jì)數(shù),表示有多少頁表項(xiàng)指向該頁 四種數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系,下一

19、頁,10.4.2 換頁進(jìn)程,一、增加有效頁的年齡 二、對(duì)換出頁的幾種處理 1. 對(duì)換設(shè)備已有被換出頁的拷貝,且該頁未被修改,則把頁表中的有效位清0,頁框數(shù)據(jù)表中的引用位減1,把該頁表項(xiàng)放入空閑頁鏈表 2. 若對(duì)換設(shè)備中沒有被換出的頁,就把換出進(jìn)程寫入對(duì)換設(shè)備 3. 對(duì)換設(shè)備已有被換出頁的拷貝,且該頁被修改過,則對(duì)其進(jìn)行更新,返回本節(jié),三、把換出頁面寫到對(duì)換設(shè)備上,下一頁,10.4.3 請(qǐng)求調(diào)頁,一、缺頁在可執(zhí)行文件上 二、缺頁在對(duì)換設(shè)備上 三、缺頁在內(nèi)存頁面緩沖區(qū)中,返回本節(jié),10.5 設(shè)備管理,10.5.1 字符設(shè)備緩沖區(qū)管理 10.5.2 塊設(shè)備緩沖區(qū)管理 10.5.3 內(nèi)核與驅(qū)動(dòng)程序接口

20、 10.5.4 磁盤驅(qū)動(dòng)程序 10.5.5 磁盤讀、寫程序,返回本章首頁,10.5.1 字符設(shè)備緩沖區(qū)管理,一、UNIX的設(shè)備類型 1. 塊設(shè)備 2. 字符設(shè)備,返回本節(jié),二、空閑字符緩沖區(qū)隊(duì)列,空閑字符緩沖區(qū)隊(duì)列,下一頁,三、空閑字符緩沖區(qū)的分配與回收,空閑字符緩沖區(qū),下一頁,四、設(shè)備的字符緩沖區(qū)隊(duì)列,1. Getc過程讀取字符 2. Putc過程寫字符 3. Getcb過程取出緩沖區(qū) 4. Putcb過程把指定的緩沖區(qū)放到指定隊(duì)列,下一頁,10.5.2 塊設(shè)備緩沖區(qū)管理,一、盤塊緩沖區(qū) 1. 盤塊緩沖區(qū)的組成 * 緩沖區(qū)首部 * 數(shù)據(jù)緩沖區(qū) 2. 緩沖區(qū)首部 見右表,返回本節(jié),二、盤塊緩沖

21、池結(jié)構(gòu),1. 空閑鏈表 2. 散列隊(duì)列,下一頁,三、盤塊緩沖區(qū)的分配,1. Getblk()過程 從空閑緩沖區(qū)隊(duì)列中獲取一個(gè)空閑緩沖區(qū) 2. Getblk(dev, blkno)過程 為指定設(shè)備dev和盤塊號(hào)為blkno的盤塊申請(qǐng)一個(gè)緩沖區(qū),下一頁,四、盤塊緩沖區(qū)的回收,使用brelse過程收回指定的緩沖區(qū),下一頁,10.5.3 內(nèi)核與驅(qū)動(dòng)程序接口,一、設(shè)備開關(guān)表的作用,返回本節(jié),二、塊設(shè)備開關(guān)表,下一頁,函數(shù),表項(xiàng),三、字符設(shè)備開關(guān)表,下一頁,函數(shù),表項(xiàng),10.5.4 磁盤驅(qū)動(dòng)程序,一、打開磁盤驅(qū)動(dòng)器的過程gdopen 檢查是否有dev指定的磁盤驅(qū)動(dòng)器,若無就報(bào)錯(cuò),否則則打開 二、啟動(dòng)磁盤控

22、制器的過程gdstart 裝配磁盤控制器中的寄存器,啟動(dòng)磁盤控制器 三、磁盤中斷處理過程gdintr 磁盤I/O完成發(fā)出中斷請(qǐng)求后,CPU執(zhí)行中斷處理過程gdintr,返回本節(jié),10.5.5 磁盤讀、寫程序,一、磁盤的讀寫方式 1. 讀方式 2. 寫方式,返回本節(jié),二、讀過程bread和breada,1. 一般讀過程bread 2. 提前讀過程breada,下一頁,三、寫過程bwrite、 bawrite和bdwrite,1. 一般寫過程bwrite 2. 異步寫過程bawrite 不必等待I/O完成即可返回。進(jìn)入bawrite后,設(shè)置異步讀標(biāo)志,然后調(diào)用bwrite過程實(shí)現(xiàn) 3. 延遲寫過程

23、bdwrite 設(shè)置延遲寫標(biāo)志和數(shù)據(jù)有效標(biāo)志,用brelse釋放該緩沖區(qū)(加入到空閑鏈表尾部)。當(dāng)某進(jìn)程用getblk獲得該緩沖區(qū)時(shí)才執(zhí)行寫操作,下一頁,10.6 文件管理,10.6.1 UNIX文件系統(tǒng)概述 10.6.2 文件的物理結(jié)構(gòu) 10.6.3 索引結(jié)點(diǎn)的管理 10.6.4 空閑磁盤空間的管理 10.6.5 文件標(biāo)的管理 10.6.6 目錄管理,返回本章首頁,10.6.1 UNIX文件系統(tǒng)概述,一、UNIX文件系統(tǒng)的特點(diǎn) 1. 分級(jí)樹型結(jié)構(gòu) 2. 物理結(jié)構(gòu)為混合索引式文件結(jié)構(gòu) 3. 采用成組鏈接法管理空閑盤塊 4. 引入了索引結(jié)點(diǎn)的概念,返回本節(jié),二、文件系統(tǒng)的結(jié)構(gòu),下一頁,三、文件系

24、統(tǒng)的資源管理,1. 未打開狀態(tài)下文件占用的資源 (1) 一個(gè)目錄項(xiàng) (2) 一個(gè)磁盤索引結(jié)點(diǎn)項(xiàng) (3) 若干個(gè)盤塊 2. 打開文件時(shí)要增加的資源 (1) 一個(gè)內(nèi)存索引結(jié)點(diǎn)項(xiàng) (2) 文件表中的一個(gè)登記項(xiàng) (3) 用戶文件描述符表中的一個(gè)登記項(xiàng),下一頁,10.6.2 文件的物理結(jié)構(gòu),一、尋址方式 1. 直接尋址 2. 一次間接尋址 3. 多次間接尋址,返回本節(jié),二、地址轉(zhuǎn)換,1. 把字節(jié)偏移量轉(zhuǎn)換為文件邏輯塊號(hào) 2. 把文件邏輯塊號(hào)轉(zhuǎn)換為物理盤塊號(hào) (1) 直接尋址 (2) 一次間接尋址 (3) 多次間接尋址,下一頁,三、豐富的網(wǎng)絡(luò)服務(wù),1. 文件/打印服務(wù) 2. 目錄服務(wù) 3. 安全性服務(wù) 4. 支持Internet/Intranet信息服務(wù)(FTP等),下一頁,10.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論