模拟实现unix文件管理系统

合集下载

几种常见操作系统典型功能的实现方法举例ppt

几种常见操作系统典型功能的实现方法举例ppt

调度
内存中有可运行的进程 ?
Y 选择内存中优先级最高、驻留时间最长的就绪 或被剥夺进程
从就绪队列中移出
切换到该进程的上下文
恢复其执行
N CPU空闲
图7.3 UNIX进程调度算法
返回本节
7.3 UNIX进程通信与同步机制
UNIX系统V中的进程通信可分为4个部分: 低级通信、管道通信、进程间通信和网络进 程间通信。
7.1.2 进程管理程序 7.1.3 线程调度
返回首页
路漫漫其修远兮,吾将上下而求索!
豫章故郡,洪都新府。星分翼轸,地 接衡庐 。襟三 江而带 五湖, 控蛮荆 而引瓯 越。物 华天宝 ,龙光 射牛斗 之墟; 人杰地 灵,徐 孺下陈 蕃之榻 。雄州 雾列, 俊采星 驰。台 隍枕夷 夏之交 ,宾主 尽东南 之美。 都督阎 公之雅 望,棨 戟遥 临;宇文新州之懿范,襜帷暂驻。十 旬休假 ,胜友 如云; 千里逢 迎,高 朋满座 。腾蛟 起凤, 孟学士 之词宗 ;紫电 青霜, 王将军 之武库 。家君 作宰, 路出名 区;童 子何知 ,躬逢 胜饯。 时维九月,序属三秋。潦水尽而寒潭 清,烟 光凝而 暮山紫 。俨骖 騑于上 路,访 风景于 崇阿; 临帝子 之长洲 ,得天 人之旧 馆。层 峦耸翠 ,上出 重霄; 飞阁流 丹,下 临无地 。鹤汀 凫渚, 穷岛屿 之萦回 ;桂殿 兰宫, 即冈峦 之体势 。 披绣闼,俯雕甍,山原旷其盈视,川 泽纡其 骇瞩。 闾阎扑 地,钟 鸣鼎食 之家; 舸舰迷 津,青 雀黄龙 之舳。 云销雨 霁,彩 彻区明 。落霞 与孤鹜 齐飞, 秋水共 长天一 色。渔 舟唱晚 ,响穷 彭蠡之 滨;雁 阵惊寒 ,声断 衡阳之 浦。 遥襟甫畅,逸兴遄飞。爽籁发而清风 生,纤 歌凝而 白云遏 。睢园 绿竹, 气凌彭 泽之樽 ;邺水 朱华, 光照临 川之笔 。四美 具,二 难并。 穷睇眄 于中天 ,极娱 游于暇 日。天 高地迥 ,觉宇 宙之无 穷;兴 尽悲来 ,识盈 虚之有 数。望 长安 于日下,目吴会于云间。地势极而南 溟深, 天柱高 而北辰 远。关 山难越 ,谁悲 失路之 人?萍 水相逢 ,尽是 他乡之 客。怀 帝阍而 不见, 奉宣室 以何年 ? 嗟乎!时运不齐,命途多舛。冯唐易 老,李 广难封 。屈贾 谊于长 沙,非 无圣主 ;窜梁 鸿于海 曲,岂 乏明时 ?所赖 君子见 机,达 人知命 。老当 益壮, 宁移白 首之心 ?穷且 益坚, 不坠青 云之志 。酌贪 泉而觉 爽,处 涸辙以 犹欢。 北海 虽赊,扶摇可接;东隅已逝,桑榆非 晚。孟 尝高洁 ,空余 报国之 情;阮 籍猖狂 ,岂效 穷途之 哭! 勃,三尺微命,一介书生。无路请缨 ,等终 军之弱 冠;有 怀投笔 ,慕宗 悫之长 风。舍 簪笏于 百龄, 奉晨昏 于万里 。非谢 家之宝 树,接 孟氏之 芳邻。 他日趋 庭,叨 陪鲤对 ;今兹 捧袂, 喜托龙 门。杨 意不逢 ,抚凌 云而自 惜;钟 期既 遇,奏流水以何惭? 呜乎!胜地不常,盛筵难再;兰亭已 矣,梓 泽丘墟 。临别 赠言, 幸承恩 于伟饯 ;登高 作赋, 是所望 于群公 。敢竭 鄙怀, 恭疏短 引;一 言均赋 ,四韵 俱成。 请洒潘 江,各 倾陆海 云尔: 滕王高阁临江渚,佩玉鸣鸾罢歌舞。 画栋朝飞南浦云,珠帘暮卷西山雨。 闲云潭影日悠悠,物换星移几度秋。 阁中帝子今何在?槛外长江空自流。

