操作系统实验指导书2.docx
- 文档编号:18414425
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:17
- 大小:42.26KB
操作系统实验指导书2.docx
《操作系统实验指导书2.docx》由会员分享,可在线阅读,更多相关《操作系统实验指导书2.docx(17页珍藏版)》请在冰点文库上搜索。
操作系统实验指导书2
操作系统
实验指导书
刘正余编
2010年11月8日
实验一进程的描述与控制
实验题目:
进程的描述与控制
实验要求:
1创建PCB块,用静态链表存储结构;
2实现对空闲PCB块的管理;
1
3
E
13
4
6
8
10
9
D
2
B
15
12
C
-1
16
A
14
G
-1
K
19
17
18
-1
J
-1
3初始化PCB块所包含的主要信息;
4创建就绪进程队列;
5创建新进程并将其插入到就绪队列中;
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
6
实现进程的调度,进程的唤醒等操作。
实验原理:
emp
空闲队列
ready
就绪队列
run
运行作业
block
阻塞队列
基本功能实现及输入/出:
附录:
主要功能的程序清单
typedefstructpcb{
charname;
intstu;
}PCB,*Plink;
PCBpcba[20];
Plinkrun,ready,block,empty;
voidunitr()
{
inti;
ready=pcba+5;
printf("pleasefirstreadypcb:
\n");
scanf("%d",&pcba[5].stu);
while(pcba[5].stu>19)
scanf("%d",&pcba[5].stu);
i=pcba[5].stu;
while(i>0)
{
printf("pleaseenternextreadypcb:
\");
scanf("%d",&pcba[i].stu);
while(pcba[i].stu>19)
scanf("%d",&pcba[i].stu);
i=pcba[i].stu;}
}
voidunitm()
{
inti;
empty=pcba;
printf("pleasefirstemptypcb:
\n");
scanf("%d",&pcba[0].stu);
while(pcba[0].stu>19)
scanf("%d",&pcba[0].stu);
i=pcba[0].stu;
while(i>0)
{
printf("pleaseenternextemptypcb:
\");
scanf("%d",&pcba[i].stu);
while(pcba[i].stu>19)
scanf("%d",&pcba[i].stu);
i=pcba[i].stu;}
}
voidunitb()
{
inti;
block=pcba+9;
printf("pleasefirstblockpcb:
\n");
scanf("%d",&pcba[9].stu);
while(pcba[9].stu>19)
scanf("%d",&pcba[9].stu);
i=pcba[9].stu;
while(i>0)
{
printf("pleaseenternextemptypcb:
\");
scanf("%d",&pcba[i].stu);
while(pcba[i].stu>19)
scanf("%d",&pcba[i].stu);
i=pcba[i].stu;}
}
intnewp()
{
inti,t;
charch;
i=empty[0].stu;
if(i==-1)printf("processtoomany!
\n");
else
{
printf("enterprocessname:
\n");
scanf("%c",&ch);
t=pcba[i].stu;
pcba[i].name=ch;
empty=pcba+t;
t=ready[0].stu;
if(t==-1){
pcba[i].stu=-1;
ready[0].stu=i;
}
else
{
while(pcba[t].stu!
=-1)t=pcba[t].stu;
pcba[i].stu=-1;
pcba[t].stu=i;
}
returni;
}
intshed()
{
inti;
i=ready[0].stu;
if(i==-1)printf("Nowaitprocess!
\n");
else
ready[0].stu=pcba[i].stu;
returni;
}
实验二进程的同步与互斥(选做)
实验题目:
学生成绩表的管理
实验要求:
1建立一循环队列用以组织学生数据(可存储20个学生成绩)
2文件“fileX.in”输入数据
3文件“filey.out”输出数据
4“fileX.in”和“filey.out”可并行执行,“fileX.in”必须互斥,“filey.out”互斥
5队列满应阻塞“fileX.in”,队列空应阻塞“filey.out”
6具有下列输出功能:
查询队列的状况,当前插入和删除位置
提示:
循环队列仅剩下一个空闲单元定义为“满状态”,插入删除位置相同为“空状态”,“X”“Y”表示“任意变量”,调度算法为“FIFC”,Wait(s)和Signal(s)用函数表示
实验三作业调度
实验题目:
有四道作业已经形成了如下调度格局(令时刻为T=0),以时间片为1,模拟记录A、B、C、D的执行过程
B2
A6
C4
D3
实验要求:
1合理组织数据结构管理A、B、C、D
2记录A、B、C、D所有执行点
3统计A、B、C、D的周转时间与四道作业执行完的平均周转时间
4计算系统的吞吐量
5具有下列输出功能:
A、B、C、D的执行顺序,周转时间,平均周转时间,系统的吞吐量
实验原理:
1结构组织:
(1)
作业队列:
D
3
C
4
B
2
A
6
head
结点结构定义:
typedefstructtime{
charch;
intsize;
structtime*next;
}TS;
(2)执行点记录结构:
头结点结构定义:
typedefstructhnode{
charname;
char*rtable;
}HN;
2 算法设计:
(1)作业调度:
当循环链表为空;
(2) 周转时间=执行点记录尾减头加1
基本功能实现:
#include"stdio.h"
#include"stdlib.h"
typedefstructtime{
charch;
intsize;
structtime*next;
}TS;
typedefstructhnode{
charname;
int*rtable;
intk;
}HN;
TS*head;
HN*node;
intt=1;
intcreatjobl()
{
inti=0;
TS*p,*s;
charch;
head=(TS*)molloc(sizeof(TS));
p=head;
p->next=p;
scanf("%c",&ch);
while(ch>='A'&&ch<='Z')
{
i++;
s=(TS*)molloc(sizeof(TS));
s->ch=ch;
scanf("%d",&s->size);
s->next=p->next;
p->next=s;
p=s;
scanf("%c",&ch);
}
returni;
}
voidpshed(intn)
{
TS*p=head->next,q;
inti,j;
node=(HN*)colloc(n,sizeof(HN));
for(i=0;i
{
node[i].name=p->ch;
node[i].rtable=(int*)colloc(p->size/t,2);
node[i].k=0;
}
i=0;
q=head;
p=head->next;
while(head->next!
=head)
{
j=0;
while(node[j].name!
=p->ch)j++;
node[i].rtable[node[i].k++]=i;
i=i+t;
p->size--;
if(!
p->size)
{
q->next=p->next;
free(p);
p=q->next;
}
else
{
q=p;
p=p->next;
}
}
}
voidputp(intn)
{
inti,j;
for(i=0;i { printf("%c: ",node[i].name); for(j=0;j printf("%d->",node[i].rtable[j]); printf("%d\n",node[i].rtable[j]); } } 提示: 可以用循环结构模拟T的增长 实验四死锁 实验题目: 银行与客户之间的“良性”关系的模拟系统,表1为银行对象,表2为客户对象 实验要求: 1银行处于“安全状态”的条件 2银行根据“安全状态”提供贷款 3“安全状态”应存储“状态序列” 4有“不安全”警示,并采取积极措施(释放某些客户占用资源的方法) 5输入数据: 初始化数据,客户贷款请求 6输出数据: “安全贷款序列” 表一 币种 行名 人民币 美元 欧元 港币 工行 a11 a12 a13 a14 农行 a21 a22 a23 a24 商行 a31 a32 a33 a34 建行 a41 a42 a43 a44 表二 币种 单位名 人民币 美元 欧元 港币 皖西学院 b11 b12 b13 b14 农机厂 b21 b22 b23 b24 手拖厂 b31 b32 b33 b34 客户厂 b41 b42 b43 b44 提示: (1)“安全状态”的条件是 bij<= 要求1<=j<=4,1<=k<=4均成立。 (2)i的符合条件 (1)的序列即为“安全状态序列”,否则为“不安全状态” 实验五存储管理 实验题目: 分页管理系统的设计 实验要求: 1设计页表 2设计页面大小 3为一个作业分配页架 4模拟单个作业的页面共享 5模拟多个作业的页面共享 6模拟页的对换 实验六*设备管理 实验题目: 中断的实现 (存储器中有一个首地址为BUFFER的缓冲区,存放着一串ASCII码字符) 实验要求: 1在主程序运行期间,每隔5秒钟响铃一次 2当键盘上的某个键被按下时,主程序和响铃都被挂起,显示器显示BUFFER缓冲区中的字符串,然后等待下一次按键引起的键盘中断 3当缓冲中断发生后,恢复主程序和响铃 提示: 请参阅《IBM-PC汇编语言程序设计实验教程》沈美明温冬婵张赤红编著的键盘和显示器中断源的定义 实验七*文件和磁盘管理 实验题目: 管理在外存上的学生成绩 实验内容: 1有5个学生,每个学生有板3门课的成绩,从键盘输入以数据,计算平均成绩,将原有数据和计算出的平均分数据存放在磁盘文件“stud”中 2将“stud”文件中的数据,按平均分进行排序处理,将已排序的学生数据存放入一个新文件“stu-sort”中 3将已排序的学生成绩文件进入插入处理。 插入一个学生的三门课的成绩。 程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。 实验要求: 1掌握文件以及缓冲文件系统,文件指针的概念 2学会使用文件打开、关闭、读写等文件操作函数 3用缓冲文件系统对文件进行简单的操作 提示: 请参阅 参考书目: 《计算机操作系统》汤字瀛、哲风屛、汤小丹编 西安电子科技大学出版社1996 《计算机操作系统实验教程》张尧学编 清华大学出版社1992 《IBM-PC汇编语言程序设计实验教程》沈美明温冬婵张赤红编 《C程序设计解题与上机指导》谭浩强主编 清华大学出版社1999
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 指导书