• 大小: 443KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: 其他
  • 标签:

资源简介

沈阳大学信息工程学院操作系统课程设计,包括程序代码、源程序、以及论文。

资源截图

代码片段和文件信息


#include “myHead.h“
//寻找第一个空白的文件块ID
unsigned FindBlankFileBlockId()
{
unsigned char c;
for (unsigned i = 0; i < FS.bm.BitMapLen / 8; i++)
{
c = FS.bm.BMStart[i] | 0x7F;
if (c == 0x7F)return i * 8;//一个字节左边第一位,表示该区域未使用
c = FS.bm.BMStart[i] | 0xBF;
if (c == 0xBF)return i * 8 + 1;
c = FS.bm.BMStart[i] | 0xDF;
if (c == 0xDF)return i * 8 + 2;
c = FS.bm.BMStart[i] | 0xEF;
if (c == 0xEF)return i * 8 + 3;
c = FS.bm.BMStart[i] | 0xF7;
if (c == 0xF7)return i * 8 + 4;
c = FS.bm.BMStart[i] | 0xFB;
if (c == 0xFB)return i * 8 + 5;
c = FS.bm.BMStart[i] | 0xFD;
if (c == 0xFD)return i * 8 + 6;
c = FS.bm.BMStart[i] | 0xFE;
if (c == 0xFE)return i * 8 + 7;
}
return FILEBLOCKCOU + 1;
}

//寻找第一个文件块地址
char * FindBlankFileBlock(unsigned fileblockid)
{
FileBlock *fblock = FS.head;
while (fblock->next != NULL)
{
if (fblock->FileBlockId == fileblockid)
{
return fblock->FileBlockAddr;
}
else
{
fblock = fblock->next;
}
}
return NULL;
}

//得到当前时间的字符串
void GetCurrentTime(char *currtime)
{
char dbuffer [9];
char tbuffer [9];
_strdate(dbuffer);
_strtime(tbuffer);
strcpy(currtime dbuffer);
strcat(currtime “ “);
strcat(currtime tbuffer);
}

//更新文件索引
void AddFileIndex(unsigned fileblockid unsigned filelevel char *filename char *parentname)
{
FS.FI.FIStart[FS.FI.FICount].FileBlockId = fileblockid;
FS.FI.FIStart[FS.FI.FICount].FileLevel = filelevel;
strcpy(FS.FI.FIStart[FS.FI.FICount].FileName filename);
if (parentname == NULL)
{
memset(FS.FI.FIStart[FS.FI.FICount].ParentName ‘\0‘ MAXFILENAMELEN);
}
else
{
strcpy(FS.FI.FIStart[FS.FI.FICount].ParentName parentname);
}
FS.FI.FIStart[FS.FI.FICount].Index = FS.FI.FICount;
FS.FI.FIStart[FS.FI.FICount].effect = 1;
FS.FI.FICount ++;
}
//更新位示图
void UpdateBitMap(unsigned fileblockid)
{
//计复所在位示图的位置
int dirInBitmap = ((int)(fileblockid / 8));
int dirInChar = fileblockid % 8;

char *c = &(FS.bm.BMStart[dirInBitmap]);
char xor;
switch (dirInChar)
{
case 0:xor = 0x80;
break;
case 1:xor = 0x40;
break;
case 2:xor = 0x20;
    break;
case 3:xor = 0x10;
break;
case 4:xor = 0x08;
break;
case 5:xor = 0x04;
break;
case 6:xor = 0x02;
break;
case 7:xor = 0x01;
break;
}
*c = *c ^ xor;
}

//创建一个文件元素
FSElement * CreateFileElement(FEAccess acc char *filename FEType type char *filecontent FSElement *parent)
{
//查找第一个空白文件块ID
unsigned blankFileBlockId = FindBlankFileBlockId();
if (blankFileBlockId >= FILEBLOCKCOU)
{
printf(“未找到一个文件块的id\n“);
return NULL;
}
//查找第一个空白块的地址
char *blank = FindBlankFileBlock(blankFileBlockId);
if (blank == NULL)
{
printf(“未找到一个文件块的地址\n“);
return NULL;
}
FSElement *fs = (FSElement *)blank;

fs->Access = acc;
fs->Creator = CS.CurrentUser;
GetCurrentTime(fs->CreateTime);
fs->FileBlockId = blankFileBlockId;
fs->FileLevel = CS.FileLevel;
strcpy(fs-

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     418816  2010-07-07 16:00  操作系统杨一涛.doc

     文件      31232  2010-07-09 13:17  课程设计任务书模板.doc

     文件     196692  2010-07-07 13:18  OS\Debug\OS.exe

     文件     292612  2010-07-07 13:18  OS\Debug\OS.ilk

     文件     241664  2010-07-07 13:07  OS\Debug\OS.pch

     文件     492544  2010-07-07 13:18  OS\Debug\OS.pdb

     文件      41984  2010-07-07 15:19  OS\Debug\vc60.idb

     文件      53248  2010-07-07 13:18  OS\Debug\vc60.pdb

     文件      47868  2010-07-07 13:18  OS\Debug\yytos.obj

     文件       3641  2010-07-07 13:07  OS\myHead.h

     文件       4361  2010-07-06 00:39  OS\OS.dsp

     文件        512  2010-07-05 23:23  OS\OS.dsw

     文件      50176  2010-07-07 16:35  OS\OS.ncb

     文件      53760  2010-07-07 16:35  OS\OS.opt

     文件        868  2010-07-07 13:18  OS\OS.plg

     文件        161  2010-07-05 23:27  OS\stdfax.h

     文件      18387  2010-07-07 13:18  OS\yytos.cpp

     目录          0  2010-07-08 01:33  OS\Debug

     目录          0  2010-07-08 01:33  OS

----------- ---------  ---------- -----  ----

              1948526                    19


评论

共有 条评论