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

正文內(nèi)容

操作系統(tǒng)教程第4章-資料下載頁

2025-09-25 23:59本頁面
  

【正文】 建,并且也不是誰都有權來創(chuàng)建。如果要創(chuàng)建一個新的特殊文件,則應該由系統(tǒng)管理員通過系統(tǒng)調(diào)用 mknod來完成。它的使用格式是: mknod( pathname, mode, dev); 其中,參數(shù) pathname是文件的路徑名, mode指出文件的類型( B表示塊設備, C表示字符設備), dev是主設備號和次設備號的組合。比如有如下命令: mknod( /dev/tty12, C, 2 12); 表示要在根目錄的子目錄 dev下,創(chuàng)建一個名為tty12的文件(由于它建立在子目錄 dev下,因此它是一個特殊文件),由于 mode=“C”,因此是一個字符設備文件,該設備的主設備號是 2,次設備號是 12。 UNIX對塊設備的管理 UNIX在塊設備和內(nèi)存之間安放了緩沖區(qū) , 通過它使塊設備與內(nèi)存間的數(shù)據(jù)流動在速度上能夠匹配 , 從而達到減少內(nèi) 、 外存?zhèn)鬏敶螖?shù)的目的 。 如圖 721 所示 。 對于寫操作 , 先是把內(nèi)存用戶區(qū)中的數(shù)據(jù)拷貝到緩沖區(qū) , 再從緩沖區(qū)輸出到設備;對于讀操作 , 先從設備接收數(shù)據(jù)到緩沖區(qū) , 再將緩沖區(qū)中的數(shù)據(jù)拷貝到指定的內(nèi)存用戶區(qū) 。 塊設備的每一個緩沖區(qū)長度為 512個字節(jié)或 1024個字節(jié) , 這要由文件系統(tǒng)來確定 。 由一個個緩沖區(qū) , 組成了供塊設備輸入 /輸出使用的緩沖池 。 為了便于管理 ,UNIX把緩沖池中的每個緩沖區(qū)分成兩個部分:一個是真正用于存放數(shù)據(jù)的部分 , 一個是用于管理的部分 。前者仍稱為 “ 緩沖區(qū) ” , 后者稱為 “ 緩沖區(qū)控制塊 ” ,并在緩沖區(qū)和緩沖區(qū)控制塊之間保持一一對應的關系 。圖 722給出了緩沖區(qū)控制塊的內(nèi)容和它與緩沖區(qū)的對應關系 。 1. 空閑緩沖區(qū)隊列 為了構成系統(tǒng)中空閑緩沖區(qū)隊列 , UNIX設置了一個名為 bfreelist的控制塊 , 它的結構與緩沖區(qū)控制塊相同 , 里面的 av_forw和 av_back就是塊設備空閑緩沖區(qū)隊列的首指針和尾指針 , 如圖 723所示 。 對于空閑緩沖區(qū)隊列 , 有兩點要說明:第一 , 這個由緩沖區(qū)控制塊構成的隊列是一個雙向鏈表 , 它們通過各自的前向指針 av_forw和后向指針 av_back鏈接在一起 , 形成隊列 。 第二 , UNIX對這個隊列采用先進先出 ( FIFO) 的管理算法 。 即當釋放一個緩沖區(qū)時 ,與之對應的緩沖區(qū)控制塊就被鏈入到空閑緩沖區(qū)隊列之尾;當申請一個緩沖區(qū)時 , 就把空閑緩沖區(qū)隊列之首的那個緩沖區(qū)控制塊摘下分配出去 , 這也就意味著是把這個緩沖區(qū)控制塊所對應的緩沖區(qū)分配出去 。 2.輸入 /輸出請求隊列 當用戶對塊設備提出輸入 /輸出請求時,首先要申請一個空閑的緩沖區(qū)控制塊(注意:申請到空閑的緩沖區(qū)控制塊,就意味著申請到了存放數(shù)據(jù)的緩沖區(qū),因為它們是一一對應的),并把這次輸入 /輸出請求具體要完成的任務填入到緩沖區(qū)控制塊中(數(shù)據(jù)源的地址、目的地址、傳輸?shù)膫€數(shù)等等)。因此, UNIX把向主設備號相同的設備提出的 I/O請求所對應的緩沖區(qū)控制塊鏈接在一起,形成對這個設備的輸入 /輸出請求隊列。該隊列的首指針就是這個設備的設備表里的d_actf,尾指針是 d_actl。如圖 724所示。 對于塊設備的輸入 /輸出請求隊列有三點說明:第一,它是一個單鏈表,不像圖 723所示的空閑緩沖區(qū)隊列,那里給出的是一個雙向鏈表。第二,由于一個緩沖區(qū)控制塊不可能同時在空閑緩沖區(qū)隊列和輸入 /輸出請求隊列,因此,在輸入 /輸出請求隊列中,就借用緩沖區(qū)控制塊中的 av_forw指針來構成單鏈表(這個指針在空閑緩沖區(qū)隊列里是前向指針)。第三, UNIX對這個隊列采用先進先出( FIFO)的管理算法。即后到的輸入 /輸出請求所對應的緩沖區(qū)控制塊被排在隊尾,設備總是為排在隊首的那個緩沖區(qū)控制塊中所記錄的請求服務。服務完一個后,就把它從隊首摘下,然后再為下一個請求服務。 3.設備緩沖區(qū)隊列 這是由緩沖區(qū)控制塊組成的第三種隊列,是 UNIX對緩沖區(qū)管理的一大特色。下面來說明這是一個什么隊列,為什么要組成它。 緩沖池中的緩沖區(qū)資源是有限的,為了能夠?qū)λ鼈兂浞值丶右岳?,以及對它們里面存放的?shù)據(jù)信息最大限度地加以利用, UNIX提出了這樣的設想:一個已經(jīng)在空閑緩沖區(qū)隊列中的緩沖區(qū)控制塊,在它未被挪為它用之前,它對應的緩沖區(qū)中保存的仍然是磁盤上某塊中的數(shù)據(jù)信息。如果這時根據(jù)需要又要對該磁盤塊進行操作,那么大可不必去通過啟動 I/O獲得盤塊上的數(shù)據(jù),這些數(shù)據(jù)還在原來的緩沖區(qū)中完好無損地保存著,只要拿來就可以使用。這樣做的結果是減少了 I/O次數(shù),大大提高了系統(tǒng)的工作效率。 出自于這些考慮, UNIX一方面仍然是讓被釋放緩沖區(qū)所對應的緩沖區(qū)控制塊鏈入到空閑緩沖區(qū)隊列之尾,以便能夠它用。另一方面又設置了一個新的隊列:設備緩沖區(qū)隊列,即把為某個設備服務的緩沖區(qū)所對應的緩沖區(qū)控制塊全都匯集在一起,形成了這個設備的設備緩沖區(qū)隊列。 一個設備的設備緩沖區(qū)隊列由緩沖區(qū)控制塊中的d_forw和 d_back指針進行鏈接,前者為前向指針,后者為后向指針。該隊列的首、尾指針是設備表中的d_forw和 d_back。整個隊列如圖 725所示。 對于設備緩沖區(qū)隊列 , 有如下四點要說明 。 ( 1) 這個由緩沖區(qū)控制塊構成的隊列是一個雙向鏈表 , 它們通過各自的前向指針 b_forw和后向指針b_back鏈接在一起 , 形成隊列 。 ( 2) 當一個緩沖區(qū)被分配給某個塊設備做輸入 /輸出用時 , 它所對應的緩沖區(qū)控制塊就從隊首插入到隊列里 。 ( 3)當一個緩沖區(qū)控制塊插入到一個設備的設備緩沖區(qū)隊列中之后,即便該緩沖區(qū)被釋放,它也仍然在這個隊列中排著。這就是說,在任何時刻, UNIX中的任何一個緩沖區(qū)控制塊,總會在空閑緩沖區(qū)隊列、設備緩沖區(qū)隊列以及設備輸入 /輸出隊列這三個隊列中的兩個里排隊,或是在空閑緩沖區(qū)隊列、設備緩沖區(qū)隊列里面排著,或是在設備緩沖區(qū)隊列、設備輸入 /輸出隊列里面排著。 ( 4)只有當一個緩沖區(qū)的服務對象改變(比如原來被分配給磁盤 1使用,現(xiàn)在被分配給磁盤 2使用了)時,該緩沖區(qū)所對應的緩沖區(qū)控制塊才會從一個設備緩沖區(qū)隊列上摘下,進入到另一個設備緩沖區(qū)隊列中;否則即便緩沖區(qū)被釋放,它仍然保持在原來的設備緩沖區(qū)隊列中。 UNIX對字符設備的管理 字符設備的特點是:工作速度慢;每次傳輸?shù)臄?shù)量雖然不定 , 但總的來說較少;各種設備之間的物理差異很大 。 UNIX為它們的輸入 /輸出采用了較為容易管理的字符緩沖技術 。 字符設備輸入 /輸出所使用的緩沖池 , 由一個個緩沖區(qū)組成 , 每個緩沖區(qū)既含數(shù)據(jù)存放部分又含管理控制部分 , 這與塊設備緩沖區(qū)兩者分開的管理辦法不同 。圖 726給出了字符緩沖區(qū)的結構示意 。 下面對字符緩沖區(qū)中的各項內(nèi)容做一些必要的說明: ? c_next(緩沖區(qū)指針) ——這是一個指向下一個字符緩沖區(qū)的指針,由它可以形成字符緩沖區(qū)的各種隊列。 ? c_first(本緩沖區(qū)首字符位置) ——它總是指明當前本緩沖區(qū)中存放的第 1個可用字符所在的位置。 ? c_last(本緩沖區(qū)尾字符位置) ——它總是指明當前本緩沖區(qū)中存放的最后一個可用字符所在的位置。 在這三個信息的后面 , 緊跟著一個 64字節(jié)大小的緩沖數(shù)據(jù)區(qū) 。 對于字符緩沖區(qū) , 只有空閑緩沖區(qū)隊列和設備的輸入 /輸出隊列 。 它們分別如圖 727(a)、 圖 727(b)所示 。 1.空閑緩沖區(qū)隊列 為了形成空閑緩沖區(qū)隊列, UNIX設置了一個隊列首指針 cfreelist,它總是指向該隊列的第 1個空閑緩沖區(qū),在隊列中的所有緩沖區(qū),通過自己的 c_next指向下一個緩沖區(qū),成為一個單鏈表。最后一個緩沖區(qū)的c_next=NULL,表示隊列末尾。 UNIX把空閑緩沖區(qū)隊列視為一個棧來管理,進隊列和出隊列都是在隊首進行。也就是說,申請一個字符緩沖區(qū)時,就把該隊列中的第 1個緩沖區(qū)摘下分配出去;釋放一個緩沖區(qū)時,就把它插入到隊首。 2.輸入 /輸出請求隊列 每一個字符設備都有自己的設備表,該表中有兩個指針: c_cf和 c_cl,前者總是指向該設備輸入 /輸出請求隊列之首的那個緩沖區(qū),后者總是指向該設備輸入 /輸出請求隊列之尾的那個緩沖區(qū)。 對于一個字符緩沖區(qū), c_first是從緩沖區(qū)取字符的指針, c_last是往緩沖區(qū)中存字符的指針。比如圖 728(a)表示某個字符設備的輸入 /輸出請求隊列初態(tài)??梢钥闯觯藭r隊列中只有一個緩沖區(qū),該緩沖區(qū)中現(xiàn)在還有 5個字符, c_first指向當前的第 1個字符“ a”,c_last指向當前的最后一個字符“ e”。如果現(xiàn)在要從緩沖區(qū)中取一個字符,于是根據(jù) c_first的指點,把字符“ a”取出,調(diào)整指針 c_first指向字符“ b”,如圖 728(b)所示。如果這時需要輸入一個字符“ f”,因為現(xiàn)在c_last已經(jīng)指向緩沖區(qū)的最后了,故應該申請一個新的緩沖區(qū),按照指針 c_first的指點把字符“ f”存入,并鏈入輸入 /輸出隊列之尾。這樣就從圖 728(b)變成了圖 728(c)。
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1