辽宁工业大学c语言程序方案牛驰Word文档下载推荐.docx
- 文档编号:15932631
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:14
- 大小:106.51KB
辽宁工业大学c语言程序方案牛驰Word文档下载推荐.docx
《辽宁工业大学c语言程序方案牛驰Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《辽宁工业大学c语言程序方案牛驰Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
101401007
学生姓名
牛驰
专业班级
电子商务101班
程序设计<
报告)题目
报告)任务
程序设计的任务与要求:
<
1)掌握C语言编程的基础知识。
2)较熟练地编写C语言应用程序。
3)了解C语言的常用标准函数、编程技巧、异常处理。
5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
2018年1月4日
目录
第1章课程设计的目的与要求5
1.1课程设计目的5
1.2课程设计的实验环境5
1.3课程设计的预备知识5
1.4课程设计要求5
第2章课程设计内容6
2.1程序功能介绍6
2.2程序整体设计说明6
2.2.1设计思路6
2.2.2数据结构设计及用法说明7
2.2.3程序结构<
流程图)7
2.2.4各模块的功能及程序说明9
2.2.5程序结果9
2.3程序源代码及注释10
第3章课程设计总结16
参考资料17
第1章课程设计的目的与要求
1.1课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C>
》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
1.2课程设计的实验环境
硬件要求能运行Windows2000/XP操作系统的微机系统。
C语言程序设计及相应的开发环境。
1.3课程设计的预备知识
熟悉C语言及C语言开发工具。
1.4课程设计要求
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序使其能正确运行
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告
第2章课程设计内容
2.1程序功能介绍
在多道程序环境下,进程数目往往多于处理机数目,致使他们争用处理机。
这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行。
分配处理机的任务是由进程调度程序完成的。
一个进程被建立后,系统为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织成不同点进程队列。
于是系统中有运行进程队列、就绪队列和各种事件的进程等待队列。
进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。
本课题模拟实现进程调度算法,选用了优先数调度算法和时间片轮转算法。
2.2程序整体设计说明
用C语言实现进程调度-操作系统课程设计设计思想:
“最高优先数优先”调度算法的基本思想是把cpu分配给就绪队列中优先数最高的进程。
采用动态优先数,即优先数在创建进程时给定一个初始值,当进程获得一次cpu后其优先数就减少1。
它用C语言编写的实现模拟进程调度的程序,用户模拟几个进程,输入它们的进程名,优先级,运行时间等,进程的初使状态为就绪状态。
然后就按优先级优先方式调度各个进程,进程的状态也因此会变成等待状态或完成状态。
2.2.1设计思路
进程是当前操作系统下一个被加载到内存的、正在运行的应用程序的实例。
每一个进程都是由内核对象和地址空间所组成的,内核对象可以让系统在其内存放有关进程的统计信息并使系统能够以此来管理进程,而地址空间则包括了所有程序模块的代码和数据以及线程堆栈、堆分配空间等动态分配的空间。
进程仅仅是一个存在,是不能独自完成任何操作的,必须拥有至少一个在其环境下运行的线程,并由其负责执行在进程地址空间内的代码。
在进程启动的同时即同时启动了一个线程,该线程被称作主线程或是执行线程,由此线程可以继续创建子线程。
如果主线程退出,那么进程也就没有存在的可能了,系统将自动撤消该进程并完成对其地址空间的释放。
加载到进程地址空间的每一个可执行文件或动态链接库文件的映象都会被分配一个与之相关联的全局唯一的实例句柄。
该实例句柄实际是一个记录有进程加载位置的基本内存地址。
进程的实例句柄在程序入口函数中通过第一个参数传递,其实际值即为进程所使用的基本地址空间的地址。
对于VC++链接程序所链接产生的程序,其默认的基本地址空间地址为0x00400000,如没有必要一般不要修改该值。
通过创建一个新的进程及在其地址空间内运行的主线程来启动并运行一个新的程序。
具体的,在执行函数时,首先由操作系统负责创建一个进程内核对象,初始化计数为1,并立即为新进程创建一块虚拟地址空间。
随后将可执行文件或其他任何必要的动态链接库文件的代码和数据装载到该地址空间中。
在创建主线程时,也是首先由系统负责创建一个线程内核对象,并初始化为1。
最后启动主线程并执行进程的入口函数RunProc<
),完成对进程和执行线程的创建。
2.2.2数据结构设计及用法说明
通过对进程调度算法的设计,深入理解进程调度的原理
实验内容与要求:
内容:
实现短进程优先调度算法和时间片轮转调度。
要求:
1.进程通过定义一个进程控制块的数据结构<
PCB)来表示;
2.每个进程需要赋予进程信息、进程到达时间、进程需要运行的总时间的属性;
3.在程序进程中,以1为时间片单位;
4.运行时,输入5个进程序列,按照进程的信息输出其执行序列。
流程图)
图2.1进程调度流程图
2.2.4各模块的功能及程序说明
高级调度:
又称作业调度。
其主要功能是根据一定的算法,从输人的一批作业中选出若干个作业,分配必要的资源,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程<
如输人、输出进程),最后把它们的程序和数据调人内存,等待进程调度程序对其执行调度,并在作业完成后作善后处理工作。
中级调度:
又称交换调度。
为了使内存中同时存放的进程数目不至于太多,有时就需要把某些进程从内存中移到外存上,以减少多道程序的数目,为此设立了中级调度。
特别在采用虚拟存储技术的系统或分时系统中,往往增加中级调度这一级。
所以中级调度的功能是在内存使用情况紧张时,将一些暂时不能运行的讲程从内存对换到外存上等待。
当以后内存有足够的空闲空间时,再将合适的进程重新换人内存,等待进程调度。
引人中级调度的主要目的是为了提高内存的利用率和系统吞吐量。
它实际上就是存储器管理中的对换功能
低级调度:
又称进程调度。
其主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。
执行低级调度功能的程序称做进程调度程序,由它实现CPU在进程间的切换。
进程调度的运行频率很高,在分时系统中往往几十毫秒就要运行一次。
进程调度是操作系统中最基本的一种调度。
在一般类型的操作系统中都必须有进程调度,而且它的策略的优劣直接影响整个系统的计能。
2.2.5程序结果
图2.2
图2.3
2.3程序源代码及注释
*8.3.2源程序*/
intround。
/*进程时间轮转时间片*/
intcputime。
/*进程占用CPU时间*/
intneedtime。
/*进程到完成还要的时间*/
intcount。
/*计数器*/
charstate。
/*进程的状态*/
structnode*next。
/*链指针*/
}PCB。
PCB*finish,*ready,*tail,*run。
/*队列指针*/
intN。
/*进程数*/
/*将就绪队列中的第一个进程投入运行*/
firstin(>
{
run=ready。
/*就绪队列头指针赋值给运行头指针*/
run->
state='
R'
。
/*进程状态变为运行态*/
ready=ready->
next。
/*就绪对列头指针后移到下一进程*/
}
/*标题输出函数*/
voidprt1(chara>
if(toupper(a>
=='
P'
>
/*优先数法*/
printf("
name
cputime
needtime
priority
state\n"
else
count
round
state\n"
/*进程PCB输出*/
voidprt2(chara,PCB*q>
/*优先数法的输出*/
%-10s%-10d%-10d%-10d%c\n"
q->
name,
q->
cputime,q->
needtime,q->
prio,q->
state>
else/*轮转法的输出*/
%-10s%-10d%-10d%-10d%-10d%-c\n"
count,q->
round,q->
/*输出函数*/
voidprt(charalgo>
PCB*p。
prt1(algo>
/*输出标题*/
if(run!
=NULL>
/*如果运行指针不空*/
prt2(algo,run>
/*输出当前正在运行的PCB*/
p=ready。
/*输出就绪队列PCB*/
while(p!
{
prt2(algo,p>
p=p->
}
p=finish。
/*输出完成队列的PCB*/
getch(>
/*压任意键继续*/
/*优先数的插入算法*/
insert1(PCB*q>
PCB*p1,*s,*r。
intb。
s=q。
/*待插入的PCB指针*/
p1=ready。
/*就绪队列头指针*/
r=p1。
/*r做p1的前驱指针*/
b=1。
while((p1!
&
b>
/*根据优先数确定插入位置*/
if(p1->
prio>
=s->
p1=p1->
else
b=0。
if(r!
=p1>
/*如果条件成立说明插入在r与p1之间*/
r->
next=s。
s->
next=p1。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 辽宁 工业大学 语言 程序 方案