陸億紅 李波
摘要:本文闡述了圖示法在“模擬UNIX文件系統”大型實驗的設計思路及具體操作中的應用,以期能夠鞏固和補充操作系統的原理教學,從而提高學生對操作系統的認識,使學生能將操作系統中文件系統部分的概念具體化。
關鍵詞:UNIX文件系統;圖示法;實驗;操作系統
中圖分類號:G720 文獻標識碼:A 論文編號:1674-2117(2016)08-0092-03
由于大部分學生平時接觸的是Windows操作系統,對UNIX操作系統不熟悉,所以為了幫助學生更好地理解UNIX文件系統,教師在實驗教學中,采用圖形解釋知識點,展示實驗過程,從而使學生輕松地理解文件系統結構,更快地進入實驗設計階段。這種用圖形闡述知識點的方法,被稱之為圖示法。[1-5]
“模擬UNIX文件系統”實驗概述
“模擬UNIX文件系統”實驗實質上是用一個文件模擬UNIX文件系統的存儲系統。
在UNIX系統中,把每個磁盤或磁帶看作是一個文件卷,在每個文件卷上可存放一個文件系統。每個文件系統,由一系列的邏輯塊組成,簡稱盤塊。每個盤塊可為512、1024、2048字節或是512字節的整數倍,這些值可以在生成系統時直接指定。假定一個盤塊512字節,盤塊從0開始直到最大容量并按順序加以編號就成了一個文件卷,也叫文件系統。
一個文件卷的空間圖示如圖1,文件卷的空間通常被劃分為若干用途各不相同的部分:引導區、管理區、索引節點區和文件存儲區。
其中0#塊一般用于系統引導,1#塊為超級塊,2#塊到K#塊存放索引節點,即iNode,K+1#塊到N#塊存放文件。讀入并啟動操作系統由引導塊完成。[6]超級塊用于記錄文件系統中盤塊和磁盤索引結點的使用情況,主要包括文件系統的盤塊數目、空閑盤塊號棧、空閑盤塊號數目、空閑磁盤索引結點號棧、空閑磁盤索引結點數目、超級塊修改標志和修改時間等。
模擬UNIX文件系統實驗完成一個UNIX文件系統的子集的模擬實現,設計時可以忽略引導塊。
實驗設計思路
1.基本原理
為了加快目錄查詢速度,UNIX目錄項只保留文件名和索引節點號,索引節點則保存除文件名外的有關信息。[7]UNIX文件系統的超級塊含有文件系統各個數據結構的大小,索引節點的位置可據此得到。而UNIX文件系統創建時生成的第一個索引節點則對應根目錄,找到根目錄后,就可以對目錄樹進行搜索,查找所需要的目錄項,從而找到所需要的文件,進而對文件進行各種操作。
而UNIX把普通文件與目錄文件都存放在磁盤或磁帶上,一個磁盤就是一個文件系統。例如,一個磁盤有200塊,那么就先生成一個200×512B的文本文件,512B就是一個磁盤塊,然后建立根目錄root,根目錄在文件區,假設存放索引節點的盤塊數是12塊,再加上引導塊,那么從13#盤塊開始存放文件,根的目錄文件就放在13#盤塊,每個目錄至少有兩個目錄項,即父目錄和當前目錄。假設一個索引節點占32個字節,根目錄的索引節點就是第1個索引節點,放在第1塊的前32個字節中,把索引節點內容填寫好,還可以再初始化一些目錄。目錄文件放在文件區,填寫好相應索引節點內容,然后根據初始化的結果,把空閑數據盤塊分組,按照成組鏈接法鏈接,設置好空閑盤塊號棧。同理,設置好空閑索引節點號棧,對超級塊進行初始化,超級塊內容放在0#塊。然后,開始一系列的操作。
2.文件卷的組織
假設文件卷總共有200個盤塊。用棧和成組鏈接法來管理空閑索引節點和空閑盤塊;盤塊的大小設計為512字節,其中0#塊為超級塊(引導塊忽略),用于管理盤塊的信息以及管理空閑盤塊。1#~12#塊共12塊用于存放索引節點,由于每個索引節點大小為32字節,一個塊可以存放16個索引節點,13#~199#塊用于存放數據塊。文件卷結構[8]圖示如圖2。
3.超級塊
超級塊[9]用于管理索引節點和盤塊的使用情況及分配信息,存放文件系統的盤塊數目、索引節點號棧的指針、索引節點號棧中元素個數、成組鏈接法管理的空閑盤塊號棧的指針和空閑盤塊號棧中元素的個數,以及對于整個文件系統的盤塊地址等。
4.空閑盤塊
空閑盤塊采用成組鏈接法[10]管理(如圖3),每組10塊,13#~99#分為9組,每組的最后一個盤塊存放下一組的盤塊號信息。最后一組只有7塊,加上0作為結束標志。在超級塊中用一個一維數組(10個元素)作為空閑磁盤塊棧,放入第一組盤塊。
5.索引節點
索引節點[11]主要包括文件的字節數,文件擁有者的User ID,文件的Group ID,文件的讀、寫、執行權限,文件的時間戳,鏈接數(即有多少文件名指向這個索引節點),文件物理地址等。
文件物理地址為7項:4個直接地址、1個一次間址、1個兩次間址、1個三次間址。
每個索引節點大小為32B,一個塊可以存放16個索引節點,1#~12#塊共12塊用于存放索引節點,總共有192個索引節點。空閑索引節點采用成組鏈接法管理,每組20個,分為10組,最后一組12個。在超級塊中用一維數組(20個元素)作為空閑索引節點號棧。
6.目錄
每個目錄是一個文件,每個目錄包含若干個目錄項。一個目錄項包括索引節點編號和文件名。[12]
實驗過程說明
下面以下頁圖4為例,說明如何構建文本文件模擬UNIX文件系統(圖中“i”表示索引節點,“13#”表示索引節點中的物理地址項內容為13#盤塊)。
根據圖4,根目錄文件有目錄項五個,名字分別為“.”“..” “bin”“usr”“dev”,它們的索引節點編號分別為1、1、2、3、4,其中
“.”表示當前目錄,“..”表示父目錄。而根目錄的當前目錄和父目錄都為其自身,因此它們的索引節點編號皆為1。根目錄的索引節點編號為1,寫在磁盤1#盤塊的第一個32字節處,假設根目錄文件寫在磁盤13#盤塊,1#索引節點的文件物理地址處寫13#。同理,假設bin目錄文件、usr目錄文件、dev目錄文件分別寫在14#、15#、16#盤塊,其索引節點編號為2、3、4的文件物理地址處分別寫14#、15#、16#,依此類推。
初始化后的文本文件如圖5所示,圖中每一行代表一個磁盤塊。
參考文獻:
[1]郭巧莉,杜靜然.圖示法在《財務管理》課程中的直觀運用[J].內蒙古財經學院學報(綜合版),2010,8(4):111-114.
[2]陸濤.用于《數據結構》課程教學的圖示法探究[J].華章,2011(21):141.
[3]王瑩,陳豫浩,范一青.“消費者均衡”理論的圖示法解析[J].渭南師范學院學報,2013,28(8):68-71.
[4]折楠,徐曉光,陳曉磊,等.基于位圖示法的NSFS文件系統設計[J].現代電子技術,2013,36(14):89-92,95.
[5]周麗.圖示法與要素組合方式在法學教學中的應用分析[J].欽州學院學報,2013,28(11):62-66.
[6]邵雄凱,李晶.Unix文件系統技術分析[J].微機發展,2001(4):69-71.
[7](英)Keith Haviland,Dina Gray,Ben Salama.UNIX系統編程(第二版)[M].舒明,熊戰波,等.譯.北京:電子工業出版社,2003.
[8](美)Andrew S.Tanenbaum,Albert S.Woodhull.操作系統設計與實現(第三版)[M].陳瑜,諶衛軍,譯.北京:電子工業出版社,2007.
[9]邢國慶,陳智建.UNIX從入門到精通[M].北京:電子工業出版社,2010.
[10]湯小丹,梁紅兵,哲鳳屏,等.計算機操作系統(第四版)[M].西安:西安電子科技大學出版社,2014.
[11](美)William Stallings.操作系統原理——精髓與設計原理[M].陳向群,陳瑜,譯.北京:電子工業出版社,2012.
[12]Abraham Siberschatz,Peter Baer Galvin,Greg Gagne.操作系統概念(第七版)[M].鄭扣根,譯.北京:高等教育出版社,2007.
作者簡介:陸億紅(1968-),女,浙江東陽,碩士,副教授,碩士研究生導師,研究方向為數據庫應用;李波(1979-),男,河南新縣,博士,講師,研究方向為并行計算,高性能計算。