山大操作系统课程设计报告(全套)(8)
/*toNextNode 是保留第二个索引节点的扇区号*/
int toNextNode=NumDirect-1; //toNextNode is the Sector number of the second node of the filehd
//if the second node is not needed, then dataSector[toNextNode]=-1 if(numSectors < toNextNode) {
for (int i = 0; i < numSectors; i++)
dataSectors[i] = freeMap->Find();//为文件分配扇区
dataSectors[toNextNode] = -1; }
//If the numSectors excends the rage of dataSectors,
else{
for (int i = 0; i < toNextNode; i++) dataSectors[i] = freeMap->Find();
dataSectors[toNextNode] = freeMap->Find();//找一个空闲的扇区,作为第二个扇区,索引节点
//this is the content,i.e.filehdr of the allocated sectors, of the second node
int dataSectors2[NumDirect2];
for (int i = 0; i < numSectors - NumDirect; i++)
dataSectors2[i] = freeMap->Find();//为文件分配扇区
//the fefault synchDisk->WriteSector do not include the second node //so write back the new build node
synchDisk->WriteSector(dataSectors[toNextNode], (char *)dataSectors2); }
return TRUE;
/*revised*/ }
void
FileHeader::Deallocate(BitMap *freeMap) {
/*toNextNode 是保留第二个索引节点的扇区号*/
int toNextNode= NumDirect - 1;
// test if has the second node if(dataSectors[toNextNode]==-1) {
for (int i = 0; i < numSectors; i++) {
ASSERT(freeMap->Test((int) dataSectors[i])); // ought to be marked! freeMap->Clear((int) dataSectors[i]); } }
//has a second node, then find it, then clean the bitmap, then else {
//clear the first n-1 bit,remain the toNextNode int i=0;
for ( ; i < toNextNode; i++) {
ASSERT(freeMap->Test((int) dataSectors[i])); // ought to be marked! freeMap->Clear((int) dataSectors[i]); }
int dataSectors2[NumDirect2];
synchDisk->ReadSector(dataSectors[toNextNode], (char *)dataSectors2); freeMap->Clear((int) dataSectors[toNextNode]);//clear the toNextNode
for( ; i < numSectors; i++)
freeMap->Clear((int) dataSectors2[i-toNextNode]);//toNextNode==the number of filehdr item} } int
FileHeader::ByteToSector(int offset) {
ASSERT(offset<=numBytes);
/*toNextNode 是保留第二个索引节点的扇区号*/
int toNextNode = NumDirect - 1; //test if offset excedes the first node if(offset / SectorSize < toNextNode)
return(dataSectors[offset / SectorSize]); else {
int dataSectors2[NumDirect2];
synchDisk->ReadSector(dataSectors[toNextNode], (char *)dataSectors2); return (dataSectors2[offset / SectorSize - toNextNode]); } }
void
FileHeader::Print() {
/*revised*/ int i, j, k;
/*toNextNode 是保留第二个索引节点的扇区号*/
int toNextNode = NumDirect - 1;
char *data = new char[SectorSize];
//test if there is a second node if(dataSectors[toNextNode] == -1) {
printf(\ for (i = 0; i < numSectors; i++) printf(\ printf(\
for (i = k = 0; i < numSectors; i++) { synchDisk->ReadSector(dataSectors[i], data);
for (j = 0; (j < SectorSize) && (k < numBytes); j++, k++) { if ('\\040' <= data[j] && data[j] <= '\\176') // isprint(data[j])
printf(\ else
printf(\}
printf(\ } }
// If there is a secondary index,
// first read in the dataSectors2 from the Disk. // Then, deallocate the data blocks for this file.
// At last, deallocate the block that dataSector2 locates. else {
int dataSectors2[NumDirect2];
synchDisk->ReadSector(dataSectors[toNextNode], (char *)dataSectors2); //1, print the filedre items
printf(\ for (i = 0; i < toNextNode; i++) printf(\for(; i < numSectors; i++)
printf(\ printf(\
//2,print the content of the first node pointed for (i = k = 0; i < toNextNode; i++) { synchDisk->ReadSector(dataSectors[i], data);
for (j = 0; (j < SectorSize) && (k < numBytes); j++, k++) { if ('\\040' <= data[j] && data[j] <= '\\176') // isprint(data[j]) printf(\ else
printf(\}
printf(\ }
//3,print the content of the second node pointed for( ; i < numSectors; i++) {
synchDisk->ReadSector(dataSectors2[i - toNextNode], data);
for (j = 0; (j < SectorSize) && (k < numBytes); j++, k++) { if ('\\040' <= data[j] && data[j] <= '\\176') // isprint(data[j]) printf(\ else
printf(\}
printf(\
…… 此处隐藏:1071字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




