Linux操作系统之文件系统设计与模拟实现

该博客探讨了如何设计和模拟实现Linux操作系统的文件系统,包括根据用户定义的参数构建成组链,对空闲盘块进行分组,并形成链表。此外,还详细介绍了查询空闲盘块总数和分组情况的功能。选做内容涉及盘块的动态分配和回收操作,以及结果显示。
摘要由CSDN通过智能技术生成

文件系统设计与模拟实现

 

要求编写程序,完成如下功能:

  • 构建成组链:

       根据用户定义的盘块大小、文件区占用磁盘块数和分组的块数,模拟Unix系统将磁盘空闲块进行分组,并将这些盘块组构成成组链。

  • 查询

       可查询成组链表中空闲盘块总数、盘块分组情况

  • 选做功能:
  1. 实现盘块的分配或回收操作
  2. 显示每次分配或回收盘块的结果。

 

#include<stdio.h>
int MA[4];     /*空闲块数组*/
int A[9][4]={
  {3,1,2,3},{3,4,5,6},{0,0,0,0},{0,0,0,0},{3,0,7,8},
{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};  /*磁盘空间*/
int mark[9];       /*存放已分配的块*/
int No=0;              /*已分配的块数*/
void display1()
{   
    int i,j,temp,count;
    No=0;
   
  • 11
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实验二 UNIX磁盘间管理算法 (一) 实验目的 掌握UNIX外存间管理中的分组链接算法。 (二) 实验内容 编写C语言程序,模拟UNIX磁盘间管理中使用的分组链接法。 1.定义一个记录磁盘号的堆栈S—free[10],以及记录栈中现有磁盘块数的变量S—nfree。 2.定义一个由40个元素构成的结构组block[40]用作磁盘存放。 struct size { int blocl[10]; } struct blocd { struct size a[10]; //用于在磁盘号链中存放磁盘号 }block[40]; 3. 假设系统文件的最大容量为100个磁盘,且最多只有5个文件定义一个由5个元素构成的结构组file[5]用于记录各个文件占用磁盘,。 struct File { int fileblocd[100]; //用于记录分别分配给文件磁盘号 }file[5]; 4. 编写函init( )完成磁盘号堆栈、磁盘号队列及记录文件占用磁盘状态的file结构组。 5. 编写函alloc(fileno,blockd),完成磁盘的分配操作。其中的参fileno为文件序号,用于指定需要分配的文件。 6. 编写函free(fileno),完成文件占用磁盘的释放操作。其中的参fileno为文件序号,用于指定需要释放磁盘文件。 7. 编写main( )函完成下列操作: 调用init( )函完成初始设置。 从终端输入命令,控制磁盘的分配与回收操作。 (三) 实验要求 1. 在程序运行的结果中应包含磁盘的分配与回收操作。 2. 可根据输入的文件名、文件大小进行模拟磁盘分配,并在每次分配与回收后显示分配与回收是否成功,以及分配、回收的磁盘号。 3. 在程序执行过程中,至少应包含分配不成功一次的信息。 4. 可以查看当前磁盘的使用情况:哪些闲,哪些被哪些文件占用
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统。 1. 在现有机器硬盘上开辟100M的硬盘间,作为设定的硬盘间。 2. 编写一管理程序simdisk对此间进行管理,以模拟Linux文件系统,要求: (1) 盘块大小1k (2) 盘块的管理:Linux位图法 (3) 结构:超级, i结点, 根目录 3. 该simdisk管理程序的功能要求如下: (1) info: 显示整个系统信息(参考Linux文件系统系统信息),文件可以根据用户进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。 (2) cd …: 改变目录:改变当前工作目录,目录不存在时给出出错信息。 (3) dir …: 显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参的dir命令,显示所有子目录)。 (4) md …: 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。 (5) rd …: 删除目录:删除指定目录下所有文件和子目录。要删目录不时,要给出提示是否要删除。 (6) newfile …: 建立文件。 (7) cat …: 打开文件。 (8) copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统模拟Linux文件系统间的文件拷贝,host文件系统文件命名为…,如:将windows下D:盘的文件\data\sample\test.txt文件拷贝到模拟Linux文件系统中的/test/data目录,windows下D:盘的当前目录为D:\data,则使用命令: simdisk copy D:\data\sample\test.txt /test/data 或者:simdisk copy D:sample\test.txt /test/data (9) del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10) check: 检测并恢复文件系统:对文件系统中的据一致性进行检测,并自动根据文件系统的结构和信息进行据再整理。 4. 程序的总体流程为: (1) 初始化文件目录; (2) 输出提示符,等待接受命令,分析键入的命令; (3) 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值