nachos 扩展文件长度
来源:互联网 发布:山东直销软件开发 编辑:程序博客网 时间:2024/05/22 08:14
前段时间又忙着投各种简历,面试,结果纷纷悲剧。只能当时锻炼胆量和总结经验了,结果也发现了自己很多不足,决定闭关一阵子好好巩固巩固再说。
Lab2 实在是没怎么认真做,基本都是参考上一些学长学姐做过的东西。也留下了很多BUG没有解决,所以也不敢放上来都。
Lab3 过几天又要交了,这今天又有的忙活了,这两天会写一些实验中的过程方出来,仅供参考,当然我也都是参考别人的做的。
攒人品,求过~
1. 首先,为FileHeader添加属性,一级索引和二级索引,同时减小NumDirect的大小。
int inDirectSector1; // 一级索引
int inDirectSector2; // 二级索引
2. 修改FileHeader::Allocate(BitMap *freeMap, int fileSize)方法。
在这里只做了一级索引的方法,二级索引的方法类似。
bool FileHeader::Allocate(BitMap *freeMap, int fileSize){ numBytes = fileSize; //文件大小 numSectors = divRoundUp(fileSize, SectorSize); //根据文件大小计算所需块数 if(NumDirect >= numSectors) //如果直接索引的数据块足够 { if (freeMap->NumClear() < numSectors) //如果位图中空间块不足return FALSE; // not enough space for (int i = 0; i < numSectors; i++) //找到一个空间块并分配dataSectors[i] = freeMap->Find(); } else //如果直接索引的数据块不够 { if(freeMap->NumClear() < numSectors +1) return FALSE; //多一块用来存索引 for (int i = 0; i< NumDirect; i++)dataSectors[i] = freeMap->Find(); inDirectSector1 = freeMap->Find(); //分配一块用来存索引 int index[numSectors-NumDirect]; for (int i = 0; i< numSectors - NumDirect;i++) {index[i] = freeMap->Find(); } synchDisk->WriteSector(inDirectSector1,(char *)index); } return TRUE;}
3. 修改ByteToSector 方法。
int FileHeader::ByteToSector(int offset){ int sector = offset / SectorSize; if( sector < NumDirect) //如果只用到了直接索引 return (dataSectors[sector]); else { //如果还用到了一级索引sector -=NumDirect;int index[numSectors - NumDirect];synchDisk->ReadSector(inDirectSector1,(char *)index);return (index[sector]); }}
4. 删除文件时也需要判断,如果用到了一级索引,还需要将一级索引中的块号释放掉。
5. 修改Print方法。当文件用到了一级索引时,需要先读取存储间接索引的块内容,然后打开一级索中用到的块,读取块内容。
实验结果如下,可以看到直接索引指向的块号为7-31。一级索引所保存的块号为33-55。
- nachos 扩展文件长度
- 【nachos】山东大学操作系统课设实验nachos系统(3)扩展文件系统
- 【nachos】山东大学操作系统课设实验nachos系统(5)扩展地址空间
- nachos中拷贝文件过大的问题
- 长度扩展攻击
- MD4长度扩展攻击
- 长度扩展攻击详解
- 文件长度
- easyui扩展 - 最大长度限制
- Hash长度扩展攻击--MD5
- nachos资料
- nachos 学习
- Nachos随记
- JQuery实例扩展,限制输入长度。
- C++ vector长度扩展机制的探究
- 哈希长度扩展攻击解析
- 哈希长度扩展攻击以及HashPump
- 揭开ArrayList 的长度扩展神秘面纱
- 初学Java,IO之推回输入流(四十四)
- 千万级别mysql合并表快速去重
- 苹果电脑数据备份和数据恢复方法+时间机器
- 关于读C++语言的设计和演化
- Javascript + Asp.net 让图片自动成比例缩放
- nachos 扩展文件长度
- 【天道酬勤】 腾讯、百度、网易游戏、华为Offer及笔经面经
- php socket讲解与实例
- touchesMoved 获取滑动的方向方法
- C#中调用OpenCTM打开.obj三维模型文件
- Microsoft Visual Studio 2010安装
- VisualSVN迁移到其他服务器
- 如何在mac下备份mac os x系统
- 全球智能手机使用差异汇总:13个不可思议的事实