模拟实现unix文件管理系统
- 格式:doc
- 大小:270.00 KB
- 文档页数:28
模拟UNIX文件系统的设计及实现操作系统大作业UNIX文件系统是一种常见的操作系统文件系统,它提供了一种以层次结构组织文件和目录的方式来管理存储设备上的数据。
为了完成这个大作业,我们需要设计并实现一个简化版的UNIX文件系统,包括文件和目录的管理、文件的读写操作、文件权限的管理等。
首先,我们需要设计文件系统的存储结构。
文件系统可以在硬盘上以一个分区的形式存在,我们可以使用一个整数数组来表示硬盘,每个数组元素表示硬盘上的一个块。
我们还可以使用一个超级块来记录文件系统的信息,例如文件系统的状态、块的总数、块的使用情况等。
此外,我们还需要设计并实现一个索引节点表,用于保存文件或目录的元数据信息,例如文件的大小、权限、创建时间等。
接下来,我们需要实现文件和目录的管理功能。
文件和目录可以通过其在索引节点表中的索引来标识。
我们可以使用一个数组来表示目录,数组的每个元素都是一个目录项,记录了文件或子目录的名字和索引节点的索引。
我们还可以使用一个栈来保存当前目录的路径,方便用户在不同目录之间切换。
为了支持目录的嵌套,我们可以在目录项中添加一个指向父目录的索引。
在文件和目录的管理基础上,我们还需要实现文件的读写操作。
文件可以通过其索引节点的索引来标识。
当用户要读取文件时,我们需要根据文件的索引节点找到文件的块地址列表,然后将列表中的块读取到内存中。
当用户要写入文件时,我们需要找到文件的块地址列表中最后一个块,如果该块已满,则需要申请一个新的块,并将新块的地址添加到块地址列表中。
同时,我们还需要更新文件的大小和修改时间等元数据信息。
最后,我们还需要实现文件权限的管理功能。
文件的权限信息可以通过文件的索引节点来保存。
我们可以使用一个整数来表示文件的权限,例如八进制数,每一位代表一个权限,例如读取权限、写入权限和执行权限等。
当用户要访问文件时,我们需要根据用户的权限和文件的权限来判断用户是否具有相应的权限。
总结起来,要完成这个大作业,我们需要设计并实现一个模拟UNIX文件系统,包括文件和目录的管理、文件的读写操作、文件权限的管理等。
unix系统中文件的多级索引结构-回复Unix系统中的文件系统采用了多级索引结构来管理文件。
在多级索引结构中,文件被组织成块的集合,每个块都有唯一的地址。
通过使用多级索引结构,Unix系统能够高效地存储和检索文件,提高系统的性能和可靠性。
下面我们将一步一步地回答和讨论关于Unix系统中文件的多级索引结构的内容。
第一步:什么是多级索引结构?多级索引结构是一种用于管理大量数据的数据结构。
在Unix系统中,文件系统使用多级索引结构来管理文件的存储和检索。
这种索引结构由多个级别的索引组成,每个级别都用于指示下一个级别的索引。
通过这种方式,Unix系统能够快速访问和操作大型文件,提高文件系统的效率。
第二步:Unix系统中多级索引结构的组成Unix系统中的多级索引结构由三个主要组件组成:直接索引块、一次间接索引块和二次间接索引块。
直接索引块用于存储文件的数据块地址,一次间接索引块用于存储直接索引块的地址,而二次间接索引块用于存储一次间接索引块的地址。
通过这种层次结构,Unix系统能够管理大量数据块,并提供快速的文件访问。
第三步:直接索引块的作用和结构直接索引块是多级索引结构中的最底层,用于存储文件的数据块地址。
每个直接索引块都包含一定数量的文件数据块地址。
这些地址可以直接指向文件存储在磁盘上的数据块。
通过直接索引块,Unix系统可以快速访问和检索文件的数据。
第四步:一次间接索引块的作用和结构一次间接索引块用于存储直接索引块的地址。
每个一次间接索引块都包含一定数量的直接索引块地址。
通过一次间接索引块,Unix系统可以间接地访问和检索文件的数据。
当直接索引块的数量不足以存储文件的所有数据块地址时,一次间接索引块就发挥了作用。
第五步:二次间接索引块的作用和结构二次间接索引块用于存储一次间接索引块的地址。
每个二次间接索引块都包含一定数量的一次间接索引块地址。
通过二次间接索引块,Unix系统可以间接地访问和检索文件的数据。
如何实现一个文件系统本文作者:康华:计算机硕士,主要从事Linux操作系统内核、Linux技术标准、计算机安全、软件测试等领域的研究与开发工作,现就职于信息产业部软件与集成电路促进中心所属的MII-HP Linux软件实验室。
如果需要可以联系通过kanghua151@联系他。
摘要:本文目的是分析在Linux系统中如何实现新的文件系统。
在介绍文件系统具体实现前先介绍文件系统的概念和作用,抽象出了文件系统概念模型。
熟悉文件系统的内涵后,我们再近一步讨论Linux系统中和文件系统的特殊风格和具体文件系统在Linux中组成结构,为读者勾画出Linux中文件系统工作的全景图。
最后,我们再通过Linux中最简单的Romfs 作实例分析实现文件系统的普遍步骤。
(我们假定读者已经对Linux文件系统初步了解)什么是文件系统首先要谈的概念就是什么是文件系统,它的作用到底是什么。
文件系统的概念虽然许多人都认为是再清晰不过的了,但其实我们往往在谈论中或多或少地夸大或片缩小了它的实际概念(至少我时常混淆),或者说,有时借用了其它概念,有时说的又不够全面。
比如在操作系统中,文件系统这个术语往往既被用来描述磁盘中的物理布局,比如有时我们说磁盘中的“文件系统”是EXT2或说把磁盘格式化成FAT32格式的“文件系统”等——这时所说的“文件系统”是指磁盘数据的物理布局格式;另外,文件系统也被用来描述内核中的逻辑文件结构,比如有时说的“文件系统”的接口或内核支持Ext2等“文件系统”——这时所说的文件系统都是内存中的数据组织结构而并非磁盘物理布局。
还有些时候说“文件系统”负责管理用户读写文件——这时所说的“文件系统”往往描述操作系统中的“文件管理系统”,也就是文件子系统。
虽然上面我们列举了混用文件系统的概念的几种情形,但是却也不能说上述说法就是错误的,因为文件系统概念本身就囊括众多概念,几乎可以说在操作系统中自内存管理、系统调度到I/O系统、设备驱动等各个部分都和文件系统联系密切,有些部分和文件系统甚至未必能明确划分——所以不能只知道文件系统是系统中数据的存储结构,一定要全面认识文件系统在操作系统中的角色,才能具备自己开发新文件系统的能力。
全国自考操作系统(存储管理)模拟试卷2(题后含答案及解析) 题型有:1. 单项选择题 3. 填空题 4. 简答题 5. 综合题 6. 判断题单项选择题1.源程序经过编译或者汇编生成的机器指令集合,称为_______。
A.源程序B.目标程序C.可执行程序D.非执行程序正确答案:B解析:源程序经过编译或者汇编生成的机器指令集合不一定是可执行程序,如C编译用-c选项对不包括全部的模块的C程序编译生成的.o代码是目标程序,但不是可执行程序。
知识模块:存储管理2.动态重定位是在程序的_______中进行的。
A.编译过程B.连接过程C.装入过程D.执行过程正确答案:D 涉及知识点:存储管理3.下面几条中,_______是动态重定位的特点。
A.需要一个复杂的重定位装入程序B.存储管理算法比较简单C.不需地址变换硬件机构的支持D.在执行时将逻辑地址变换成内存地址正确答案:D 涉及知识点:存储管理4.固定分区存储管理一般采用_______进行主存空间的分配。
A.首次适应分配算法B.循环首次适应分配算法C.最优适应分配算法D.顺序分配算法正确答案:C解析:为了节省内存,减少内部碎片,固定分区存储管理一般不采用首次适应分配算法,而采用相对来说较费时的最优适应分配算法。
知识模块:存储管理5.在可变分区管理方式下,在释放和回收空闲区,若已判定“空闲区表第j栏中的始址=释放的分区始址+长度”,则表示_______。
A.归还区有上邻空闲区B.归还区有下邻空闲区C.归还区有上下邻空闲区D.归还区无相邻空闲区正确答案:B解析:说明回收的分区尾地址与空闲区表该项登记的空闲区始址相邻。
知识模块:存储管理6.采用单一连续区存储管理时,若作业地址空间大于空闲内存空间,可采用_______把不会同时工作的程序段轮流装入主存区执行。
A.对换技术B.可变分区技术C.虚拟存储技术D.覆盖技术正确答案:D 涉及知识点:存储管理7.将作业部分或全部移到外存,以调入其他的作业的技术称为_______。
unix操作系统常用命令Unix操作系统是非常常见、流行的操作系统之一,它被广泛应用于网络服务器、数据中心等领域。
Unix操作系统内置了很多命令和工具,这些命令和工具可以帮助管理员和开发人员管理系统、进行开发和维护等任务。
在本文中,我们将讨论一些Unix操作系统常用命令。
一、文件和目录管理命令1. cd:切换当前工作目录。
2. pwd:显示当前工作目录的路径。
3. mkdir:创建一个新目录。
4. rmdir:删除一个空目录。
5. ls:列出目录内容。
6. cp:复制文件或目录。
7. mv:移动或重命名文件或目录。
8. rm:删除文件或目录。
9. touch:创建一个新文件或更新现有文件的时间戳。
10. chmod:更改文件或目录的权限。
二、文本文件处理命令1. cat:连接和显示文件内容。
2. less:在终端上查看文件内容。
3. grep:在文件中查找一个模式。
4. awk:文本处理工具,可以处理大量的文本文件数据。
5. sed:文本处理工具,可以进行单行文本替换、多行文本编辑等。
6. sort:对文件进行排序。
7. uniq:删除文件中的重复行。
8. tee:将文件内容从标准输入中读取,并将其复制到标准输出和文件中。
9. diff:比较两个文件或目录之间的差异。
10. wc:计算文件中的行数、单词数和字节数。
三、进程管理命令1. ps:查看系统中运行的进程。
2. kill:结束一个进程。
3. top:实时查看系统资源使用情况和进程状态。
4. bg:将一个进程放到后台运行。
5. fg:将一个后台进程恢复到前台运行。
6. nice:更改进程的优先级。
7. renice:更改运行中的进程的优先级。
四、网络管理命令1. ping:测试网络连接并检查响应时间。
2. netstat:查看正在使用的网络接口和连接。
3. traceroute:追踪数据包的路由路径。
4. route:设置或显示内核的路由表。
16测试技术学报2004年6月立映射表,缩小两个系统之间的差异。
系统的基本实现原理可概括为图l。
图l系统原理性框架3实现方案3.1程序加载加载并运行程序是Linux进程管理的一个重要部分,也是Linux和UNⅨ系统间实现二进制兼容的关键。
为了使UNⅨ可执行程序能够在Linll)【上运行,必须对Linu】【内核做相应的扩展,.使之能够兼容IMX系统的二进制文件格式,包括COFF、XOUT和ELF等。
1)COFF文件格式分析通用对象文件格式(Commono场ectFileFo咖at,COFF)是一种常用的二进制文件格式,它用于目标文件、库文件和可执行文件。
最初由UNlX跚咖mV引入并作为标准可执行程序的格式,已经广泛地应用在L刀ⅥX和Windows等操作系统上。
Lin麟内核不支持COFF格式,要实现与UNIX系统的二进制兼容,首先要解决如何正确地加载UNlX系统中cOFF格式的目标文件。
为了实现兼容,首先分析了COFF格式的可执行文件的格式。
COFF文件中共有8种数据:文件头、可选头、段落头、段数据、重定位表、行号表、符号表和字符串表。
文件头中包含[]幻数,给出COFF文件的格式。
口COFF文件中的段落数。
口时间戳,描述文件的建立时间。
口符号表在该文件中从文件头开始的的偏移量。
口符号表中符号记录的个数。
口可选头的长度,通常它的值是0。
口COFF文件的类型及文件的内容等信息。
2)UNl)(可执行文件的加载UNIX常用的文件格式有三种:ELF、COFF和xOUT,Linux内核只能识别ELF的文件格式。
在实现与uNIx二进制兼容时,要考虑如何处理后两种格式。
即使ELF格式的可执行文件,两者的格式也不完全相同。
因此,对LinuX内核中的这一部分也要做相应的修改,使之能适应于UNIX系统的ELF二进制代码。
在Linux系统中,执行一个程序时,要先创建一个进程,该进程调用eXecve()系统调用,加载和执行该程序。
UNIX系统管理-第十章:文件系统维护目标完成这一章,你将能做以下事情:使用df和du命令来监控文件系统的有效空间的大小通过清除不用的文件和core文件来清理文件系统空间通过修剪日志文件来清理/var文件系统从命令行扩展一个卷组从命令行扩展一个逻辑卷从命令行扩展一个文件系统1.监控磁盘使用情况使用df 命令检查文件系统的有效空间。
# df -kFilesystem kbytes used avail%used Mounted on/dev/vg00/lvol5 2949122615233135289/opt/dev/vg00/lvol424576193334978 80/home/dev/vg00/myfs1 16384 117414331 8/myfs1/dev/vg00/myfs2158931400629798/myfs2检查目录中的各个子目录使用的磁盘空间:# du -sk /myfs2/*844 /myfs2/data11327/myfs2/data21073/myfs2/data310757/myfs2/data44/myfs2/lost+found系统管理员有责任监视系统中的剩余磁盘空间的大小。
通常使用的命令是df。
显示的字段含义为:FilesystemKbytes k)usedavail文件系统中剩余的有效磁盘空间capacityMounted on如果加上-i选项,输出中会增加三个字段:iused inode的数目ifree inode数目%used文件系统当前使用的inode数目所占的百分比当你想要知道更多的细节,如一个目录下面使用了多少磁盘空间,你可以使用du命令。
默认情况下,du显示的单位为512字节的一个block。
这个命令的执行是递归的,意味着如果在当前目录执行这个命令,它会返回当前目录下所有的文件和各级子目录的信息。
主要的选项为:-k k字节为单位-s 只显示指定目录占用的总的磁盘空间。
UNIX基础教程UNIX是一种多用户、多任务操作系统,广泛用于Unix-like的操作系统中。
它提供了一个强大且灵活的环境,适用于各种不同的应用程序和领域。
本教程将介绍UNIX的基础知识,包括文件系统、命令行界面、进程管理和网络通信等。
一、文件系统UNIX的文件系统是以层次化的目录结构来组织文件和目录。
用户可以使用命令对文件进行创建、删除、移动和复制等操作。
1.目录结构:UNIX的目录结构以根目录(/)为起点,所有的文件和目录都从根目录开始。
2. 目录操作:用户可以使用命令如cd、ls、mkdir和rmdir等来操作目录。
cd用于切换目录,ls用于列出目录内容,mkdir用于创建目录,rmdir用于删除空目录。
3. 文件操作:用户可以使用命令如cat、cp、mv和rm等来操作文件。
cat用于查看文件内容,cp用于复制文件,mv用于移动文件,rm用于删除文件。
二、命令行界面UNIX的命令行界面是用户与系统交互的主要方式。
用户可以通过输入命令来执行各种操作。
1.命令格式:UNIX的命令由命令名称和选项参数组成。
选项参数用于修改命令的行为,可以是单个字符或长参数。
2. 常用命令:UNIX提供了许多常用的命令,如基本的文件和目录操作命令,如ls、cd、mkdir和rmdir;文件查找和文本处理命令,如find、grep和sed;系统信息和管理命令,如ps、df和top等。
3.命令提示符:UNIX的命令行界面会显示一个命令提示符,用户可以在提示符后输入命令。
通常,命令提示符由当前用户名和主机名组成。
三、进程管理UNIX支持多任务操作,可以同时执行多个程序。
用户可以使用命令来管理进程和程序。
1. 运行程序:用户可以使用命令如./和exec等来运行程序。
./用于运行当前目录下的可执行文件,exec用于替换当前进程并执行新程序。
2. 后台运行:用户可以使用命令如&和nohup等将程序置于后台运行。
&用于将程序放入后台运行,nohup用于使程序在用户注销后继续运行。
摘要计算机发展到今天,从个人计算机到巨型计算机系统,毫无例外都配置一种或是多种操作系统。
操作系统管理和控制计算机系统中的所有硬、软件资源,合理地组织计算机工作流程,并且为用户提供一个良好的工作环境和友好的接口。
在计算机操作系统的功能中,对文件存储设备的管理是一项非常重要的任务,文件在存储器上按一定的顺序有组织地存放,使得用户访问高效,操作方便。
UNIX文件系统采用SFD和BFD方式管理文件:SFD称为符号文文件目录,存放文件名以及致使该文件说明信息表标识符ID;把存放文件说明信息和相应标识符的BFD称为i节点。
UNIX文件系统将存储设备分为引导块、超级快、i节点区、目录和数据区四个存储区。
引导块主要是为了存储引导系统启动的数据;超级块描述文件系统的状态,包括磁盘空闲块栈,空闲i结点栈;i节点区存放文件说明信息,每项32字节;目录和数据每个目录项16字节,文件名区分大小写。
在界面上我们使用MFC可视化设计,将实现的代码加载到MFC界面中,在响应鼠标消息的函数中调用实现模拟系统设计的代码,这样最后的操作是在Windows界面的操作,响应鼠标的命令。
界面美好,操作方便。
关键词:操作系统,文件系统,UNIX文件系统模拟摘要目录1. 概述 (6)2. 课程设计任务及要求 (6)2.1 设计任务 (6)2.2 设计要求 (7)3. 算法及数据结构 (7)3.1算法的总体思想(流程) (8)3.2 i节点模块 (8)3.2.1功能3.2.2 数据结构3.2.3算法3.3 装入和退出系统模块 (11)3.3.1功能3.3.2算法3.4用户登录注销模块 (14)3.4.1 功能3.4.2 数据结构及流程图3.4.3 算法3.5 目录管理模块 (16)3.5.1功能3.5.2 数据结构及流程图3.3.3算法3.6 创建删除文件模块 (19)3.6.1功能3.6.2 数据结构及流程图3.6.3算法3.7 文件模块 (21)3.7.1功能3.7.2 数据结构及流程图3.7.3算法4. 程序设计与实现 (24)4.1 程序流程图4.2 程序说明4.3 实验结果5. 结论 (28)6. 参考文献 (29)7. 收获、体会和建议 (29)1.概述UNIX文件系统采用SFD和BFD方式管理文件。
SFD称为符号文件目录,存放文件名以及致使该文件说明信息表标识符ID。
把存放文件说明信息和相应标识符的BFD称为i节点。
i节点又分为磁盘i节点和内存i节点。
目录表目中仅包含文件名和指向另一个数据块的指针-i节点号。
就可以通过这些i节点访问文件或是到另一个目录。
文件采用二级指针模块,可以存储大文件。
超级块结构采用成组块链接法,管理着磁盘的空闲块。
系统启动时的初始化是读磁盘的超级块到内存,可以操作和管理目录和文件数据,既是管理了磁盘块,同时读入根目录到内存作为当前操作目录,之后就可以访问到其他任意目录树的地方。
模拟UNIX文件系统程序设计。
首先要了解UNIX文件系统的结构和管理方法,建立数据结构,组织数据,通过概要设计出大体流程,然后细化完善每一个功能模块,先底层后表层,边写代码边测试,保证完成的每一个模块代码的无错性。
最后将完成的代码加到界面中。
2. 课程设计任务及要求2.1 设计任务模拟实现UNIX的文件系统,多用户、多级目录结构文件系统的设计与实现模拟实现UNIX的文件系统2.2 设计要求1、在深入理解操作系统基本原理的基础上,对于选定的题目,以小组为单位,先确定设计方案;2、设计系统的数据结构和程序结构,设计每个模块的处理流程。
要求设计合理;3、编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系统的运行结果;4、确定测试方案,选择测试用例,对系统进行测试;5、运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并回答指导教师的提问;6、提交课程设计报告。
3. 算法及数据结构3.1算法的总体思想(流程)3.1.1总体设计思想:利用内存的一段空间模拟unix的文件系统的实现。
设计结构体数组存放用户信息。
设计文件和目录通用的结构体,用一个字段标识是文件或目录,每个文件均有一个字段对应其所占用的数据块。
创建文件时通过搜索数据块位示图查找第一个空闲的数据块供文件使用。
建立文件后对占用的数据块对应的位示图的位进行置位操作。
删除文件时要释放对应的数据块,对数据块相应的位示图进行清零操作。
对文件的内容的读写都是对该文件数据块对应的一段内存空间内容的读写。
文件卷的组织:将文件卷分块、用位示图来管理或成组块链;块的大小可设成512字节,i节点区块数为32块;数据区块数为512块。
(如下图结构)。
引导区:系统的引导位置,在此设计中没有设计对引导区的操作。
超级块:描述文件系统的状态,包括磁盘空闲块栈,空闲i结点栈。
在程序设计中实质是存储一个数据结构的数据。
i节点:存放文件说明信息,每项32字节,这个区域有32块,每块512字节,也就是可以存储512个i节点。
在UNIX系统中,索引文件或是目录都是通过先索引i节点,通过i节点找到对应的目录或是文件数据块。
目录和文件:每个目录项16字节,文件名区分大小写。
3.1.2 总体实现算法:1)进入模拟文件系统VFS;2)格式化。
3)启动系统。
4)用户登陆,可以多用户同时登陆及用户之间的切换使用。
5)提示用户命令按要求输入命令并执行各种操作,包括:显示目录表,创建新目录,更改目录,创建文件,填写文件,读取文件,删除文件,更新文件。
6)用户操作完毕后,注销用户。
7)退出系统并执行退出后的保存工作。
3.2 i节点模块3.2.1功能i节点模块是是i节点的请求和释放操作。
主要的函数有:struct inode * ialloc()从磁盘上申请一个i节点:当需要建立一个目录或是建立一个文件的时候需要新的i节点。
一般会在这个时候调用。
Void ifree(struct inode* pinode)从磁盘上释放一个i节点:当从文件系统中删除某个文件或是目录的时候,应首先删除它的磁盘i节点项。
struct inode * iget (unsigned __int16 dinodeid)从磁盘上读i节点到内存。
void iput(struct inode * pinode)从内存中释放掉i节点,不影响磁盘的i节点。
3.2.2 数据结构/*内存i节点*/struct inode{struct inode *i_forw;struct inode *i_back;char i_flag;unsigned int i_ino; /*磁盘i节点标号*/unsigned int i_count; /*引用计数*/unsigned short di_number;/*关联文件,当为0时,则删除该文件*/unsigned short di_mode; /*存取权限*/unsigned short di_uid; /*磁盘i节点用户id*/unsigned short di_gid; /*磁盘i节点组id*/unsigned short di_size; /*文件大小*/unsigned int di_addr[NADDR]; /*物理块号*/};/*磁盘i节点*/struct dinode{unsigned short di_number; /*关联文件数*/unsigned short di_mode; /*存取权限*/unsigned short di_uid;unsigned short di_gid;unsigned long di_size; /*文件大小*/unsigned int di_addr[NADDR]; /*物理块号*/};/*超级块*/struct filsys{unsigned short s_isize; /*i节点块块数*/unsigned long s_fsize; /*数据块块数*/unsigned int s_nfree; /*空闲块块数*/unsigned short s_pfree; /*空闲块指针*/unsigned int s_free[NICFREE]; /*空闲块堆栈*/unsigned int s_ninode; /*空闲i节点数*/unsigned short s_pinode; /*空闲i节点指针*/unsigned int s_inode[NICINOD];/*空闲i节点数组*/unsigned int s_rinode; /*铭记i节点*/char s_fmod; /*超级块修改标记*/};3.2.3算法函数名:ialloc功能:申请磁盘i节点算法:通过超级块的i节点管理数组,查找一个没有被占用的i节点,放回i节点id。
函数名:ifree功能:释放磁盘i节点算法:修改超级块的i节点记录数据,释放相应的内存i节点。
函数名:iget功能:获得磁盘i节点到内存算法:通过i节点的id从磁盘上读i节点数据到内存。
通过id号找到这个i节点的磁盘地址,之后读出i节点大小的数据到内存。
函数名:iput功能:释放内存i节点算法:根据内存中这个i节点的信息做处理,若i节点只被引用一次,没有被修改过则从内存中释放,否则存储到磁盘覆盖原来的磁盘i节点,若引用次数大于1则引用次数自减一。
3.3 装入和退出系统模块3.3.1功能是读磁盘的相关数据到内存,为了用户可以对文件系统的操作。
实现函数:void install()启动,安装文件系统void halt()关闭系统。
3.3.2 数据结构及流程图系统装载关闭系统3.3.3算法函数名:install功能:装载系统数据算法:先将超级块数据读到内存,然后初始化系统打开文本表(SOF),读根目录的i节点到内存,读根目录到内存,设置为当前目录。
函数名:halt功能:关闭系统算法:将当前目录写入覆盖到磁盘目录的数据,关闭所有系统打开文件表中的文件。
退出文件系统。
3.4用户登录注销模块3.4.1功能此模块处理用户登陆系统和推出系统的管理,涉及到的操作函数主要有login()和logout().3.4.2 数据结构及流程图数据结构:/*用户打开表*/struct user{unsigned short u_default_mode;unsigned short u_uid; /*用户标志*/unsigned short u_gid; /*用户组标志*/unsigned short u_ofile[NOFILE]; /*用户打开表*/};/*用户密码*/struct pwd{unsigned short p_uid;unsigned short p_gid;char password[PWDSIZ];};用户登录用户退出3.4.3算法函数名:login功能:用户登录文件系统算法:根据用的输入用户名和密码,从passsword文件中判断是否正确,假如正确则将该用户加入到登录的用户表中,初始化此用户的打开文件表。