《操作系統(tǒng)》課程設(shè)計任務(wù)書_第1頁
《操作系統(tǒng)》課程設(shè)計任務(wù)書_第2頁
《操作系統(tǒng)》課程設(shè)計任務(wù)書_第3頁
《操作系統(tǒng)》課程設(shè)計任務(wù)書_第4頁
《操作系統(tǒng)》課程設(shè)計任務(wù)書_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE20PAGEI操作系統(tǒng)課程設(shè)計任務(wù)書主編:操作系統(tǒng)課程組計算機學(xué)院2009前言操作系統(tǒng)是計算機系統(tǒng)中的核心系統(tǒng)軟件,它負責(zé)控制和管理整個系統(tǒng)的資源并組織用戶協(xié)調(diào)使用這些資源,是計算機高效的工作。操作系統(tǒng)課程是計算機科學(xué)與技術(shù)專業(yè)核心課程。由于操作系統(tǒng)是最優(yōu)秀、最復(fù)雜和最龐大的軟件之一,所以,真正領(lǐng)會操作系統(tǒng)課程所介紹的感念、原理、方法和技巧等,是十分困難的。另外,理教過程中,為了使學(xué)生能清楚的理解操作系統(tǒng)對各類資源管理的思想和算法,往往采取將整個系統(tǒng)離散化的方式進行講解,再加上針對算法的安排實驗,卻能讓學(xué)生很好的理解各種管理思想和方法。但是,這樣一來存在一個突出的問題,學(xué)習(xí)中缺少系統(tǒng)的整體感。為了彌補這種缺憾,計劃中安排了1.5周的課程設(shè)計。考慮到實驗室設(shè)備為共享計算機,不能因操作系統(tǒng)課程設(shè)而影響其它工作,特選擇不會影響整個系統(tǒng)工作的文件系統(tǒng)作為操作系統(tǒng)課程設(shè)計的對象。

《操作系統(tǒng)》課程設(shè)計目錄TOC\o"1-3"\u第一章概述 1第二章課程設(shè)計要求及注意事項 2第三章課程設(shè)計項目 3項目一:多線程同步 3一、生產(chǎn)者-消費者問題 3二、讀者-寫者問題的實現(xiàn) 6項目二:文件管理系統(tǒng)的設(shè)計 8一、子目錄管理 8二、目錄項結(jié)構(gòu) 8三、文件分配表(FAT)作用 8四、創(chuàng)建文件 8五、文件復(fù)制 8六、文件頭結(jié)構(gòu) 9七、程序加載方法 9八、內(nèi)存駐留(TSR)方法 9第四章參考文獻 10附錄A相關(guān)API函數(shù) 11附錄B優(yōu)盤文件系統(tǒng) 12附錄C課程設(shè)計報告規(guī)范 17附錄D考核方式 18第一章概述操作系統(tǒng)課程是計算機科學(xué)與技術(shù)專業(yè)核心課程?!陡呒壵Z言程序設(shè)計》、《數(shù)據(jù)結(jié)構(gòu)》等課程為其前趨課程。該課程理論性強,難以理解。通過該課程設(shè)計,能幫助學(xué)生深透理解并真正領(lǐng)會操作系統(tǒng)課程所介紹的感念、原理、方法和技巧,以及操作系統(tǒng)的整體認識。該課程設(shè)計為1.5周即45學(xué)時。涉及內(nèi)容共分十個子任務(wù),其中兩個為多線程同步程序設(shè)計,八個為文件系統(tǒng)中的子目錄管理、目錄項結(jié)構(gòu)、文件分配表(FAT)作用、創(chuàng)建文件、文件復(fù)制、文件頭結(jié)構(gòu)、程序加載方法、內(nèi)存駐留(TSR)方法。這八個任務(wù)對操作系統(tǒng)原理中的文件系統(tǒng)所涉及到的理論知識進行了全面而有機地訓(xùn)練。實現(xiàn)語言為匯編語言或C或VC++等。學(xué)生可以根據(jù)自己情況選做一個或多個項目進行設(shè)計,并已完成個數(shù)的多少和質(zhì)量評定成績。

