操作系统课程设计报告

发布 2022-10-05 12:43:28 阅读 2115

目录。一。 需求分析 2

二。 系统的概要设计 2

三。 系统的详细设计 3

四。 系统的主要源** 3

五。 系统测试及调试 8

六。 心得体会 12

七。 主要参考文献 12

一。 需求分析。

在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验是模拟在单处理器情况下的处理器调度,加深了解处理器调度的工作。

二。 系统的概要设计。

1 .系统的主要功能。

按顺序为每一个进程一次只分配一个时间片的时间。算法完成的功能就是将各个进程按照时间片轮转运行的动态过程显示出来。

2 .流程图。

3 .运行环境要求。

windous 2000以上操作系统, visual c++ 6.0

4 .数据结构设计。

char namepcb名字。

int runtimepcb已运行时间。

int requesttime; pcb要求运行时间。

int superpcb优先级。

char statuspcb状态。

struct pcb* head; 指向上一个pcb结构体的指针变量。

struct pcb* next; 指向下一个pcb结构体的指针变量。

假定系统有五个进程,每一个进程用一个进程控制块pcb来代表。进程控制块的格式为:

其中,进程名——作为进程的标识,假设五个进程的进程名分别为q1,q2,q3,q4,q5。

指针——进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。

要求运行时间——假设进程需要运行的单位时间数。

已运行时间——假设进程已经运行的单位时间数,初始值为“0”。

状态——有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“r”表示。当一个进程运行结束后,它的状态为“结束”,用“e”表示。

三。 系统的详细设计。

1) 每次运行所设计的处理器调度程序前,为每个进程任意确定它的“要求运行时间”。

2) 把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到运行的进程。例如,当前轮到p2执行,则有:标志单元。

3) 处理器调度总是选择标志单元指示的进程运行。由于本实验是模拟处理器调度的功能,所以,对被选中的进程并不实际的启动运行,而是执行:

已运行时间+1

来模拟进程的一次运行,表示进程已经运行过一个单位的时间。

注意:在实际的系统中,当一个进程被选中运行时,必须置上该进程可以运行的时间片值,以及恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片。在这时省去了这些工作,仅用“已运行时间+1”来表示进程已经运行满一个时间片。

5) 进程运行一次后,应把该进程的进程控制块中的指针值送到标志单元,以指示下一个轮到运行的进程。同时,应判断该进程的要求运行时间与已运行时间,若该进程的要求运行时间已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应指导它的状态修改成“结束”(e)且退出队列。

此时,应把该进程的进程控制块中的指针值送到前面一个进程的指针位置。

6) 若“就绪”(r)状态的进程队列不为空,则重复上面的(4)和(5)的步骤,直到所有的进程都成为“结束”(e)状态。

7) 在所设计的程序中应有显示或打印语句,能显示或打印每次选中进程的进程名以及运行一次后进程队列的变化。

8) 为五个进程任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中的进程名以及进程控制块的动态变化过程。

四。 系统的主要源**。

#include <>

#include <>

#define null 0

char name[5]=;

int super[5]=;

///定义pcb

struct pcb ;

struct pcb pcb1,pcb2,pcb3,pcb4,pcb5,*p,*q定义5个pcb进程。

///定义pcb各参数的初值,输入各个进程的运行时间。

void value()

//定义pcb名。

//定义pcb优先级。

//定义pcb状态,初态为'r'

'r';'r';

'r';'r';

'r';//定义pcb运行时间,初值为0

//给pcb的要求运行时间赋值。

cout< cout<<"请给各个pcb的要求运行时间赋值(int):"cout<<"第一个pcb "<要求运行的时间为:";

cin>>

cout<<"第二个pcb "<要求运行的时间为:";

cin>>

cout<<"第三个pcb "<要求运行的时间为:";

cin>>

cout<<"第四个pcb "<要求运行的时间为:";

cin>>

cout<<"第五个pcb "<要求运行的时间为:";

cin>>

cout《参数定义完毕<}

使pcb连接成循环队列。

void connect()

///pcb的前驱。

///pcb的后续。

///显示输入。

void display()

cout<<

cout<<"要求时间"<<优先级"<<状态"< cout<<<

///pcb执行。

void run()

value();

connect();

/ struct pcb pcb1,pcb2,pcb3,pcb4,pcb5,*p,*q;

char a;

int num,n,pcbnum=5,number=5,flag=1;//pcbnum表示进程执行过程中进程的个数,n表示已执行完毕的进程个数。

q=nullflag=1时程序继续。

cout< cout<<"选择a进程先运行的请按1;"

操作系统课程设计报告

西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...

操作系统课程设计报告

课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...

操作系统课程设计报告

实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...