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

正文內(nèi)容

操作系統(tǒng)教程第4章(文件)

2025-10-13 23:59 上一頁面

下一頁面
 

【正文】 s的 s_nfree和 s_free[100]中。 在采用“成組鏈接”法后,如何分配空閑塊,如何回收空閑塊?下面來討論這兩個問題。 因此,總是先在 s_nfree上做減 1操作,然后把s_free[s_nfree]中記錄的磁盤塊分配出去。 分配時還要注意的一個問題是如果分配一直進行,現(xiàn)在要把第 2組的第 0塊分配出去。此時, filsys中的s_nfree=1, s_free[0]=0。 進行空閑塊的回收時,就是將該塊的地址登記在空閑磁盤塊索引表的 s_free[s_nfree]表目中 ,然后讓s_nfree加 1。于是,就把 filsys中的 s_nfree和s_free[0]~s_free[99]共 101個值存入新釋放塊中,然后將此塊的地址填入 s_free[0]中,將 s_nfree置為 1。 1. creat(建立文件) 2. open( 打開文件 ) 3. close( 關(guān)閉文件 ) 4. read( 讀 ) 5. write( 寫 ) 6. link( 鏈接 ) 系統(tǒng)調(diào)用 link可以為一個已經(jīng)存在的文件開辟一條新的路徑 , 也就是說 , 可以為一個文件再取一個新的名字 。 由于每個文件的 i節(jié)點編號是惟一的 , 因此經(jīng)過 link之后 , 兩個不同路徑名的文件就與同一個文件相對應了 。但如果通過命令: link( /usr/wang/x, /usr/zong/k); 那么,若當前目錄為 zong,則 zong直接通過 k就能夠訪問 wang的文件 x了,這是因為 link命令在 zong的文件 k和 wang的文件 x之間建立了鏈接的緣故。 由于這些設備是用來存儲信息的 ,因此有時把它們稱為存儲設備;后者與內(nèi)存之間以字節(jié)為單位進行信息交換 , 比如鍵盤輸入 、 顯示器和打印機等都屬于字符設備之列 。這樣,由主設備號判定由哪個驅(qū)動程序工作;驅(qū)動程序根據(jù)次設備號確定控制哪臺設備去完成所需要的 I/O。由此表明它們不是普通文件,也不是目錄文件,而是設備文件,并且由此也能區(qū)分是塊設備文件還是字符設備文件。它的使用格式是: mknod( pathname, mode, dev); 其中,參數(shù) pathname是文件的路徑名, mode指出文件的類型( B表示塊設備, C表示字符設備), dev是主設備號和次設備號的組合。 對于寫操作 , 先是把內(nèi)存用戶區(qū)中的數(shù)據(jù)拷貝到緩沖區(qū) , 再從緩沖區(qū)輸出到設備;對于讀操作 , 先從設備接收數(shù)據(jù)到緩沖區(qū) , 再將緩沖區(qū)中的數(shù)據(jù)拷貝到指定的內(nèi)存用戶區(qū) 。前者仍稱為 “ 緩沖區(qū) ” , 后者稱為 “ 緩沖區(qū)控制塊 ” ,并在緩沖區(qū)和緩沖區(qū)控制塊之間保持一一對應的關(guān)系 。 第二 , UNIX對這個隊列采用先進先出 ( FIFO) 的管理算法 。該隊列的首指針就是這個設備的設備表里的d_actf,尾指針是 d_actl。第三, UNIX對這個隊列采用先進先出( FIFO)的管理算法。下面來說明這是一個什么隊列,為什么要組成它。 出自于這些考慮, UNIX一方面仍然是讓被釋放緩沖區(qū)所對應的緩沖區(qū)控制塊鏈入到空閑緩沖區(qū)隊列之尾,以便能夠它用。整個隊列如圖 725所示。 ( 3)當一個緩沖區(qū)控制塊插入到一個設備的設備緩沖區(qū)隊列中之后,即便該緩沖區(qū)被釋放,它也仍然在這個隊列中排著。 UNIX為它們的輸入 /輸出采用了較為容易管理的字符緩沖技術(shù) 。 ? c_first(本緩沖區(qū)首字符位置) ——它總是指明當前本緩沖區(qū)中存放的第 1個可用字符所在的位置。 它們分別如圖 727(a)、 圖 727(b)所示 。也就是說,申請一個字符緩沖區(qū)時,就把該隊列中的第 1個緩沖區(qū)摘下分配出去;釋放一個緩沖區(qū)時,就把它插入到隊首??梢钥闯?,此時隊列中只有一個緩沖區(qū),該緩沖區(qū)中現(xiàn)在還有 5個字符, c_first指向當前的第 1個字符“ a”,c_last指向當前的最后一個字符“ e”。 。如果這時需要輸入一個字符“ f”,因為現(xiàn)在c_last已經(jīng)指向緩沖區(qū)的最后了,故應該申請一個新的緩沖區(qū),按照指針 c_first的指點把字符“ f”存入,并鏈入輸入 /輸出隊列之尾。 對于一個字符緩沖區(qū), c_first是從緩沖區(qū)取字符的指針, c_last是往緩沖區(qū)中存字符的指針。最后一個緩沖區(qū)的c_next=NULL,表示隊列末尾。 在這三個信息的后面 , 緊跟著一個 64字節(jié)大小的緩沖數(shù)據(jù)區(qū) 。圖 726給出了字符緩沖區(qū)的結(jié)構(gòu)示意 。 ( 4)只有當一個緩沖區(qū)的服務對象改變(比如原來被分配給磁盤 1使用,現(xiàn)在被分配給磁盤 2使用了)時,該緩沖區(qū)所對應的緩沖區(qū)控制塊才會從一個設備緩沖區(qū)隊列上摘下,進入到另一個設備緩沖區(qū)隊列中;否則即便緩沖區(qū)被釋放,它仍然保持在原來的設備緩沖區(qū)隊列中。 ( 1) 這個由緩沖區(qū)控制塊構(gòu)成的隊列是一個雙向鏈表 , 它們通過各自的前向指針 b_forw和后向指針b_back鏈接在一起 , 形成隊列 。 一個設備的設備緩沖區(qū)隊列由緩沖區(qū)控制塊中的d_forw和 d_back指針進行鏈接,前者為前向指針,后者為后向指針。如果這時根據(jù)需要又要對該磁盤塊進行操作,那么大可不必去通過啟動 I/O獲得盤塊上的數(shù)據(jù),這些數(shù)據(jù)還在原來的緩沖區(qū)中完好無損地保存著,只要拿來就可以使用。服務完一個后,就把它從隊首摘下,然后再為下一個請求服務。 對于塊設備的輸入 /輸出請求隊列有三點說明:第一,它是一個單鏈表,不像圖 723所示的空閑緩沖區(qū)隊列,那里給出的是一個雙向鏈表。 2.輸入 /輸出請求隊列 當用戶對塊設備提出輸入 /輸出請求時,首先要申請一個空閑的緩沖區(qū)控制塊(注意:申請到空閑的緩沖區(qū)控制塊,就意味著申請到了存放數(shù)據(jù)的緩沖區(qū),因為它們是一一對應的),并把這次輸入 /輸出請求具體要完成的任務填入到緩沖區(qū)控制塊中(數(shù)據(jù)源的地址、目的地址、傳輸?shù)膫€數(shù)等等)。 1. 空閑緩沖區(qū)隊列 為了構(gòu)成系統(tǒng)中空閑緩沖區(qū)隊列 , UNIX設置了一個名為 bfreelist的控制塊 , 它的結(jié)構(gòu)與緩沖區(qū)控制塊相同 , 里面的 av_forw和 av_back就是塊設備空閑緩沖區(qū)隊列的首指針和尾指針 , 如圖 723所示 。 由一個個緩沖區(qū) , 組成了供塊設備輸入 /輸出使用的緩沖池 。 UNIX對塊設備的管理 UNIX在塊設備和內(nèi)存之間安放了緩沖區(qū) , 通過它使塊設備與內(nèi)存間的數(shù)據(jù)流動在速度上能夠匹配 , 從而達到減少內(nèi) 、 外存?zhèn)鬏敶螖?shù)的目的 。但特殊文件不能用普通的方法來創(chuàng)建,并且也不是誰都有權(quán)來創(chuàng)建。由于它們是文件,因此有自己的 i節(jié)點。 為了識別每一個具體的設備, UNIX是這樣做的:每一類設備附有一個編號,稱為“主設備號”,同類設備中的不同設備也給予一個編號,稱為“次設備號”。 7. unlink(去鏈接) UNIX的設備管理 UNIX設備管理概述 UNIX是根據(jù)設備與內(nèi)存之間信息交換的單位來對設備進行分類的 , 因此在整個系統(tǒng)中 , 歸到設備管理的有兩類設備:塊設備和字符設備 。 zong和 wang要共同完成一項工作。 link處理程序先按照參數(shù) pathname2的指點 , 將新的文件名登記到指定的路徑目錄中 。有關(guān)的系統(tǒng)調(diào)用是: creat、open、 read、 write、 close、 link和 unlink等。如果發(fā)現(xiàn) s_nfree等于 100,那么表明這時空閑磁盤塊索引表在此之前已經(jīng)收集滿了 100個空閑的磁盤塊,它們應該形成一個新的鏈組。此時發(fā)現(xiàn) s_free[0]=0,而不是一個磁盤塊的地址,表明所有的磁盤空閑塊都分配出去了,提出請求的進程只能阻塞等待。這意味著系統(tǒng)現(xiàn)在只有最后 99塊能夠分配了。由于它是這一組的第 0個磁盤塊(按照分配順序,它總是在一組中最后被分配出去),里面包含有它前一組空閑塊的信息在內(nèi)。分配時,做出棧操作;回收時,做進棧操作。 至此,成組鏈接的格局已經(jīng)完成:在 filsys的s_free[ ]中,記錄了當前直接可以分配的 52個空閑塊。另外,第一組磁盤塊編號是從 1開始的,因此在相當于第 0號磁盤塊的位置存放一個 0,而不是某一個磁盤塊的地址,見圖 719中第 2組中的s_free[0]=0。 在此,有兩組的情況要做特殊處理。 在圖 719中 , 從右至左反映了這種分組的結(jié)構(gòu) 。 為了下面講述方便 , 對每一組的塊都進行分別編號 。 從形式上看,利用數(shù)組 s_free[100]直接管理 100個空閑的磁盤塊,與利用數(shù)組 s_inode[100]直接管理 100個空閑的 i節(jié)點相類似,但實際上相差很遠。 在磁盤管理區(qū) filsys結(jié)構(gòu)中,有兩個內(nèi)容涉及到磁盤空閑塊的管理,一個是由數(shù)組 s_free[100]構(gòu)成的一個空閑磁盤塊索引表。 UNIX對文件存儲空間的管理 在磁盤上, UNIX總是把文件安排在一般數(shù)據(jù)存儲區(qū)(見圖 714)。 當一個文件所需的磁盤塊大于 16522個磁盤塊時 ,就成為 UNIX 的 巨 型 文 件 了 。然后如同圖 717那樣,利用 di_addr[10]指向一個磁盤塊,由它提供 128個磁盤塊的索引,從而使文件總共達到 138個磁盤存儲塊
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1