第八课 Linux和UNIX的文件管理系统

第八课 Linux和UNIX的文件管理系统

8、文件访问互斥与同步
UNIX系统允许多个用户同时访问一个文件,实现更为灵活 的共享机制。 多个用户同时写同一个文件时,系统需要实现写操作的互 斥处理。UNIX通过采用加锁方式锁定文件中的记录来实现 互斥写机制。 访问进程可通过系统调用lockf对访问文件的某些信息进行 锁定。
一个文件系统称为一个文件卷或逻辑卷。
一个逻辑卷对应一个或多个物理卷中的若干物理分区(也称 物理块,通常为l~4KB,早期为512字节)。
有关文件系统定义:文件系统是包括在一个磁盘(包括光盘、 软盘、闪盘及其它存储设备)或分区的目录结构。一个可应用 的磁盘设备可以包含一个或多个文件系统 。
UNIX系统支持多种类型的文件系统。如:
UNIX文件系统采用索引文件组织结构管理文件。如前面所述, UNIX操作系统管理文件的典型特点是:
构造一个简单的目录文件(只包含文件名、对应的i-node 号等几项主要信息),增加一项数据结构即i-node。这样对文 件管理即为对i-node信息的管理。
如下为UNIX System V 的目录结构:
采用多重索引结构可增加文件所需空间的灵活性并且节省内存只需将文件的最初索引信息通常是直接或间接寻址信息针对含不同物理块大小的文件放置在活动i节点中系统内存区不必放置整个索引表到内存
第八课 UNIX文件管理系统
UNIX系统中文件是一个字节序列,即字节流文件。 UNIX系统以管理文件的形式实现硬件设备管理、管道机制和 链接管理。 文件系统通过管理文件的属性信息实现文件管理。属性包含 文件系统内部管理信息和用户信息两部分。 系统内部管理信息:反映文件的控制管理结构 用户信息:可显示在标准输出 UNIX文件系统以目录结构组织文件,只有一个根节点。 UNIX的目录文件是一种特殊的文件,由目录/文件名及其长度、 目录信息长度和索引节点号等主要信息组成。

模拟UNIX文件系统的设计及实现操作系统大作业

模拟UNIX文件系统的设计及实现操作系统大作业

模拟UNIX文件系统的设计及实现操作系统大作业UNIX文件系统是一种常见的操作系统文件系统,它提供了一种以层次结构组织文件和目录的方式来管理存储设备上的数据。

为了完成这个大作业,我们需要设计并实现一个简化版的UNIX文件系统,包括文件和目录的管理、文件的读写操作、文件权限的管理等。

首先,我们需要设计文件系统的存储结构。

文件系统可以在硬盘上以一个分区的形式存在,我们可以使用一个整数数组来表示硬盘,每个数组元素表示硬盘上的一个块。

我们还可以使用一个超级块来记录文件系统的信息,例如文件系统的状态、块的总数、块的使用情况等。

此外,我们还需要设计并实现一个索引节点表,用于保存文件或目录的元数据信息,例如文件的大小、权限、创建时间等。

接下来,我们需要实现文件和目录的管理功能。

文件和目录可以通过其在索引节点表中的索引来标识。

我们可以使用一个数组来表示目录,数组的每个元素都是一个目录项,记录了文件或子目录的名字和索引节点的索引。

我们还可以使用一个栈来保存当前目录的路径,方便用户在不同目录之间切换。

为了支持目录的嵌套,我们可以在目录项中添加一个指向父目录的索引。

在文件和目录的管理基础上,我们还需要实现文件的读写操作。

文件可以通过其索引节点的索引来标识。

当用户要读取文件时,我们需要根据文件的索引节点找到文件的块地址列表,然后将列表中的块读取到内存中。

