一、UNIX文件系统的基本原理    UNIX采用树型目录结构,每个目录表称为一个目录文件。
一个目录文件是由目录项组成的。
每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。
在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;
后14B为文件名,是该文件的外部标识。
所以,文件目录项记录了文件内、外部标识的对照关系。
根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。
UNIX的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。
本次课程设计是要实现一个简单的模拟UNIX文件系统。
我们在磁盘中申请一个二进制文件模拟UNIX内存,依次初始化建立位示图区,I节点区,数据块区。
二、基本要点思路     1、模拟磁盘块的实现:因为文件系统需要从磁盘中读取数据操作数据,在实现时是使用文件来模拟磁盘,一个文件是一块磁盘,在文件中以划分磁盘块那样划分不同的区域,主要有三个区域:位图区,inode索引节点区,磁盘块区。
位图区我是使用一个512byte的数组存放,inode区和磁盘块区我采用一种自认为比较巧妙的方法,就是存放对象列表,之前说过,在本次实验的所有的结构都使用对象进行存储,而inode节点和磁盘块就是两个重要的数据结构,在初始化时我实例化32个inode对象和512个block对象(至于这些类的具体定义下面会提到),然后将这些对象加入各自对应的对象列表中,在存储时,使用java的对象序列化技术将这个对象数组存到磁盘中。
当使用文件系统时,程序会先从磁盘文件中读取出位图数组,inode对象列表,block对象列表,之后的操作就是通过对这些列表进行修改来实现。
使用这种方法可以减小存储的空间(对象序列话技术)而且不需要在使用时进行无用的查找,只要第一次初始化中将这些对象都读取出来。
    2、界面的实现:在实现这个文件系统时使用了两种方案,一种是直接在java控制台来进行输入输出,因为原本想着UNIX文件系统原本也是使用的命令行语句,所以在控制台上实现也很接近。
后来在老师的建议下又将整个程序重新修改,改成在UI界面上进行输入输出,这样确实界面美观舒服了不少,只不过两者用的技术很不一样,前者主要使用的是系统的输入输出流,后者使用java监听器。
    3、权限的实现:在实现多用户的权限方面,我给文件和文件夹各定义了三级权限1、访问:在文件中是可以查看文件的内容,在文件夹中是可以进入该文件夹。
2、修改:文件中是可以对文件进行编辑,文件夹中是可以在该文件夹中创建新的文件或目录。
3、删除:顾名思义。
文件或文件夹的创建者拥有最高级别的权限,只有拥有最高级权限的用户才可以给其他用户针对该文件或文件夹进行授权和授权操作。
在每次对文件或文件夹进行访问修改删除操作时都会检查当前用户在该文件或文件夹所拥有的权限,只有拥有的权限大于想要实现的权限时才可以进行该操作。
2024/2/1 11:25:27 9KB java UNIX操作系统 课程设计
1
SCUTfuse文件系统附源码和报告仅供参考。
2024/1/29 8:22:27 1.91MB 操作系统课设 fuse文件系统
1
资源中包含三部分,一部分是基于内存的文件系统的源代码,这一部分包括内核以及外部封装两个子部份。
第二部分是实验运行的截图,以及工作原理的截图。
第三部分是课程设计报告,里面重点讲述的是每个函数的具体功能。
整个系统是我和队友两人通宵近一周完成的,验收时被老师评价难度系数最高,且完成最好的一组。
不过系统中文件连续删除部分还有小bug,但是当时因为验收时间问题,没来的及修改。
其他部分没发现问题,如果有bug请在下面留言备注。
谢谢。
1
分布式系统ppt对应分布式系统第五版英文版ppt,复习,自学可用,了解分布式系统,共10章,01-概述,02-系统模型,03-进程间通信,04-分布式对象和远程调用,05-命名系统,06-时间和全局状态,07-协调和协定,08-事务和并发控制,09-复制,10-分布式文件系统
2024/1/24 23:01:07 4.18MB 分布式系统
1
操作系统单索引文件系统设计包括文件的的各项的基本功能,包括课程设计报告。
2024/1/19 1:11:12 1.12MB 操作系统,单索引,文件系统
1
Linux文件系统与持久性内存介绍.doc
2024/1/18 22:43:17 460KB Linux
1
模拟一个简单二级文件管理系统设计目的:通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。
设计内容:模拟一个简单二级文件管理系统
2024/1/5 4:29:40 266KB 文件管理系统
1
hdfs是hadoop的分布式文件系统,即HadoopDistributedFilesystem。
下面主要讲下HDFS设计中的比较重要的点,使读者能通过简短的文章一窥HDFS的全貌,适合对HDFS有一点了解,但是对HDFS又感到困惑的初学者。
本文主要参考的是。
当数据集的大小超过了一台物理机所能存储的能力时,就需要将它进行分区并存储到若干不同的独立的计算机上,其中管理跨多台计算机存储的文件系统称为分布式文件系统。
目录使用HDFS的场景HDFS的工作模式文件系统命名空间(namespace)数据复制文件系统元数据的持久化通讯协议健壮性数据组织可访问性存储空间回收HDFS适合于以流式数据访问模式来存
2024/1/3 22:57:22 511KB 浅析HDFS架构和设计
1
本系统全程由eclipse环境开发搭建,压缩文件包含:全部程序源码及素材+完整SQL文件+系统说明文档,具体说明参考博客:https://blog.csdn.net/m0_46153949/article/details/109068354
2023/12/26 6:46:48 3.5MB eclipse javaweb
1
第六章:实验一:1.在虚拟机中添加两块SCSI硬盘,容量各位10GB2.查看Linux为新添加的硬盘分配的文件名3.对两块硬盘进行分区,创建文件系统4.使用mount命令挂载文件系统5.查看挂载的所有文件系统第八章:实验一:1.在/root这个目录下建立一个名为vitest的目录2.进人vitest这个目录当中,将/etc/manpath.config复制到当前目录3.使用vi打开当前目录下manpath.config.4.在vi中设置行号。
5.移动到第一行,并且向下搜索一下pager这个字符串,请问它在第几行?6.接下来,要将50~100行之间的man改为MAN,并且一个一个选择是否需要修改7.修改完之后,再全部恢复。
8.要复制第66~75行这10行的内容,到最后一行之后。
9.删除第11~30行之间的20行。
10.将这个文件另存为一个manpath.test.config的文件名。
11.将光标移到第29行,并且副除第15个字符。
12.统计目前的文件有多少行以及多少字符。
13.保存退出。
实验二:Linux中C程序的编程方法。
1.在vi中使用C语言编写一个helloworld程序,用gcc编译它并运行。
2.在eclipse中使用C语言编写一个循环程序,用eclipse编译并运行。
使用eclipse调试功能,监视循环变量的变化情况。
2023/12/23 12:29:44 1.01MB LINUX
1
共 306 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