第一范文网 - 专业文章范例文档资料分享平台

模拟Unix文件系统实验报告

来源:用户分享 时间:2025/5/15 2:31:01 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

return pwrite(fd,&sup,sizeof(struct super),0); }

int mapio(int i,int j)//é???”?iè????1 {

unsigned short fi=0x8000; fi=fi>>j; fi=~fi; //int k=0;

sup.i[i]=sup.i[i]&fi; return sup.i[i]; }

int mapip(int i,int j)//è?·???iè????1 {

unsigned short fi=0x8000; fi=fi>>j; //int k=0;

sup.i[i]=sup.i[i]|fi; return sup.i[i]; }

struct ij see()//??¥?‰???oé?2???inode {

int k=0;

struct ij kl; while(k<8) {

int f,l=0;

unsigned short gl=0x8000; do{

f=gl&sup.i[k]; gl=gl>>1; l++;

}while(f!=0&&l<=N); if(f==0) {

kl.i=k; kl.j=l-1; return kl; } k++; }

kl.i=-1; kl.j=-1;

return kl; }

int i_addr()//???é…?inode {

int b=-1;

if(sup.iclock==0) {

sup.iclock=1;

struct ij gg=see();

if(gg.i>-1&&gg.j>-1){ b=gg.i*16+gg.j; mapip(gg.i,gg.j); }

sup.iclock=0; }

return b; }

int i_rel(int b)//????”?inode {

if(b>=0) {

if(sup.iclock==0) {

sup.iclock=1; int i=b/N; int j=b%N; mapio(i,j); sup.iclock=0; return 0; } }

return -1; }

/*

* super.h *

* Created on: 2014年12月26日 * Author: sunb */

#ifndef SUPER_H_ #define SUPER_H_

#define C_size 2048//文件系统的总块数 #define B_size 512//每块的字节数

#define D_size 2035//数据块的块数 #define D_beg 13//数据块的起始块号

#define I_size 12 //i节点块的总块数 #define IB_size 48 //i节点块的总块数 #define I_beg 1//i节点的起始块号 #define I_num 128//i节点的个数

#define M_fsize 58368//文件的最大所占字节数 #define B_Mf 114//文件的最大所占块数 #define B_Df 10//单级索引个数

#define DS_size 10//空闲盘块好栈中的空闲盘块的最大数目

#define N 16

#ifndef SUPER struct super{

unsigned int csize;//文件系统的总块数(4) unsigned short bsize;//每块的字节数(2)

unsigned int dsize;//数据块的块数(4) unsigned int dbeg;//数据块的起始块号(4) unsigned int demp;//空闲盘块数(4)

unsigned short isize; //i节点块的总块数(2) unsigned int ibeg;//i节点的起始块号(4) unsigned short inum;//i节点的个数(2) unsigned short i[8];//i节点位示图(12) unsigned short iclock;//inode锁(2)

unsigned int mfsize;//文件的最大所占字节数(4) unsigned short bmf;//文件的最大所占块数(2)

time_t bu;//修改时间(8)

short dssize;//当前空闲盘块好栈中的空闲盘块数目(2) unsigned int dss[DS_size];//(400)

unsigned short dsclock;//成组链接锁(2) }sup; #endif

//int mapio(unsigned short,unsigned short); //int mapip(unsigned short,unsigned short); void super(); int supread(); int supwrite(); int i_addr(); int i_rel(int); int fd;

#endif /* SUPER_H_ */ /*

* user.c *

* Created on: 2015?1′1???2??¥ * Author: sunb */

#include #include #include\#include\#include\#include\#include\#include\#include\

char * makedir(char *route) {

char *makname=(char *)malloc(140); if(*route=='/') {

strcpy(makname,route); }

else if(*route=='.'&&(*(route+1)=='/'||*(route+1)=='\\0')){ int k=0;

搜索更多关于: 模拟Unix文件系统实验报告 的文档
模拟Unix文件系统实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6q2638vyy68mpoi7oh1u_12.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top