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

代码片段和文件信息
#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
- 上一篇:基于adc0832的数字电压表
- 下一篇:zlib-1.2.7
相关资源
- 模拟段页式虚拟存储管理中地址转换
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- 操作系统课程设计实现可变分区存储
- 操作系统课程设计 二级文件管理系统
- 操作系统课程设计代码
- 操作系统课程设计 银行家算法论文
- 操作系统课程设计 内存管理
- 广州大学操作系统课程设计实验报告
- 基于linux的操作系统课程设计 中北大
- 操作系统课程设计 绘制资源分配图
- 操作系统课程设计完整版报告+源程序
- 模拟Unix文件系统,操作系统课程设计
- 操作系统课程设计报告 分页存储管理
- 山东大学操作系统课程设计实验报告
- GeekOS操作系统课程设计project0-4讲解
- DOS画画_操作系统课程设计_操作系统图
- 操作系统课程设计报告-单用户多级文
- Pintos 西电操作系统课程设计3 报告+代
- 中北大学软件学院操作系统课程设计
- 操作系统课程设计报告(进程控制与
- 操作系统课程设计资源分配图
- 操作系统课程设计生产者和消费者问
- linux文件系统操作系统课程设计
- 操作系统课程设计实验报告
- 操作系统课程设计.zip
- 操作系统课程设计--多用户多级目录文
- 动态分区分配存储管理-操作系统课程
- 操作系统课程设计进程管理与通信,
- 操作系统课程设计Spooling输入输出模拟
评论
共有 条评论