当用户要写入文件时,我们需要找到文件的块地址列表中最后一个块,如果该块已满,则需要申请一个新的块,并将新块的地址添加到块地址列表中。

同时,我们还需要更新文件的大小和修改时间等元数据信息。

最后,我们还需要实现文件权限的管理功能。

文件的权限信息可以通过文件的索引节点来保存。

我们可以使用一个整数来表示文件的权限,例如八进制数,每一位代表一个权限,例如读取权限、写入权限和执行权限等。

当用户要访问文件时,我们需要根据用户的权限和文件的权限来判断用户是否具有相应的权限。

总结起来,要完成这个大作业,我们需要设计并实现一个模拟UNIX文件系统,包括文件和目录的管理、文件的读写操作、文件权限的管理等。

unix系统中文件的多级索引结构 -回复

unix系统中文件的多级索引结构 -回复

unix系统中文件的多级索引结构-回复Unix系统中的文件系统采用了多级索引结构来管理文件。

在多级索引结构中,文件被组织成块的集合,每个块都有唯一的地址。

通过使用多级索引结构,Unix系统能够高效地存储和检索文件,提高系统的性能和可靠性。

下面我们将一步一步地回答和讨论关于Unix系统中文件的多级索引结构的内容。

第一步:什么是多级索引结构?多级索引结构是一种用于管理大量数据的数据结构。

在Unix系统中,文件系统使用多级索引结构来管理文件的存储和检索。

这种索引结构由多个级别的索引组成,每个级别都用于指示下一个级别的索引。

通过这种方式,Unix系统能够快速访问和操作大型文件,提高文件系统的效率。

第二步:Unix系统中多级索引结构的组成Unix系统中的多级索引结构由三个主要组件组成:直接索引块、一次间接索引块和二次间接索引块。

直接索引块用于存储文件的数据块地址,一次间接索引块用于存储直接索引块的地址,而二次间接索引块用于存储一次间接索引块的地址。

通过这种层次结构,Unix系统能够管理大量数据块,并提供快速的文件访问。

第三步:直接索引块的作用和结构直接索引块是多级索引结构中的最底层,用于存储文件的数据块地址。

每个直接索引块都包含一定数量的文件数据块地址。

这些地址可以直接指向文件存储在磁盘上的数据块。

通过直接索引块,Unix系统可以快速访问和检索文件的数据。

第四步:一次间接索引块的作用和结构一次间接索引块用于存储直接索引块的地址。

每个一次间接索引块都包含一定数量的直接索引块地址。

通过一次间接索引块,Unix系统可以间接地访问和检索文件的数据。

当直接索引块的数量不足以存储文件的所有数据块地址时,一次间接索引块就发挥了作用。

第五步:二次间接索引块的作用和结构二次间接索引块用于存储一次间接索引块的地址。

每个二次间接索引块都包含一定数量的一次间接索引块地址。

通过二次间接索引块,Unix系统可以间接地访问和检索文件的数据。

OSUNIT 文件系统的实现

OSUNIT 文件系统的实现
1. 单级目录结构 文件系统中只设置一个目录,它包含了该文件系统中的所有文件的目录项,要查找任一文
件都需要在该目录中
进行线性检索。 单级目录结构的特点是实现简单,但当目录中含有大量目录项时,要查找一个文件相当费
时,且它无法解决文件重名问题,这对用户是很不方便的。因此,这种目录结构只用在单用户 环境中。
文件的物理组织 文件目录的结构 文件的共享 磁盘空间的管理 文件的访问控制 文件系统的注册与挂载 内核的文件管理机制
§1 文件的物理组织
◆连续结构 ◆链接结构 ◆索引结构
一个文件的空间在逻辑上可看成是连续的,即一个文件由若干连续的盘块所组成。但在磁 盘上可以有多种方式来组成一个文件,换言之,文件有多种物理的存储结构,常用的是:连 续结构、链接结构、索引结构。
USER2的UFD