第二章課程設(shè)計要求及注意事項設(shè)計環(huán)境要求:硬件:普通PC386以上微機;一張軟盤或優(yōu)盤;系統(tǒng)平臺:Windows2000/XP、Linux;開發(fā)語言:C、VC++、匯編語言;設(shè)計要求:要求每位學(xué)生事先準備一張軟盤或優(yōu)盤,題目二設(shè)計中針對軟盤或優(yōu)盤進行操作。設(shè)計前應(yīng)復(fù)習(xí)設(shè)計中所涉及的理論知識和算法,針對設(shè)計要求完成基本代碼編寫并完成預(yù)習(xí)報告、設(shè)計中認真調(diào)試所編代碼并進行必要的測試、記錄并分析設(shè)計結(jié)果,設(shè)計后認真書寫符合規(guī)范格式的設(shè)計報告(參見附錄C),并要求用正規(guī)的課程設(shè)計報告紙和封面裝訂整齊,按時上交。

第三章課程設(shè)計項目項目一:多線程同步一、生產(chǎn)者和消費者問題1、實驗?zāi)康模?)掌握基本的同步互斥算法,理解生產(chǎn)者和消費者同步的問題模型。(2)了解Windows2000/XP中多線程的并發(fā)執(zhí)行機制,線程間的同步和互斥。(3)學(xué)習(xí)使用Windows2000/XP中基本的同步對象,掌握相應(yīng)的API。2、實驗要求(1)創(chuàng)建生產(chǎn)者和消費者線程在Windows2000環(huán)境下,創(chuàng)建一個控制臺進程,在此進程中創(chuàng)建n個線程來模擬生產(chǎn)者或者消費者。這些線程的信息由本程序定義的“測試用例文件”中予以指定。該文件的格式和含義如下:31P32P43C414P25C3124第一行說明程序中設(shè)置幾個臨界區(qū),其余每行分別描述了一個生產(chǎn)者或者消費者線程的信息。每一行的各字段間用Tab鍵隔開。不管是消費者還是生產(chǎn)者,都有一個對應(yīng)的線程號,即每一行開始字段那個整數(shù)。第二個字段用字母P或者C區(qū)分是生產(chǎn)者還是消費者。第三個字段表示在進入相應(yīng)線程后,在進行生產(chǎn)和消費動作前的休眠時間,以秒計時;這樣做的目的是可以通過調(diào)整這一列參數(shù),控制開始進行生產(chǎn)和消費動作的時間。如果是代表生產(chǎn)者,則該行只有三個字段。如果代表消費者,則該行后邊還有若干字段,代表要求消費的產(chǎn)品所對應(yīng)的生產(chǎn)者的線程號。所以務(wù)必確認這些對應(yīng)的線程號存在并且該線程代表一個生產(chǎn)者。(2)生產(chǎn)和消費的規(guī)則在按照上述要求創(chuàng)建線程進行相應(yīng)的讀寫操作時,還需要符合以下要求:①共享緩沖區(qū)存在空閑空間時,生產(chǎn)者即可使用共享緩沖區(qū)。②從上邊的測試數(shù)據(jù)文件例子可以看出,某一生產(chǎn)者生產(chǎn)一個產(chǎn)品后,可能不止一個消費者,或者一個消費者多次地請求消費該產(chǎn)品。此時,只有當(dāng)所有的消費需求都被滿足以后,該產(chǎn)品所在的共享緩沖區(qū)才可以被釋放,并作為空閑空間允許新的生產(chǎn)者使用。③每個消費者線程的各個消費需求之間存在先后順序。例如上述測試用例文件包含一行信息“5C3l24”④要求在每個線程發(fā)出讀寫操作申請、開始讀寫操作和結(jié)束讀寫操作時分別顯示提示信息。(3)相關(guān)基礎(chǔ)知識本實驗所使用的生產(chǎn)者和消費者模型具有如下特點:本實驗的多個緩沖區(qū)不是環(huán)形循環(huán)的,也不要求按順序訪問。生產(chǎn)者可以把產(chǎn)品放到目前某一個空緩沖區(qū)中。消費者只消費指定生產(chǎn)者的產(chǎn)品。在測試用例文件中指定了所有的生產(chǎn)和消費的需求,只有當(dāng)共享緩沖區(qū)的數(shù)據(jù)滿足了所有關(guān)于它的消費需求后,此共享緩沖區(qū)才可以作為空閑空間允許新的生產(chǎn)者使用。本實驗在為生產(chǎn)者分配緩沖區(qū)時各生產(chǎn)者間必須互斥,此后各個生產(chǎn)者的具體生產(chǎn)活動可以并發(fā)。而消費者之間只有在對同一產(chǎn)品進行消費時才需要互斥,同時它們在消費過程結(jié)束時需要判斷該消費對象是否已經(jīng)消費完畢并清除該產(chǎn)品。Windows用來實現(xiàn)同步和互斥的實體。在Windows中,常見的同步對象有:信號量(Semaphore)、互斥量(Mutex)、臨界段(CriticalSection)等。使用這些對象都分為三個步驟,一是創(chuàng)建或者初始化:接著請求該同步對象,隨即進入臨界區(qū),這一步對應(yīng)于互斥量的上鎖;最后釋放該同步對象,這對應(yīng)于互斥量的解鎖。這些同步對象在一個線程中創(chuàng)建,在其他線程中都可以使用,從而實現(xiàn)同步互斥。

