资源简介
操作系统 实验报告 很全面 可以直接上交了 含源代码 实验报告 可执行程序
代码片段和文件信息
#include
#include
#define TOTAL_MEMORY_SIZE 640
#define SYSTEM_MEMORY_SIZE 40
#define getpch(type)(type*)malloc(sizeof(type))
typedef struct Job JCB;
typedef struct MemoryBlock MB;
int order = 0;
//作业的内部唯一标识符
//作业控制块
struct Job
{
int ident;
//唯一的内部标识符
char jobName[10];
//作业名
char state;
//作业状态W表示后备,R表示执行,F表示完成
int memoryNeedSize;
//所需的内存空间,单位为KB
JCB* next;
MB * mbPtr;
}*headJCB=NULL*endJCB=NULL*headJCBFish=NULL*endJCBFish;
struct MemoryBlock
{
int ident;
//如果该内存块已经分配给作业,则此值为作业的内部标识符
int begin;
//此内存块的始地址
int memorySize;
//此内存块的空间大小
int state;
//0表示未分配,1表示已经分配
MB *pre *next;
}*headMBPtr=NULL;
//为新的作业创建JCB控制块
void addJCB(JCB* newJCB);
void createJCB()
{
JCB* newJCB = getpch(JCB);
if(newJCB == NULL)
{
printf(“系统内存不够!\n“);
// exit(-1);
}
printf(“\n请输入作业名: “);
scanf(“%s“newJCB->jobName);
printf(“\n请输入所需的主存空间(K): “);
scanf(“%d“&newJCB->memoryNeedSize);
newJCB->ident = ++order;
//作业序号加1
newJCB->state = ‘W‘;
//初始化为后备状态
newJCB->next = NULL;
newJCB->mbPtr = NULL;
addJCB(newJCB);
printf(“创建作业成功.\n“);
}
//创建内存分区块
MB* createMB(int jobIdentint begin int size int state MB* pre MB* next)
{
MB* newMB = getpch(MB);
newMB->ident = jobIdent;
//等于作业的序号
newMB->begin = begin;
//开始位置的设置
newMB->memorySize = size;
//空间大小的设置
newMB->state = state;
//状态的设置
newMB->pre = pre;
//前向指针
newMB->next = next;
//后向指针
return newMB;
}
//初始化内存分区块链,分为系统区和用户作业区
void initMblinkList()
{
//对于系统区,前链置为空状态为已分配。已分配区作业内部标识符一率置为-1.
MB* systemMB = createMB(-10SYSTEM_MEMORY_SIZE1NULLNULL);
MB* userMB = createMB(-1SYSTEM_MEMORY_SIZETOTAL_MEMORY_SIZE-SYSTEM_MEMORY_SIZE0systemMBNULL);
systemMB->next = userMB;
headMBPtr = systemMB;
}
//把作业控制块添加到后备作业链当中
void addJCB(JCB* newJCB)
{
if(newJCB==NULL)
return ;
if(headJCB==NULL)
{//未有作业
endJCB = headJCB = newJCB;
}
else
{//队列未空,直接插入到队尾
endJCB->next = newJCB;
endJCB = endJCB->next;
}
newJCB = NULL;
}
void dispMblinkList()
{
printf(“类别\t开始地址\t所占空间大小(k)\t\t状态\t作业内部标识号\n“);
MB* systemMBPtr = headMBPtr;
printf(“系统区\t“);
printf(“%d\t\t“systemMBPtr->begin);
printf(“%d\t\t\t“systemMBPtr->memorySize);
printf(“已分配\n“);
//以下部分打印输出用户区内存分配情况
MB* userMBPtr = systemMBPtr->next;
while(userMBPtr)
{
printf(“用户区\t“);
printf(“%d\t\t“userMBPtr->begin);
printf(“%d\t\t\t“userMBPtr->memorySize);
userMBPtr->state==0?printf(“未分配\t“
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13079 2011-11-28 10:09 实验三\Cpp3.cpp
文件 3377 2011-12-03 01:03 实验三\Cpp3.dsp
文件 516 2011-12-03 01:04 实验三\Cpp3.dsw
文件 41984 2011-12-03 01:04 实验三\Cpp3.ncb
文件 48640 2011-12-03 01:03 实验三\Cpp3.opt
文件 740 2011-12-03 01:03 实验三\Cpp3.plg
文件 30730 2011-12-03 00:58 实验三\Debug\cpp1.obj
文件 188513 2011-12-03 01:03 实验三\Debug\Cpp3.exe
文件 192876 2011-12-03 01:03 实验三\Debug\Cpp3.ilk
文件 26157 2011-12-03 01:03 实验三\Debug\Cpp3.obj
文件 3565628 2011-12-03 00:58 实验三\Debug\Cpp3.pch
文件 467968 2011-12-03 01:03 实验三\Debug\Cpp3.pdb
文件 214088 2011-11-28 09:35 实验三\Debug\Os3.pch
文件 148480 2011-12-03 01:03 实验三\Debug\vc60.idb
文件 77824 2011-12-03 00:58 实验三\Debug\vc60.pdb
文件 187459 2011-12-20 09:15 实验三\实验三报告.docx
目录 0 2011-12-17 23:05 实验三\Debug
目录 0 2011-12-17 23:05 实验三
----------- --------- ---------- ----- ----
5208059 18
- 上一篇:GA408-道路交通违法管理信息代码
- 下一篇:STM32L15**手册和寄存器说明
相关资源
- 西南交大计算机组成原理综合实验
- 操作系统进程调度算法实验报告
- 东南大学单片机实验报告测控技术与
- 文本分类实验报告(详尽版本)
- 操作系统Linux课程总结
- 操作系统概念第七版习题答案中文版
- 山东大学操作系统课设报告.zip
- SYS/BIOS使用指南
- UNIX Systems Programming 《UNIX系统编程》
- 哈工大编译原理词法分析实验报告
- GTK+教程很全面
- SCUT fuse文件系统
- 操作系统精髓与设计原理 第六版 答案
- 软件测试实验报告使用LoadRunner进行性
- 计算机操作系统课后习题答案(第四
- 深入理解计算机操作系统习题答案第
- Junit单元测试的实验报告.docx
- 操作系统课程设计---文件资源管理器
- Nachos实验代码
- 北京科技大学自动化学院嵌入式系统
- Operating Systems-Three Easy Pieces v1.0
- 《操作系统概念》重点内容总结
- 山东大学操作系统课程设计nachos
- 现代操作系统第四版正文及课后答案
- 通信原理实验报告_QPSK.pdf
- 收藏奉献_微机磁盘操作系统17号:P
- 计算机操作系统第2版电子档
- 四川大学操作系统历年考题
- 石渊友201708010303.7z湖南大学 17级算法
- 山东大学操作系统课设nachos实验报告
评论
共有 条评论