p = pm; while(p->next){ printf(\ p= p ->next; } if(p->base + p->size < SIZE) printf(\}
void init(){//初始化总内存大小和空闲分区链的头结点 pm->base = 0; pm->size = 0; pm->next = getMEM(); puts(\请输入可用内存空间大小: \ SIZE = geti(); pm->next->size = SIZE; pm->next->base = 0; pm->next->next =NULL; }
int main() { int size = 0,base = 0; int ch; init(); print(pm); while(1){ puts(\分配空间请按1,释放空间请按2\\n\ ch = getche(); if( ch == '1'){ puts(\请输入需要分配的空间大小: \ size =geti(); if((base = allocMem(pm, size)) == -1) puts(\空闲内存分区大小不足\\n\ else{ printf(\分配内存成功,此次分配的内存基地址为%d\\n\ print(pm); } }else if(ch == '2'){ puts(\请输入要释放内存的基地址: \ base = geti(); puts(\请输入要释放内存的大小: \ size = geti(); if(release(pm, base, size)){ puts(\释放内存成功!!!!\\n\ print(pm); }else{ puts(\非法操作,您所给的内存范围没有被分配出去:\\n\ } } } return 0; }
实验四:文件系统
一、实验目的
模拟文件系统实现的基本功能,了解文件系统的基本结构和文件的各种管理方法,加深理解文件系统的内部功能及内部实现。通过用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
二、实验内容和要求
编程模拟一个简单的文件系统,实现文件系统的管理和控制功能。要求本文件系统采用两级目录,即设置主文件目录[MFD]和用户文件目录[UED]。另外,为打开文件设置运行文件目录[AFD]。设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件,并对文件必须设置保护措施。在用户程序中通过使用文件系统提供的Create、open、read、write、close、delete等文件命令,对文件进行操作
三、实验主要仪器设备和材料
硬件环境:IBM-PC或兼容机 软件环境:C语言编程环境
四、实验原理及设计方案
1、实验原理
运用二级目录思想来模拟文件系统。
为每个用户建立一个单独的用户文件目录UFD。这些文件目录具有相似的结构,它由用户文件的文件块组成。此外,在系统再建立一个主文件目录MFD;在主文件目录中,每个用户目录都占有一个目录项,其目录项中包含文件名和指向该文件目录文件的指针。
2、程序流程图
五、实验结果及分析
文件系统初始界面,第一次运行必须注册用户,注册用户的信息将会被自动写到默认目录的database.txt文件,如果文件存在可以直接登陆不用注册,注册将会覆盖原来的数据:
用户注册,注册结束会自动转到登陆界面,而所有用户和目录文件信息将会显示在登陆界面上方,可以选择登陆一个用户:
登陆成功则跳转至文件系统,可以输入相应命令对文件操作,这里测试先选择create命令新建文件:
新建文件页面,按要求输入名字、属性、长度等:
使用 delete 命令打开文件,找不到文件名字则提示出错:
使用 open 命令删除文件: