freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)第9章-免費(fèi)閱讀

  

【正文】 再者介紹了用戶進(jìn)程怎樣通過(guò)用戶打開文件表和系統(tǒng)打開文件表與文件系統(tǒng)聯(lián)接起來(lái),從而對(duì)文件系統(tǒng)進(jìn)行存取操作。同時(shí),也將輸出緩沖隊(duì)列中的字符回波到顯示器上。過(guò)程 ttwrite可描述如下 : ttwrite : begin repeat 把用戶空間數(shù)據(jù)復(fù)制到輸出緩沖隊(duì)列 行規(guī)則處理 if 輸出緩沖隊(duì)列中的字符長(zhǎng)度大于上限值 then 啟動(dòng)外設(shè)和控制器輸出數(shù)據(jù) fi until 待寫數(shù)據(jù)全部輸出完畢 end ? 在標(biāo)準(zhǔn)方式下從終端讀數(shù)據(jù)是一個(gè)較復(fù)雜的操作。 ? 行規(guī)則程序把數(shù)據(jù)按行 (直到一個(gè)回車符為止 )緩沖起來(lái),并按標(biāo)準(zhǔn)方式或原始方式傳輸數(shù)據(jù)。在原始方式下,行規(guī)則程序不做任何格式變換。 圖 取 n個(gè)字符前的 I/O緩沖隊(duì)列 圖 取 n個(gè)字符后的 I/O緩沖隊(duì)列 終端驅(qū)動(dòng)程序 ? 1. 行規(guī)則程序 ? 字符設(shè)備類型不同,其設(shè)備驅(qū)動(dòng)程序也不同。即 :getcf, putcf, getc,putc, getcb, putcb, getcbp和 putcbp。 圖 空閑緩沖區(qū)隊(duì)列 圖 I/O字符緩沖隊(duì)列的例 對(duì)字符緩沖區(qū)隊(duì)列的操作 ? 對(duì)字符緩沖區(qū)的操作分為對(duì)空閑緩沖隊(duì)列的操作,對(duì) I/O緩沖隊(duì)列的操作。 ? 系統(tǒng)初啟時(shí), 150個(gè)緩沖區(qū)都鏈接在空閑緩沖區(qū)隊(duì)列 cfreelist上。在 UNIX系統(tǒng)中,字符設(shè)備以特別字符文件的方式在文件目錄中占據(jù)一個(gè)席位并擁有相應(yīng)的內(nèi)存 i節(jié)點(diǎn)。至于執(zhí)行哪一個(gè)中斷處理程序,則要根據(jù)發(fā)出中斷的設(shè)備和中斷向量所決定的。注意,只有當(dāng)沒有其他進(jìn)程打開此設(shè)備時(shí)才可以調(diào)用關(guān)閉過(guò)程,否則會(huì)引起混亂。 圖 塊設(shè)備和字符設(shè)備開關(guān)表 ? 對(duì)于塊設(shè)備開關(guān)表中的驅(qū)動(dòng)程序,當(dāng)文件系統(tǒng)調(diào)用有關(guān)系統(tǒng)調(diào)用時(shí),系統(tǒng)從文件描述符 fd找到系統(tǒng)打開文件表項(xiàng) fp以及內(nèi)存 i節(jié)點(diǎn)。 設(shè)備驅(qū)動(dòng)程序的接口 ? 塊設(shè)備驅(qū)動(dòng)程序把一個(gè)邏輯設(shè)備號(hào)和塊號(hào)組成的文件系統(tǒng)地址轉(zhuǎn)換成物理設(shè)備上特定的物理塊號(hào),并啟動(dòng)物理設(shè)備和控制器進(jìn)行 I/O傳輸工作。配置數(shù)據(jù)通常以簡(jiǎn)單的形式規(guī)定,然后由配置程序?qū)⑺D(zhuǎn)換成適合編譯的文件。使用這種“原始”的 I/O傳送的驅(qū)動(dòng)程序是從字符讀寫過(guò)程直接調(diào)用塊設(shè)備的策略接口(后述 )。其中, I/O子系統(tǒng)的核心部分是控制外設(shè)的設(shè)備驅(qū)動(dòng)程序。 bdwrite的功能則是延遲地寫一塊,且不啟動(dòng)傳輸而返回。 UNIX系統(tǒng)使用預(yù)先讀方式是因?yàn)樵谝粋€(gè)進(jìn)程順序地讀一個(gè)文件時(shí),如果系統(tǒng)異步地請(qǐng)求第二個(gè)磁盤塊,則一旦需要這部分?jǐn)?shù)據(jù)時(shí),它們將在內(nèi) ? breada可描述如下 : breada: 輸入 : 立即讀的邏輯塊號(hào)和異步讀的邏輯塊號(hào) 輸出 : 含有立即讀邏輯塊的緩沖區(qū)指針 begin if 第一塊不在緩沖池中 then 調(diào)用 getblk得到緩沖區(qū) if 緩沖區(qū)中數(shù)據(jù)無(wú)效 then 啟動(dòng)磁盤讀 fi fi if 第二塊不在緩沖池中 then 調(diào)用 getblk得到緩沖區(qū) if 緩沖區(qū)中數(shù)據(jù)有效 then 釋放緩沖區(qū) else 啟動(dòng)磁盤讀 fi fi if 第一塊在緩沖池中 then 讀第一塊,返回該緩沖區(qū)指針 fi if 第一個(gè)磁盤塊讀完成 then 返回該緩沖區(qū)指針 fi end ? 這里, 當(dāng)?shù)诙€(gè)數(shù)據(jù)塊對(duì)應(yīng)的緩沖區(qū)中數(shù)據(jù)有效時(shí), breada應(yīng)釋放該緩沖區(qū),以便下次其他進(jìn)程可以申請(qǐng)得到該緩沖區(qū)。一般讀 bread過(guò)程的輸入是所要讀的邏輯塊號(hào),輸出是含有讀入數(shù)據(jù)的緩沖區(qū)指針。 緩沖區(qū)數(shù)據(jù)讀寫 ? 對(duì)緩沖區(qū)的讀寫包括來(lái)自于兩個(gè)方面。 ? (4) 系統(tǒng)在散列隊(duì)列中找不到該塊,且空閑 av隊(duì)列已空時(shí),進(jìn)入等待狀態(tài)。設(shè)備 I/O請(qǐng)求隊(duì)列是由正在請(qǐng)求該塊設(shè)備進(jìn)行讀寫操作的緩沖區(qū)所組成的隊(duì)列,其中的緩沖區(qū)使用與前面所述的緩沖控制塊不完全相同的 I/O緩沖控制塊,以指示物理設(shè)備是否正在使用以及有關(guān)寄存器的地址等。 ? 在圖 b鏈結(jié)構(gòu)中,省略了邏輯設(shè)備號(hào) b_dev。在系統(tǒng)初始化時(shí),所有的緩沖區(qū)按序號(hào)高低掛在空閑 av隊(duì)列上。緩沖區(qū)是否包含有效數(shù)據(jù) 。 ? 緩沖控制塊和緩沖數(shù)據(jù)區(qū)間具有一一對(duì)應(yīng)的映射關(guān)系,除了討論緩沖控制塊時(shí)之外,把緩沖控制塊和緩沖區(qū)統(tǒng)稱為緩沖區(qū)。 緩沖池結(jié)構(gòu) ? UNIX System Ⅴ 有一個(gè)由 200個(gè)緩沖區(qū)組成的緩沖池。 ? (6) 檢查發(fā)生系統(tǒng)調(diào)用的進(jìn)程是否收到了軟中斷信號(hào),如收到了軟中斷信號(hào)的話,則進(jìn)行軟中斷處理。 0377 ? 若 0< i< 64,則 i是真正的系統(tǒng)調(diào)用序號(hào); ? 若 i> 64,則 i被賦值為 0; ? 若 i=0時(shí)表示該系統(tǒng)調(diào)用的參數(shù)傳遞方式為間接方式,需通過(guò)間接參數(shù)指針再求系統(tǒng)調(diào)用號(hào)。其中各種軟中斷所使用的信號(hào)定義如下 : ? SIGILL 非法指令 ? SIGTRAP 跟蹤陷入 ? SIGBUS 訪問(wèn)違章 ? SIGFPE 算術(shù)陷入 ? SIGSEGV 轉(zhuǎn)換無(wú)效 ? SIGEMT XFC 圖 trap程序處理流程圖 ? 系統(tǒng)提供標(biāo)準(zhǔn)軟中斷程序進(jìn)行處理。即: ? SYSCALL 更換到核心態(tài)方式 (系統(tǒng)調(diào)用 ) ? SEGFLT 轉(zhuǎn)換無(wú)效 ? PROTFLT 訪問(wèn)違章 ? PRIVFLT 非法指令 ? RSADFLT 保留尋址方式 ? RSOPFLT 保留操作數(shù) ? ARTHRP 算術(shù)自陷 ? TRCTRAP 跟蹤自陷 ? BPTFLT 斷點(diǎn)故障指令 ? XFCFLT 擴(kuò)展功能調(diào)用指令 ? CMPTFLT 兼容方式 ? RESCHED 進(jìn)程調(diào)度中斷 ? 對(duì)上述 12種陷阱處理可根據(jù)其發(fā)生的時(shí)機(jī)分為兩種情況 :即核心態(tài)方式下的陷阱處理和用戶態(tài)方式下的陷阱處理。不過(guò),在系統(tǒng)進(jìn)行中斷處理后退出中斷以及恢復(fù)被保護(hù)現(xiàn)場(chǎng)部分的程序是一段公用代碼。中斷處理子程序進(jìn)行中斷處理 。 ? (2) 時(shí)鐘中斷 ? 主要是間隔時(shí)鐘中斷。 ? 因此,一般來(lái)說(shuō),進(jìn)入陷阱處理程序與處理機(jī)狀態(tài)字中的中斷優(yōu)先級(jí)無(wú)關(guān),而中斷處理程序則只有處理機(jī)狀態(tài)字中的中斷優(yōu)先級(jí)低于請(qǐng)求中斷的中斷優(yōu)先級(jí)時(shí)才能進(jìn)入。中斷和陷阱總控程序就是用來(lái)完成上述功能的。 UNIX System Ⅴ 的中斷和陷阱總控程序 ? 1. 中斷和陷阱總控過(guò)程 ? 通常,在系統(tǒng)執(zhí)行期間內(nèi),系統(tǒng)內(nèi)發(fā)生的一些突發(fā)事件要求處理機(jī)改變其控制流程去執(zhí)行處理這些突發(fā)事件的特定軟件。 ? 在設(shè)置了有關(guān)參數(shù)之后,系統(tǒng)由 fd1找到 fp1,并由fp1找到對(duì)應(yīng)的內(nèi)存 i節(jié)點(diǎn)。例如,在系統(tǒng)調(diào)用 open打開文件 /user/users/zhang后的數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系如圖 。 ? 在用戶進(jìn)程使用系統(tǒng)調(diào)用時(shí),首先,執(zhí)行該系統(tǒng)調(diào)用將使得系統(tǒng)產(chǎn)生一條稱為陷阱 (trap)指令的信息,從而啟動(dòng)中斷和陷阱總控程序 (后述 ),使得系統(tǒng)由用戶態(tài)進(jìn)入系統(tǒng)態(tài)執(zhí)行。如果未找到相應(yīng)的分量,則表明文件系統(tǒng)中不存在相應(yīng)的文件或路徑名有錯(cuò)。 ? 至于對(duì)目錄文件的搜索,即從目錄文件中找到與指定分量相匹配的文件名的搜索,則采用順序搜索法。128]。 圖 文件映射關(guān)系 167。 ? 文件長(zhǎng)度大于 90K但小于 。 地址映射 ? UNIX系統(tǒng)采用索引結(jié)構(gòu)存放文件物理塊的地址。經(jīng)過(guò)上述操作,兩個(gè)以上的用戶共享某一文件時(shí),將會(huì)分配得到與用戶數(shù)相等的系統(tǒng)打開文件表項(xiàng),且這些表項(xiàng)指向同一內(nèi)存 i節(jié)點(diǎn)。對(duì)于這些不同的共享方式,用戶和系統(tǒng)都需要有相應(yīng)的數(shù)據(jù)結(jié)構(gòu)與之相應(yīng)。 ? 如果該節(jié)點(diǎn)已在內(nèi)存,則只需增加引用計(jì)數(shù)并鎖定該i節(jié)點(diǎn)即可。如果超級(jí)塊i節(jié)點(diǎn)數(shù)組是被鎖住的,則此時(shí)系統(tǒng)正在進(jìn)行磁盤i節(jié)點(diǎn)搜索工作。 ? 其次是在系統(tǒng)為新建立的文件分配磁盤i節(jié)點(diǎn)和內(nèi)存i節(jié)點(diǎn)之后,要檢查所分配的i節(jié)點(diǎn)是否是真正的空閑i節(jié)點(diǎn)。緊接著, ialloc調(diào)用內(nèi)存i節(jié)點(diǎn)分配算法為新建立的文件分配內(nèi)存i節(jié)點(diǎn)后將內(nèi)存i節(jié)點(diǎn)初始化。i節(jié)點(diǎn)線性表中存放這些被編號(hào)的i節(jié)點(diǎn)的類型字段。 167。因此可以認(rèn)為系統(tǒng)打開文件表是 i節(jié)點(diǎn)表的補(bǔ)充。 ? ? 在 UNIX系統(tǒng)中,文件系統(tǒng)主要描述程序和數(shù)據(jù)的靜的概念,而進(jìn)程則反應(yīng)這些程序和數(shù)據(jù)的動(dòng)的特性。因此,一個(gè)長(zhǎng) 512個(gè)字節(jié)的塊可存放 8 個(gè) i節(jié)點(diǎn)項(xiàng)。磁盤 i節(jié)點(diǎn) dinode 結(jié)構(gòu)包括: struct dinode { 文件模式; 與該 i節(jié)點(diǎn)聯(lián)接的文件數(shù); 用戶標(biāo)識(shí) 。當(dāng)文件卷被卸下或需要重新讀入或?qū)懗鲇嘘P(guān)堆棧的內(nèi)容時(shí),則將內(nèi)存中的 filsys 結(jié)構(gòu)復(fù)制回超級(jí)塊中。有關(guān)超級(jí)塊的結(jié)構(gòu)將在后面 ? 從 2# 塊開始到 K+1 塊為止的區(qū)域被用來(lái)存放文件說(shuō)明信息,也就是 BFD表。大的塊長(zhǎng)將使得內(nèi)存和設(shè)備之間的數(shù)據(jù)傳輸更加容易,但反過(guò)來(lái)又使得內(nèi)存頁(yè)面長(zhǎng)度增加,從而影響內(nèi)存的有效存儲(chǔ)能力。 167。在 UNIX系統(tǒng)中,一個(gè)目錄文件由多個(gè)目錄項(xiàng)組成,而每個(gè)目錄項(xiàng)則由文件名及指示相應(yīng)的文件說(shuō)明信息表 (i節(jié)點(diǎn) ) 的標(biāo)識(shí)符 id組成。從而,設(shè)備可通過(guò)文件系統(tǒng)隱蔽掉設(shè)備特性。 ? 一般來(lái)說(shuō), UNIX文件系統(tǒng)還具有如下特點(diǎn): ? 從用戶的角度看, UNIX文件系統(tǒng)具有如圖 : ? 在圖 ,根目錄 root之下有 dev設(shè)備子目錄, bin實(shí)用程序子目錄, lib庫(kù)文件子目錄, etc 基本數(shù)據(jù)和維護(hù)實(shí)用程序子目錄, tmp臨時(shí)文件子目錄, usr通用子目錄和 include 基本數(shù)據(jù)子目錄等。 資源管理和地址映射 167。 目錄與搜索方法 167。而 UNIX 子目錄則存放 UNIX操作系統(tǒng)核心程序自身。 UNIX的文件是無(wú)結(jié)構(gòu)的字符流式文件。在文件系統(tǒng)中,設(shè)備文件占據(jù)著文件系統(tǒng)目錄結(jié)構(gòu)中相應(yīng)的位置,用戶程序按與存取其他文件時(shí)所使用的系統(tǒng)調(diào)用和語(yǔ)法來(lái)讀、寫設(shè)備文件。 ? 普通文件和目錄文件都是無(wú)結(jié)構(gòu)、無(wú)記錄概念的字符流式文件。 文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)及其關(guān)系 文件系統(tǒng)的存儲(chǔ)結(jié)構(gòu) ? UNIX系統(tǒng)把文件信息存儲(chǔ)在磁盤或磁帶上,不過(guò),UNIX系統(tǒng)的磁盤文件組織也可以當(dāng)作一個(gè)連續(xù)的物理塊構(gòu)成的磁帶 —— 文件卷看待。在 UNIX 的許多版本中,大都采用每塊 512字節(jié)。 UNIX系統(tǒng)把一個(gè)文件的說(shuō)明信息稱為 i節(jié)點(diǎn)或索引節(jié)點(diǎn) (inode list)。 ? UNIX System Ⅴ 中的 filsys 結(jié)構(gòu)如下: struct filsys { 文件卷總塊數(shù); i 節(jié)點(diǎn)表塊數(shù); 空閑塊棧區(qū) (小于或等于 50)。 文件大小 。 ? 系統(tǒng)在對(duì)文件進(jìn)行各種操作時(shí),為了減少設(shè)備的啟動(dòng)次數(shù)以及提高操作速度,總是把相應(yīng)的磁盤 i節(jié)點(diǎn)復(fù)制到內(nèi)存的特定區(qū)域 —— 內(nèi)存 i節(jié)點(diǎn)表中。進(jìn)程怎樣才能對(duì)文件發(fā)生作用呢?從用戶的角度來(lái)看,用戶程序可使用對(duì)文件系統(tǒng)進(jìn)行操作的系統(tǒng)調(diào)用來(lái)完成。系統(tǒng)打開文件表的每一項(xiàng)包括文件標(biāo)識(shí)、文件訪問(wèn)計(jì)數(shù)、文件讀寫指針和文件內(nèi)存 i節(jié)點(diǎn)入口指針和訪問(wèn)標(biāo)志等。 資源管理和地址映射 ? UNIX文件系統(tǒng)的資源管理包括空閑磁盤塊的分配與回收、 i節(jié)點(diǎn)和系統(tǒng)打開文件表的分配與回收等。如果一個(gè)i節(jié)點(diǎn)的類型字段為0,則說(shuō)明這個(gè)節(jié)點(diǎn)是空閑的。在對(duì)內(nèi)存i節(jié)點(diǎn)進(jìn)行了初始化之后,再將內(nèi)存i節(jié)點(diǎn)的內(nèi)容寫回到磁盤i節(jié)點(diǎn)中并修改磁盤空閑i節(jié)點(diǎn)的計(jì)數(shù)。如果不是空閑i節(jié)點(diǎn),則要放棄本次分配。 ifree 直接返回,以避免競(jìng)爭(zhēng)條件 (有可能漏掉i節(jié)點(diǎn) )。否則,應(yīng)從內(nèi)存i節(jié)點(diǎn)數(shù)組中分配一個(gè)i節(jié)點(diǎn)并啟動(dòng)設(shè)備,將對(duì)應(yīng)磁盤i節(jié)點(diǎn)信息復(fù)制到內(nèi)存i節(jié)點(diǎn)后上鎖返回。 UNIX系統(tǒng)中設(shè)置有系統(tǒng)打開文件表,存放各進(jìn)程共享同一文件時(shí)的讀寫指針;用戶打開文件表通過(guò)指針 fp指向系統(tǒng)打開文件表。但在父、子進(jìn)程共享同一文件時(shí),由于子進(jìn)程是直接繼承父進(jìn)程打開文件,因此, i節(jié)點(diǎn)訪問(wèn)計(jì)數(shù)不變。即在文件對(duì)應(yīng)的 i節(jié)點(diǎn)中,放有存放文件物理塊號(hào)的索引結(jié)構(gòu)。于大型文件, UNIX System Ⅴ 采用二次間接尋址的方法。 目錄與搜索方法 ? UNIX系統(tǒng)中的目錄文件是以普通文件存放,且文件的目錄和說(shuō)明信息采用了 SFD和 BFD結(jié)構(gòu)方式以利于共享。這里, x代表要搜索的 i節(jié)點(diǎn)號(hào); ihash的功能是將那些與 128進(jìn)行模運(yùn)算后余數(shù)相同的 i節(jié)點(diǎn)編為一組,每組的頭指針為 hinode。這是因?yàn)橐粋€(gè)目錄文件中的內(nèi)容總是較少的,從而不會(huì)占用太多的搜索時(shí)間。否則,如果路徑名未搜索完畢的話,則 namei反復(fù)將目錄變量沿路徑名下移,且重復(fù)從搜索目錄變量對(duì)應(yīng) i節(jié)點(diǎn)開始的上述操作。在陷阱指令啟動(dòng)中斷和陷阱總控程序的同時(shí),系統(tǒng)調(diào)用的各參數(shù)寫入 user結(jié)構(gòu)中對(duì)應(yīng)部分。這里,假定
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1