ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:1.10MB ,
资源ID:12014148      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12014148.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计 2.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统课程设计 2.docx

1、操作系统课程设计 2课程设计4 磁盘文件操作一、 课程设计目的深人了解磁盘文件系统的实现。二、 预备知识文件的操作。文件的逻辑结构和物理结构。磁盘空间的管理。磁盘目录结构。三、 小组人员四、 课程设计内容设计一个简单的文件系统,用文件模拟磁盘。用数组模拟缓冲区,要求实现:1 支持多级目录结构.支待文件的绝对读路径;文件的逻辑结构采用流式结构,物理结构采用链接结构中的显示链接方式;采用文件分配表;实现的命令包括建立目录、,列目录、删除空目、建立文件、删除文件、显示文件、打开文件、读文件、写文件(追加方式)、关闭文作、改变文件属性。最后编写主函数对所做工作进行测试。五、 提示与讲解 为了正确地实现

2、文件的存取。文件系统设汁了一组与存取文件有关的功能模块。用户可以用“访管指令”调用这些功能模块.以实理文件的存取要求,把文件系统设计的这一组功能模块称为“文件操作”。文件操作不是独立的,和文件系统的其他部分密切相关。若要实现文件操作就离不开文件的目录结构、文件的组织结构和磁盘空间的管理。因此,这个实验虽然是文件操作的模拟实现,但是还必须模拟一部分文件的组织结构、目录结构和磁盘空间管理的实现。 (1)文件的组织钻构 文件的逻辑结构有两种形式:流式文件和记录式文件。实脸中只支持流式文件,采用称为显示链接的物理文件结构,把磁盘中每一块的指针部分提出来组织在一起,形成文件分配表(FAT)。 磁盘有多少

3、块,文件分配表就有多少项。若某文件的一个磁盘块号为i,则这个文件的下一个磁盘的块号应该记录在文件分配表第i项。例如,某系统文件分配表前几项值如表2-5-1所示:某个文件的起始盘块号为3,则该文件的磁盘块号依次为3、4、9、12、13。表2-5-1 某磁盘文件分配表部分内容第几项0123456789101112131415内容-1-1-149078-11211-113-1002)磁盘空间的管理首先要模拟一个磁盘。因为是实验,不使用真正的磁盘,所以实验中用一个文件模拟一个小磁盘。假设模拟磁盘有128个物理块,每个物理块大小为64B。盘块的块号从0编起,依次为0,1,2,3,127。 将前面所讲的文

4、件分配表放在磁盘的开始处。因为盘块有128块,所以文件分配表有128项,每项占用一个字节。这样文件分配表占用了磁盘的0块和1块,这两块就不能作其他用处。若一个盘块是某个文件的最后一块。填写“-1”表示文件结束。 文件的建立和删除操作需要对磁盘的空间进行分配和回收,所以要建立一定的数据表格来记录磁盘的使用情况。用文件分配表的第i项表示第i个盘块的使用情况。磁盘的第0块一定会被系统数据占用。所以任何一个文件的某个盘块块号都不可能是“0”,因而还可以用“0”表示磁盘盘块空闲,若这个盘块已经分配出去,即是某个文件的一块,由上面已知知道文件分配表中对应记录的是文件下一块的块号或结束标志都不是“0”。这样

5、非“0”值表示盘块已分。像前面图2-5-1那张文件分配表中。块号为5、14和15的盘块是空闲的,其余是已分配的。在文件分配表中可以用一个超过盘块号的正整数表示文件结束,在此实验中采用255代替“-1表示文件结束。如果磁盘中某些部分损坏,只要不是系统区(引导扇区、文件分配表或根目录等)。不分配那些坏的盘块、磁盘就可以继续使用。在文件分配表对应坏盘块的项不能是“0”,一般也需要特定的数值表示(这个数值应该是盘块编号以外并且不是结N束标志的数值,例如实验中128254之间的数值)。假设试验中模拟磁盘的筑第13块和第49块已经损坏不能使用,则在文件分配表的第13项和第14项写入“254”表示该盘块损坏