… 图9-6 二级目录结构
普通文件 … …
一个MFD和若干并列的UFD便构成了二级目录结构。当要访问一个文件时,先根据用户名 检索MFD,找出相应的UFD;再用文件名检索UFD,找出对应的FCB,从而就可以得到文件 的具体物理地址。
二级目录结构基本上克服了单目录结构的缺点,其优点如下:
一个目录由若干等长的目录项(记录)组成,目录本身也作为文件来处理,它是一种等长 记录式文件。
目录项的组成有两种方式:FCB目录项和名号目录项。
1. FCB目录项 这是简单直观的目录项组成方式,目录项就是FCB,即一个目录由若干顺序排列的FCB所
构成。当用路径名和文件名访问某个文件时,文件系统对目录进行线性检索,找到文件名对 应的FCB,就可获取该文件的物理位置等信息,完成文件名到文件物理位置的映射。
文件的物理存储结构决定了文件的逻辑地址空间到文件的物理地址空间的映射方法。

如何实现一个文件系统

如何实现一个文件系统

如何实现一个文件系统本文作者:康华:计算机硕士,主要从事Linux操作系统内核、Linux技术标准、计算机安全、软件测试等领域的研究与开发工作,现就职于信息产业部软件与集成电路促进中心所属的MII-HP Linux软件实验室。

如果需要可以联系通过kanghua151@联系他。

摘要:本文目的是分析在Linux系统中如何实现新的文件系统。

在介绍文件系统具体实现前先介绍文件系统的概念和作用,抽象出了文件系统概念模型。

熟悉文件系统的内涵后,我们再近一步讨论Linux系统中和文件系统的特殊风格和具体文件系统在Linux中组成结构,为读者勾画出Linux中文件系统工作的全景图。

最后,我们再通过Linux中最简单的Romfs 作实例分析实现文件系统的普遍步骤。

(我们假定读者已经对Linux文件系统初步了解)什么是文件系统首先要谈的概念就是什么是文件系统,它的作用到底是什么。

文件系统的概念虽然许多人都认为是再清晰不过的了,但其实我们往往在谈论中或多或少地夸大或片缩小了它的实际概念(至少我时常混淆),或者说,有时借用了其它概念,有时说的又不够全面。

比如在操作系统中,文件系统这个术语往往既被用来描述磁盘中的物理布局,比如有时我们说磁盘中的“文件系统”是EXT2或说把磁盘格式化成FAT32格式的“文件系统”等——这时所说的“文件系统”是指磁盘数据的物理布局格式;另外,文件系统也被用来描述内核中的逻辑文件结构,比如有时说的“文件系统”的接口或内核支持Ext2等“文件系统”——这时所说的文件系统都是内存中的数据组织结构而并非磁盘物理布局。

还有些时候说“文件系统”负责管理用户读写文件——这时所说的“文件系统”往往描述操作系统中的“文件管理系统”,也就是文件子系统。

虽然上面我们列举了混用文件系统的概念的几种情形,但是却也不能说上述说法就是错误的,因为文件系统概念本身就囊括众多概念,几乎可以说在操作系统中自内存管理、系统调度到I/O系统、设备驱动等各个部分都和文件系统联系密切,有些部分和文件系统甚至未必能明确划分——所以不能只知道文件系统是系统中数据的存储结构,一定要全面认识文件系统在操作系统中的角色,才能具备自己开发新文件系统的能力。

UNIX操作系统的文件管理

UNIX操作系统的文件管理





(1) i-count 内存inode访问计数。若为0,表示此节点为空闲, 某文件被打开时,其内存inode里的此项就加1。 只有所有用户都关闭了此文件,以使i-count为0 后,这个文件才被真正关闭。 (2) i-number 与此内存inode相对应的外存inode编号。
5、打开文件控制块file和file表
文件系统磁盘存储区的分布图




每一个文件的inode节点占用32个字节,因此每一个inode 块包含16个文件控制块。这些inode顺序编号,一个文件 占用了某inode,则其编号就成为这个文件的内部标识, 第1号inode是专门用于根目录文件的。 数据结构filsys 共有12 项内容,下面给出与我们讲述有关 的六项。 (1) s-isize inode区占用的盘块数; (2) s-fsize 盘块总数; (3) s-nfree 直接管理(也就是s-free[100]指向)的空闲块 数; (4) s-free[100] 空闲块索引表 (5) s-ninode 直接管理的空闲inode节点数; (6) s-sinode[100] 空闲inode节点索引表。 至于如何通过filsys来对空闲inode和空闲盘进行具体管理, 详情见后面关于UNIX文件系统资源管理综述部分。

