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

正文內(nèi)容

操作系統(tǒng)第九章文件和設(shè)備管理示例-wenkub.com

2025-01-19 06:37 本頁面
   

【正文】 如果這時需要輸入一個字符 “ f” , 因為現(xiàn)在 c_last已經(jīng)指向緩沖區(qū)的最后了 , 故應(yīng)該申請一個新的緩沖區(qū) , 按照指針c_first的指點把字符 “ f” 存入 , 并鏈入輸入 /輸出隊列之尾 。 62 對于一個字符緩沖區(qū) , c_first是從緩沖區(qū)取字符的指針 , c_last是往緩沖區(qū)中存字符的指針 。 最后一個緩沖區(qū)的 c_next=NULL,表示隊列末尾 。 ? 在這三個信息的后面 , 緊跟著一個 64字節(jié)大小的緩沖數(shù)據(jù)區(qū) 。 圖 結(jié)構(gòu)示意 。 服務(wù)完一個后 , 就把它從隊首摘下 , 然后再為下一個請求服務(wù) 。 54 55 ? 對于塊設(shè)備的輸入 /輸出請求隊列有三點說明:第一 ,它是一個單鏈表 , 不像空閑緩沖區(qū)隊列 , 那里給出的是一個雙向鏈表 。 53 ? 3. 輸入 /輸出請求隊列 ( 塊設(shè)備 av鏈 )) 當(dāng)用戶對塊設(shè)備提出輸入 /輸出請求時 , 首先要申請一個空閑的緩沖區(qū)控制塊 ( 注意:申請到空閑的緩沖區(qū)控制塊 , 就意味著申請到了存放數(shù)據(jù)的緩沖區(qū) , 因為它們是一一對應(yīng)的 ) , 并把這次輸入 /輸出請求具體要完成的任務(wù)填入到緩沖區(qū)控制塊中 ( 數(shù)據(jù)源的地址 、 目的地址 、 傳輸?shù)膫€數(shù)等等 ) 。 ( 2) 當(dāng)一個緩沖區(qū)被分配給某個塊設(shè)備做輸入 /輸出用時 , 它所對應(yīng)的緩沖區(qū)控制塊就從隊首插入到隊列里 。 一個設(shè)備的設(shè)備緩沖區(qū)隊列由緩沖區(qū)控制塊中的d_forw和 d_back指針進行鏈接 , 前者為前向指針 ,后者為后向指針 。 如果這時根據(jù)需要又要對該磁盤塊進行操作 , 那么大可不必去通過啟動 I/O獲得盤塊上的數(shù)據(jù) , 這些數(shù)據(jù)還在原來的緩沖區(qū)中完好無損地保存著 , 只要拿來就可以使用 。 即當(dāng)釋放一個緩沖區(qū)時 , 與之對應(yīng)的緩沖區(qū)控制塊就被鏈入到空閑緩沖區(qū)隊列之尾;當(dāng)申請一個緩沖區(qū)時 , 就把空閑緩沖區(qū)隊列之首的那個緩沖區(qū)控制塊摘下分配出去 , 這也就意味著是把這個緩沖區(qū)控制塊所對應(yīng)的緩沖區(qū)分配出去 。 圖 它與緩沖區(qū)的對應(yīng)關(guān)系 。 43 ? 塊設(shè)備的每一個緩沖區(qū)長度為 512個字節(jié)或1024個字節(jié) , 這要由文件系統(tǒng)來確定 。 比如有如下命令: mknod( /dev/abc, C, 2 12); 表示要在根目錄的子目錄 dev下 , 創(chuàng)建一個名為 abc的文件 ( 由于它建立在子目錄 dev下 , 因此它是一個設(shè)備文件 ) , 由于 mode=“ C” , 因此是一個字符設(shè)備文件 , 該設(shè)備的主設(shè)備號是 2, 次設(shè)備號是 12。 41 ? 在 UNIX中 , 是通過系統(tǒng)調(diào)用 creat來建立新文件的 。 ? 從前面對 UNIX文件管理的講述可知 , UNIX把塊設(shè)備和字符設(shè)備都視為特殊文件來對待 , 它們的文件目錄都在子目錄 dev下 。 由于這些設(shè)備主要供計算機接收外部信息 , 或把加工完畢的信息傳遞給外部世界 , 因此也被稱為輸入 /輸出設(shè)備 。 如圖 (b)所示 。 37 ? unlink(去鏈接 ) 38 比如考慮上圖的情形 。 它的使用格式是: link(pathname1, pathname2); 其中參數(shù) pathname1是原文件的路徑名 , 參數(shù)pathname2為其新取的路徑名 。 35 文件系統(tǒng)的系統(tǒng)調(diào)用 UNIX提供了一些系統(tǒng)調(diào)用命令 , 以便用戶在程序一級完成對文件的操作 。 這時除了用到 di_addr[0]~di_addr[9]外 , 還要用到 d i_ a d d r [ 10]、 d i_ a d d r [ 11]和di_addr[12]。 但這還不夠 , 又利用 di_addr[11]指向一個磁盤塊 , 由它指向 128個磁盤塊 , 每個都是一個索引 。 30 31 ? 大型和巨型文件的索引結(jié)構(gòu) : 當(dāng)一個文件的長度在138~16522磁盤塊內(nèi)時 , 就成為一個 UNIX的大型文件 。 在圖中 , di_addr[0]~di_addr[9]仍然直接指向文件數(shù)據(jù)存放的 10個磁盤塊號 , 然后又利用di_addr[10]指向一個磁盤塊 。 因此 , 在 UNIX中 ,小型文件是通過 i節(jié)點中的數(shù)組 di_addr[ ]構(gòu)成一級索引表而獲得文件在磁盤上的存儲位置的 。 這樣 , UNIX可以根據(jù)文件的大小 , 通過使用這張存儲索引表 , 形成小型 、 中型 、 大型和巨型等不同規(guī)模的文件 。 ? 分配 :利用過程 iget實現(xiàn) ? 回收 :利用過程 iput實現(xiàn) 25 系統(tǒng)打開文件表的管理 ? 系統(tǒng)打開文件表 :記錄打開同一文件的不同進程和不同進程所使用的不同打開路徑 , 及其對應(yīng)的讀寫指針 。 23 磁盤 i節(jié)點的管理 ? 基本思想 :在給新建文件分配磁盤存儲區(qū)之前 ,為其分配磁盤 i節(jié)點 , 以將文件的有關(guān)信息記入其中 , 并將用戶提供的文件名和磁盤 i節(jié)點號一并組成一個新目錄項 , 記入其父目錄文件中 。 不過要注意 , 在把釋放塊的地址存入索引表 s_free[ ]的表之前 , 必須檢查 s_nfree的取值 。 若再申請空閑塊 , s_nfree減 1后成為 0, 即要把 s_free[0]所指的塊分配出去 。 根據(jù)前面所說 ,先把這塊中記錄的 101個信息拷貝到 filsys結(jié)構(gòu)的s_nfree和 s_free[ ]里面去 , 然后才將它分配出去 。 這里要注意的是 , 如果在 s_nfree上做減 1操作后 ,其值等于 0了 , 那么就是要把 s_free[0]所指向的那一個磁盤空閑塊分配出去 。 無論是磁盤空閑塊的分配還是回收 , 都是在 filsys中的空閑磁盤塊索引表 s_free[ ]中進行 , 并把它視為一個棧 。 由于現(xiàn)在最后一組只有 52個空閑塊 , 因此在 filsys中的s_nfree取值為 52, 并且只用到數(shù)組 s_free[100]的前 52個元素 , 即用 s_free[0]到 s_free[51]存放最后一組的 52個空閑塊的地址 。 為了管理的需要 , 把它的總塊數(shù)仍記為 1 0 0, 見圖中第 2組里的s_nfree=100。 也就是說 , 相當(dāng)于總是在后一組中 , 開辟s_nfree和 s_free[100]所需要的位置 , 用于存放前一組的分組信息 。 它們都按 0~99的順序進行編號 。 15 16
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1