操作系统模拟unix文件系统实验报告
unix实验报告

unix实验报告《Unix实验报告》摘要:本实验报告旨在介绍Unix操作系统的基本概念、特点和使用方法。
通过实际操作和案例分析,展示了Unix操作系统的强大功能和灵活性,以及其在计算机科学和工程领域的重要性。
1. 引言Unix操作系统是一种多用户、多任务的操作系统,具有稳定性高、安全性强、灵活性大等特点。
它被广泛应用于服务器、工作站和个人电脑等领域,为用户提供了丰富的命令行工具和强大的脚本编程环境。
2. Unix操作系统的基本概念Unix操作系统的基本概念包括文件系统、进程管理、用户管理、权限控制等。
文件系统是Unix操作系统的核心,它采用树状结构组织文件和目录,并提供了丰富的文件操作命令。
进程管理是Unix操作系统的另一个重要特点,它允许多个进程同时运行,并提供了进程控制、调度和通信的功能。
用户管理和权限控制则是Unix操作系统的安全保障,它允许管理员对用户和文件进行灵活的管理和权限设置。
3. Unix操作系统的特点Unix操作系统具有很多特点,如多用户、多任务、多线程、分时共享、高性能等。
它采用了模块化设计和分层结构,使得系统更加稳定和可靠。
此外,Unix 操作系统还提供了丰富的命令行工具和编程环境,为用户提供了强大的自定义和扩展能力。
4. Unix操作系统的使用方法Unix操作系统的使用方法主要包括命令行操作、脚本编程、系统管理等。
通过实际操作和案例分析,我们可以了解到如何使用Unix操作系统进行文件操作、进程管理、用户管理、权限控制等。
同时,我们还可以学习到如何使用Shell脚本进行自动化任务的编写和执行,以及如何进行系统管理和性能调优。
5. 结论Unix操作系统是一种强大而灵活的操作系统,它为用户提供了丰富的命令行工具和编程环境,同时具有稳定性高、安全性强、灵活性大等特点。
通过实际操作和案例分析,我们可以更加深入地了解Unix操作系统的基本概念、特点和使用方法,从而更好地应用它来解决实际问题。
操作系统文件管理系统模拟实验

操作系统文件管理系统模拟实验在计算机科学中,操作系统是一种系统软件,负责管理计算机硬件和软件资源,并为用户和应用程序提供接口。
文件管理系统是操作系统的一个重要组成部分,它负责管理计算机系统中的文件和目录,以及提供对它们的访问和操作。
本次实验旨在模拟操作系统中文件管理系统的基本功能和操作。
我们将使用一个虚拟的文件系统,通过命令行界面来模拟用户与文件系统的交互。
以下是实验的具体内容和步骤:1. 创建虚拟文件系统首先,我们需要创建一个虚拟的文件系统。
文件系统由文件和目录组成,可以通过树状结构来表示。
我们可以使用一个数据结构来模拟文件系统的存储和管理。
2. 初始化文件系统在开始操作文件系统之前,我们需要初始化文件系统。
这包括创建根目录和设置当前目录为根目录。
3. 文件和目录的创建与删除文件和目录是文件系统的基本单位。
我们可以通过命令来创建和删除文件和目录。
例如,使用"mkdir"命令创建一个目录,使用"touch"命令创建一个空文件,使用"rm"命令删除文件或目录。
4. 文件和目录的访问权限文件和目录可以设置不同的访问权限,以保护文件系统的安全性。
我们可以使用"chmod"命令来修改文件或目录的权限。
权限通常包括读、写和执行权限。
5. 文件和目录的重命名和移动我们可以使用"mv"命令来重命名文件或目录,使用"cp"命令来复制文件或目录,使用"mv"命令来移动文件或目录。
6. 文件和目录的查找和显示我们可以使用"ls"命令来显示当前目录下的文件和目录,使用"cd"命令来切换当前目录,使用"pwd"命令来显示当前目录的路径。
此外,我们还可以使用"find"命令来查找文件或目录。
7. 文件和目录的读写操作文件可以被读取和写入。
操作系统文件管理系统模拟实验

操作系统文件管理系统模拟实验操作系统文件管理系统模拟实验一、实验目的本实验旨在通过模拟操作系统的文件管理系统,加深对操作系统文件管理的理解,锻炼操作系统的应用能力。
二、实验环境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、进行文件操作和目录操作。
五、实验结果分析根据实验步骤进行文件操作和目录操作,观察系统的运行情况并记录相关实验结果。
六、实验结论通过本实验,深入了解了操作系统中文件管理系统的相关原理和实现方式,并且通过实验操作进一步巩固了相应的应用能力。
操作系统试验模拟文件管理系统

