一、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
简单的音乐播放器,扫码SD卡MP3音乐,显示播放列表!支持歌词显示!界面干净!整洁!运行效果很好!
2024/1/31 18:39:17 637KB Android 音乐播放器
1
驾校管理系统功能点概述https://blog.csdn.net/weixin_44989660/article/details/109351717学员管理:管理员登录系统后,可以查看本驾校的所有学员的基本信息,修改学员的姓名、密码、教练等信息,管理已经退学或结业的学员的账号信息,考虑到驾校的学员数量众多,因此,提供批量删除的功能,同时支持多条件模糊搜索查询。
收支管理:驾校收支管理包含两大部分,学员缴费和日常开支。
收支管理列表展示了所有收支明细。
缴费管理:控制着学员缴费类型,如:科目一、科目二、科目三、科目四、车辆维修等,并且为这些类型单独建立了菜单项,可以查看、修改和删除缴费类型。
教练管理:管理员登录系统后,可以查看本驾校的在编教练的人员基本信息,修改教练的姓名、照片、工作经验等信息,管理已经退休的
2024/1/31 7:41:23 63.62MB java mysql
1
androidlistview列表点击列表进入详细页面
2024/1/30 22:52:51 1.48MB android listview
1
结合各方资源经由本人整合的一版新闻类APP模板(android版)。
主要功能有:1.顶部新闻种类Tab可以动态添加和删除;
2.顶部有滚动的广告栏;
3.新闻列表可以上下拉刷新;
4.提供左侧抽屉菜单。
包含两个工程:(1)library_123:slidingmenu资源工程,用于实现抽屉菜单;
需要将该工程添加为一个library,并且勾选IsLibrary。
详细信息可以查阅SlidingMenu-master相关资料。
(2)QingCheng123:本人整合的新闻类App模板工程。
1
实现简单的后台管理,报名成功查看列表,管理员可以删除修改审核,管理员登陆,数据管理,退出登陆等功能全面地实现小小的在线报名系统
2024/1/29 15:12:35 41KB 招新报名系统 asp.net C#
1
付款方法描述:付款方式是一种数据,有助于理解接收与合同相关的付款的方式。
在墨西哥,我们的系统中已从INAI获得此信息,并且根据我们的《信息自由法》,其发布是强制性的。
提议:向交易对象添加一个名为“paymentMethod”的新字段。
架构图交易{object}paymentMethod(字符串)(代码列表)代码列表将打开,并且必须通过以下方式定义:现金查看电汇公司卡信用证定义文字:代码标题描述付款方法付款方法用于进行交易的付款方式。
必须使用列表的值。
现金现金与该合同有关的付款是通过现金支付的。
查看查看与此合同有关的付款是通过支票支付的。
电汇电汇与此合同相关的付款是通过银行转帐支付的。
公司卡公司卡与此合同相关的付款是通过公司信用卡支付的。
通常用于在运营过程中直接购买商品和服务的物品。
信用证信用证
2024/1/29 13:15:31 7KB
1
asp.net用OpenPop.dll获取邮件列表和内容源代码,126、163邮箱SSL需要设为false,QQ邮箱SSL需要设为true。
缺陷:邮件正文上传的图片文件不能显示,附件没有获取,请自行研究。
2024/1/29 6:14:32 81KB OpenPop.dll C# asp.net 邮件获取
1
截图效果地址:https://blog.csdn.net/XING861000/article/details/80549069WPF加载和分页显示的图片列表,可多选,带水纹特效,效果非常好,编译前可以自己修改默认加载图片路径
2024/1/28 18:24:35 3.33MB WPF
1
jquerymobile通过ajax访问webapi2接口,显示列表数据。
2024/1/27 21:45:18 5.6MB jquery mobile web api2
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