4外node记录了一个文件的属性和有关信息。可以想象,在对某一
文件的访问过程中,会频繁地涉及到它,于是它就要不断来回于内、 外存之间,这当然是极不经济的。为此,UNIX在系统占用的内存区 里开辟了一张表——内存inode表(或活动文件控制块表、活动索引 节点表),该表共有100个表目,每个表目称为一个内存文件控制块 inode,当需要使用某文件的信息,而在内存inode 表中找不到其相 应的inode时,就申请一个内存inode,把外存inode的大部分内存拷 贝到这个内存inode 中,随之就使用这个内存 inode 来控制磁盘上的 文件。在最后一个用户关闭此文件后,内存inode的内容被写到外存 inode,然后释放以供它用。 内存inode的结构基本上与外存inode相同。增加的有关项目有:

《Linux实验教程》教学课件 第7章 文件系统的设计与实现

《Linux实验教程》教学课件 第7章 文件系统的设计与实现

Ext2文件系统(4)
块组描述符 – 每个块组都有一个块组描述符ext2_group_desc,记录该
块组的以下信息: – 数据块位示图。表示数据块位示图占用的块号,此位示
图反映块组中数据块的分配情况,在分配或释放数据块 时需使用数据块位示图。 – inode位示图。表示inode位示图占用的块号,此位示图反 映块组中inode的分配情况,在创建或删除文件时需使用 inode位示图。 – inode表。块组中inode占用的数据块数,系统中的每个文 件对应一个inode,每个inode都由一个数据结构来描述。 – 空闲块数、空闲inode数和已用数目。 – 一个文件系统中的所有块组描述符结构组成一个块组描 述结构表,每个块组在其超级块之后都包含一个块组描 述结构表的副本,实际上,Ext2文件系统仅使用块组1中 的块组描述结构表。
– 文件和文件系统 – 文件分类和属性 – 文件控制块和文件目录
UNIX类文件系统和非UNIX类文件系统
• UNIX类文件使用四种和文件系统相关的抽象概念: 文件、目录项、索引节点和安装点。
• 文件(file)—文件是由文件名标识的有序字节串,典 型的配套文件操作有读、写、创建和删除等。
• 目录项(dentry)—是文件路径名中的一部分。 • 索引节点(inode)—是存放文件控制信息的数据结构,
又分磁盘块中的inode和主存中活动的inode。 • 安装点(mount point)—文件系统被安装在一个特定
的安装点上,所有的已安装文件系统都作为根文件 系统树中的叶子出现在系统中。
主要内容
• 背景知识 – 文件系统基本概念 – 文件管理的数据结构 – Ext2文件系统
• 实验内容 – 模拟实现一个Linux文件系统
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要计算机发展到今天,从个人计算机到巨型计算机系统,毫无例外都配置一种或是多种操作系统。

操作系统管理和控制计算机系统中的所有硬、软件资源,合理地组织计算机工作流程,并且为用户提供一个良好的工作环境和友好的接口。

在计算机操作系统的功能中,对文件存储设备的管理是一项非常重要的任务,文件在存储器上按一定的顺序有组织地存放,使得用户访问高效,操作方便。

UNIX文件系统采用SFD和BFD方式管理文件:SFD称为符号文文件目录,存放文件名以及致使该文件说明信息表标识符ID;把存放文件说明信息和相应标识符的BFD称为i节点。

UNIX文件系统将存储设备分为引导块、超级快、i节点区、目录和数据区四个存储区。

引导块主要是为了存储引导系统启动的数据;超级块描述文件系统的状态,包括磁盘空闲块栈,空闲i结点栈;i节点区存放文件说明信息,每项32字节;目录和数据每个目录项16字节,文件名区分大小写。

在界面上我们使用MFC可视化设计,将实现的代码加载到MFC界面中,在响应鼠标消息的函数中调用实现模拟系统设计的代码,这样最后的操作是在Windows界面的操作,响应鼠标的命令。

界面美好,操作方便。