一、实验目的和要求(必填)实验目的:通过在VC平台下编程,设计和调试一个简单的文件系统,通过模拟文件操作命令的执行,来模拟文件系统对文件及目录的管理。
实验要求:两名学生成组结对完成实验,仿真出文件系统中对文件和目录的操作。
二、实验内容(必填)文件管理:实现一个简单的文件系统三、实验原理或实验方法(必填)原理:通过结构体来描述文件和目录,利用链表知识实现目录树结构,通过对链表的操作实现整个文件系统中目录和文件的相关操作。
方法:学生两人结对进行实验,分别实现对文件和目录的操作。
对文件的操作包括:创建文件create、读文件read、写文件write、删除文件delete。
对目录的操作包括:创建目录mkdir、切换目录cd、展示目录内容dir、删除目录rm。
四、主要仪器设备或实验条件Windows操作系统,VC开发环境五、实验步骤(含实验数据记录处理)或操作设计过程记录#include "stdio.h"#include "iostream.h"#include "string.h"#define FILENAME_LENGTH 10 //文件名称长度#define COMMAND_LENGTH 10 //命令行长度#define PATH_LENGTH 30 //参数长度struct filenode{char filename[FILENAME_LENGTH];int isdir;char content[255];filenode *parent;filenode *child;filenode *prev;filenode *next;};filenode *initnode(char filename[],int isdir);void createroot();int run();int findpath(char *topath);void help();int mkdir();int create();int read();int write();int del();int rm();int cd();int dir();filenode *root,*recent,*temp,*ttemp,*temp_child;charpath[PATH_LENGTH],command[COMMAND_LENGTH],temppath[PATH_LENGTH],recen tpath[PATH_LENGTH];//创建文件或目录的存储节点filenode* initnode(char filename[],int isdir){filenode *node=new filenode;strcpy(node->filename,filename);node->isdir=isdir;node->parent=NULL;node->child=NULL;node->prev=NULL;node->next=NULL;return node;}//初始化文件系统根结点void createroot (){recent=root=initnode("/",1);root->parent=NULL;root->child=NULL;root->prev=root->next=NULL;strcpy(path,"/");}void help(){cout<<endl;cout<<"create: 建立文件。
模拟UNIX文件系统的设计及实现操作系统大作业

模拟UNIX文件系统的设计及实现操作系统大作业UNIX文件系统是一种常见的操作系统文件系统,它提供了一种以层次结构组织文件和目录的方式来管理存储设备上的数据。
为了完成这个大作业,我们需要设计并实现一个简化版的UNIX文件系统,包括文件和目录的管理、文件的读写操作、文件权限的管理等。
首先,我们需要设计文件系统的存储结构。
文件系统可以在硬盘上以一个分区的形式存在,我们可以使用一个整数数组来表示硬盘,每个数组元素表示硬盘上的一个块。
我们还可以使用一个超级块来记录文件系统的信息,例如文件系统的状态、块的总数、块的使用情况等。
此外,我们还需要设计并实现一个索引节点表,用于保存文件或目录的元数据信息,例如文件的大小、权限、创建时间等。
接下来,我们需要实现文件和目录的管理功能。
文件和目录可以通过其在索引节点表中的索引来标识。
我们可以使用一个数组来表示目录,数组的每个元素都是一个目录项,记录了文件或子目录的名字和索引节点的索引。
我们还可以使用一个栈来保存当前目录的路径,方便用户在不同目录之间切换。
为了支持目录的嵌套,我们可以在目录项中添加一个指向父目录的索引。
在文件和目录的管理基础上,我们还需要实现文件的读写操作。
文件可以通过其索引节点的索引来标识。
当用户要读取文件时,我们需要根据文件的索引节点找到文件的块地址列表,然后将列表中的块读取到内存中。
当用户要写入文件时,我们需要找到文件的块地址列表中最后一个块,如果该块已满,则需要申请一个新的块,并将新块的地址添加到块地址列表中。
同时,我们还需要更新文件的大小和修改时间等元数据信息。
最后,我们还需要实现文件权限的管理功能。
文件的权限信息可以通过文件的索引节点来保存。
我们可以使用一个整数来表示文件的权限,例如八进制数,每一位代表一个权限,例如读取权限、写入权限和执行权限等。
当用户要访问文件时,我们需要根据用户的权限和文件的权限来判断用户是否具有相应的权限。
总结起来,要完成这个大作业,我们需要设计并实现一个模拟UNIX文件系统,包括文件和目录的管理、文件的读写操作、文件权限的管理等。
操作系统文件系统模拟课程设计实验报告