二、讀者-寫者問題的實現(xiàn)設(shè)計目的通過實現(xiàn)經(jīng)典的讀者寫者問題,鞏固對線程及其同步機制的學(xué)習(xí)效果,加深對相關(guān)基本概念的理解,并學(xué)習(xí)如何將基本原理和實際設(shè)計有機的結(jié)合。2設(shè)計內(nèi)容在Windows2000/XP環(huán)境下,使用多線程和信號量機制實現(xiàn)經(jīng)典的讀者寫者問題,每個線程代表一個讀者或一個寫者。每個線程按相應(yīng)測試數(shù)據(jù)文件的要求,進行讀寫操作。請用信號量機制分別實現(xiàn)讀者優(yōu)先和寫者優(yōu)先的讀者-寫者問題。讀者-寫者問題的讀寫操作限制:(1)寫-寫互斥,即不能有兩個寫者同時進行寫操作(2)讀-寫互斥,即不能同時有一個讀者在讀,同時卻有一個寫者在寫(3)讀-讀允許,即可以有二個以上的讀者同時讀讀者優(yōu)先的附加限制:如果一個讀者申請進行讀操作時已有另一讀者正在進行讀操作,則該讀者可直接開始讀操作。寫者優(yōu)先的附加限制:如果一個讀者申請進行讀操作時已有另一寫者在等待訪問共享資源,則該讀者必須等到?jīng)]有寫者處于等待狀態(tài)后才能開始讀操作。運行結(jié)果顯示要求:要求在每個線程創(chuàng)建、發(fā)出讀寫操作申請、開始讀寫操作和結(jié)束讀寫操作時分別顯示一行提示信息,以確信所有處理都遵守相應(yīng)的讀寫操作限制。3測試數(shù)據(jù)文件格式測試數(shù)據(jù)文件包括n行測試數(shù)據(jù),分別描述創(chuàng)建的n個線程是讀者還是寫者,以及讀寫操作的開始時間和持續(xù)時間。每行測試數(shù)據(jù)包括四個字段,各字段間用空格分隔。第一字段為一個正整數(shù),表示線程序號。第二字段表示相應(yīng)線程角色,R表示讀者是,W表示寫者。第三字段為一個正數(shù),表示讀寫操作的開始時間。線程創(chuàng)建后,延時相應(yīng)時間(單位為秒)后發(fā)出對共享資源的讀寫申請。第四字段為一個正數(shù),表示讀寫操作的持續(xù)時間。當(dāng)線程讀寫申請成功后,開始對共享資源的讀寫操作,該操作持續(xù)相應(yīng)時間后結(jié)束,并釋放共享資源。下面是一個測試數(shù)據(jù)文件的例子:1R352W453R524R655W5.13

