没有合适的资源?快使用搜索试试~ 我知道了~
首页操作系统课程设计报告( 进程调度).doc
操作系统课程设计报告( 进程调度).doc

操作系统课程设计报告( 进程调度).doc 操作系统课程设计报告( 进程调度).doc 操作系统课程设计报告( 进程调度).doc 修改即可
资源详情
资源评论
资源推荐

《网络操作系统》
课 程 设 计 报 告 书
题 目: 进程调度算法的模拟及
DNS
协议模拟实现
学 号:
学生姓名:
指导教师:
2009 年 12 月 11 日


实验一:进程调度算法
进程调度算法
一、设计思想
1、通过优先权法与轮转调度算法的模拟加深对进程概念和进程调度过程的理解,掌握
进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。
2、动态优先权调度算法设计思想:
i. 先按优先数大小对就绪队列结点进行排序
ii. 取出队首元素,让其运行,同时其他进程的优先级增加 1,取出运
行的元素优先级减 3.
iii. 进程若在一个时间片内运行完,则取下一个队首元素运行,否则停
止该元素的运行,插入就绪队列,再按优先级大小排序。
iv. 重复(2),( 3)。
3、轮转法进程调度算法设计思想:
i. 将所有就绪进程按照到达时间的先后顺序插入队列中。
ii. 取出队首元素运行一个时间片。
iii. 时间片到就停止该进程的执行,并将其插入队尾。
iv. 重复(2),( 3)。
二、文件系统结构的说明
1、定义结构体
struct PCB
{
int ID;
int priority;
int CPUtime;
int ALLtime;
int State; s
truct PCB *next;
};
2、相关函数定义
void init(); //产生 idle 进程,输入用户进程数目,
Void print(PCB *pcb); //输出进程属性信息
void print_init(PCB *pcb); //输出所有 PCB 的初始值,此函数用于测试程序
void insert(); //生成进程属性信息,插入进程就绪队列
void run_priority(PCB *pcb); //运行进程,随机阻塞进程,产生新进程,插入就绪队
列,唤醒阻塞进程
void run_loop(PCB *pcb); //运行进程,随机阻塞进程,产生新进程,插入就绪队列,
唤醒阻塞进程
void block(PCB *pcb); //调用 destroy(),将进程插入阻塞队列
void wakeup_priority(); //唤醒进程,插入就绪队列
void wakeup_loop(); //唤醒进程,插入就绪队列

void proc_priority(); //优先权调度算法模拟
void proc_loop(); //轮转法调度算法模拟
void update(PCB *pcb);//更新进程信息
三、数据结构的说明
1、结构体的定义
struct PCB
{
int ID; //进程标识
int priority; //优先级
int CPUtime; // 进程占用 CPU 的时间
int ALLtime; // 进程总共需要运行的时间
int State; // 进程状态
struct PCB *next; // 指向下一节点的指针
};
四、各模块的算法流程图
1、 画出程序流程图
(a)动态优先权的进程调度算法模拟流程

Y
N
输入开始进程个数 n
创 建 n 个 PCB 并 加 入
ready_queue 中
将 ready_queue 中的结点按照优先级从大
到小排序
将 running 逐个指向 ready_queue 中
的结点
ready_queue
为空?
剩余26页未读,继续阅读











安全验证
文档复制为VIP权益,开通VIP直接复制

评论4