院系:计算机科学学院
专业:软件工程
年级: 2018级
课程名称:操作系统
指导教师:帖军
学号: 2018 姓名:惺惺惜惺惺
2020年 4 月 25 日
实验
分项1
文件系统模拟
实验目的能设计一个简单的多用户文件系统。
①在系统中用一个文件来模拟一个磁盘;②此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。
③实现这个文件系统。
④能实际演示这个文件系统。
实验要求具体题目:文件系统模拟系统平台:Windows
实验原理步骤(算法流程)程序中使用的主要设计结构如下:主文件目录和用户文件目录(MFD、UFD),打开文件目录(AFD)即运行文件目录,如图所示。
文件系统结构如图所示。
模拟UNIX文件系统

模拟UNIX/Linux文件系统
(3)目录结构 • 用16字节表示,其中14字节为文件名,2字节为I节点号 (4)用户及组结构 • 用户信息中包括用户名、口令,所属组,用户打开文件表 • (文件树结构应与用户相对应:有每个用户的HOME目录) • 组信息中可只包含组名
(5)文件树结构 除(4)要求外,适当考虑UNIX/Linux本身文件树结构
1. 检查超级块上锁否。
2. 检查i结点编号栈满否。 3. 若i结点编号栈未满,便将回收的i结点的编 号进栈,并使当前空闲i结点数加1。 4. 置超级块修改标志后返回。
超级块
512字节/块
0#块(第一个512字节)
根目录文件
.
.. bin usr dev
1#块(第二个512字节) 每个inode 占32字节 …21#...
模拟UNIX/Linux文件系统
(6)实现功能 • Ls 显示文件目录 • Chmod 改变文件权限 • Chown 改变文件拥有者 • Chgrp 改变文件所属组 • Pwd 显示当前目录 • Cd 改变当前目录 • Mkdir 创建子目录 • Rmdir 删除子目录 • Umask 文件创建屏蔽码 • Mv 改变文件名 • Cp 文件拷贝 • Rm 文件删除 • Ln 建立文件联接 • Cat 连接显示文件内容 • Passwd 修改用户口令
分配过程如下:
1. 检查超级块ห้องสมุดไป่ตู้锁否。
2. 检查i结点栈空否。 3. 从空闲i结点编号栈中分配一个i结点,并且加 以初始化,填写有关文件的属性。 4. 分配内存i结点。创建新文件后,随即把它打 开。调用iget过程为之分配内存i结点。 5. 将磁盘i结点总数减1,并在置超级块的修改标 志后返回。
unix 实验报告