項目二:文件管理系統(tǒng)的設(shè)計一、子目錄管理1、目的:了解并掌握DOS創(chuàng)建和撤消子目錄的方法及有關(guān)子目錄操作的系統(tǒng)功能。2、內(nèi)容:用DOS功能調(diào)用39H和3AH來創(chuàng)建和撤消子目錄,以及用3BH來改變當(dāng)前目錄。3、實現(xiàn):創(chuàng)建指定子目錄撤消子目錄指定子目錄為當(dāng)前目錄二、目錄項結(jié)構(gòu)1、目的:了解目錄項中文件屬性的含義及如何修改文件屬性的方法。2、內(nèi)容:用DOS功能調(diào)用43H來獲取并修改文件屬性。三、文件分配表(FAT)作用1、目的:了解FAT作用,掌握通過FDT、FAT恢復(fù)被刪除文件的方法,特別第二個FAT在恢復(fù)被刪除文件中所起的作用。2、內(nèi)容:根據(jù)第二個FAT表,利用FDT的保留域快速恢復(fù)被刪除文件。四、創(chuàng)建文件1、目的:了解如何在DOS下創(chuàng)建一個新文件以及由鍵盤上輸入該文件內(nèi)容的整個過程。2、內(nèi)容:由DOS功能調(diào)用建立一個文本文件,由鍵盤輸入該文件內(nèi)容。五、文件復(fù)制1、目的:掌握文件復(fù)制的一般方法及DOS文件管理功能調(diào)用的使用。2、內(nèi)容:讀一個文本文件的內(nèi)容,將該文件內(nèi)容拷貝到另一個文件中。讀源文件內(nèi)容送入內(nèi)存緩沖區(qū),將緩沖區(qū)內(nèi)容寫入目的文件上,從而完成文件的拷貝。六、文件頭結(jié)構(gòu)1、目的:進一步了解EXE文件特點,掌握EXE文件添加程序的方法。2、內(nèi)容:給任意一個EXE文件添加一段程序。七、程序加載方法1、目的:了解在當(dāng)前程序中加載其他程序的一般方法;加深對EXEC功能調(diào)用的掌握;了解FCB的文件操作方式;了解內(nèi)存管理功能調(diào)用。2、內(nèi)容:在當(dāng)前程序中調(diào)用DOS的EXEC功能,加載執(zhí)行其他應(yīng)用程序。八、內(nèi)存駐留(TSR)方法1、目的:掌握程序駐留內(nèi)存的方法,了解如何用“熱鍵”控制所需操作及對系統(tǒng)時鐘的獲取。2、內(nèi)容:在圖形模式下的屏幕右上角“彈出”一個時鐘窗口,顯示出系統(tǒng)當(dāng)前時鐘的“時:分:秒”值;如果不想讓時鐘顯示,則只要同時按下左SHIFT鍵和右SHIFT鍵,再按下ENTER健,則此時窗口被關(guān)閉;如果再想讓時鐘顯示,只要再次同時按下左SHIFT鍵和右SHIFT鍵即可。

第四章參考文獻1.湯子瀛.計算機操作系統(tǒng)(修訂版)(新世紀版).西安電子科技大學(xué)出版社,2001.82.VisualC++6.0程序設(shè)計與開發(fā)技術(shù)大全.人民郵電出版社3.有關(guān)匯編語言程序設(shè)計:tMasm2007(匯編集成環(huán)境)或其他版本

附錄A相關(guān)API函數(shù)&DOS系統(tǒng)功能調(diào)用1.相關(guān)API函數(shù)CreateThread()在調(diào)用進程的地址空間上創(chuàng)建一個線程ExitThread()用于結(jié)束當(dāng)前線程Sleep()可在指定的時間內(nèi)掛起當(dāng)前線程CreateMutex()創(chuàng)建一個互斥對象,返回對象句柄OpenMutex()打開并返回一個已存在的互斥對象句柄,用于后續(xù)訪問ReleaseMutex()釋放對互斥對象的占用,使之成為可用WaitForSingleObject()可在指定的時間內(nèi)等待指定對象為可用狀態(tài)InitializeCriticalSection()初始化臨界區(qū)對象EnterCriticalSection()等待指定臨界區(qū)對象的所有權(quán)LeaveCriticalSection()釋放指定臨界區(qū)對象的所有權(quán)CreateSemaphore()創(chuàng)建一個信號量對象ReleaseSemaphore()將所指信號量加上指定大小的一個量2.DOS系統(tǒng)功能調(diào)用DOS系統(tǒng)功能調(diào)用表(INT21H)功能號(AH)功能描述入口參數(shù)出口參數(shù)01H鍵盤輸入并回顯單字符AL=讀入字符的ASCII09H顯示字符串DS:DX=待輸出串起始邏輯地址字符串以'$'結(jié)束0AH字符串輸入到緩沖區(qū)DS:DX=待輸出串起始邏輯地址首字節(jié)為最大允許按鍵數(shù)緩沖區(qū)次字節(jié)為實際輸入字符數(shù),然后是輸入串39H建立子目錄(MD)DS:DX=子目錄串首地址AX=錯誤碼3AH刪除子目錄(RD)DS:DX=子目錄串首地址AX=錯誤碼3BH改變當(dāng)前目錄(CD)DS:DX=子目錄串首地址AX=錯誤碼3CH建立文件DS:DX=子目錄串首地址CX=文件屬性成功:AX=文件代號失?。篈X=錯誤碼3DH打開文件DS:DX=子目錄串首地址AL=打開方式成功:AX=文件代號失?。篈X=錯誤碼3EH關(guān)閉文件BX=文件代號失敗:AX=錯誤碼3FH讀文件或設(shè)備DS:DX=數(shù)據(jù)緩沖區(qū)地址BX=文件代號成功:AX=實際讀入字節(jié)數(shù)失敗:AX=錯誤碼40H寫文件或設(shè)備DS:DX=緩沖區(qū)首地址BX=文件代號CX=待寫入的字節(jié)數(shù)成功:AX=實際讀入字節(jié)數(shù)失敗:AX=錯誤碼41H刪除文件DS:DX=緩沖區(qū)首地址成功:AX=00失?。篈X=錯誤碼4CH帶返回碼結(jié)束AL=結(jié)束碼