关键词:操作系统,文件系统,UNIX文件系统模拟摘要目录1. 概述 (6)2. 课程设计任务及要求 (6)2.1 设计任务 (6)2.2 设计要求 (7)3. 算法及数据结构 (7)3.1算法的总体思想(流程) (8)3.2 i节点模块 (8)3.2.1功能3.2.2 数据结构3.2.3算法3.3 装入和退出系统模块 (11)3.3.1功能3.3.2算法3.4用户登录注销模块 (14)3.4.1 功能3.4.2 数据结构及流程图3.4.3 算法3.5 目录管理模块 (16)3.5.1功能3.5.2 数据结构及流程图3.3.3算法3.6 创建删除文件模块 (19)3.6.1功能3.6.2 数据结构及流程图3.6.3算法3.7 文件模块 (21)3.7.1功能3.7.2 数据结构及流程图3.7.3算法4. 程序设计与实现 (24)4.1 程序流程图4.2 程序说明4.3 实验结果5. 结论 (28)6. 参考文献 (29)7. 收获、体会和建议 (29)1.概述UNIX文件系统采用SFD和BFD方式管理文件。

SFD称为符号文件目录,存放文件名以及致使该文件说明信息表标识符ID。

把存放文件说明信息和相应标识符的BFD称为i节点。

i节点又分为磁盘i节点和内存i节点。

目录表目中仅包含文件名和指向另一个数据块的指针-i节点号。

就可以通过这些i节点访问文件或是到另一个目录。

文件采用二级指针模块,可以存储大文件。

超级块结构采用成组块链接法,管理着磁盘的空闲块。

系统启动时的初始化是读磁盘的超级块到内存,可以操作和管理目录和文件数据,既是管理了磁盘块,同时读入根目录到内存作为当前操作目录,之后就可以访问到其他任意目录树的地方。

模拟UNIX文件系统程序设计。

首先要了解UNIX文件系统的结构和管理方法,建立数据结构,组织数据,通过概要设计出大体流程,然后细化完善每一个功能模块,先底层后表层,边写代码边测试,保证完成的每一个模块代码的无错性。

最后将完成的代码加到界面中。

2. 课程设计任务及要求2.1 设计任务模拟实现UNIX的文件系统,多用户、多级目录结构文件系统的设计与实现模拟实现UNIX的文件系统2.2 设计要求1、在深入理解操作系统基本原理的基础上,对于选定的题目,以小组为单位,先确定设计方案;2、设计系统的数据结构和程序结构,设计每个模块的处理流程。

要求设计合理;3、编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系统的运行结果;4、确定测试方案,选择测试用例,对系统进行测试;5、运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并回答指导教师的提问;6、提交课程设计报告。

3. 算法及数据结构3.1算法的总体思想(流程)3.1.1总体设计思想:利用内存的一段空间模拟unix的文件系统的实现。

设计结构体数组存放用户信息。

设计文件和目录通用的结构体,用一个字段标识是文件或目录,每个文件均有一个字段对应其所占用的数据块。

创建文件时通过搜索数据块位示图查找第一个空闲的数据块供文件使用。

建立文件后对占用的数据块对应的位示图的位进行置位操作。

删除文件时要释放对应的数据块,对数据块相应的位示图进行清零操作。

对文件的内容的读写都是对该文件数据块对应的一段内存空间内容的读写。

文件卷的组织:将文件卷分块、用位示图来管理或成组块链;块的大小可设成512字节,i节点区块数为32块;数据区块数为512块。

(如下图结构)。

引导区:系统的引导位置,在此设计中没有设计对引导区的操作。

超级块:描述文件系统的状态,包括磁盘空闲块栈,空闲i结点栈。

在程序设计中实质是存储一个数据结构的数据。

i节点:存放文件说明信息,每项32字节,这个区域有32块,每块512字节,也就是可以存储512个i节点。

在UNIX系统中,索引文件或是目录都是通过先索引i节点,通过i节点找到对应的目录或是文件数据块。

目录和文件:每个目录项16字节,文件名区分大小写。

3.1.2 总体实现算法:1)进入模拟文件系统VFS;2)格式化。

3)启动系统。

4)用户登陆,可以多用户同时登陆及用户之间的切换使用。

5)提示用户命令按要求输入命令并执行各种操作,包括:显示目录表,创建新目录,更改目录,创建文件,填写文件,读取文件,删除文件,更新文件。

6)用户操作完毕后,注销用户。

7)退出系统并执行退出后的保存工作。