6、不能使用。由于磁盘分配,有时不能预订文件大小,例如建立文件时并不知道文件大小,因而磁盘的分配有时是一块一块申请的。.磁盘空间回收时,整个文件删除时回收很多块,但有时文件修改时可图2-5-1 分配一个磁盘块的流程图能会删除某些内容,造成归还磁盘块,这时是一块一块回收的。这里给出申请一块磁盘空间的流程图,若分配多块时,循环多次即可。分配一个盘块时,不应该从文件分配表第一项查起,因为磁盘中最开始的J几块为系统数据区(引导扇区,文件分配表、根目录等占用)。所以应该从这之后的可分配数据区开始查询.。假定系统区域占用了x个盘块,则分配一个磁盘盘块的流程如图2-5-1所示。回收一个磁盘块的流程图很简单,例如

7、回收磁盘块的块号为x,只要找到文件分配表中第x顶,将第x项的值改为0即可。 (3)目录结构 文件目录是用于检索文件的,是文件系统实现按名存取的主要手段。文件目录由若干目录项组成,每一个目录记录一个文件的有关招息。一般地说,目录项应该包括如下内容: 有关文件的控制信息。例如,用户名、文件名、文件类型、文件属性。实验模拟个人计算机上的文件操作。这部分内容仅包括文件名、文件类型和属性。 有关文件结构的信息。例如,文件的逻辑结构、文件的物理结构、记录个数、文件在存储介质的位里等。实验中,仅仅支持流式文件,不支持记录式文件,所以这部分内容仅仅包括文件在存储介质的位置(分给文件第一个盘块的块号。即起始盘块

8、号)、文件的长度。 有关文件管理的信息。例如,文件的建立日期、文件被修改的日期、文件保留期限和记帐信息等。实验中为了简单起见,这部分内容都不采用。 因此,实验中文件的目录项包括:文件名、文件类型,文件属性、文件的起始盘块号、文件的长度。每个目录项占用8个宁节。具体结构如下:文件名:3个字节(实验中合法文件名仅可以使用字母、数字和除$、.和/以外的字符,第一个字节的值为$时表示该目录为空目录项,文件们和类型名之间用.分隔,用/作为路径名中目录间分隔符);文件类型名:2个字节;1 文件属性:1字节;起始盘块号:1个字节;文件长度:1个字节(为了实验的简单,文件长度单位为盘块)。有了文件目录后,当用

9、户要求使用某个文件时,文件系统可以顺序查找目录项,并比较文件名。就可以找到指定文件的目录项.根据目录项中有关内容核对使用权限,井读比文件供用户使用。因此文件目录的组织和管理要便于检索和防止冲突。在操作系统中目录有根目录和子目录。因此文件除了需要登记形成目录外,还要登记子目录。实验中,根目录固定位置、固定大小(可以登记有限个文件或子目录项)、子目录像文件一样。可使用任何一个空闲磁盘块。为了实验简单,实验中根目录占用了一个盘块.子目录的长度也是采用可以任意长的方法,而是采用了定长的方法,每个子目录的长度也是一个盘块.只能放8个目录项。文件和目录的登记项是混在一起的,登记项的结构应该和文件目录一样。

10、每个目录项占用8个字节,结构如下:目录名:3个字节(实验中合法文件名仅可以使用字母、数字和除$、.、/以外的字符。第一个字节的值为$时表示该目录为空目录);未使用2字节(在实验中填写空格);目录属性:1个字节;起始盘块号:1个字节;未使用1字节(在实验中填写“0”)。在目录登记项中,系统为目录名后两个字节(对应文件类名位置)填写空格,目录起始盘块号后1个字节(对应文件长度位置填)填写0。目录属性和文件属性占用同一个字节,为了区别目录和文件,该字节每一位代表不同的含义(为“1”表示“是”,为“0”表示“否”)。如图2-5-2所示,第0位表示文件为只读文件,第1位表示文件为系统文件,第2位表示文件