unix 实验报告UNIX 实验报告一、引言UNIX 是一种操作系统,广泛应用于计算机科学领域。
本实验报告旨在介绍UNIX 操作系统的基本概念、特点和使用方法,并通过实验验证其功能和性能。
二、UNIX 操作系统的基本概念1. UNIX 的起源UNIX 是由贝尔实验室的 Ken Thompson 和 Dennis Ritchie 在 1969 年开发的操作系统。
它最初是为了支持多用户、多任务和分时操作而设计的。
2. UNIX 的特点UNIX 具有以下几个特点:- 可移植性:UNIX 可以在不同的硬件平台上运行,使得软件开发更加灵活。
- 多用户和多任务:UNIX 支持多用户同时使用,并且可以同时运行多个程序。
- 分时操作:UNIX 采用分时操作方式,使得多个用户可以共享计算机资源。
- 强大的命令行界面:UNIX 提供了丰富的命令行工具,使用户可以通过命令完成各种操作。
3. UNIX 的文件系统UNIX 使用层次化的文件系统来组织文件和目录。
文件系统的根目录为 "/",所有的文件和目录都从根目录开始构建。
UNIX 的文件系统采用了一种统一的文件访问方式,用户可以通过文件路径来访问文件。
三、UNIX 操作系统的使用方法1. 登录和注销用户可以通过用户名和密码登录到 UNIX 操作系统。
登录后,可以执行各种命令和操作。
注销时,用户可以使用 "logout" 命令退出系统。
2. 文件和目录操作UNIX 提供了一系列命令来管理文件和目录,如:- "ls" 命令用于列出当前目录下的文件和目录;- "cd" 命令用于切换当前目录;- "mkdir" 命令用于创建新的目录;- "rm" 命令用于删除文件或目录。
3. 进程管理UNIX 允许同时运行多个进程,并提供了一些命令来管理进程,如:- "ps" 命令用于查看当前正在运行的进程;- "kill" 命令用于终止指定的进程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统大型实验班级:学号:姓名:一实验介绍……………………………………………………………………1.实验名称2.实验目的3.实验内容及要求二实验环境……………………………………………………………………三实验设计……………………………………………………………………1.数据结构设计2.系统流程设计3.实现命令操作四模块详解……………………………………………………………………1 .文件操作2 .用户操作五实验演示……………………………………………………………………1 .初始化磁盘块2 .用户登录3 .目录操作4 .文件操作六源代码………………………………………………………………………七实验心得体会……………………………………………………………………1.调试中遇到的问题总结2.实验感悟一、实验介绍1.实验名称操作系统大型实验2.实验目的完成一个UNIX/Linux文件系统的子集的模拟实现,了解Unix文件系统的实现机制。
3.实验内容及要求(1)文件卷结构设计0#块可省略I节点栈及空间为20项块大小为512字节卷盘块数大于100I节点盘块数大于10块(2)I节点结构设计文件大小文件联接计数文件地址文件拥有者文件所属组文件权限及类别文件最后修改时间其中文件地址为六项:四个直接块号,一个一次间址,一个两次间址(3)目录结构用16字节表示,其中14字节为文件名,2字节为I节点号(4)用户及组结构用户信息中包括用户名、口令,所属组,用户打开文件表(5)文件树结构除(4)要求外,适当考虑UNIX本身文件树结构(6)实现功能Ls 显示文件目录Chmod 改变文件权限Chown 改变文件拥有者Chgrp 改变文件所属组Pwd 显示当前目录Cd 改变当前目录Mkdir 创建子目录Rmdir 删除子目录Mv 改变文件名Cp 文件拷贝Rm 文件删除Ln 建立文件联接Cat 连接显示文件内容Vi 文件写入Mk 创建文件umask 查看用户屏蔽码Umask 文件创建屏蔽码Passwd 修改用户口令Ls-l 查看文件类型Login 用户注销Logout 退出系统Help 显示帮助信息二、实验环境实验设备:Microsoft Visual Studio 2010开发语言:c++三、实验设计1.数据结构设计磁盘文件结构设计:用一个名为disk.txt的文件模拟Unix系统磁盘,总共分为200块,每块514个字节(实际可用512个字节,还有2个字节是磁盘分割符‘\n’),使第一块(0#)盘块做为超级块,记录该系统磁盘的使用情况;第二块(1#)盘块——第十三块(12#)盘块作为存储I结点使用,每个I结点74个字节,所以每个盘块可以存放6个I结点,总共有72个I结点,记录在超级块中;十三块(12#)以后的盘块作为存储文件内容使用,总共187个盘块,用成组连接法记录在超级块中。
对于I结点的具体设计如下:class INode //(74B){public:int fsize;//文件大小setw(6)int fbnum;//文件盘块数setw(6)int addr[4];//四个直接盘块号文件最大为4*512=2048=2KB setw(4)*4int addr1;//一个一次间址() 文件大于2KB,小于2KB+16*512=10KB setw(4)int addr2;//一个两次间址()文件大于10KB,小于10KB+16*16*512B=138KB setw(4) char owner[6];//文件拥有者setw(6)char group[6];//文件所属组setw(6)char mode[12];// 文件类别及存储权限setw(12)char ctime[10];//最近修改时间setw(10)int connect;//文件联接计数};对于超级块的具体设计如下:class superBlock{public:int FIStack[72];//空闲结点号栈setw(3)*72int FICount;//空闲i结点总数setw(3)int FIPtr;//空闲结点栈指针setw(3)int FBStack[10];//空闲盘块号栈setw(4)*10int FBCount;//空闲盘块总数setw(4)int FBPtr;//空闲盘块栈指针setw(3)};初始化磁盘示意图:除了超级块、I结点、磁盘文件的数据结构设计以外,为了系统操作方便,我还设计了用户类、文件目录类。
用户类具体设计:class USER//用户(24B){public:char name[6];//用户名setw(6)char pass[6];//密码setw(6)char group[6];//所属组setw(6)int umask[3];//用户umask码setw(6)};用户信息全部存放在一个user.txt的文件里面,所以对于user.txt文件也有一个设计,文件最开始是存放用户总数(setw(6)),随后跟着的是每一位用户名、密码、所属组、用户umask码。
文件目录类具体设计:class Catalog//目录项(18B){public:char fname[14];//文件名setw(14)int index; //i结点号setw(4)};目录信息全部都存放在disk磁盘里面,所以具体数据结构设计都在上面的磁盘文件设计中提及。
2. 程序流程设计◆系统主体流程图设计见图1◆用户注册流程图见图2◆登陆功能流程图见图3◆用户修改口令流程图见图4◆用户umask码修改流程图见图5◆显示所有子目录ls操作流程图见图6◆创建文件mk、目录mkdir流程图见图7◆删除文件rm流程图见图8◆删除目录文件rmdir流程图见图9◆改变当前路径cd操作流程图见图10◆查看文件内容cat操作流程图见图11◆拷贝文件、目录cp操作流程图见图12◆建立文件联接ln操作流程图见图13◆修改文件名称MV操作流程图见图14◆修改文件权限chmod操作流程图见图15◆修改文件拥有者chown、所属组chgrp操作流程图见图16 ◆写流程图vi见图17图1系统主体流程图返回图3 登陆功能流程图图10 改变当前路径cd操作流程图图11 查看文件内容cat操作流程图图13 建立文件联接ln操作流程图图15 修改文件权限chmod操作流程图图16 修改文件拥有者chown、所属组chgrp操作流程图图17 写文件vi操作流程图3.实现命令操作cd[enter] .[enter] 切换到当前目录cd[enter] /[enter] 切换到根目录cd[enter] ..[enter] 切换到父目录cd[enter] dir[enter] 切换到某一子目录,dir为子目录名cd[enter] string[enter] 切换到指定路径的目录,string为路径mkdir[enter] dir[enter] 当前目录下创建名为dir的子目录rmdir[enter] dir[enter] 删除当前目录下名为dir的子目录mk[enter] file[enter] 当前目录下创建名为file的文件rm[enter] file[enter] 删除当前目录下名为file的文件cp[enter] dirORfile[enter] string[enter] 拷贝当前目录下文件或子目录到指定路径下cat[enter] file[enter] 查看当前目录下名为file的文件内容vi[enter] file[enter] 向当前目录下名为file的文件写入一定内容pwd[enter] 显示当前目录ls[enter] 显示所有子目录chmod[enter] file[enter] 改变当前目录下名为file文件的权限chown[enter] file[enter] 改变当前目录下名为file文件的拥有者chgrp[enter] file[enter] 改变当前目录下名为file文件的所属组MV[enter] file[enter] 改变当前目录下名为file文件的文件名login[enter] 用户注销,可以重新登陆passwd[enter] 用户改变密码umask[enter] 查看用户umask码Umask[enter] code[enter] 修改用户umask码为codeln[enter] file1[enter] file2[enter]文件file1与file2建立连结ls-l[enter] file[enter] 查看文件file的类别help[enter] 提供帮助logout[enter] 退出系统四、模块详解1.文件操作◆mk创建文件模块,输入mk命令,回车,输入文件名,回车,即会在当前目录文件下创建一个名为刚刚输入的文件名的数据文件。
在该创建过程中首先要判断该目录中有没有同名的文件,如果有的话就创建失败,还要判断在该目录下有没有创建文件的权限,有权限才可以创建。
具体流程图查看第二节,系统流程图设计部分。
◆rm删除文件模块,输入rm命令,回车,输入文件名,回车,即会在当前目录文件下删除一个名为刚刚输入的文件名的数据文件。
在该删除过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有删除文件的权限,有权限才可以删除。
具体流程图查看第二节,系统流程图设计部分。
◆mkdir创建目录文件模块,输入mkdir命令,回车,输入文件名,回车,即会在当前目录文件下创建一个名为刚刚输入的文件名的目录文件。
在该创建过程中首先要判断该目录中有没有同名的文件,如果有的话就创建失败,还要判断在该目录下有没有创建文件的权限,有权限才可以创建。
具体流程图查看第二节,系统流程图设计部分。
◆rmdir删除目录文件模块,输入rmdir命令,回车,输入文件名,回车,即会在当前目录文件下删除一个名为刚刚输入的文件名的目录文件。
在该删除过程中要判断该目录中是否存在该目录文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有删除文件的权限,有权限才可以删除。
删除的时候要判断该目录是否为空,如果里面有内容,则要通过递归函数,将他们一并删除了。
具体流程图查看第二节,系统流程图设计部分。
◆cp拷贝文件模块,输入cp命令,回车,输入要拷贝文件的文件名,回车,输入要拷贝到哪个路径下面,即会在该路径下创建一个名为与被拷贝文件名相同的数据文件(目录文件),并且指向盘块里面的内容都相同的数据文件(目录文件)。
在该拷贝过程中要判断该目录中是否存在该文件,如果不存在就没有必要执行该操作了,还要判断在该目录下有没有拷贝文件的权限,有权限才可以拷贝。