论文部分内容阅读
摘要:本文阐述了图示法在“模拟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-),男,河南新县,博士,讲师,研究方向为并行计算,高性能计算。
关键词: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-),男,河南新县,博士,讲师,研究方向为并行计算,高性能计算。