1、 计算机操作系统课程设计报告 60 2020年4月19日 文档仅供参考,不当之处,请联系改正。 《操作系统原理》 实 验 报 告 院 (部): 管理工程学院 专 业:信息管理与信息系统 实验项目:实验一 二 三 五 班 级:信管102 姓 名:张凤丹 学 号: 021418 目 录 引 言 4 实验一、模拟进程创立、终止、阻塞、唤醒原语 6 实验目的: 6 实验内容: 6 实验步骤: 7 实验代码: 7 程序运行结果及分析 12
2、实验感想: 13 实验二、模拟进程调度功能 14 实验目的: 14 实验内容: 14 实验步骤: 14 实验代码: 15 程序运行结果及分析 19 实验感想: 20 实验三:模拟动态分区首次适应分配和回收算法 20 实验目的: 20 实验内容: 20 实验步骤: 20 实验代码: 21 程序运行结果及分析 27 实验感想: 28 实验五:模拟使用银行家算法判断系统的状态 28 实验目的: 28 实验步骤: 28 实验代码: 28 程序运行结果及分析 33 实验感想: 34 引 言
3、 操作系统是信息管理与信息系统专业一门重要的专业理论课程,了解和掌握操作系统的基本概念、功能和实现原理,对认识整个计算机系统的工作原理十分重要。 操作系统实验是操作系统课程的一个重要组成部分,经过试验环节的锻炼使同学们不但能够对以前的所学过的基础知识加以巩固,同时能够经过上机实验,对操作系统的抽象理论知识加以理解,最终达到融会贯通的目的,因此,实验环节是同学们理解、掌握操作系统基本理论的一个重要环节。 本实验指导书,根据教材中的重点内容设定了相应的实验题目,由于实验课程的学时有限,我们规定了必做题目和选做题目,其中必做题目必须在规定的上机学时中完成,必须有相应的预习报告和实验报告。选
4、做题目是针对有能力或感兴趣的同学利用课余时间或上机学时的剩余时间完成。 实验一、模拟进程创立、终止、阻塞、唤醒原语 实验目的: 经过设计并调试创立、终止、阻塞、唤醒原语功能,有助于对操作系统中进程控制功能的理解,掌握操作系统模块的设计方法和工作原理。 实验内容: 1、设计创立、终止、阻塞、唤醒原语功能函数。 2、设计主函数,采用菜单结构(参见后面给出的流程图)。 3、设计“显示队列”函数,目的能将就绪、阻塞队列中的进程信息显示在屏幕上,以供随时查看各队列中进程的变化情况
5、
实验步骤:
其中:
进程名用P1,P2标识。
优先级及运行时间:为实验题目二做准备。
状态为:就绪、运行、阻塞,三种基本状态。
指针:指向下一个PCB。
1、进程PCB中应包含以下内容:
进程名
优先级
运行时间
状态
指针
2、系统总体结构:
开始
系统主菜单
1…创立
2…阻塞
3…唤醒
4…终止
5…显示
0…退出
请输入您需要的功能(0-5):
输入选择=?
5
4
3
2
1
0
退出
创立
阻塞
唤醒
终止
显示
结束
实验代码:
#include 6、h>
#include 7、菜单---------------------\n\n\n");
printf("0----退出系统\n");
printf("1----创立进程\n");
printf("2----堵塞进程\n");
printf("3----唤醒进程\n");
printf("4----终止进程\n");
printf("5----显示进程\n");
printf("------------------------------------------------\n");
strcpy(pcb1[0].name,"s");//堵塞队 8、列
pcb1[0].priority = 2;
pcb1[0].runtime = 3;
//printf("%s %d %d",pcb1[0].name,pcb1[0].priority,pcb1[0].runtime);
while(1)
{
printf("请输入你的选择:");
scanf("%d",&x);
if(x==0)
break;
if(x==1)
{
printf("-----------------创立进程---------- 9、\n");
printf("进程名:");
scanf("%s",&pcb[k].name);
printf("优先级:");
scanf("%d",&pcb[k].priority);
printf("运行时间:");
scanf("%d",&pcb[k].runtime);
k=k+1;
}
if(x==2)
{
printf("-----------------堵塞进程--------------- 10、\n");
printf("请输入要查找的进程:");
scanf("%s",name);
for(j=0;j<=k;j++)
{
if(strcmp(pcb[j].name,name)==0)
{
t=j;
strcpy(pcb2[a].name,pcb[t].name);
pcb2[a].priority = pcb[t].priority;
pcb2[a].runtime = pcb[t].runtime;
11、 strcpy(pcb1[r].name,pcb2[a].name);
pcb1[r].priority = pcb2[a].priority;
pcb1[r].runtime = pcb2[a].runtime;
r=r+1;
a=a+1;
for(i=t;i<=k;i++)
{
strcpy(pcb[i].name,pcb[i+1].name);
pcb[i].priority = pcb[i+1].priority;