3.2 i节点模块3.2.1功能i节点模块是是i节点的请求和释放操作。

主要的函数有:struct inode * ialloc()从磁盘上申请一个i节点:当需要建立一个目录或是建立一个文件的时候需要新的i节点。

一般会在这个时候调用。

Void ifree(struct inode* pinode)从磁盘上释放一个i节点:当从文件系统中删除某个文件或是目录的时候,应首先删除它的磁盘i节点项。

struct inode * iget (unsigned __int16 dinodeid)从磁盘上读i节点到内存。

void iput(struct inode * pinode)从内存中释放掉i节点,不影响磁盘的i节点。

3.2.2 数据结构/*内存i节点*/struct inode{struct inode *i_forw;struct inode *i_back;char i_flag;unsigned int i_ino; /*磁盘i节点标号*/unsigned int i_count; /*引用计数*/unsigned short di_number;/*关联文件,当为0时,则删除该文件*/unsigned short di_mode; /*存取权限*/unsigned short di_uid; /*磁盘i节点用户id*/unsigned short di_gid; /*磁盘i节点组id*/unsigned short di_size; /*文件大小*/unsigned int di_addr[NADDR]; /*物理块号*/};/*磁盘i节点*/struct dinode{unsigned short di_number; /*关联文件数*/unsigned short di_mode; /*存取权限*/unsigned short di_uid;unsigned short di_gid;unsigned long di_size; /*文件大小*/unsigned int di_addr[NADDR]; /*物理块号*/};/*超级块*/struct filsys{unsigned short s_isize; /*i节点块块数*/unsigned long s_fsize; /*数据块块数*/unsigned int s_nfree; /*空闲块块数*/unsigned short s_pfree; /*空闲块指针*/unsigned int s_free[NICFREE]; /*空闲块堆栈*/unsigned int s_ninode; /*空闲i节点数*/unsigned short s_pinode; /*空闲i节点指针*/unsigned int s_inode[NICINOD];/*空闲i节点数组*/unsigned int s_rinode; /*铭记i节点*/char s_fmod; /*超级块修改标记*/};3.2.3算法函数名:ialloc功能:申请磁盘i节点算法:通过超级块的i节点管理数组,查找一个没有被占用的i节点,放回i节点id。

函数名:ifree功能:释放磁盘i节点算法:修改超级块的i节点记录数据,释放相应的内存i节点。

函数名:iget功能:获得磁盘i节点到内存算法:通过i节点的id从磁盘上读i节点数据到内存。

通过id号找到这个i节点的磁盘地址,之后读出i节点大小的数据到内存。

函数名:iput功能:释放内存i节点算法:根据内存中这个i节点的信息做处理,若i节点只被引用一次,没有被修改过则从内存中释放,否则存储到磁盘覆盖原来的磁盘i节点,若引用次数大于1则引用次数自减一。

3.3 装入和退出系统模块3.3.1功能是读磁盘的相关数据到内存,为了用户可以对文件系统的操作。

实现函数:void install()启动,安装文件系统void halt()关闭系统。

3.3.2 数据结构及流程图系统装载关闭系统3.3.3算法函数名:install功能:装载系统数据算法:先将超级块数据读到内存,然后初始化系统打开文本表(SOF),读根目录的i节点到内存,读根目录到内存,设置为当前目录。

函数名:halt功能:关闭系统算法:将当前目录写入覆盖到磁盘目录的数据,关闭所有系统打开文件表中的文件。

退出文件系统。

3.4用户登录注销模块3.4.1功能此模块处理用户登陆系统和推出系统的管理,涉及到的操作函数主要有login()和logout().3.4.2 数据结构及流程图数据结构:/*用户打开表*/struct user{unsigned short u_default_mode;unsigned short u_uid; /*用户标志*/unsigned short u_gid; /*用户组标志*/unsigned short u_ofile[NOFILE]; /*用户打开表*/};/*用户密码*/struct pwd{unsigned short p_uid;unsigned short p_gid;char password[PWDSIZ];};用户登录用户退出3.4.3算法函数名:login功能:用户登录文件系统算法:根据用的输入用户名和密码,从passsword文件中判断是否正确,假如正确则将该用户加入到登录的用户表中,初始化此用户的打开文件表。

相关文档
最新文档