11、为一般可读、可写的普通文件,第3位表示该登记项不是文件的登记顶,而是目录的登记项。其余几位闲置未用。如该字节为表示该目录是一个目录的登记项,该字节为表示该目录是一个只读系统文件的登记项。该字节为表示该目录是一个可读可写的普通文件。第7位第6位第5位第4位第3位第2位第1位第0位未使用未使用未使用未使用目录属性普通文件系统文件只读文件图2-5-2 属性字节各位作用示意图常用的目录检索的方法是顺序检索,根据绝对路径名查找文件的方法一般如下:先找到根目录的起始盘块,一般根目录位置是固定的,实验中就是模拟磁盘的第2块,将该盘块读出;取出路径名中根目录后的目录名或文件名与根目录中目录项依次比较,比较完一

12、块。再根据文件分配表找到下一块,再读入比较。直到找到名字一致的目录项或根目录登记项均已查完为止;若没有找到,则查找失败,结束;若查找的是文件,结束;若查找的是目录,从找到的目录项中,取出目录的起始盘块号。读入此盘块,然后用上述相同的查找方法继续查找找。直到找到该文件(或目录)或查找失败结束。实验中,使用绝对路径查找文件(或目录)的流程如图2-5-3所示。查找文件除了使用绝对路径名外,还可以使用相对路径名。相对路径名是从当前目录出发到指定文件的路径。如果文件(或目录)在当前目录下,使用相对路径名查找速度比较快。和绝对路径的查找方法一样,只是查找的起点是当前目录,不是根目录。实验中只使用了绝对路径

13、名。(4)文件操作 确定文件组织结构、目录结构和磁盘空间管理的方法后。就可以模拟文件操作的实现。实验中文件操作包括建立文件(create_file)、打开文件(open_file)、关闭文件(close_file)、读文件(read_file)、写文件(write_file)、删除文件(delete_file)、显示文件内容(typefile)和改变文件属性(change),目录命令包括建立目录(md)、显示目录内容(dir)和删除空目录(rd)。在实验中没有程序调用这些指令,为了看到它们的摸拟情况,从键盘输入选择指令来模拟用户程序的调用。表2-5-2 打开文件表结构首先要建立一个“已打开文件

14、表”,该表用来记录打开或建立文件的相关内容、结构如表2一5一2所示。文件路径名文件属性起始盘块号文件长度操作类型读指针写指针块号块内地址块号块内地址用数组模拟已打开文件表,数据结构定义如下:#define n 5 /试验中系统允许打开文件的最大数量typedef structint dnum; /磁盘盘块号int bnum; /磁盘盘块内第几个字节pointer; /已打开文件表中读、写指针的结构typedef structchar name20; /文件绝对路径名char attribute; /文件的属性,用1个字节表示,所以采用char类型int number; /文件起始号int le

15、ngth; /文件长度,文件占用的字节数int flag; /操作类型,用“0”表示以读操作方式开文件,用“1”表/写操作方式打开文件pointer read; /读文件的位置,文件打开时dnum为文件起始盘块号,bnum/为“0”pointer write; /写文件的位置,文件刚建立时dnum为文件起始盘块号,bnum/为“0”, 打开文件时dnum和bnum为文件的末尾位置OFFILE; /已打开文件表项类型定义struct OFFICE filen; /已打开文件登记表int length; /已打开文件登记表中登记的文件数量openfiles; /已打开文件登记表定义无论上述哪种文件

16、操作都会涉及到己打开文件表。对于已打开文件表主要是查找、删除和插入操作。下面给出这三种操作的流程图,在己打开文件表中查找某文件是否存在的流程如图2-5-4所示,将某文件从已打开文件表中删除的流程如图2-5-3所示,将某个文件登记在已打开文件表的流程图如图 2-5-6所示。(1) 建立文件(create_file) 用户要把一个新文件放到存储介质上前,首先调用文件系统的“建立”操作。 “建立文件”的主要工作就是检查文件目录,确认无重名文件后,寻找空闲登记项进行登记;寻拢空闲存储块(至少一块)以备存储文件信息或存放索引表,最后填写已打开文件表。 实验中需要的参数比较少,只要有文件名、文件属性即可。

