操作系统 文件管理课程设计c语言代码

//欢迎下载,指导
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <dos.h>
#include <conio.h>


#define BLOCKSIZ 512 //磁盘块的大小
#define DATABLKNUM 512 //数据块的数目
#define BLKGRUPNUM 50 //数据块组包含多少数据块
#define P_N_BLOCKS 15 //inode节点中 指向数据块的指针个数
#define GROUPNUM DATABLKNUM/BLKGRUPNUM+1 //数据块组 组数

#define DINODESIZ 512 //磁盘i结点区的大小(空间32×512)
#define DINODENUM 32 //磁盘i结点区的块数

#define SYSOPENFILE 40
#define DIRNUM 32 //一个目录下的最多目录和文件的总和数
#define DIRSIZ 14 //文件、目录名的长度(字节)
#define UPWDSIZ 15 //密码的长度
#define UNAMSIZ 15 //用户名的长度
#define PWDSIZ sizeof(struct pwd) //密码结构的长度
#define PWDNUM BLOCKSIZ/PWDSIZ //密码数据空间的大小(pwd为单位)
#define NOFILE 20 //一个用户最多可以打开的文件数目
#define NHINO 128
#define USERNUM 10 //用户名的长度
#define DINODESTART 4*BLOCKSIZ //i结点区的开始地址-inodes table ,1引导 2超块 3block bitmap 4inode bitmap
#define DATASTART (2+DINODENUM)*BLOCKSIZ //数据区的开始地址
#define DATASTARTNO 36 //数据区开始指针

/* di._mode */
#define DIMODE_EMPTY 00000/*可以用的空间*/
#define DIMODE_FILE 00001
#define DIMODE_DIR 00002
#define DIMODE_PASSWD 00004
#define DIMODE_SYSTEM 00040 /*系统文件*/

#define DIMODE_READ 00010 /* READ 和该数与操作后得到的是可以读该文件的用户组*/
#define DIMODE_WRITE 00020 /* WRITE */
#define DIMODE_EXICUTE 01000 /* EXICUTE */
#define DIMODE_ADMIN 00100 /*管理员权限*/
#define DIMODE_SHARE 00200 /*不需要权限*/
/*组*/
#define GRUP_0 0 //管理员组
#define GRUP_1 1
#define GRUP_2 2
#define GRUP_4 4


/************************ 文件系统 数据结构 *******************************/

// 磁盘i结点结构,

struct inode{
// char di_name[DIRSIZ];
unsigned __int16 di_ino; /*磁盘i节点标识*/
unsigned __int16 di_number; /*关联文件数,当为0时表示删除文件*/
unsigned __int16 di_mode; /*存取权限*/
unsigned __int16 di_uid; /*磁盘i节点用户id*/
unsigned __int16 di_gid; /*磁盘i节点权限组id*/ //1管理员组 2用户组
unsigned __int32 di_size; /*文件大小*/
unsigned __int32 di_ctime; /* Creation time */
unsigned __int32 di_mtime; /* Modification time */
unsigned __int16 di_block[P_N_BLOCKS]; /* 一组 block 指针 */
};


struct direct{
char d_name[DIRSIZ]; /*目录名(14字节)*/
__int16 d_ino; /*目录号*/
};




struct super_block{
unsigned __int16 s_inodes_count; /* inodes 计数 */
unsigned __int16 s_blocks_count; /* blocks 计数 */
unsigned __in

你可能喜欢

  • 宿舍管理查询软件
  • 文件系统
  • 操作系统课程设计报告
  • 计算机操作系统课程设计
  • 操作系统课程设计银行家算法
  • 操作系统课程设计模拟操作系统
  • 操作系统课程设计题目
  • 操作系统课程设计论文

操作系统 文件管理课程设计c语言代码相关文档

最新文档

返回顶部