附錄B優(yōu)盤文件系統(tǒng)優(yōu)盤上的數(shù)據(jù)按照其不同的特點和作用大致可分為5部分:MBR區(qū)、DBR區(qū)、FAT區(qū)、FDT區(qū)和DATA區(qū)。1、主引導(dǎo)記錄(MBR)絕對扇區(qū)號為:MBR_LBA=0x00000000處是主引導(dǎo)記錄,等同位于硬盤的0磁道0柱面1扇區(qū)。在總共512字節(jié)的主引導(dǎo)扇區(qū)中,MBR只占用了其中的446個字節(jié)(ofs:0-ofs:1BDH),另外的64個字節(jié)(ofs:1BEH-ofs:1FDH)交給了DPT(DiskPartitionTable盤分區(qū)表),最后兩個字節(jié)“55AA”(ofs:1FEH-ofs:1FFH)是分區(qū)的結(jié)束標志。①MBR定義如下:typedefstruct{ucharbootcode[446];//ofs:0.啟動代碼。“FA33C08ED0BC…”.

PartitionTablePT[4];//ofs:446.分區(qū)表length=4*16.

uintEndingFlag;//ofs:510.結(jié)束標識:0xAA55.}MBR_tag;②Bootcode[446]啟動代碼一般是固定的,用于引導(dǎo)x86,不用管。③分區(qū)表項的定義如下:typedefstruct{ucharBootFlag;//啟動標志

CHSStartCHS;//分區(qū)開始的柱面、磁頭、扇區(qū)

ucharSystemID;//分區(qū)類型

CHSEndCHS;//分區(qū)結(jié)束的柱面、磁頭、扇區(qū)

ulongRelativeSectors;//分區(qū)起始扇區(qū)數(shù),指分區(qū)相對于記錄該分區(qū)的分區(qū)表的扇區(qū)位置之差(該分區(qū)表:LBA=0x0)。ulongTotalSectors;//分區(qū)總扇區(qū)數(shù)

}PartitionTable;④其中CHS為一個柱面、磁頭、扇區(qū)的結(jié)構(gòu),定義如下:structCHS{ucharHead;//磁頭。

unsignedSector:6;//扇區(qū)。

unsignedCyH2:2;//柱面(高兩位)。

ucharCyL8;//柱面(低八位)。ulongCylinder(){return(uint(CyH2)*256+CyL8);}//返回柱面值

voidSetCylinder(uintCylinder)//設(shè)置柱面值{

CyH2=(Cylinder>>8)&0x3;CyL8=(Cylinder&0xff);}

};例:800101000BFEBFFC3F0000007E86BB00在這里我們可以看到:z“80”是一個分區(qū)的激活標志,表示系統(tǒng)可引導(dǎo);z“010100”表示分區(qū)開始的磁頭號為01,開始的扇區(qū)號為01,開始的柱面號為00;z“0B”表示分區(qū)的系統(tǒng)類型是FAT32,其他比較常用的有04(FAT16)、06(bigFAT16)、01(FAT12)、07(NTFS);z“FEBFFC”表示分區(qū)結(jié)束的磁頭號為254,分區(qū)結(jié)束的扇區(qū)號為63、分區(qū)結(jié)束的柱面號為764;z“3F000000”表示首扇區(qū)的相對扇區(qū)號為63;z“7E86BB00”表示總扇區(qū)數(shù)為12289622。2、系統(tǒng)引導(dǎo)記錄(DBR)絕對扇區(qū)號為:DBR_LBA=MBR.PT[0].RelativeSectors處是DBR,等同位于硬盤的0磁道1柱面1扇區(qū)(512字節(jié)),是操作系統(tǒng)可以直接訪問的第一個扇區(qū),它包括一個引導(dǎo)程序和一個被稱為BPB(BiosParameterBlock)的本分區(qū)參數(shù)記錄表。引導(dǎo)程序的主要任務(wù)是當(dāng)MBR將系統(tǒng)控制權(quán)交給它時,判斷本分區(qū)跟目錄前兩個文件是不是操作系統(tǒng)的引導(dǎo)文件(以DOS為例,即是Io.sys和Msdos.sys)。如果確定存在,就把其讀入內(nèi)存,并把控制權(quán)交給該文件。BPB參數(shù)塊記錄著本分區(qū)的起始扇區(qū)、結(jié)束扇區(qū)、文件存儲格式、硬盤介質(zhì)描述符、根目錄大小、FAT個數(shù),分配單元的大小等重要參數(shù)。DBR定義如下:typedefstruct{

ucharbJmpBoot[3];//ofs:0.典型的如:0xEB,0x3E,0x90。

charbOEMName[8];//ofs:3.典型的如:“MSWIN4.1”。

uintBPB_wBytesPerSec;//ofs:11.每扇區(qū)字節(jié)數(shù)。

ucharBPB_bSecPerClus;//ofs:13.每簇扇區(qū)數(shù)。

uintBPB_wReservedSec;//ofs:14.保留扇區(qū)數(shù),從DBR到FAT的扇區(qū)數(shù)。

ucharBPB_bNumFATs;//ofs:16.FAT的個數(shù)。

uintBPB_wRootEntry;//ofs:17.根目錄項數(shù)。

uintBPB_wTotalSec;//ofs:19.分區(qū)總扇區(qū)數(shù)(<32M時用)。

ucharBPB_bMedia;//ofs:21.分區(qū)介質(zhì)標識,優(yōu)盤一般用0xF8。

uintBPB_wSecPerFAT;//ofs:22.每個FAT占的扇區(qū)數(shù)。

uintBPB_wSecPerTrk;//ofs:24.每道扇區(qū)數(shù)。

uintBPB_wHeads;//ofs:26.磁頭數(shù)。

ulongBPB_dHiddSec;//ofs:28.隱藏扇區(qū)數(shù),從MBR到DBR的扇區(qū)數(shù)。

ulongBPB_dBigTotalSec;//ofs:32.分區(qū)總扇區(qū)數(shù)(>=32M時用)。

ucharbDrvNum;//ofs:36.軟盤使用0x00,硬盤使用0x80。

ucharbReserved1;//ofs:37.保留。

ucharbBootSig;//ofs:38.擴展引導(dǎo)標記:0x29。

ucharbVolID[4];//ofs:39.盤序列號。

charbVolLab[11];//ofs:43.“Msdos”。

charFileSysType[8];//ofs:54.“FAT16”。

ucharExecutableCode[448];//ofs:62.引導(dǎo)代碼。

uintEndingFlag;//ofs:510.結(jié)束標識:0xAA55。

}DBR_tag;②DOS引導(dǎo)記錄公式:z文件分配表≡保留扇區(qū)數(shù)

