工大在线

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2881|回复: 7
打印 上一主题 下一主题

我们去年的操作系统课程设计//有代码说明

 关闭 [复制链接]

70

主题

0

好友

590

积分

荣誉会员

NO PAIN NO GAIN

Rank: 8Rank: 8

该用户从未签到

西工币
6628 枚
好评度
-1 点
声望
370 点
注册时间
2006-12-3
帖子
313
积分
590
UID
6480

终身成就奖 特殊贡献奖 论坛元老 宣传大使奖

跳转到指定楼层
1#
发表于 2007-5-28 22:35:41 |只看该作者 |倒序浏览
现在基本上都开始期末课程设计了,会还好`不会头就大了,这是我们去年的操作系统课程设计,用C语言实现操作系统的进程的模拟调度,设计时间一周,这个我一天时间就写出来了,而且还是A,我们那班就只有两个A,拿出来分享一下~~希望有帮助~

题目如下
批处理系统的作业调度模拟
一、课程设计目的
1、加深对作业概念的了解;
2、深入了解批处理系统如何组织作业、管理作业和调度作业;
3、巩固相关的理论知识;
二、课程设计预备知识
1、作业控制块的概念和结构;
2、作业的创建;
3、作业的调度算法;
4、c语言的相关知识
三、课程设计内容要求
   1、编写程序完成批处理系统中的作业块的建立、初始化和调度;
   2、要求采用响应比高优先的作业调度算法、短作业优先算法;
四、具体要求
1、首先确定作业控制块的内容;
2、要求建立两个算法(调度)的子函数,并输出已分配作业的作业名;
3、要求在主函数中创建JCB内容,并输出已创建的作业信息;
4、要求设计菜单:可供用户进行选择,分别执行不同的调度;
5、尽量使用C语言中的window函数来实现;

源代码:
                  #include "stdlib.h"
typedef struct jcb
{
char name[4];
int length;
int printer;
int tape;
int runtime;
int waittime;
struct jcb *next;
}JCB;
JCB *head;
int tape,printer;
long memory;
shedule( )
{
float w,k;
JCB *p,*q,*s,*t;
do
{
p=head;
s=NULL;
q=NULL;
k=0;
while(p!=NULL)
{
if(p->length<=memory&&p->tape<=tape&&p->printer<=printer)
{
w=(float)(p->waittime)/p->runtime;
if(q==NULL||w>k)
{
k=w;
q=p;
t=s;
}
}
s=p;
p=p->next;
}
if(q!=NULL)
{
if(t==NULL)
head=head->next;
else
t->next=q->next;
memory=memory-q->length;
tape=tape-q->tape;
printer=printer-q->printer;
printf("Selects:%s\n",q->name);
}
}while(q!=NULL);
}
inital()
{
int w,k;
JCB *p,*q,*s,*t;
do
{
p=head;
s=NULL;
q=NULL;
k=0;
while(p!=NULL)
{
if(p->length<=memory&&p->tape<=tape&&p->printer<=printer)
{
w=1/(p->runtime);
if(q==NULL||w>k)
{
k=w;
q=p;
t=s;
}
}
s=p;
p=p->next;
}
if(q!=NULL)
{
if(t==NULL)
head=head->next;
else
t->next=q->next;
memory=memory-q->length;
tape=tape-q->tape;
printer=printer-q->printer;
printf("Selects:%s\n",q->name);
}
}while(q!=NULL);
}
main( )
{
int i;
int x ,n;
char name[4];
int size,tcount,pcount,wtime,rtime;
JCB *p;
memory=65536;
tape=4;
printer=2;
head=NULL;
printf("\n please inputs the quantity of JCB...\n");
scanf("%d",&n);
printf("---------------------------------------------------------------\n");
for(i=0;i<n;i++){
printf("|name | length | tape | printer | waittime | runtime|\n");
scanf("%s\t%d\t%d\t%d\t%d\t%d",&name,&size,&tcount,&pcount,&wtime,&rtime);
p=(JCB*)malloc(sizeof(JCB));
strcpy(p->name,name);
p->length=size;
p->printer=pcount;
p->tape=tcount;
p->runtime=rtime;
p->waittime=wtime;
p->next=head;
head=p;}
printf("---------------------------------------------------------------\n"
"[1]_The response compares first the algorithm<HRN>\n"
"[2]_Short work first algorithm<SJF>\n"
       "---------------------------------------------------------------\n"
"please chose [1]or[2]...\n");
scanf("%d",&x);
switch (x){
case 1:shedule();
printf("---------------------------------------------------------------\n");
break;
case 2:inital();
printf("---------------------------------------------------------------\n");
break;
default:printf("\n error..please try again!\n");main();
}
}



附件里有程序说明

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏0 顶!~顶!~0 扔鸡蛋~扔鸡蛋~0


生活来源现实,做好今天,未来在冥冥之中  就属于你。http://www.qikoo.org/

70

主题

0

好友

590

积分

荣誉会员

NO PAIN NO GAIN

Rank: 8Rank: 8

该用户从未签到

西工币
6628 枚
好评度
-1 点
声望
370 点
注册时间
2006-12-3
帖子
313
积分
590
UID
6480

终身成就奖 特殊贡献奖 论坛元老 宣传大使奖

2#
发表于 2007-5-28 22:46:38 |只看该作者
这是运行结果:

第一次执行程序:
------------------------------------------------------------------------------------------------------
输入作业名、作业大小、所需磁带机数、打印机数、等待时间、运行时间
S1             400          2            1        1        4
S2             256          2            1        3        1
运行结果:
采用高相应比算法调度的结果:为S2
采用高相应比算法调度的结果:为S1
Please press any key to continue…
-------------------------------------------------------------------------------------------------------
第二次执行程序:
-------------------------------------------------------------------------------------------------------
输入作业名、作业大小、所需磁带机数、打印机数、等待时间、运行时间
S1             226          1            1        3         5
S2             600          3            1        3         3
运行结果:
采用短作业优先调度算法的执行结果:S2
采用短作业优先调度算法的执行结果:S1
Please press any key to continue…
-------------------------------------------------------------------------------------------------------


生活来源现实,做好今天,未来在冥冥之中  就属于你。http://www.qikoo.org/
回复

使用道具 举报

0

主题

0

好友

1

积分

书生

Rank: 2

该用户从未签到

西工币
10 枚
好评度
0 点
声望
0 点
注册时间
2008-2-14
帖子
1
积分
1
UID
14052
3#
发表于 2008-2-14 13:38:08 |只看该作者
要教作业了  谢谢LZ
回复

使用道具 举报

0

主题

0

好友

1

积分

书生

Rank: 2

该用户从未签到

西工币
10 枚
好评度
0 点
声望
0 点
注册时间
2008-6-23
帖子
1
积分
1
UID
16271
4#
发表于 2008-6-23 02:26:52 |只看该作者

谢谢你咯谢谢

谢谢里哦谢谢谢谢
回复

使用道具 举报

0

主题

0

好友

1

积分

书生

Rank: 2

该用户从未签到

西工币
10 枚
好评度
0 点
声望
0 点
注册时间
2008-6-25
帖子
1
积分
1
UID
16364
5#
发表于 2008-6-25 10:32:59 |只看该作者

看看怎样

看看效果怎样,正在设计一个
回复

使用道具 举报

8

主题

0

好友

138

积分

秀才

Rank: 3Rank: 3

该用户从未签到

西工币
3557 枚
好评度
2 点
声望
251 点
注册时间
2006-9-3
帖子
10
积分
138
UID
2806
6#
发表于 2008-9-8 20:16:41 |只看该作者
天啊。你会把那些小弟弟妹妹带坏的。。。
我是好孩子。
回复

使用道具 举报

17

主题

0

好友

35

积分

书生

Rank: 2

该用户从未签到

西工币
430 枚
好评度
0 点
声望
17 点
注册时间
2008-8-29
帖子
26
积分
35
UID
17299
7#
发表于 2008-9-10 14:16:08 |只看该作者
楼主写的好详细....谢谢
正在学习ASP.net新技术LINQ
http://www.china-pub.com/39938
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|xatubbs.com ( 苏ICP备11050183号 )

GMT+8, 2025-7-22 15:05 , Processed in 0.112176 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部