资源简介
操作系统 实验报告 很全面 可以直接上交了 含源代码 实验报告 可执行程序

代码片段和文件信息
#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**手册和寄存器说明
相关资源
- 升腾Win终端系统升级方法新版.doc
- Uninstall_Cortana_WINCLIENT.CN.rar
- 数学建模实验报告(八个全)
- STM32基于rt_thread操作系统的SDHC卡文件
- 数字逻辑与数字系统实验报告
- 多媒体综合设计报告(附作品)
- ubuntu9.10 可加载内核模块和字符设备驱
- 操作系统 LRU算法 实验报告 及 程序代
- [免费]车载CE6.0操作系统
- 分页系统模拟实验 操作系统 课程设
- 模拟段页式虚拟存储管理中地址转换
- 迈克尔逊干涉仪的调整与使用实验报
- 操作系统实验——虚存管理实验
- 广工操作系统实验
- 广东工业大学操作系统实验四文件系
- Bochs入门教程[操作系统第一步]
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- 模拟一个文件管理系统
- 利用启发式搜索解决八数码难题程序
- 二级文件系统(操作系统)
- uCOS编译环境建立 BC45 TASM
- 比较两个字符串大小汇编语言源代码
- Linux 操作系统实验(全)
- 操作系统实验综合设计【附代码】
- 操作系统共享内存实验
- 操作系统循环首次适应算法
- linux实验报告及心得体会
- 操作系统课程设计实现可变分区存储
- 基于GTK的Linux环境下的简易任务管理器
评论
共有 条评论