2022年操作系统实验报告全 .pdf
《2022年操作系统实验报告全 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统实验报告全 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河南省高等教育自学考试实 验 报 告 册计算机及应用专业(本科段)操作系统姓名准考证号所属地市实验地点实验日期实验总成绩指导教师签名实验单位(实验室)意见:主考院校审核意见:河南科技大学自学考试办公室二 零 一 零 年 三 月名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -实验一单处理器系统的进程调度模拟#include stdio.h#define running 1/*用 running 表示进程处于运行态*/#define aready 2/*用 aready 表示进程处于就绪态*/#define blocking 3/*用 blocking表示进程处于等待态*
2、/#define sometime 5/*用 sometime 表示时间片大小*/#define n 10/*假定系统允许进程个数为10*/struct int name;/*进程标识符*/int status;/*进程状态*/int ax,bx,cx,dx;/*进程现场信息,通用寄存器内容*/int pc;/*进程现场信息,程序计数器内容*/int psw;/*进程现场信息,程序状态字寄存器内容*/int next;/*下一个进程控制块的位置*/pcbarean;/*定义模拟进程控制块区域的数组*/int PSW,AX,BX,CX,DX,PC,TIME;/*模拟寄存器*/int run;/*
3、定义指向正在运行进程的进程控制块的指针*/struct int head;int tail;ready;/*定义指向就绪队列的头指针head 和尾指针tail*/int block;/*定义指向等待队列的指针*/int pfree;/*定义指向空闲进程控制块队列的指针*/sheduling()/*进程调度函数*/int i;if(ready.head=-1)/*空闲进程控制块队列为空,退出*/printf(无就绪进程 n);return 0;i=ready.head;/*就绪队列头指针赋给i*/ready.head=pcbareaready.head.next;/*就绪队列头指针后移*/if(
4、ready.head=-1)ready.tail=-1;/*就绪队列为空,修正尾指针ready.tail*/pcbareai.status=running;/*修改进程控制块状态*/TIME=sometime;/*设置相对时钟寄存器*/*恢复该进程现场信息:*/AX=pcbarearun.ax;BX=pcbarearun.bx;CX=pcbarearun.cx;DX=pcbarearun.dx;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -PC=pcbarearun.pc;PSW=pcbarearun.psw;/*修改指向运行进程的指针*/run=i;return
5、0;/*进程调度函数结束*/create(int x)/*创建进程*/int i;if(pfree=-1)/*空闲进程控制块队列为空*/printf(无空闲进程控制块,进程创建失败n);return 0;i=pfree;/*取空闲进程控制块队列的第一个*/pfree=pcbareapfree.next;/*pfree后移*/*填写该进程控制块内容:*/pcbareai.name=x;pcbareai.status=aready;pcbareai.ax=x;pcbareai.bx=x;pcbareai.cx=x;pcbareai.dx=x;pcbareai.pc=x;pcbareai.psw=x
6、;if(ready.head!=-1)/*就绪队列不空时,挂入就绪队列方式*/pcbareaready.tail.next=i;ready.tail=i;pcbareaready.tail.next=-1;else /*就绪队列空时,挂入就绪队列方式:*/ready.head=i;ready.tail=i;pcbareaready.tail.next=-1;/*进程创建函数结束*/main()/*系统初始化*/名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -int num,j;run=ready.head=ready.tail=block=-1;pfree=0;for
7、(j=0;j0)create(num);scanf(%d,&num);sheduling();if(run!=-1)printf(进程名进程状态寄存器内容:ax bx cx dx pc psw:n);printf(%4d%10d%14d%3d%3d%3d%3d%3dn,pcbarearun.name,pcbarearun.status,pcbarearun.ax,pcbarearun.bx,pcbarearun.cx,pcbarearun.dx,pcbarearun.pc,pcbarearun.psw);return 0;/*main()结束*/实验二可变分区管理方式的主存分配回收模拟一、实验
8、目的深入了解动态分区存储管理方式主存分配回收的实现。/动态分区存储管理方式的主存分配回收#include#include#include#include#include#define n 10/假定系统允许的最大作业为,假定模拟实验中n 值为 10#define m 10/假定系统允许的空闲区表最大为m,假定模拟实验中m值为 10#define minisize 100 ofstream out(output.txt);typedef struct 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -float address;/已分分区起始地址float length;
9、/已分分区长度,单位为字节int flag;/已分配区表登记栏标志,用0 表示空栏目,实验中只支持一个字符的作业名used;/已分配区表 used used_tablen;typedef struct float address;/空闲区起始地址float length;/空闲区长度,单位为字节int flag;/空闲区表登记栏标志,用0 表示空栏目,用1 表示未分配freed;/空闲区表freed free_tablem;/采用最优分配算法分配xk 大小的空间void allocate(char J,float xk)int i,k;float ad;k=-1;for(i=0;i=xk&fr
10、ee_tablei.flag=1)if(k=-1|free_tablei.lengthfree_tablek.length)k=i;if(k=-1)/未找到可用空闲区,返回 cout 无可用空闲区endl;return;/找到可用空闲区,开始分配:若空闲区大小与要求分配的空间差小于msize 大小,则空闲区全部分配;若空闲区大小与要求分配的空间差大于minisize大小,则从空闲区划出一部分分配if(free_tablek.length-xk=minisize)free_tablek.flag=0;ad=free_tablek.address;xk=free_tablek.length;els
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统实验报告全 2022 操作系统 实验 报告
限制150内