操作系统课程设计

发布 2022-10-05 11:20:28 阅读 5643

学院名称: 信息科学与工程学院

专业班级: 信息管理与信息系统08-2

姓名。学号。

2024年12月28日。

1、进程调度算法的模拟3

1.1 设计目的3

1.2 任务及要求3

1.3 算法及数据结构4

1.4 实验结果及分析16

1.5 实验总结21

2、银行家算法的模拟22

2.1 设计目的22

2.2 任务及要求22

2.3 算法及数据结构22

2.4 实验结果及分析33

2.5 实验总结36

3、磁盘调度算法的模拟37

3.1 设计目的37

3.2 任务及要求37

3.3 算法及数据结构37

3.4 实验结果及分析53

3.5 实验总结57

4、课程设计总结58

1 设计目的。

同时通过用c语言编程实现进程调度的算法,更好地掌握操作系统的原理及实现方法。

2 任务及要求。

2.1 用语言来实现对n个进程采用不同调度算法的进程调度。

2.2.每个用来标识进程的进程控制块pcb用结构来描述,包括以下字段:

1)进程编号id,其中0为闲逛进程,用户进程的标识数为1,2,3…。

2)进程优先级priority,闲逛进程(idle)的优先级为0,用户进程的优先级大于0,且随机产生,优先数越大,优先级越高。

3)进程占用的cpu时间cputime,进程每运行一次,累计值等于4。

4)进程总共需要运行时间alltime,利用随机函数产生。

5)进程状态,0:就绪态;1:运行态;2:阻塞态。

6)队列指针next,用来将多个进程控制块pcb链接为队列。

2.3. 优先数改变的原则。

1)进程在就绪队列中每呆一个时间片,优先数增加1。

2)进程每运行一个时间片,优先数减3。

2.4. 在调度前,系统中拥有的进程数pcb_number由键盘输入,经初始化后,所有的进程控制块pcb链接成就绪队列。

3 算法及数据结构。

3.1 算法的整体思想。

对于先到先服务算法,只需要给定每个进程的进程号,然后依次顺序执行就可以了。对于sjf(最短作业优先)调度算法需要判断作业的alltime时间,alltime最小的最先执行,依次按照时间的从小到大执行进程。对于优先度调度算法,需要先判断优先度的大小,优先度最大的先执行,进程运行完毕以后,按照优先数的改变的原则进行改变,然后继续判断所有的优先数的大小,依旧是优先数最大的先执行,直到执行完毕。

对于rr时间片轮转调度算法,需要依次执行时间片用完即阻塞,转交给下一个进程执行,直到所有进程运行完毕。

3.2 先到先服务(fcfs)算法模块。

3.2.1 功能。

模拟进程的先到先服务调度算法,按照进程编号依次运行。

3.2.2 数据结构。

void fcfs ()

3.2.3 算法。

void fcfs ()

int i=1;

pcb *p,*temp;

while (isallfinish ()false)

if(p==null)

return;

for(p=temp->next ;p!=null;p=p->next) /寻找到达时间最短的进程。

temp->status = running;

temp->cpu_time = temp->all_time ;

printf("第%d步:",i++)

output();

temp->status = finish;

3.3 最短作业优先(sjf)算法模块。

3.3.1 功能。

将每个进程与其下一个cpu区间段相关联。当cpu为可用时,它会赋给具有最短后续cpu区间的进程。如果两个进程具有同样长度的cpu区间,那么可以使用fcfs调度来处理。

3.3.2 数据结构。

void sjf ()

3.3.3 算法。

void sjf ()

int i=1;

pcb *p,*temp;

temp = head->next ;

for(p=temp->next ;p!=null;p=p->next )

temp->status = running;

temp->cpu_time = temp->all_time ;

printf("第%d步:",i++)

output();

temp->status = finish;

while (isallfinish ()false)

if(p==null)

return;

for(p=temp->next ;p!=null;p=p->next)

temp->status = running;

temp->cpu_time = temp->all_time ;

printf("第%d步:",i++)

output();

temp->status = finish;

3.4 优先级调度算法模块。

3.4.1 功能。

1.每个进程被赋予一个优先级数字(优先权)

分配给优先权高的进程(优先级数字越小,则优先权越大)

3.4.2 数据结构。

void ps ()

3.4.3 算法。

void ps ()

int i=1;

pcb *p,*temp;

temp = head->next ;

for(p=temp->next ;p!=null;p=p->next )

temp->status = running;

temp->cpu_time = temp->all_time ;

printf("第%d步:",i++)

output();

temp->status = finish;

while (isallfinish ()false)

if(p==null)

return;

for(p=temp->next ;p!=null;p=p->next)

if(p->status==ready )

if(p->priority > temp->priority)

temp=p;

else if(p->priority== temp->priority )

if(p->arrive_time < temp->arrive_time)

操作系统课程设计

课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...

操作系统课程设计

银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...

操作系统课程设计

学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....