• 大小: 5.02MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-03
  • 语言: 其他
  • 标签: 文件系统  

资源简介

模拟linux文件系统

资源截图

代码片段和文件信息

#include“struct.h“
//全局变量
//磁盘指针
extern FILE* fd;
//超级块
extern SuperBlock superBlock;
//位示图法,1是占用,0是空闲
extern unsigned short inode_bitmap[INODE_NUM];
//所有用户
extern UserInfo users;
//当前用户ID
extern unsigned short userID;
//当前用户名
extern char userName[USER_NAME_LENGTH];
//当前目录信息
extern Directory currentDirectory;
//当前绝对路径
//extern char curr_absolute[100][14];


extern unsigned short dir_pointer;
//查找空闲盘块号
void find_free_block(unsigned int &inode_number);
//回收盘块
void recycle_block(unsigned int &inode_number);
//文件系统初始化
bool Format();
//磁盘初始化
bool Mount();
//用户登录
bool Login(const char* user const char* password);
//用户退出登录
void Logout();
//创建文件
bool CreateFile(const char* filename);
//删除文件
bool DeleteFile(const char* filename);
//打开文件
inode* OpenFile(const char* filename);
//写文件
int Write(inode& ifile const char* content);
//打印文件内容
void PrintFile(inode& ifile);
//创建目录
bool MakeDir(const char* dirname);
//删除目录
bool RemoveDir(const char* dirname);
//打开文件夹
bool OpenDir(const char* dirname);
//显示当前目录信息
void List();
//打印绝对路径
void Ab_dir(Directory &tmp_dir);
//更改文件权限
void Chmod(char* filename);
//更改文件夹拥有者
void Chown(char* filename);
//更改文件用户组
void Chgrp(char* filename);
//修改密码
void Passwd();
//重命名文件/文件夹
void Rename(char* filename);
//链接
bool ln(char* filename);
//拷贝
bool Copy(char* filename inode*& currentInode);
//系统开始
void Sys_start();
//接受命令并跳转
void InputCmd(inode*& currentInode);
//打印帮助信息
void Help();



//系统开始
void Sys_start() {
//文件系统初始化
Mount();
printf(“\t**************************************************************\n“);
printf(“\t*                  模拟unix文件系统                          *\n“);
printf(“\t*                          --------made by 沈鑫              *\n“);
printf(“\t**************************************************************\n“);
}
//文件系统初始化
bool Format()
{
//空则新建硬盘文件
FILE* fd = fopen(“./disk.txt“ “wb+“);
if (fd == NULL)
{
printf(“文件系统初始化失败!\n“);
return false;
}

//初始化超级块
SuperBlock superBlock;
superBlock.inode_num = INODE_NUM;
superBlock.block_num = BLOCK_NUM + 67;
superBlock.inode_size = INODE_SIZE;
superBlock.block_size = BLOCK_SIZE;
superBlock.free_block_num = BLOCK_NUM - 2;
superBlock.free_inode_num = INODE_NUM - 2;
superBlock.special_stack[0] = 99;
for (int i = 1; i < 50; i++)
{
superBlock.special_stack[i] = 49 - i;
}
superBlock.special_free = 47;
//写超级块
fseek(fd BLOCK_SIZE SEEK_SET);
fwrite(&superBlock sizeof(SuperBlock) 1 fd);
fseek(fd BLOCK_SIZE SEEK_SET);
fread(&superBlock sizeof(SuperBlock) 1 fd);

//位示图初始化
unsigned short inode_bitmap[INODE_NUM];
memset(inode_bitmap 0 INODE_NUM);
inode_bitmap[0] = 1;
inode_bitmap[1] = 1;
//写入位示图
fseek(fd 2 * BLOCK_SIZE SEEK_SET);
fwrite(inode_bitmap sizeof(unsigned short) * INODE_NUM 1 fd);

//成组连接
unsigned int stack[51];
for (int i = 0; i < BLOCK_NUM / 50; i++)
{
memset(stack 0 sizeof(stack));

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        188  2017-01-19 19:17  操作系统大型实验\ReadMe.txt

     文件      91136  2017-01-19 19:13  操作系统大型实验\可执行文件\OS_BigWork.exe

     文件      91136  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\Debug\OS_BigWork.exe

     文件     370944  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\Debug\OS_BigWork.ilk

     文件    1323008  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\Debug\OS_BigWork.pdb

     文件   16580608  2017-01-05 22:24  操作系统大型实验\源代码\OS_BigWork\ipch\os_bigwork-9d951ce5\os_bigwork-ba038e02.ipch

     文件     107011  2017-01-18 12:05  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\FileOperate.obj

     文件     119852  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\Init.obj

     文件     112778  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\main.obj

     文件     226886  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\Operate.obj

     文件        647  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.log

     文件       7974  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.tlog\cl.command.1.tlog

     文件      23900  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.tlog\CL.read.1.tlog

     文件       4540  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.tlog\CL.write.1.tlog

     文件       4506  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.tlog\link.command.1.tlog

     文件       3510  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.tlog\link.read.1.tlog

     文件       1846  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.tlog\link.write.1.tlog

     文件        235  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.tlog\OS_BigWork.lastbuildstate

     文件     412672  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\vc120.idb

     文件     380928  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\vc120.pdb

     文件       1484  2017-01-18 14:44  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\define.h

     文件     296140  2017-01-19 19:13  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\disk.txt

     文件       7039  2017-01-18 23:39  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Init.cpp

     文件       2736  2017-01-18 23:39  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\main.cpp

     文件      58086  2017-01-19 19:09  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Operate.cpp

     文件       4253  2017-01-18 12:23  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\OS_BigWork.vcxproj

     文件       1328  2017-01-18 12:23  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\OS_BigWork.vcxproj.filters

     文件        143  2017-01-05 22:22  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\OS_BigWork.vcxproj.user

     文件       1513  2017-01-18 17:51  操作系统大型实验\源代码\OS_BigWork\OS_BigWork\struct.h

     文件    7340032  2017-01-19 19:14  操作系统大型实验\源代码\OS_BigWork\OS_BigWork.sdf

............此处省略17个文件信息

评论

共有 条评论