17、如cream_ file(文件名,文件属性)。 实验中,建立文件时给出文件名和文件属性,文件属性如果是只读性质则不能建立;文件建立时根据给定的文件路径名进行查找,如果父目录不存在。建立文件失败;如果存在,查看有无重名文件。如果有,则提示该文件已存在,建立文件失败;如无重名文件,则为该文件建立文件目录。并分配一个磁盘块;最后填写目录和已打开文件表。建立文件的流程如图2-5-7所示。(2) 打开文件(open_file) 用户要求使用一个已径存在的文件时,首先执行“打开文件”操作。 实验中,所需参数有文件名、操作类型(读或写), open_file (文件名、操作类型)。打开文件时,首先要检查该文

18、件是否存在,不存在,打开失败。如果文件存在,还要检查打开方式。确保不能以写方式打开只读文件;最后填写已打开文件表,若文件已经打开则不需要填写已打开文件表,打开文件的流程如图2-5-8所示。 (3)读文件(read_file) 用户要求读文件信息时调用文件系统的读文件操作。 实验中,读文件的参数只需要文件名和读取长度。如read_file(文件名、读取长度)。因为采用的是流式文件结构,所以读的长度用字节表示。实验中,读文件操作的主要工作是查找已打开文件表中是否存在该文;如果不存在,不能读;然后检查是否以读方式打开文件,如果是以写方式打开文件。则不允许读;最后从已打开文件表中读出读指针,从这个位置

19、上读出所需要长度,若所需长度没有读完已经遇到文件结束符。就终止读操作。实验中用“#”表示文件结束,读文件的流程如图2-5-9所示。(4)写文件(write_file)用户要求存取文件信息时调用文件系统的“写文件”操作。实验中,写文件的参数只需要文件名、存放准备写人磁盘信息的缓冲和写的长度,知write_ file(文件名,缓冲,写长度)。因为采用的是流式文件结构.所以写长度用字节表示。实验中,写文件操作的主要工作是查找已打开文件表中是否存在该文件,如果不存在,不能写;如果存在,还要检查是否以写方式打开文件:如果不是以写方式打开文件,则不能写;最后从已打开文件表中读出写指针。从这个位里上写入缓冲

20、中的数据。写文件有两种情况,一种情况是建立文件后的写人,这种写比较简单,一边写一边申请空间即可完成;一种情况是文件打开后的写入,这个比较复杂,存在着文件中间修改的问题。实验中,第二种情况只完成了从文件末尾向后追加的功能,写文件的流程如图2-5-10所示。(5)关闭文件(close_file)用户对文件读写完毕后需要调用文件系统的关闭文件操作。实验中,关闭文件的参数只需要文件名,如close_file(文件名)。在关闭文件时,首先要看该文件是否打开,如果没有打开,就不用关闭;如果已经打开,则检查打开方式,如果是以写方式打开的,要追加文件结束符,修改目录项;最后从已打开文件表中删除对应项,关闭文件

21、的历程图如图2-5-11所示:(6) 删除文件(delete_file)用户认为文件没有必要保存时需要调用文件系统的“删除文件”操作。实验中,删除文件时参数只要文件名,如delete_file(文件名)。实验中,删除文件操作的主要工作是检查文件是否存在;不存在,操作失败;如存在,查找该文件是否打开。如果打开不能删除;如果没有打开,则删除文件目录项并归还件文件所占磁盘空间,删除文件的流程如图2-5-12所示:(7) 显示文件内容(typefile)显示文件内容首先要找到该文件的目录登记项,如果文件不存在,指令执行失败;如果存在,查看文件是否打开,打开则不能显示文件内容;若没有打开,从目录中取出文

22、件的起始盘块号,一块一块显示文件内容。显示文件内容的流程如图2-5-13所示。指定的文件不存在,显示文件内容失败(8)改变文件属性(change)改变文件属性,首先查找该文件,如果不存在,则结束;如果存在,检查文件是否打开,打开不能改变属性;没有打开,根据要求改变目录项中属性值。实验中,首先要系统初始化,包括建立文件c模拟磁盘、初始化磁盘FAT、初始化根目录为空目录项;然后,可以选择一项功能执行。目录的操作命令:1 建立目录(md):建立目录首先要找到建立目录的位置(父目录),然后查找该目录是否存在,如果父目录不存在,不能建立;如果存在,查找时否存在同名目录,如存在,则不能建立;如不存在,则查

23、找一个空目录项,为该目录申请一个盘块,并填写目录内容。建立目录流程图如图2-5-14所示。2 显示目录内容(dir):显示目录内容首先要找到该目录,如果目录不存在,指令执行失败;如果存在,则一项一项显示目录内容。显示目录内容的流程如图2-5-15所示。3 删除空月录(rd):删除空目录首先要找到该目录,如果目录不存在,指令执行失败:如果存在,但是根目录或非空目录显示不能删除。操作失败;若是非空子目录,则删除其目录项并回收对应空间:删除空目录的过程和删除文件的过程相似,流程可参考文件的删除过程。另外注意,对磁盘文件进行读操作时,需要磁盘的一个盘块读入内存后才能进行处理;对磁盘文件进行写操作时,要

24、写慢缓冲后才写入磁盘。所以模拟文件操作时,不能将整个模拟磁盘的内容同时读入内存。应该当需要模拟磁盘的某个盘块内容时.从对应文件中读出;修改后需要写回模拟磁盘:实验中就是用这种方法摸拟磁盘的输入/输出。实验中定义了两个数组buffer1和buffer2模拟缓冲。实验过程中首先系统化初始化,包括建立文件c模拟磁盘、数尺花磁盘FAT和根目录初始为空目录项,然后选择各个命令进行测试。六、 程序演示1 程序界面2 建立文件建立文件时,首先根据建立要求检查磁盘大小是否满足文件要求;其次,要检查是否有重命名,如果有,则无法创建。创建成功,文件即会出现在所选磁盘的子目录中,点击显示内容,科在右上菜单中显示文件

25、详细信息。如果创建时出现重命名,即会创建失败。3 打开文件选择好一个文件后,可以执行打开指令,打开文件成功后,即会在右下窗口出现已打开文件的路径信息。4 关闭文件5 写文件首先,对所选文件执行写操作,必须满足条件:1,该文件可读写;2,该文件已打开。满足上述条件,即可对所选文件执行写操作。修改内容后,点击显示内容,即可发现文件内容已变化。如果不满足条件,则会弹出错误窗口。 6 删除文件点击是,删除所选文件并归还磁盘空间。7 显示文件内容要想显示所选文件内容,文件必须存在且为关闭。满足条件后点击显示内容,即可在右上窗口查看到所选文件的内容。8 改变文件属性要想改变所选文件属性,需满足条件:1所选

26、文件存在;2所选文件未打开。满足上述条件,选择需要修改的属性,点击修改属性即可。9 目录的操作命令(创建目录)要想建立一个目录,需先找到一个父目录,在此基础上设置目录名和目录大小,点击创建目录即可完成目录的创建。10 目录的操作命令(显示目录内容)选择好父目录,点击显示该目录下所有,即可在右上菜单显示该目录下所有文件和子目录的信息11 文件复制,粘贴(自主加入)为了使程序功能更加完善,我们小组经过商讨后加入了文件的复制和粘贴指令,这样使得磁盘间的管理更加方便,更加人性化。要想复制所选文件,只需点击复制,再选择需要该文件的目录下点击粘贴即可。 七、 参考程序八、 实验心得 本次课程设计较同时进行

27、的其他两科相比,难度和挑战都要大很多。由于是第一次尝试课程设计,我们小组遇到了很多问题,其中大多数集中在如何规定所选文件的状态,以及其对文件操作的影响这一问题上,我们寻找了很多例子,讨论了很久,终于在一点点摸索中完成了程序。过程确实比较坎坷,而且本次课程设计要求的时间颇紧,导致我们原本的很多想法由于时间问题并没有放在作品当中,希望老师理解。 通过本次实验,让我对于本学期学习的知识有了更深的了解,操作系统的意义,它的作用到底为何?通过本次课程设计,我都有了大概的了解。同时,通过本次课程设计,增进了我和我队友的友谊,虽然实验过程中有争吵,有讨论,但当真正完成的时候,我们都非常高兴。 最后,真心感谢陈笑蓉老师对于本次课程设计的悉心指导,如果没有老师的督促与帮助,我们确实无法完成这个困难的课程设计。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1