操作系统实验---文件系统
操作系统-第四次实验报告-文件系统
全部代码可执行
实验介绍
本实验要求在假设的I/O 系统之上开发一个简单的文件系统, 这样做既能让实验者对文 件系统有整体了解,又避免了涉及过多细节。用户通过create, open, read 等命令与文件系统 交互。文件系统把磁盘视为顺序编号的逻辑块序列,逻辑块的编号为0 至L-1。I/O 系统利 用内存中的数组模拟磁盘。 实际物理磁盘的结构是多维的:有柱面、磁道、扇区等概念。I/O 系统的任务是隐藏磁 盘的结构细节,把磁盘以逻辑块的面目呈现给文件系统。逻辑块顺序编号,编号取值范围为 0 至L -1,其中L 表示磁盘的存储块总数。实验中,我们可以利用字符数组ldisk[L][B] 构 建磁盘模型,其中B 表示每个存储块的长度。I/O 系统从文件系统接收命令,根据命令指定 的逻辑块号把磁盘块的内容读入命令指定的内存区域, 或者把命令指定的内存区域内容写入 磁盘块。内存区域内容写入磁盘块。
整体组织
注:我定义的文件系统中,磁盘分为两大部分:数据区和保留区。其中保留区中又包含位图区和文件 描述符区,数据区的首部是文件的目录项,也就是说,文件的目录项在文件创建时会创建相应的目录 项在数据区的文件首部;而位图区用于表征数据的占用情况,例如数据区的第 N 块被分配了,那么位 图区中也要做相应的改变。
struct filesign { int file_length; int filesign_flag; int file_block;
int file_block_ary[FILE_BLOCK_LENGTH]; }; struct contents { char filename[FILE_NAME_LENGTH];
文件的读 int read(int,int,int)
操作系统文件资料操作实验
操作系统文件资料操作实验实验目的:学习文件的创建、读取、写入和删除等基本操作,并了解操作系统对文件的管理方式。
实验原理:操作系统中的文件是指对持久存储设备中的信息以逻辑形式进行组织和管理的抽象,实际上是对硬盘或其他存储设备上二进制形式的数据进行了逻辑封装。
文件有文件名、文件类型、文件大小、文件创建日期等属性,可以通过文件操作系统提供的接口对文件进行创建、读写、删除等操作。
实验步骤:1.创建文件:打开操作系统的终端窗口,使用命令行工具或文件管理器创建一个新的文件,命名为test.txt。
2.写入数据:3.读取数据:使用操作系统提供的API函数或命令行工具,读取test.txt文件中的数据。
将读取的数据输出到终端窗口或保存到一个新的文件中。
4.修改数据:5.删除文件:使用操作系统提供的API函数或命令行工具,删除test.txt文件。
实验结果:在进行上述实验步骤后,我们可以观察到以下结果:1. 文件的创建:成功创建了名为test.txt的文件,并在文件中写入了"Hello, World!"的文本信息。
2. 数据的读取:成功读取了test.txt文件中的数据,并输出到终端窗口或保存到一个新的文件中。
3. 数据的修改:成功修改了test.txt文件中的文本信息为"Hello, OS!"。
4. 文件的删除:成功删除了test.txt文件。
实验总结:本实验主要通过对操作系统文件的创建、读取、写入和删除等基本操作进行了实践操作。
通过这些操作,我们可以更深入地了解操作系统对文件的管理方式,以及文件系统的基本原理。
通过本实验,我们深入了解了操作系统文件的基本操作,对操作系统的文件管理方式有了更全面的了解。
这将有助于我们在日常的操作系统使用中更好地理解和应用文件系统的功能,并为后续学习和实践更高级的文件操作奠定了基础。
操作系统文件管理系统模拟实验
操作系统文件管理系统模拟实验操作系统文件管理系统模拟实验一、实验目的本实验旨在通过模拟操作系统的文件管理系统,加深对操作系统文件管理的理解,锻炼操作系统的应用能力。
二、实验环境1、操作系统:Windows/Linux/MacOS2、编程语言:C/C++/Java/Python等三、实验内容1、初始化文件管理系统1.1 创建根目录,并初始化空文件目录1.2 初始化用户目录和权限设置2、文件操作2.1 创建文件2.1.1 检查文件名合法性2.1.2 检查文件是否已存在2.1.3 为新文件分配磁盘空间2.1.4 添加文件元数据信息2.2 打开文件2.2.1 检查文件是否存在2.2.2 检查用户权限2.3 读取文件内容2.3.1 读取文件权限检查2.3.2 读取文件内容2.4 写入文件内容2.4.1 写入文件权限检查2.4.2 写入文件内容2.5 删除文件2.5.1 检查文件是否存在2.5.2 检查用户权限2.5.3 释放文件占用的磁盘空间2.5.4 删除文件元数据信息3、目录操作3.1 创建子目录3.1.1 检查目录名合法性3.1.2 检查目录是否已存在3.1.3 添加目录元数据信息3.2 打开目录3.2.1 检查目录是否存在3.2.2 检查用户权限3.3 列出目录内容3.3.1 列出目录权限检查3.3.2 列出目录内容3.4 删除目录3.4.1 检查目录是否存在3.4.2 检查用户权限3.4.3 递归删除目录下所有文件和子目录3.4.4 删除目录元数据信息四、实验步骤1、根据实验环境的要求配置操作系统和编程语言环境。
2、初始化文件管理系统,创建根目录,并初始化用户目录和权限设置。
3、进行文件操作和目录操作。
五、实验结果分析根据实验步骤进行文件操作和目录操作,观察系统的运行情况并记录相关实验结果。
六、实验结论通过本实验,深入了解了操作系统中文件管理系统的相关原理和实现方式,并且通过实验操作进一步巩固了相应的应用能力。
文件系统 实验报告
文件系统实验报告引言文件系统是操作系统中的一部分,用于管理计算机中的文件和目录。
它提供了数据的存储、访问、组织和管理功能,是操作系统的基础之一。
本实验通过实现一个简单的文件系统来深入理解文件系统的原理和实现方式。
实验目的1. 了解文件系统的基本概念和原理;2. 学习文件系统的设计和实现方法;3. 掌握文件系统的基本操作。
实验环境本次实验使用的是Ubuntu 20.04操作系统。
实验步骤1. 文件系统的设计在开始实现文件系统之前,我们首先需要设计文件系统的结构和功能。
1.1 文件系统的结构文件系统通常由三个主要部分组成:文件控制块、目录和数据块。
文件控制块用于存储文件的属性和元数据,目录用于组织文件和子目录,数据块用于存储文件的实际内容。
1.2 文件系统的功能文件系统需要提供以下功能:- 文件的创建、读取、修改和删除;- 目录的创建、读取、修改和删除;- 文件和目录的查找;- 文件的权限管理。
2. 文件系统的实现2.1 文件系统的初始化在实现文件系统之前,我们首先需要初始化文件系统。
包括创建超级块、位图和根目录,并将它们写入磁盘。
2.2 文件和目录的操作在文件系统中,我们需要实现文件和目录的基本操作,包括创建文件、创建目录、读取文件内容、修改文件内容和删除文件。
2.3 文件系统的其他操作除了基本的文件和目录操作之外,文件系统还需要实现其他一些功能,如文件查找、权限管理等。
3. 文件系统的测试在完成文件系统的实现后,我们需要对其进行测试,以验证其功能是否正常。
3.1 创建文件和目录我们首先创建一些文件和目录,检查它们是否被正确地写入磁盘,并且能够被正确地读取。
3.2 读取和修改文件我们随机选择一些文件,读取它们的内容,并对其内容进行修改。
修改后,我们再次读取文件,确保修改成功。
3.3 删除文件和目录我们尝试删除一些文件和目录,并检查它们是否被成功地删除。
4. 结果与讨论经过测试,我们发现我们实现的文件系统功能正常,能够按照我们的预期进行文件和目录的创建、读取、修改和删除等操作。
操作系统虚拟文件系统实验报告
操作系统虚拟文件系统实验报告一、实验目的本实验旨在帮助学生理解操作系统中虚拟文件系统的概念和工作原理,通过实际操作来深入学习和掌握相关知识。
二、实验环境本次实验使用的操作系统为Linux,实验工具为虚拟机软件VMware Workstation。
三、实验步骤1. 创建虚拟机:首先启动VMware Workstation,创建一个新的虚拟机并安装Linux操作系统。
2. 挂载文件系统:在Linux系统中,使用命令行工具挂载一个文件系统到指定的目录,例如将/dev/sdb1挂载到/mnt目录下。
3. 创建文件:在挂载后的文件系统中,通过命令行工具创建若干个文件和目录,可以使用touch和mkdir命令。
4. 编辑文件内容:使用vim或者其他文本编辑工具,在创建的文件中添加一些内容。
5. 查看文件系统信息:使用df命令查看当前系统的文件系统使用情况,通过ls命令查看文件和目录的信息。
6. 卸载文件系统:使用umount命令卸载之前挂载的文件系统。
7. 实验总结:对本次实验的操作过程和结果进行总结,思考在实际应用中虚拟文件系统的意义和作用。
四、实验结果分析通过本次实验,我深入理解了操作系统中虚拟文件系统的概念和原理。
在实际操作过程中,我掌握了如何挂载和卸载文件系统,创建和编辑文件内容,以及查看文件系统信息的方法。
这些基本操作对于日常的系统管理和开发工作具有重要意义,能够有效地提高工作效率和便捷性。
五、实验感想本次实验虽然只是简单的操作演示,但对我理解操作系统的文件系统和虚拟化技术有着重要的意义。
通过亲身操作,我对虚拟文件系统的工作原理有了更加直观的认识,对操作系统中文件管理的流程和方式也有了更深入的理解。
这对我今后的学习和工作都具有积极的促进作用,我会继续学习和提升相关知识和技能,努力成为一名优秀的操作系统工程师。
六、实验总结通过本次操作系统虚拟文件系统的实验,我进一步巩固了相关知识,增强了对操作系统的理解和掌握。
操作系统实验五-文件系统
计算机科学与技术学院2018-2019学年第一学期《操作系统》实验报告班级: XXXXXXX学号: XXXXXXXXX姓名: XXX教师: XXX成绩:1. 题目分析设计目的深入了解磁盘文件系统的实现。
设计内容(1)设计一个简单的文件系统,用文件模拟磁盘,用数组模拟缓冲区,要求实现:(2)支持多级目录结构,支持文件的绝对读路径;(3)文件的逻辑结构采用流式结构,物理结构采用链接结构中的显示链接方式;(4)采用文件分配表;(5)实现的命令包括建立目录、列目录、删除空目录、建立文件、删除文件、显示文件内容、打开文件、读文件、写文件(追加方式)、关闭文件、改变文件属性。
(6)最后编写主函数对所做工作进行测试。
相关知识概述(1)文件的操作:①创建文件;②删除文件;③读文件;④写文件;⑤设置文件读/写位置。
(2)文件的逻辑结构:从用户的观点出发所能观察到的文件组织形式,即问价是由一系列的逻辑记录组成的,是用户可以直接处理的数据及其结构。
文件的物理结构:系统将文件存储在外存上所形成的一种存储组织形式,用户不可见。
(3)磁盘空间的管理:采取合理的文件分配方式,为每个文件分配必要的存储空间,使每个文件都能“各得其所”,并能有效减少磁盘碎片。
(4)磁盘目录结构2. 实验设计基本设计思路用一个文件模拟磁盘:FAT 根目录目录1目录2目录3目录4…文件1文件2…文件分配表FAT(128B):第几项0 1 2 3 4 5 6 7 8 9 …内容-1 -1 -1 4 9 0 7 8 -1 12 …根目录(64B)目录1(64B)目录6(64B)目录……….实验中,模拟的磁盘有128块,每块64B,故文件分配表有128项,每项3一个字节,共占磁盘的前两块,盘块编号0、1;根目录紧邻在文件分配表后面,占编号为2的盘块。
01234567891011128B8B8B8B8B8B8B8B文件管理系统要实现的功能包括:(1)磁盘操作:①磁盘分配(2)目录操作:①建立目录②显示目录内容③删除空目录(3)文件操作:①建立文件②打开文件③关闭文件④读文件⑤写文件⑥删除文件(磁盘回收)⑦显示文件内容⑧改变文件属性⑨使用绝对路径名查找文件(4)对数据结构——已打开文件表的操作:①在已打开文件表中查找某文件②将文件从已打开文件表中删除③将某文件插入已打开文件表主要数据结构描述1、每个目录项的数据结构(8B):typedef struct{char name[3];开始找到文件分配表第x项,i=x第i项值是否为第i项是否为最后一项磁盘满,分配失败结束i=i+1分配第i块NYNY图2-10分配一个磁盘块的流程图结束查找路径名为pname的文件i=0i为已打开文件表一栏查找成功结束查找失败i=i+1文件路径名相符NNYY图2-13 在已打开文件表中查找某文件开始删除路径名为n ame 的文件在已打开文件表中查找路径名为n ame的登记项i找到该文件登记项删除第i项:[i]=openfile[]=结束文件没有打开,删除失败NY结束插入路径名为n ame的文件在已打开文件表中查找路径名为n ame的登记项找到该文件登记项已打开文件表已满文件登记表满,无法打开文件结束在[length]处填写该文件的各项内容:=+1文件已打开YNYN图2-15将某文件插入已打开文件表的流程图图2-14 将某文件从已打开文件表中删除的流程开始 关闭文件路径名为 name 的文件 查找已打开文件表文件打开 追加文件结束符修改目录中文件长度 结束文件未打开, 无法关闭文件结束在已打开文件表中删 除该文件登记项操作为 “ 写 ”NNY Y图 2-20模拟关闭文件的流程图开始读 n ame 文件 l ength 字节查找已打开文件表文件打开文件以读方式打开从已打开文件表的到读指针 :将盘块d um 读入缓冲 b uffer1 文件未打开 , 无法读文件结束文件不能读结束t=0文件未结束且 t<=length显示读出内容; 修改读指针的 b unum: bnum=bnum+1t=t+1读完一个盘块修改读指针 bnum=0;: dnum= 文件分配表第 n um 项将盘块 d num 读入缓冲 b uffer1读文件结束 结束NYNNNYYY结束显示路径名为name的文件查找目录n ame找到该文件文件打开dnum=该目录起始盘块号第d num块是该文件一块第d num块内容读入buffer1显示b uffer1中的内容结束或到文件结束符dnum=FAT 第d num项结束结束文件打开,显示文件失败结束指定的文件不存在,显示文件内容失败NYNYNY编码实现实现过程总结部分功能代码:(1)目录操作:①建立目录:int md(char *pathName, char *contentName, char address) ame[0] = '$';}fseek(fc, address * 64, SEEK_SET);fwrite(contentBuffer, 64L, 1, fc);return 1; ttribute == 8) ame << endl;cout << "类型:空" << endl;cout << "属性:目录项" << endl;cout << "起始地址:" << (int)contentBuffer[i].address << endl;cout << "长度:1" << endl << endl;}else if (contentBuffer[i].name[0] == '$'){cout << "一个空的目录登记项" << endl;}else{cout << "名字:" << contentBuffer[i].name << endl;cout << "类型:" << contentBuffer[i].type << endl;if (contentBuffer[i].attribute == 3){cout << "属性:只读系统文件" << endl;}else{cout << "属性:可读可写的普通文件" << endl;}cout << "起始地址:" << (int)contentBuffer[i].address << endl;cout << "长度" << (int)contentBuffer[i].length << endl << endl;}}}(2)文件操作:①建立文件:bool create_file(){ttribute;= temp->address;= temp->length;= flag;pointer read, write;= dnum;= 0;= dnum;= 0;= write;= read;(cu);return 3;}③关闭文件:int close_file(char *pathName){list<OFILE>::iterator it;int i = 0;for (it = (); it != ();){if (strcmp(it->name, pathName) == 0){it = (it);return 1;}else{++it;}}return 0;}④读文件:bool read_file(char *pathName){int a;unsigned char c;bool flag = false;OFILE exist;list<OFILE>::iterator it;int i = 0;for (it = (); it != (); it++){if (strcmp(it->name, pathName) == 0){exist = *it;flag = true;break;}}if (flag == false){return flag;}int dnumTemp = fseek(fc, 64 * SEEK_SET);for (i = 0; i < ; i++){cout << "第" << << "个盘块内容如下:" << endl;while{if % 8 == 0){cout << endl;}c = getc(fc);a = c;cout << hex << " " << a;}= 0;fseek(fc, SEEK_SET);c = getc(fc);if (c == 255){cout << "文件末尾" << endl;break;}= c;fseek(fc, * 64, SEEK_SET);cout << endl;}return flag;}⑤写文件:bool write_file(char *pathName){int dnum; ;type = (pointPosition + 1, ());everyPath = (0, pointPosition);}结果分析与总结结果分析部分功能演示:总结与建议总结:通过本次实验我学会了如何建立文件管理系统,学会了一些常用的目录、问津功能的实现,还学会了如何用文件读写指针对文件进行操作。
文件系统实验报告
一、实验目的1. 理解文件系统的基本概念和组成。
2. 掌握文件系统的创建、删除、修改和查询等基本操作。
3. 了解文件系统的性能分析和优化方法。
4. 提高对文件系统原理的理解和实际操作能力。
二、实验环境1. 操作系统:Windows 102. 文件系统:NTFS3. 实验软件:Windows资源管理器、Notepad++等三、实验内容1. 文件系统的基本概念和组成(1)文件:存储在文件系统中的数据单元,可以是程序、文档、图片等。
(2)目录:用于组织文件的结构,类似于文件夹。
(3)文件系统:管理存储设备上文件和目录的数据结构。
2. 文件系统的创建、删除、修改和查询等基本操作(1)创建文件:使用Notepad++创建一个名为“test.txt”的文本文件。
(2)创建目录:在Windows资源管理器中,创建一个名为“test”的目录。
(3)删除文件:选中“test.txt”文件,按Delete键删除。
(4)删除目录:选中“test”目录,按Delete键删除。
(5)修改文件:使用Notepad++打开“test.txt”文件,修改内容后保存。
(6)查询文件:在Windows资源管理器中,通过路径或搜索功能查找“test.txt”文件。
3. 文件系统的性能分析和优化方法(1)查看磁盘空间使用情况:在Windows资源管理器中,选中磁盘分区,查看磁盘空间使用情况。
(2)清理磁盘:使用Windows自带的磁盘清理工具清理磁盘垃圾文件。
(3)优化文件系统:使用Windows自带的磁盘碎片整理工具优化文件系统。
四、实验结果与分析1. 创建文件和目录实验结果显示,使用Notepad++创建了一个名为“test.txt”的文本文件,使用Windows资源管理器创建了一个名为“test”的目录。
2. 删除文件和目录实验结果显示,成功删除了“test.txt”文件和“test”目录。
3. 修改文件实验结果显示,使用Notepad++修改了“test.txt”文件的内容,并成功保存。
实验四 操作系统_文件系统实验
1实验目的通过实验了解linux的文件系统结构。
通过练习使用linux命令查看文件系统信息;通过编程掌握文件操作函数使用。
2实验内容●学习通过linux命令查看文件系统信息状况●通过编程掌握文件系统调用操作3实验步骤3.1l inux文件及目录命令操作,熟悉常见linux文件操作命令,如:使用ls查看当前目录,使用cd改变当前工作目录,使用pwd 显示当前工作目录等3.2使用df、du命令查看文件系统及文件磁盘空间状况。
查阅资料简述命令输出包含哪些内容。
3.3使用ls –i及stat命令查看文件inod e信息,查阅资料简述stat命令输出包含哪些内容。
3.4文件系统创建3.5用dd 命令创建一个指定大小的文件(使用/dev/zero 作为源进行文件复制)3.5.1用mke2fs 在这个文件上创建一个文件系统,查阅资料总结mke2fs的功能说明,并简述输出所描述的信息。
3.5.2用dump2fs查看fs相关信息,查阅资料简述dump2fs的功能说明。
3.5.3使用od查看fs文件系统“磁盘”内容,并查阅ext2文件系统格式说明,了解其中的数据组成。
3.5.3.1查看超级快内容:od -tx1 -Ax fs -N1024 -j10243.5.3.2查看GDT块:od -tx1 -Ax fs -N1024 -j20483.5.3.3查看bl ock bitmap:od -tx1 -Ad fs -N1024 -j6144 查看inodebitmap:od -tx1 -Ad fs -N1024 -j71683.5.3.4查看inode tabl e:od -tx1 -Ad fs -N1024 -j8192查看databl ock:od -tx1 -Ad fs -N1024 -j245763.5.4使用mount 命令将新建的文件系统fs关联到一个回环设备后挂装到挂装点/mnt3.5.5在/mnt目录中创建子目录、文件后再使用dump2fs查看fs的free bl ocks等的信息变化或使用od命令查看信息变化。
操作系统文件系统实验报告
操作系统文件系统实验报告操作系统文件系统实验报告引言操作系统是计算机系统中的重要组成部分,负责管理计算机的硬件和软件资源,为用户提供一个友好的界面和高效的资源管理。
文件系统作为操作系统的一个重要组成部分,负责管理计算机中的文件和目录,提供文件的读写和存储功能。
本实验旨在深入了解操作系统文件系统的原理和实现方式,并通过实际操作来加深对文件系统的理解。
一、实验背景操作系统中的文件系统是一个层次化的结构,它将计算机中的存储空间划分为若干个逻辑单元,用来存储和管理文件和目录。
文件系统的设计和实现涉及到文件的组织方式、文件的存储结构、文件的访问方式等多个方面。
本实验将以Linux操作系统为例,通过使用Linux文件系统的一些基本命令和操作,来深入了解文件系统的原理和实现方式。
二、实验目的1. 了解文件系统的基本概念和原理。
2. 掌握Linux文件系统的基本命令和操作。
3. 熟悉文件的读写和存储方式。
4. 加深对文件系统的理解和应用。
三、实验内容1. 文件系统的基本概念和原理文件系统是操作系统中用来管理文件和目录的一种机制,它将计算机中的存储空间划分为若干个逻辑单元,用来存储和管理文件和目录。
文件系统的基本概念包括文件、目录、路径等,文件是计算机中存储数据的基本单位,目录是用来组织和管理文件的一种方式,路径是用来定位文件和目录的一种方式。
2. Linux文件系统的基本命令和操作Linux操作系统是一个开源的操作系统,它提供了丰富的文件系统命令和操作。
通过使用这些命令和操作,可以对文件和目录进行创建、删除、复制、移动等操作。
例如,可以使用"mkdir"命令来创建一个新的目录,使用"rm"命令来删除一个文件,使用"cp"命令来复制一个文件,使用"mv"命令来移动一个文件等。
3. 文件的读写和存储方式文件的读写是文件系统的一项重要功能,它可以通过读取和写入文件来实现对文件内容的访问和修改。
操作系统文件管理实验
操作系统实验三:文件管理一.实验目的1.加深对文件,目录,文件系统等概念的理解。
2.掌握UNIX文件系统的目录结构。
3.掌握有关UNIX文件系统操作的常用命令。
4.了解有关文件安全方面的知识。
二.实验内容1.使用pwd,cd,ls等命令浏览文件系统。
2.使用cat,cp,mv,head,tail,rm等命令查看你的文件。
3.使用ln命令进行文件的硬连接和符号连接。
4.使用find,grep命令进行文件查找和模式匹配。
5.使用chmod命令修改文件的权限。
三.实验步骤启动LINUX系统,首先以超级用户ROOT身份登录注册后(占用第一用户平台),然后以普通用户Mengqc(或其他用户名)身份登录注册后,在第二用户平台(<alt>+F2)练习文件管理有关命令.一般在[mengqc @ localhost mengqc]$提示符下键入有关命令。
1.浏览文件系统〈1〉运行pwd命令,确定你当前的工作目录(为/ home/mengqc)。
〈2〉利用以下命令显示当前工作目录的内容:(理解各字段意义。
)ls –l〈3〉运行以下命令:(反馈信息中.代表本身目录,..代表其父目录;选项a可以显示隐藏文件;选项i可以显示文件的I节点号)ls –ai〈4〉使用mkdir命令建立一个子目录subdir,并用ls查看当前目录。
下附本实验文件目录结构。
Mkdir subdir/根目录Ls –lBin dev home rootMengqc mlwjsubdirfa(file1)〈5〉使用带-d选项的ls命令,你只能看到有关子目录的信息(.表示本身目录)。
Ls -d〈6〉使用cd命令,将工作目录改到根目录(/)上。
①用相对路径将工作目录改到根目录。
Pwd 显示当前目录为 /home/mengqcCd .. 相对路径,返回上一级。
Pwd 反馈显示当前目录为 /homeCd .. 相对路径,再返回上一级。
Pwd 反馈显示当前目录为 /Cd /home/mengqc 恢复本身目录(也可以cd↙ ).Pwd 反馈显示当前目录为 /home/mengqc②用绝对路径将工作目录改到根目录。
操作系统文件系统实验报告
操作系统文件系统实验报告1. 实验目的本实验旨在深入了解操作系统中的文件系统,掌握文件系统的基本原理和操作。
2. 实验环境本实验使用Linux操作系统作为实验环境,其中包括以下软件和工具: - 操作系统:Ubuntu 20.04 - 文件系统:EXT4 - 终端模拟器:GNOME Terminal3. 实验步骤3.1 创建虚拟硬盘首先,我们需要创建一个虚拟硬盘,作为文件系统的存储介质。
可以使用以下命令来创建一个大小为1GB的虚拟硬盘:$ dd if=/dev/zero of=disk.img bs=1M count=10243.2 格式化虚拟硬盘接下来,我们需要使用mkfs命令来格式化虚拟硬盘,使其支持EXT4文件系统:$ mkfs.ext4 disk.img3.3 挂载虚拟硬盘格式化完成后,我们可以将虚拟硬盘挂载到系统中的一个目录上,以便我们可以访问其中的文件:$ mkdir /mnt/disk$ mount disk.img /mnt/disk3.4 创建文件现在,我们可以在挂载的虚拟硬盘上创建文件,可以使用touch命令来创建一个空文件:$ touch /mnt/disk/file.txt3.5 写入文件我们可以使用echo命令向文件中写入一些内容:$ echo "Hello, World!" > /mnt/disk/file.txt3.6 读取文件可以使用cat命令来读取文件的内容:$ cat /mnt/disk/file.txt3.7 卸载虚拟硬盘完成实验后,我们可以卸载虚拟硬盘,以便之后的实验使用:$ umount /mnt/disk4. 实验总结通过本次实验,我们深入了解了操作系统中的文件系统,并学会了如何创建、格式化、挂载和访问文件系统。
文件系统是操作系统中非常重要的一部分,它负责管理和组织计算机上的文件和目录,为用户提供了方便的文件操作接口。
掌握文件系统的基本原理和操作对于进一步学习和理解操作系统的工作原理具有重要意义。
操作系统实验文件系统报告
操作系统实验文件系统报告简介本文档是操作系统实验报告的文件系统部分。
在这个实验中,我们将通过实现一个简单的文件系统来了解文件系统的基本原理和实现方式。
本文档将介绍文件系统的设计和实现,以及在实验中遇到的问题和解决方案。
设计和实现文件系统结构我们的文件系统采用了简单的单级目录结构。
每个文件都有一个唯一的文件名和文件扩展名,以及相应的文件内容。
文件系统中的所有文件都存储在一个文件中,我们通过偏移量来访问每个文件。
文件系统接口我们实现了以下文件系统接口来对文件系统进行操作:•create_file(filename, extension): 创建一个新文件。
•delete_file(filename, extension): 删除一个文件。
•open_file(filename, extension): 打开一个文件。
•close_file(file): 关闭一个文件。
•read_file(file, offset, length): 从文件中读取数据。
•write_file(file, data): 向文件中写入数据。
•seek_file(file, offset): 设置文件指针的位置。
通过这些接口,我们可以对文件进行创建、删除、读取和写入操作,以及设置文件指针的位置。
文件系统实现我们的文件系统是在操作系统内核中进行实现的。
在内存中维护了一个文件控制块(FCB)表,用于记录文件的元数据信息,比如文件名、扩展名、大小和位置等。
文件内容存储在一个独立的数据块中。
为了实现文件的持久化,我们将文件系统的存储映射到了一个文件中。
在系统启动时,我们会将这个文件读取到内存中,并建立起文件控制块表和数据块的映射关系。
文件的创建、删除和读写操作都是通过操作文件控制块表和数据块来完成的。
具体实现涉及到文件的分配和释放,以及文件指针的管理等问题。
遇到的问题和解决方案在实验中,我们遇到了一些问题,主要集中在文件的读写和文件指针的管理方面。
操作系统实验-文件系统
用rm命令分别删除这三个文件,再用ls命令看看有何变化?
实例:Ls的功能实现
#include<sys/types.h>
#include<dirent.h>
#include<unistd.h>
int main(int argc,char * argv[ ])
{ DIR * dp;
struct dirent * dirp;
if(argc!=2)
perror(“a single argumen(the directory name) is required”);
if((dp=opendir(argv[1]))==NULL)
perror(“Can’t open %s\n”,argv[1]);
while((dirp=readdir(dp))!=NULL)
西北师范大学计算机科学与工程学院学生实验报告
学号
专业
计算机科学与技术
姓名
课程名称
操作系统
班级
实验名称
文件系统
课程类型
专业课
实验目的:
(1)熟悉和理解文件系统的概念和文件系统的类型。
(2)了解文件系统的功能及实现。
(3)学习文件系统的系统调用及命令。
(4)熟悉和理解文件的共享。
实验内容:
1.使用creat、open、read、write等系统调用,实现cp命令的功能。
324550 -rwx------ 2 sarwar faculty 380 mar 11 14:20 abc.hard
$ ln -s abc.c abc.soft
$ ls -il
324550 -rwx------ 1 sarwar faculty 380 mar 11 14:20 abc.c
操作系统实验四文件系统实验
char fileName[20]; char File[50]; struct ufd * next; }*fp,*tp,*p,*begin;
typedef struct ufd UFD ; void show(struct UFD *f) {
begin=f; if(begin->next==NULL) printf("该用户名下尚无文件!\n"); else {
while(strcmp(p->fileName,filename)!=0&&p!=NULL)
p=p->next;
if(p==NULL)
printf("文件不存在!\n");
else
{
printf("%s: %s\n",p->fileName,p->File);
}
goto label;
}
else if(i==4)
#include <stdio.h> #include <stdlib.h> #include <string.h> #define getpch(type) (type*)malloc(sizeof(type)) int userNum=0;
struct mdf {
char userName[20]; struct UFD* p; } mdf[20];
西北农林科技大学信息工程学院实习报告
实验四 文件系统实验 一 .目的要求
1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从 而对各种文件操作命令的实质内容和执行过程有比较深入的了解。 2、要求设计一个 n 个用户的文件系统,每次用户可保存 m 个文件,用户在一次 运行中只能打开一个文件,对文件必须设置保护措施,且至少有 Create、delete、 open、close、read、write 等命令。
操作系统实验-文件系统设计
文件系统设计1.目的和要求本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。
实验要求:①在系统中用一个文件来模拟一个磁盘;②此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。
③实现这个文件系统。
④能实际演示这个文件系统。
基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。
2.实验内容1)设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。
2)程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UFD)。
另外,为打开文件设置了运行文件目录(AFD)。
3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。
4)因系统小,文件目录的检索使用了简单的线性搜索。
5)文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。
6)程序中使用的主要设计结构如下:主文件目录和用户文件目录(MFD、UFD),打开文件目录(AFD)即运行文件目录。
3.实验环境VC 6.04.实验提示1) format 格式化只写打开模拟文件,初始化超级快,初始化dinode 位图 block 位图,初始化主目录,初始化etc 目录,初始化管理员admin 目录,初始化用户xiao 目录,初始化 用户passwd 文件,写入模拟硬盘文件。
2 )install 安装读写打开模拟文件,读取dinode 位图 block 位图,读取主目录,读取etc 目录,读取管理员admin 目录,读取用户xiao 目录,读取 用户passwd 文件。
3 )login 登陆用户输入用户名和密码,在passwd 文件中查找是否有此用户,核对密码。
正确则登陆成功,当前目录设定到当前用户文件夹下。
Login登录结束是,登录成功输入用户名查找是否有改用户名输入密码是否密码是否正确否4 )ialloc 申请inode 空间先检测inode 位图是否加锁,是则退出。
操作系统实验5文件系统:Linux文件管理
(1)掌握Linux 提供的文件系统调用的使用方法;
(2)熟悉文件和目录操作的系统调用用户接口;
(3)了解操作系统文件系统的工作原理和工作方式。
(1) 利用Linux 有关系统调用函数编写一个文件工具filetools,要求具有下列功能:***********
0. 退出
1. 创建新文件
2. 写文件
3. 读文件
4. 复制文件
5. 修改文件权限
6. 查看文件权限
7. 创建子目录
8. 删除子目录
9. 改变当前目录到指定目录
10. 链接操作
通过这次实验掌握Linux 提供的文件系统调用的使用方法;熟悉文件和目录操作的调用用户接口,了解操作系统文件系统的工作原理和工作方式。
操作系统文件系统性能与安全实验报告
操作系统文件系统性能与安全实验报告1. 概述文件系统是操作系统中的重要组成部分,它负责管理文件的存储、组织和访问。
本次实验旨在研究操作系统文件系统的性能和安全性,并通过实验数据和分析得出结论。
2. 实验设计与环境为了评估文件系统的性能和安全性,我们选择了常用的三种文件系统进行实验:FAT32、NTFS和ext4。
实验环境搭建在一台具有充足资源的计算机上,操作系统为Windows 10和Linux。
3. 性能实验3.1 文件读取性能测试通过在不同文件系统上读取不同大小的文件,并记录读取时间,以评估文件系统在读取大文件和小文件时的性能差异。
3.2 文件写入性能测试同样地,在不同文件系统上写入不同大小的文件,并记录写入时间,以评估文件系统在写入大文件和小文件时的性能差异。
3.3 目录操作性能测试通过在不同文件系统上进行目录的创建、删除、重命名等操作,并记录所花费的时间,以评估文件系统在目录操作上的性能差异。
4. 安全性实验4.1 文件权限测试我们通过在不同文件系统上设置不同的文件权限,并测试用户对文件的读取、写入和执行权限,以评估文件系统对文件安全性的保护程度。
4.2 数据恢复测试在实验中,我们模拟文件系统崩溃等意外情况,测试文件系统的数据恢复能力,以评估文件系统对数据的安全性和可靠性。
4.3 密码保护测试通过在不同文件系统上设置文件加密功能,并测试文件系统的密码保护机制,以评估文件系统对数据隐私和安全的保护程度。
5. 实验结果与分析根据我们的实验数据和分析,我们得出以下结论:5.1 性能方面:- 在大文件读写性能方面,NTFS和ext4相对较好,而FAT32性能相对较差。
- 在小文件读写性能方面,ext4表现出色,NTFS次之,而FAT32仍然性能较差。
- 目录操作性能方面,ext4表现最佳,NTFS次之,而FAT32仍然相对较差。
5.2 安全性方面:- 在文件权限控制方面,NTFS和ext4提供了更加精细的权限设置,相对而言更安全可靠。
电脑文件操作实验报告
实验名称:电脑文件操作实验目的:1. 熟悉电脑文件系统的基本操作。
2. 掌握文件和文件夹的创建、复制、移动、删除、重命名等基本操作。
3. 了解文件属性的设置和文件搜索方法。
实验时间:2023年X月X日实验地点:计算机实验室实验器材:1. 电脑一台2. 实验指导书一份实验步骤:一、实验准备1. 打开电脑,进入操作系统界面。
2. 熟悉电脑桌面及基本操作。
二、文件和文件夹的基本操作1. 创建文件和文件夹- 在桌面或文件夹内,点击鼠标右键,选择“新建” -> “文本文档”或“文件夹”。
- 输入文件或文件夹名称,按回车键确认。
2. 复制文件和文件夹- 选中要复制的文件或文件夹,按住Ctrl键,拖动到目标位置。
- 或者选中文件或文件夹,右键点击选择“复制”,然后到目标位置粘贴。
3. 移动文件和文件夹- 选中要移动的文件或文件夹,按住Shift键,拖动到目标位置。
- 或者选中文件或文件夹,右键点击选择“剪切”,然后到目标位置粘贴。
4. 删除文件和文件夹- 选中要删除的文件或文件夹,按Delete键。
- 或者选中文件或文件夹,右键点击选择“删除”。
5. 重命名文件和文件夹- 选中要重命名的文件或文件夹,右键点击选择“重命名”。
- 输入新的名称,按回车键确认。
三、文件属性的设置1. 选中要设置属性的文件或文件夹,右键点击选择“属性”。
2. 在“常规”选项卡中,可以设置文件的只读、隐藏等属性。
3. 在“安全”选项卡中,可以设置文件的访问权限。
四、文件搜索1. 打开“开始”菜单,输入要搜索的文件名或关键字。
2. 按回车键或点击搜索结果。
实验结果与分析:一、实验结果1. 成功创建了文件和文件夹。
2. 成功复制、移动、删除、重命名了文件和文件夹。
3. 成功设置了文件属性。
4. 成功搜索到所需文件。
二、实验分析1. 通过本次实验,掌握了电脑文件的基本操作,提高了文件管理能力。
2. 熟悉了文件属性的设置方法,有助于保护文件不被误操作。
操作系统实验---文件系统
实验报告实验题目:文件系统姓名:学号:课程名称:操作系统所在学院:信息科学与工程学院专业班级:计算机任课教师:实验项目名称文件系统一、实验目的与要求:1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及其内部实现。
2、熟悉文件管理系统的设计方法,加深对所学各种文件操作的了解及其操作方法的特点。
3、通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。
4、通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。
二、实验设备及软件:一台PC(Linux系统)三、实验方法(原理、流程图)试验方法(1)首先应当确定文件系统的数据结构:主目录、子目录以及活动文件等。
主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。
(2)用户创建文件,可以编号存储于磁盘上。
如file0,file1,file2…并以编号作为物理地址,在目录中登记。
文件系统功能流程图图1.文件系统总体命令分析图 2.登录流程图图 3. ialloc流程图图4.balloc流程图图5.密码修改流程图图6.初始化磁盘图 7.显示所有子目录 dir/ls 操作流程图图8.创建文件 creatfile 、创建目录 mkdir 流程图图9.改变当前路径 cd 操作流程图实验原理1.文件操作◆mkdir 创建目录文件模块,输入 mkdir 命令,回车,输入文件名,回车,即会在当前目录文件下创建一个名为刚刚输入的文件名的目录文件。
在该创建过程中首先要判断该目录中有没有同名的文件,如果有的话就创建失败,还要判断在该目录下有没有创建文件的权限,有权限才可以创建。
具体流程图查看第二节,系统流程图设计部分。
◆del 删除文件模块,输入 del命令,回车,输入文件名,回车,即会在当前目录文件下删除一个名为刚刚输入的文件名的数据文件。
在该删除过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有删除文件的权限,有权限才可以删除。
操作系统 文件系统 实验程序
— . 实验目的用高级语言编写和调试一种简朴的文献系统,模拟文献管理的工作过程。
从而对多个文献操作命令的实质内容和执行过程有比较进一步的理解。
二、实验规定规定设计一种 n 个顾客的文献系统,每次顾客可保存 m 个文献,顾客在一次运行中只能打开一种文献,对文献必须设立保护方法,且最少有 Create 、delete 、open 、close 、 read 、write 等命令。
程序采用二级文献目录(即设立主目录[MFD])和顾客文献目录(UFD )。
另外,为打开文献设立了运行文献目录(AFD )。
在执行读写命令时,需改读写指针。
因系统小,文献目录的检索使用了简朴的线性搜索。
文献保护简朴使用了三位保护码:允许读写执行、对应位为 1,对应位为 0,则表达不允许读写、执行。
程序中使用的重要设计构造以下:主文献目录和顾客文献目录(MFD 、UFD )、打开文献目录(AFD )(即运行文献目录)文献系统算法的流程图以下:#include<stdio.h>#include<string.h>#define N 10#define L 10#define S 6struct mfd_type{char uname[20];int uaddr;};struct ufd_type{char fname[20];char fattr[10];int recordl;int addrf;};struct uof_type{char fname[20];char fattr[10];int recordl;char fstatue;//1:建立0:打开int readp;int writep;};int fdph[N*L];//寄存文献在磁盘上的第一种空间编号int fdpt[N*L];//寄存文献在磁盘上的最末一种空间编号int disk[400];//寄存磁盘空闲块号int diskt,diskh;//空闲块的尾、首指针最末struct mfd_type mfd[N];struct ufd_type ufd[N *L];struct uof_type uof[N *S];int temp,mi,ni,uno ,ucounter;void create(char cfname[20],int crecordl,char cfattr[10]){int cltemp1=uno*L,cltemp2=(uno+1)*L,frd;while ((cltemp1<cltemp2)&&(strcmp(ufd[cltemp1].fname,cfname)!=0))cltemp1++;if(strcmp(ufd[cltemp1].fname,cfname)!=0){cltemp1=uno*L;while ((cltemp1<cltemp2)&&(strcmp(ufd[cltemp1].fname,"")!=0)) cltemp1++;if(strcmp(ufd[cltemp1].fname,"")==0){frd=cltemp1;cltemp1=uno*S;cltemp2=(uno+1)*S;while ((cltemp1<cltemp2)&&(strcmp(uof[cltemp1].fname,"")!=0)) cltemp1++;if(strcmp(uof[cltemp1].fname,"")==0){if (disk[diskh]!=-1){strcpy(uof[cltemp1].fname,cfname);strcpy(uof[cltemp1].fattr,cfattr);uof[cltemp1].recordl=crecordl;uof[cltemp1].fstatue=1;uof[cltemp1].readp=disk[diskh];uof[cltemp1].writep=disk[diskh];fdph[frd]=disk[diskh];fdpt[frd]=disk[diskh];strcpy(ufd[frd].fname,cfname);strcpy(ufd[frd].fattr,cfattr);ufd[frd].recordl=crecordl;ufd[frd].addrf=disk[diskh];diskh=disk[diskh];printf("%s\n","文献建立成功!");}else printf("%s\n","磁盘没有空间,不能建文献!");}else printf("%s\n","没有空的登记拦1,不能建文献");}else printf("%s\n","没有空的登记拦2,不能建文献");}else printf("%s\n","同名文献不能建立!");};void open(char pfname[20],char ooptype[10]){int cltemp1=uno*L,cltemp2=(uno+1)*L;int cltemp3=uno*S,cltemp4=(uno+1)*S;while ((cltemp1<cltemp2)&&(strcmp(ufd[cltemp1].fname,pfname)!=0)) cltemp1++;if(strcmp(ufd[cltemp1].fname,pfname)==0){while ((cltemp3<cltemp4)&&(strcmp(uof[cltemp3].fname,pfname)!=0)) cltemp3++;if(strcmp(uof[cltemp3].fname,pfname)==0)//有文献{if(uof[cltemp3].fstatue==0) printf("%s\n","文献已打开!");else printf("%s\n","此文献正在建立,不能打开!");}else//无文献{开!");if(strcmp(ufd[cltemp1].fattr,ooptype)!=0) printf("%s\n","操作不正当,不能打else{cltemp3++; cltemp3=uno*S;while ((cltemp3<cltemp4)&&(strcmp(uof[cltemp3].fname,"")!=0))if(strcmp(uof[cltemp3].fname,""))printf("%s\n","在已开表中没有空拦,不能打开文献!");} } elseelse{}}strcpy(uof[cltemp3].fname,pfname);uof[cltemp3].recordl=ufd[cltemp1].recordl;strcpy(uof[cltemp3].fattr,ufd[cltemp1].fattr);uof[cltemp3].readp=ufd[cltemp1].addrf;uof[cltemp3].writep=ufd[cltemp1].addrf;uof[cltemp3].fstatue=0;printf("%s\n","打开文献成功!");printf("%s\n","此文献已不存在,不能打开!");};void write(char wfname[20],int wrecordno){int cltemp1=uno*L,cltemp2=(uno+1)*L;int cltemp3=uno*S,cltemp4=(uno+1)*S;while ((cltemp3<cltemp4)&&(strcmp(uof[cltemp3].fname,wfname)!=0)) cltemp3++;if(strcmp(uof[cltemp3].fname,wfname)) printf("文献没有建立或打开,不能写");//在已开文献中没有次文献,不能写else//文献建立或打开{if(uof[cltemp3].fstatue)//建立{printf("%s%d%s","写第",uof[cltemp3].writep,"块空间!");if(disk[diskt]==-1)printf("%s\n","没有空闲块不能写!");else{} } uof[cltemp3].writep=disk[diskt]; diskt=disk[diskt];printf("%s\n","写文献成功!");else//打开{if(strcmp(uof[cltemp3].fattr,"r")==0)printf("%s\n","操作不正当,不能写!");else{if(disk[diskt]==-1)printf("%s\n","没有空闲块不能写!");else{printf("%s%d%s\n","写第",uof[cltemp3].writep,"块空间!");uof[cltemp3].writep=disk[uof[cltemp3].writep];printf("%s\n","写文献成功!");}}}}};void read(char rfname[20],int rreadl){int cltemp1=uno*S,cltemp2=(uno+1)*S,frd;while ((cltemp1<cltemp2)&&(strcmp(uof[cltemp1].fname,rfname)!=0)) cltemp1++;if(strcmp(uof[cltemp1].fname,rfname)==0){printf("%s%d%s\n"," 第",uof[cltemp1].readp,"块读");frd=fdph[uno*L];while ((cltemp2!=disk[frd])&&(disk[frd]!=-1)) frd=disk[frd];uof[cltemp1].readp=disk[frd];printf("%s\n","文献读成功"); }else printf("%s\n","文献未打开不能读");};void close(char cofname[20]){int cltemp1=uno*S,cltemp2=(uno+1)*S;while ((cltemp1<cltemp2)&&(strcmp(uof[cltemp1].fname,cofname)!=0)) cltemp1++;if(strcmp(uof[cltemp1].fname,cofname)==0){printf("uof[cltemp1].fname=%s,cofname%s\n",uof[cltemp1].fname,cofname);cltemp2=uof[cltemp1].fstatue;printf("uof[cltemp1].fstatue=%d\n",cltemp2);switch (cltemp2){} } else case 1:printf("%s\n","写文献结束符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验题目:文件系统
姓名:
学号:
课程名称:操作系统
所在学院:信息科学与工程学院
专业班级:计算机
任课教师:
实验项目名称文件系统
一、实验目的与要求:
1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及其内部实现。
2、熟悉文件管理系统的设计方法,加深对所学各种文件操作的了解及其操作方法的特点。
3、通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。
4、通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。
二、实验设备及软件:
一台PC(Linux系统)
三、实验方法(原理、流程图)
试验方法
(1)首先应当确定文件系统的数据结构:主目录、子目录以及活动文件等。
主目录和子
目录都以文件的形式存放于磁盘,这样便于查找和修改。
(2)用户创建文件,可以编号存储于磁盘上。
如file0,file1,file2…并以编号作为物理地
址,在目录中登记。
文件系统功能流程图
图1.文件系统总体命令分析
图 2.登录流程图图 3. ialloc流程图
图4.balloc流程图图5.密码修改流程图
图6.初始化磁盘
图 7.显示所有子目录 dir/ls 操作流程图
图8.创建文件 creatfile 、创建目录 mkdir 流程图
图9.改变当前路径 cd 操作流程图
实验原理
1.文件操作
◆mkdir 创建目录文件模块,输入 mkdir 命令,回车,输入文件名,回车,即会在当前目录文件下创建一个名为刚刚输入的文件名的目录文件。
在该创建过程中首先要判断该目录中有没有同名的文件,如果有的话就创建失败,还要判断在该目录下有没有创建文件的权限,有权限才可以创建。
具体流程图查看第二节,系统流程图设计部分。
◆del 删除文件模块,输入 del命令,回车,输入文件名,回车,即会在当前目录文件下删除一个名为刚刚输入的文件名的数据文件。
在该删除过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有删除文件的权限,有权限才可以删除。
具体流程图查看第二节,系统流程图设计部分。
◆ls 显示当前目录下所有目录的模块,输入 ls 命令,回车 ,即会在屏幕上显示当前目录下的所有目录。
在该过程中要判断该目录中是否为空,如果为空就没有必要执行该操作了。
执行操作时,要调用 readdir (INode inode )函数 ,先读入文件内容到 content 里面,然后直接输出。
如果子目录里面还有子目录,则通过递归,一并输出来。
具体流程图查看第二节,系统流程图设计部分。
◆chmod 改变文件权限模块,输入 chmod 命令,回车,输入文件名,回车,即会根据不同类别的用户在屏幕上提示要改变哪一类用户的权限。
如果是文件拥有者执行该操作,他可以选择修改自己、其他用户的权限;如果是文件所属组成员执行该操作,他可以选择修改自己、其他用户的权限;如果是其他用户执行该操作,他只能选择修改自己的权限;在该过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了。
执行操作时,要判断对该文件有没有执行写操作的权利,没有就不能进行。
具体流程图查看第二节,系统流程图设计部分。
◆cd 改变当前所在目录的模块。
输入 cd,回车,相应的字符串,回车,则会根据输入字符串的不同跳转到不同的目录下。
如果字符串是‘ .’ ,则到当前目录;如果字符串是‘ ..’ ,则到父目录;如果字符串是‘/’ ,则到根目录;如果字符串是当前目录下的子目录,则到该子目录;如果字符串是一个决定路径,则到该绝对路径。
当然在执行的时候要判断有没有该子目录或者该绝对路径,如果没有的话,就不能执行。
具体流程图查看第二节,系统流程图设计部分。
2. 用户操作
◆login 用户注销模块,输入 login ,回车,当前用户就退出了,需要重新登录。
◆pw 用户修改口令模块,输入 pw ,回车,则会提示输入原始密码,输入正确了才可以提示输入新密码,并且要求新密码输入两次,两次一样了才能通过修改密码成功。
具体流程图查看第二节,系统流程图设计部分。
◆logout 用户退出系统模块,输入 logout ,回车,系统自动退出。
五、实验数据(现象)处理分析
实验现象
成功运行文件系统,并开始登录:
列出目录:
添加新用户密码不一致而添加失败:
添加新用户:
退出登录:
添加新用户退出登录到重新登录新用户:
修改用户密码:
创建目录以及列出新建的目录:
删除文件目录:
改变目录(进入指定目录):
没有权限创建文件目录的情况:
删除用户失败的情况:
尝试改变文件权限:
用户删除操作的权限控制:
本文件系统还有很多功能,修改文件权限、文件拥有者、文件所属组与前面的目录。