目录。一、 设计目的。
二、 需求分析。
三、 设计原理与分析。
四、 流程图。
五、 主要函数说明。
六、 源程序。
七、 运行结果分析。
八、 课设总结。
一、 设计目的。
课程设计目的:
操作系统是计算机系统的核心系统软件,它负责控制和管理整个系统的资源并组织用户协调使用这些资源,使计算机高效的工作。《操作系统课程设计》是《操作系统》理论课的必要补充,是复习和检验所学课程的重要手段,本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好的掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。
本课程设计以windows操作系统为实验平台,进行源**分析和修改。通过该课程设计,使学生掌握windows操作系统各部分结构、实现机理和各种典型算法;系统的了解操作系统的设计和实现思路,运用内核开发环境实现对内核的修改,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。
课题设计目的:
处理机调度是操作系统中非常重要的部分。为深入理解进程管理部分的功能,设计时间片轮转法进行cpu调度算法,模拟实现处理机的调度。通过本次课程设计理解进程调度的概念,深入理解进程控制的功能、进程的创建以及进程各个状态之间的转换过程,实现时间片轮转算法调度进程。
1、学会使用c++或其他高级编程语言编写或调试。
2、加深理解时间片轮转法的执行逻辑。
3、体会时间片轮转算法的具体实现方法。
二、 需求分析。
设计要求。在多道程序或多任务系统中,系统同时处于就绪状态的进程有若干个。为了使系统中的各进程有条不紊地进行,必须选择某种调度策略,以选择一个进程占用处理机。
要求用时间片轮转算法模拟单处理机调度,以巩固和加深处理机调度的概念。
1)假设系统有5个进程,每个进程用一个进程控制块pcb来代表。pcb包括:进程名、链接指针、到达时间、估计运行时间和进程状态。
其中,进程名即进程标识。链接指针指出下一个到达进程的进程控制块地址,按照进程到达的顺序排队,统一设置一个队头和队尾指针分别指向第一个和最后一个进程,新生成的进程放队尾。估计运行时间:
可由设计者任意指定一个时间值。到达时间:进程创建时的系统时间或由用户指定,调度时,总是选择到达时间最早的进程。
进程状态:为简单起见,假定进程有两种状态,就绪和完成,并假定进程一创建就处于就绪状态,用r表示,当一个进程运行结束时,就将其置成完成态,用c表示。
2)为每个进程任意确定一个要求运行时间和到达时间。
3)按照进程到达的先后顺序排成一个循环队列。再设一个对首指针指向第一个到达进程的首址。
4)执行处理机调度时,开始选择对首的第一个进程运行。另外再设一个当前运行进程的指针,指向当前正运行的进程。
5)由于本实验是模拟实验,所以对被选中进程并不实际启动运行,而只是执行:
a)估计运行时间减1;
b)输出当前运行进程的名字。
用这两个操作来模拟进程的一次运行。
6)进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。同时还应判断该进程的剩余运行时间是否为零。若不为零,则等待下一轮的运行;若该进程的剩余运行时间为零,则将该进程的状态置为完成态c,并退出循环队列。
7)若就绪队列不空,则重复上述的(5)和(6)步骤直到所有进程都运行完为止。
8)在所设计的调度程序中,应包含显示或打印语句。以便显示或打印每次选中进程的名称及运行一次后队列的变化情况。
需求分析。1) 程序可以设置时间片的长短。
2) 程序可以创建进程控制块pcb信息(包括进程名、进程状态、到达时间、运行时间等),其中进程名是进程的标识。到达时间:进程创建时的系统时间或用户指定,调度时,总是选择到达时间最早的进程。
进程状态:为简单起见,假定进程有两种状态,就绪和完成,并假定进程创建即处于就绪状态r,当进程运行结束时,将其置为完成态c。
3) 程序运行时间-1,根据该进程剩余的运行时间是否为0,判断显示当前进程块的执行状态。
三、 设计原理与分析。
设计原理:在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把cpu分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。
当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定的时间内响应所有用户的请求。
设计分析:1. 假设有5个程序,规定它们的信息如下:
2. 设置时间片为1
3.时间片轮转法进行cpu调度则如下所分析:
四、 流程图。nyy
ynnyn
y五、 主要函数说明。
create_insert_linklist函数:设置手动输入进程名、到达时间、运行时间;
pcb_linklist函数:设置时间片大小、构造时间片轮转算法、显示输出语句;
main函数:设置界面、调用以上函数;
六、 源程序。
定义与声明。
#include<>
#include<>
#include<>
char x;
int start;
typedef struct
p1->next=p;
p->next=p2;
f1=f1-1;
pcb_linklist函数。
void pcb_linklist(int f2)
linklist h;
listnode *rear,*p,*q;
int t,t,time,m,n;
p=(listnode*)malloc(sizeof(listnode));
p=null;
h=p;cout< cout< cout《请输入时间片大小: "
cin>>t;
t=t;h=head->next;
head->next=head->next->next;
rear=h;
rear->next=null;
time=h->
while(f2!=0)
n=0;while(t!=0)
t=t-1;
time=time+1;
if(head->next!=null)
if(head->next->