资源简介
模拟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\li
文件 3510 2017-01-19 19:13 操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.tlog\li
文件 1846 2017-01-19 19:13 操作系统大型实验\源代码\OS_BigWork\OS_BigWork\Debug\OS_BigWork.tlog\li
文件 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个文件信息
- 上一篇:Yifile器
- 下一篇:电气符号库(最全图集).zip
相关资源
- 嵌入式FAT16/FAT32文件系统免费
- 最新yaffs2源码包
- fat32文件系统分析工具
- freebsd mastery zfs.pdf
- linux文件系统操作系统课程设计
- 操作系统实验报告-大作业模拟文件系
- 操作系统课程设计--多用户多级目录文
- STM32_FAT32文件系统
- XV6阅读报告包含进程线程、内存管理
- SD卡读写规范、时序图、FAT32文件系统
- FAT32文件系统介绍图文介绍和
- ZFS文件系统.pdf
- stm32f103上移植fatfs文件系统
- ucos文件系统完整
- 操作系统课程设计报告-多用户文件系
- 操作系统课程设计,单索引文件系统
- SpringBoot+mybatis登录注册及其账号密码
- SpringBoot-mybatis登录、注册、拦截器、
- 模拟实现采用二级目录结构的磁盘文
- linux系统移植嵌入式linux系统:内核、
- 北大Nachos文件系统实习报告
- 《HDFS——Hadoop分布式文件系统深度实
- Fatfs R0.13b 版本官方源码
- FATFS FAT32使用浅谈
- SCUT fuse文件系统
- wdk 中 fastfat文件系统代码
- znFat文件系统源码
- 如何读写FAT32文件系统
- Linux内核探秘 深入解析文件系统和设
- 数据重现:文件系统原理精解与数据
评论
共有 条评论