一、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
是一款成熟的心理测试软件其中包括EPQ-A、EPQ-C、爱德华个性偏好量表、MMPI、NS、工作激情程度量表、HOLLAND、几乎把握能力测试、进取性水平测试、16PF、SOC、QSEQ、FIS、PDQ、人际合作程度测试、瑞文标准推力测试、瑞文高级推力测试、SAD、师生关系困扰调查表、同学关系困扰调查表、学生生活应激问卷、职业核心竞争力量表、职业兴趣问卷、MSMH、MSSP、MSSM、MSRP、MSMT、STAI、自主程度测试、SEI,以及众多精神科心理测评,如AIS、BSSD、GAS、TAS、NBPRS、NOSIE、RWEW、BPRS、MMSE、PRCA、JDZZ、PCLSV、CPRS、SCID-AD、CMI、SERS、SCAG、CESDS、MACHV、MAST、CACR、HIS、CCMD、SDSS、SAPS、GHTS、Y-BOCS、SANS、BRMS、TESS、RSESE、JF、HAD,以及众多心理卫生量表和儿童气质评测
2024/2/1 4:04:23 1.93MB 心理测评
1
库存管理系统实体:供应商信息(编号,供应商名称,负责人,联系电话,地址,备注)货品信息(编号,名字,仓库名称,规格,单位,数量,单价,总价,警戒线,编辑日期,备注)用户信息(编号,姓名,密码,权限)仓库信息(编号,仓库名,负责人,仓库电话,所属单位,备注)关系:入库管理(编号,货物名称,供应商名称,仓库名称,货物规格,货物单位,进货数量,单价,总价,进货日期,经收人,备注)出库管理(编号,货物名称,仓库名称,货物规格,货物单位,出库数量,单价,总价,出货日期,出库单位,经手人,备注)实体表:tb_users(UserID,UserName,UserPwd,UserRight)tb_stores(SID,Sname,Speople,Stel,Sunit,Sremarks)tb_goods(GID,Gname,Sname,Gstyle,Gunit,Gcount,Gprice,Gsum,Gcordon,Geditime,Gremarks)tb_supplyer(SUID,SUname,SUpeople,SUtel,SUaddress,SUremarks)关系表:tb_ingoods(IGID,Gname,SUname,Gstyle,Gunit,INcount,Gprice,Gsum,INtime,INpeople,INremarks)tb_outGoods(OGID,Gname,SUname,Gstyle,Gunit,OUTcount,OUTprice,OUTsum,OUTtime,OUTunit,OUTpeople,OUTremarks)
2024/1/29 10:22:21 1.11MB 库存管理系统
1
计算空间拓扑关系
2024/1/26 14:40:31 22KB js
1
面向对象的开发在处理关系型数据库中的数据时是非常麻烦与消耗资源的。
开发成本非常高的原因在于:关系型数据库中的数据与程序对象之间不匹配(译者注:数据库中的表如何变成程序的对象)。
Hibernate是JAVA开发环境下对象-关系映射(Object/RelationalMapping及ORM)的解决方案。
ORM是指一种映射技巧,ORM适用于对象模型与关系模型之间的匹配。
参考Wikipedia(维基)的高级讨论组与MartinFowler的文章OrmHate,其中都提到了不匹配带来的问题。
2024/1/24 7:35:38 1.51MB Hibernate5
1
自电力体制改革以来,峰谷分时电价是反映电力市场供求关系变化最灵敏的风向标。
如何制定峰谷分时电价对供电企业确保利润产生着巨大的影响。
文章详细介绍了针对峰谷分时的业务,信息化系统如何构建峰谷分时电价盈亏分析模型,总结信息化应用模式及一些实践成果,从而实现供电企业对峰谷分时电价的实时分析,提升财务集约化管理水平。
【作者单位】:远光软件股份有限公司
2024/1/23 8:57:15 3.69MB 分时电价 电价管理 信息化 远光软件
1
针对现有印刷过程中,由于相对码误差检测方式存在误差累积而容易产生的错花、跑花现象,而绝对码检测又存在着干扰因素较多,控制复杂的问题,提出了一种根据套色关系来进行自主设定的自由码误差检测方法。
基于数字双光眼色标传感器原理,以CAN总线作为印刷单元各部分之间通讯的数据总线,解决了相对码检测存在的误差累积等一系列问题,具有简单实用容易实现,适应各种具有套印关系的多套色壁纸印刷的优点。
1
4.1.1操作系统:windowsxp4.1.2开发平台:visualfox6.04.2系统总体结构设计4.2.1系统前台程序设计(窗体设计、模块设计等)4.2.2后台数据库设计(数据关系模型的建立,E—R图等)4.3系统具体功能的实现(编写程序源代码)
2024/1/23 1:28:28 322KB 人事管理系统
1
大数据时代的客户关系管理
2024/1/22 12:07:56 3.27MB 大数据时代的客户关系管理
1
人工智能推动了广告形态的变革,冲破了原有的广告认知与界线,宣告当前广告进入了“泛广告”阶段。
泛广告突破了传统广告所确认的付费、依赖大众媒体传播等符码,改变了广告与其他被寄生文本的“寄生”关系,让尾题进入文本之中,依托文本获得意动性,成为全新的广告形态,宣告了广告的发展新动向。
泛广告是人工智能发展的结果,同时也是人工智能进一步应用到广告中的前提,为广告研究提供了全新的起点,也为广告实践和创作提供了新的方向。
2024/1/21 1:38:04 287KB 广告
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