• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于ISO9660格式的光盤鏡像文件生成算法

      2011-04-13 06:50:04徐天斌
      科技傳播 2011年4期
      關(guān)鍵詞:鏡像文件描述符扇區(qū)

      徐天斌

      同濟(jì)大學(xué)計算機(jī)科學(xué)及技術(shù)系,上海 201804

      0 引言

      ISO9660是由國際標(biāo)準(zhǔn)化組織(International Organization for Standardization, ISO)制定的光盤文件系統(tǒng)格式,它定義了存儲在光盤中文件的邏輯格式以及組織目錄結(jié)構(gòu),從而使光盤中文件數(shù)據(jù)的存放位置、目錄、索引結(jié)構(gòu)的組織有了統(tǒng)一的規(guī)范。

      ISO鏡像是指基于ISO9660文件系統(tǒng)格式的文件,用于光盤刻錄環(huán)節(jié),首先要生成ISO鏡像,隨后將ISO鏡像文件刻錄至光盤,其中就需要解決如何去生成基于ISO9660文件系統(tǒng)格式的鏡像文件[1]的問題。

      本文我們給出一種用于生成符合ISO9660文件系統(tǒng)格式的鏡像文件的具體實現(xiàn)技術(shù)。在分析ISO9660格式的基礎(chǔ)上,實現(xiàn)一個將當(dāng)前文件系統(tǒng)中的某個目錄(包含其下所有子目錄)打包生成ISO鏡像文件的程序。

      1 ISO9660概述

      1.1 ISO9660格式

      ISO9660格式以一種緊湊且連續(xù)的方式組織光盤上的數(shù)據(jù),充分考慮驅(qū)動器機(jī)械特性,對數(shù)據(jù)進(jìn)行順序化的組織,縮短尋道時間。

      此外,ISO9660標(biāo)準(zhǔn)定義了3個層次的數(shù)據(jù)交換兼容性。因為需要兼容當(dāng)時所有的操作系統(tǒng),所以只使用各平臺特性的交集部分。ISO9660 Level 1標(biāo)準(zhǔn)[2]規(guī)定文件數(shù)據(jù)必須連續(xù)存放,文件名采用8.3格式,字符集僅限于大寫英文字母、數(shù)字及下劃線。Level 2標(biāo)準(zhǔn)允許長文件和目錄名字,而文件數(shù)據(jù)仍要求連續(xù)存放。Level 3允許數(shù)據(jù)可以以交錯的方式分開存放。

      1.2 Joliet擴(kuò)展[3]與共享數(shù)據(jù)光盤

      Microsoft在基于ISO9660標(biāo)準(zhǔn)的基礎(chǔ)上設(shè)計實現(xiàn)了與之兼容的Joliet文件系統(tǒng)格式。該格式是對ISO9660格式的一種擴(kuò)展,使得文件和目錄名支持UCS-2字符集,允許長度最大可達(dá)64個寬字符。

      對于同時存在兩套或以上文件系統(tǒng)信息,如ISO9660與Joliet共存的情況,將兩套文件系統(tǒng)中的文件記錄信息指向同一塊數(shù)據(jù)區(qū)域。本文中我們將生成一份ISO9660與Joliet共享數(shù)據(jù)的ISO鏡像文件。

      2 ISO9660格式相關(guān)數(shù)據(jù)結(jié)構(gòu)

      一個ISO鏡像文件可以視作為一系列連續(xù)的邏輯扇區(qū),每個扇區(qū)為2048字節(jié)大小,編號從零開始,從0號扇區(qū)到15號扇區(qū)為未定義區(qū)域。

      2.1 卷描述符集

      從第16扇區(qū)開始存放的是一系列卷描述符。卷描述符的種類包括:基本卷描述符、擴(kuò)展卷描述符、卷分區(qū)描述符、引導(dǎo)記錄以及卷描述符集中止符這5類。

      實際中使用的僅3個:基本卷描述符,擴(kuò)展卷描述符和卷描述符集中止符,每個卷描述符占一個邏輯扇區(qū)。

      描述符結(jié)構(gòu)描述整個文件系統(tǒng)的管理信息,如描述符類型、卷標(biāo)識符、卷大小、路徑表的所在扇區(qū)號、大小,文件系統(tǒng)根目錄記錄的扇區(qū)號等信息。

      卷標(biāo)識符類型值為1表示基本卷標(biāo)識符,值為2表示擴(kuò)展卷標(biāo)識符,值為255表示卷標(biāo)識符集中止符,卷空間大小記錄整個鏡像文件的大小,以扇區(qū)為單位。

      2.2 路徑表記錄

      路徑表將光盤中所有目錄都在路徑表中存放一條記錄,可以線性查找的方式直接定位到指定目錄,對嵌套層次較深的目錄,避免逐層遍歷目錄結(jié)構(gòu),多次定位讀取目錄記錄信息耗費的時間表1給出了路徑表記錄的格式。

      表1 路徑表記錄

      路徑表中的記錄可以跨扇區(qū)存儲,每條記錄長度都是記錄自身描述的,為8 + LEN_DI + (LEN_DI % 2)字節(jié),整個路徑表必須占據(jù)整數(shù)個邏輯扇區(qū)大小。

      2.3 目錄和文件記錄

      ISO9660標(biāo)準(zhǔn)對目錄和文件使用相同的數(shù)據(jù)結(jié)構(gòu)來記錄,即是將目錄當(dāng)作文件看待,文件的位置信息指向文件數(shù)據(jù),而目錄文件的數(shù)據(jù)則是該目錄下子目錄和文件的記錄項構(gòu)成。表2給出目錄和文件記錄的格式。

      表2 目錄和文件記錄

      記錄長度由自身描述,末尾填充域保證記錄為偶數(shù)字節(jié),且不允許記錄跨扇區(qū)存放。同一目錄下所有子目錄和文件的記錄作為同一目錄文件,每個目錄文件的數(shù)據(jù)必須以邏輯扇區(qū)大小對齊,目錄文件不可跨扇區(qū)存儲,扇區(qū)末尾剩余部分用零填充。

      3 ISO9660格式鏡像文件生成算法

      構(gòu)造基于ISO9660的鏡像文件之核心在于再造出文件系統(tǒng)控制信息。本質(zhì)上是從數(shù)據(jù)源所在文件系統(tǒng)中獲得目錄結(jié)構(gòu)、文件名及屬性等信息,依此通過計算生成文件系統(tǒng)中卷描述符、目錄項記錄以及路徑表等控制信息的數(shù)據(jù)組織,寫入ISO鏡像文件。

      本文的算法用于生成同時包含ISO9660與Joliet格式的共享數(shù)據(jù)區(qū)ISO鏡像文件,兩套文件系統(tǒng)控制信息指向同一份文件數(shù)據(jù)。

      3.1 樹形目錄層次的構(gòu)建與目錄項長度計算

      算法首先要讀取源文件系統(tǒng)中的目錄層次結(jié)構(gòu),獲取關(guān)于每個目錄或文件的名字、屬性以及樹狀目錄結(jié)構(gòu)中父子節(jié)點關(guān)系。我們通過深度優(yōu)先遍歷獲取從根目錄及以下所有子目錄和文件節(jié)點的屬性,該算法(TraverseFolder)是遞歸實現(xiàn)的,具體描述如下:

      將目錄數(shù)據(jù)占據(jù)扇區(qū)數(shù)量的值NSector返回。

      3.2 目錄數(shù)據(jù)起始邏輯塊號計算

      根據(jù)3.1中已經(jīng)計算得到的每個子目錄記錄項長度,將用于進(jìn)一步計算每個子目錄數(shù)據(jù)將所處的邏輯塊號。DirRecordLoc()由根目錄開始逐層遍歷計算目錄數(shù)據(jù)邏輯塊號,函數(shù)用遞歸方法實現(xiàn),具體描述如下:

      遞歸調(diào)用DirRecordLoc(nodeArray, index + 1, curLoc)計算后續(xù)節(jié)點。

      3.3 生成路徑表

      由3.2中計算出來的每個子目錄數(shù)據(jù)邏輯塊號,加上對所有目錄節(jié)點由根開始逐層進(jìn)行編號,編號從1開始(該編號將作為路徑表記錄項中的父目錄編號),依照表1中結(jié)構(gòu)就可以構(gòu)造出含所有目錄節(jié)點的路徑表。

      路徑表通常位于目錄記錄之后,將路徑表生成后暫時不實際寫入ISO鏡像文件,記錄下該路徑表大小和起始邏輯塊號,將用于填寫卷描述符中相關(guān)字段。

      3.4 文件數(shù)據(jù)起始邏輯塊號計算

      文件數(shù)據(jù)區(qū)域通常跟在路徑表之后,由3.3中確定的路徑表占據(jù)邏輯扇區(qū)位置之后,才能確定數(shù)據(jù)區(qū)域的起始邏輯塊號。由根目錄開始逐層遍歷所有數(shù)據(jù)文件,依據(jù)每個文件的大小,計算出各文件數(shù)據(jù)的起始邏輯塊號,函數(shù)FileLoc(ref curLoc)具體描述如下:

      3.5 ISO鏡像文件的寫入

      以上步驟的計算完成寫入前必要數(shù)據(jù)的準(zhǔn)備,之前相關(guān)數(shù)據(jù)結(jié)構(gòu)的計算和生成都是為了以順序而不回溯地方式寫完整個ISO鏡像文件或者光盤,不往回移動寫文件指針很有必要。

      寫ISO鏡像過程順序依次為前16個扇區(qū)的空數(shù)據(jù),卷描述符集,分別對應(yīng)ISO9660與Joliet格式的目錄與文件記錄項以及路徑表,最后完成文件數(shù)據(jù)的寫入。

      4 試驗結(jié)果與結(jié)論

      本文通過剖析了ISO9660格式標(biāo)準(zhǔn)中的結(jié)構(gòu)與數(shù)據(jù)組織方式,設(shè)計實現(xiàn)了生成ISO鏡像算法的軟件。軟件實現(xiàn)了將當(dāng)前文件系統(tǒng)中的某個目錄(包含其下所有子目錄)打包成單個ISO鏡像文件的功能,并且可以用Daemon Tools加載讀取ISO文件中的內(nèi)容。

      [1]肖飛,王運瓊,李映松,李必謹(jǐn).基于光盤映像文件的CDROM數(shù)據(jù)加密與解密方法,2009,36(5):299-300.

      [2]ISO/IEC DIS 9660:1999,Volume and file structure of CD-ROM for information interchange,1999.

      [3]Microsoft Developer Relations Group, Joliet Specification CD-ROM Recording Spec ISO9660:1988,1995

      猜你喜歡
      鏡像文件描述符扇區(qū)
      分階段調(diào)整增加扇區(qū)通行能力策略
      南北橋(2022年2期)2022-05-31 04:28:07
      基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
      沒光驅(qū)不要緊 裝個免費虛擬的
      Linux單線程并發(fā)服務(wù)器探索
      U盤故障排除經(jīng)驗談
      利用CNN的無人機(jī)遙感影像特征描述符學(xué)習(xí)
      用RamOS降低公用機(jī)的維護(hù)工作量
      基于貝葉斯估計的短時空域扇區(qū)交通流量預(yù)測
      重建分區(qū)表與FAT32_DBR研究與實現(xiàn)
      Win7升級Win10教程
      電腦迷(2015年9期)2015-05-30 22:08:35
      托克逊县| 城步| 高淳县| 海门市| 于田县| 高青县| 固原市| 钟山县| 卢氏县| 荔波县| 阿尔山市| 白银市| 信宜市| 双牌县| 基隆市| 曲阜市| 庆安县| 平度市| 都匀市| 齐河县| 灌阳县| 武汉市| 汨罗市| 遂平县| 南漳县| 利辛县| 贵溪市| 长汀县| 永顺县| 安丘市| 叶城县| 深泽县| 伊通| 新郑市| 句容市| 锡林郭勒盟| 古田县| 张北县| 长宁县| 南阳市| 丹江口市|