z根目錄≡保留扇區(qū)數(shù)+FAT的個數(shù)×每個FAT的扇區(qū)數(shù)

z數(shù)據(jù)區(qū)≡根目錄邏輯扇區(qū)號+(32×根目錄中目錄項數(shù))/每扇區(qū)字節(jié)數(shù)

z絕對扇區(qū)號≡邏輯扇區(qū)號+隱含扇區(qū)數(shù)

z扇區(qū)號≡(絕對扇區(qū)號%每磁道扇區(qū)數(shù))+1

z磁頭號≡(絕對扇區(qū)號/每磁道扇區(qū)數(shù))%磁頭數(shù)

z磁道號≡(絕對扇區(qū)號/每磁道扇區(qū)數(shù))/磁頭數(shù)要點:1)DBR位于柱面0,磁頭1,扇區(qū)1,其邏輯扇區(qū)號為0

2)DBR包含DOS引導(dǎo)程序和BPB。

3)BPB十分重要,由此可算出邏輯地址與物理地址。3、文件分配表(FAT)絕對扇區(qū)號為:FAT_LBA=DBR_LBA+BPB_wReservedSec處是文件分配表,是DOS文件組織結(jié)構(gòu)的主要組成部分。我們知道DOS進行分配的最基本單位是簇。文件分配表是反映硬盤上所有簇的使用情況,通過查文件分配表可以得知任一簇的使用情況。DOS在給一個文件分配空間時總先掃描FAT,找到第一個可用簇,將該空間分配給文件,并將該簇的簇號填到目錄的相應(yīng)段內(nèi)。即形成了“簇號鏈”。FAT就是記錄文件簇號的一張表。FAT的頭兩個域為保留域,對FAT12來說是3個字節(jié),F(xiàn)AT16來說是4個字節(jié)。其中頭一個字節(jié)是用來描述介質(zhì)的,其余字節(jié)為FFH。介質(zhì)格式與BPB相同。①FAT結(jié)構(gòu)含義:一般FAT表的第一項為FF8H或FFF8H。FAT12FAT16意義

000H0000H可用

FF0H-FF6HFFF0H-FFF6H保留

FF7HFFF7H壞

FF8H-FFFHFFF8H-FFFFH文件最后一個簇

×××H××××H文件下一個簇對于FAT16,簇號×2作偏移地址,從FAT中取出一字即為FAT中的域。

邏輯扇區(qū)號=數(shù)據(jù)區(qū)起始邏輯扇區(qū)號+(簇號-2)×每簇扇區(qū)數(shù)

簇號=(邏輯扇區(qū)號-數(shù)據(jù)區(qū)起始邏輯扇區(qū)號)/每簇扇區(qū)數(shù)+2要點:1)FAT反映硬盤上所有簇的使用情況,它記錄了文件在硬盤中具體位置(簇)。2)文件第一個簇號(在目錄表中)和FAT的該文件的簇號串起來形成文件的“簇號鏈”,修復(fù)被破壞的文件就是根據(jù)這條鏈。3)由簇號可算邏輯扇區(qū)號,反之,由邏輯扇區(qū)號也可以算出簇號,公式如上。4)FAT位于DBR之后,其DOS扇區(qū)號從1開始。4、文件目錄表(FDT)絕對扇區(qū)號為:FDT_LBA=FAT_LBA+BPB_bNumFATs*BPB_wSecPerFAT處是文件目錄表,DOS文件組織結(jié)構(gòu)的又一重要組成部分。文件目錄分為兩類:根目錄,子目錄。根目錄有一個,子目錄可以有多個。子目錄下還可以有子目錄,從而形成“樹狀”的文件目錄結(jié)構(gòu)。子目錄其實是一種特殊的文件,DOS為目錄項分配32字節(jié)。目錄項定義如下:typedefstruct{

charFileName[8];//ofs:0.文件名

charExtName[3];//ofs:8.擴展名

ucharattribute;//ofs:11.文件屬性。典型值:存檔(0x20)、卷標(0x08)。

charreserved[10];//ofs:21.保留

uinttime;//ofs:22.時間

uintdata;//ofs:24.日期

uintStartClus;//ofs:26.開始簇號

ulongFileLength;//ofs:28.文件長度}DIR_tag;

1)目錄項文件名區(qū)域中第一個字節(jié)還有特殊的意義:.00H代表未使用。

.05H代表實際名為E5H。

.E5H代表此文件已被刪除。

2)目錄項屬性區(qū)域的這個字節(jié)各個位的意義如下:76543210

未修修子卷系隱只

用改改目標統(tǒng)藏讀

標標錄屬屬屬志志性性性3)WINDOWS的長文件名使用了上表中所說的“保留”這片區(qū)域。4)時間:time=Hr*2048+Min*32+Sec+2。5)日期:time=(Yr-1980)*512+Mon*32+Day。6)簇號與邏輯扇區(qū)號的關(guān)系為:邏輯扇區(qū)號=(簇號-2)×每簇扇區(qū)數(shù)+數(shù)據(jù)區(qū)起始邏輯扇區(qū)號。7)要點:.文件目錄是記錄所有文件,子目錄名,擴展名屬性,建立或

溫馨提示

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

評論

0/150

提交評論