- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
宋雅楠的实验1:处理机调度
实验报告
学院(系)名称:计算机与通信工程学院
姓名 宋雅楠 学号 专业 计算机科学与技术 班级 中加1 实验项目 实验一:处理机调度算法的实现 课程名称 操作系统 课程代码 0668036 实验时间 实验地点 7-215
批改意见 成绩
教师签字:
实验内容:
设定系统中有五个进程,每一个进程用一个进程控制块表示。
输入每个进程的“优先数”和“要求运行时间”。
为了调度方便,将五个进程按给定的优先数从大到小连成就绪队列。用一单元指出队列首进程,用指针指出队列的连接情况。
处理机调度总是选队首进程运行。采用动态优先数算法,进程每运行一次优先数就减“1”,同时将运行时间减“1”。
若某进程运行时间为零,则将其状态置为“结束”,且退出队列。
运行所设计程序,显示或打印逐次被选中进程的进程名,以及进程控制块的动态变化过程。
实验要求中遇到收获
#include stdio.h
#include sys/malloc.h
#include stdlib.h
#define NUM_OF_PROCESS? 5
/*
?* 进程控制块数据结构
?*/
typedef struct __PCB__
{
? ? int pid;? ? ? ? ? ? ? ? //进程ID
? ? int need_time;? ? ? ? ? //进程需要的运行时间
? ? int prior;? ? ? ? ? ? ? //进程优先级
} PCB;
/*
?*
?* 存放一个PCB?*? ? ? 和指向下一个PCB的指针
?*/
typedef struct __QUEUE_NODE__
{
? ? PCB *data;
? ? struct __QUEUE_NODE__ *next;
} QUEUE_NODE;
/*
?*
?*/
typedef struct __LIST_QUEUE__
{
? ? QUEUE_NODE *front, *rear;
} LIST_QUEUE;
/*
?* 创建带头结点的空链式队列
?*/
LIST_QUEUE *Init_List_Queue()
{
? ? LIST_QUEUE *q;
? ? QUEUE_NODE *p;
? ? q = (LIST_QUEUE*)malloc(sizeof(LIST_QUEUE)); ? ? //申请头尾指针结点
? ? p = (QUEUE_NODE*)malloc(sizeof(QUEUE_NODE)); ? ? //申请链式队列头结点
? ? p-next = NULL;
? ? q-front = q-rear = p;
?? ?
? ? return q;
}
/*
?* 判断队列是否为空
?* 是 返回 1?* 否 返回 0
?*/
int Is_Empty_List_Queue(LIST_QUEUE *queue)
{
? ? if (queue-front == queue-rear)
? ? ? ? return 1;
? ? else
? ? ? ? return 0;
}
/*
?*
?*/
int Size_Of_List_Queue(LIST_QUEUE *queue)
{
? ? int i = 0;? //节点个数
? ? QUEUE_NODE *tmp;
? ? if (Is_Empty_List_Queue(queue))
? ? ? ? return i; ? /* 空队列 */
? ? tmp = queue-front; ? /* 尾结点不计数,头结点补 */
? ? while (tmp-next != NULL)
? ? {
? ? ? ? i ++;
? ? ? ? tmp = tmp-next;
? ? }
? ? return i;
}
/*
?* 按优先级对队列调整顺序
?* 优先级高在队首
?*/
void Adjust_List_Queue(LIST_QUEUE *queue)
{
? ? QUEUE_NODE *tmp;
? ? QUEUE_NODE *bef;
?? ?
? ? int size = Size_Of_List_Queue(queue);
? ? int i;
? ? for(i=0; isize; i++)
? ? {
? ? ? ? tmp = queue-front-next; ? /* 第一个有效结点 */
? ? ? ? while (tmp-next != NULL)
? ? ? ? {
? ? ? ? ? ? for (bef=queue-front; bef-next != tmp; bef=bef-n
您可能关注的文档
最近下载
- 2025华南农业大学教师招聘考试试题.docx VIP
- B737-NG快速检查单 2016_03_31整体版.pdf VIP
- 中国血管性认知障碍诊治指南(2024版)解读.pptx
- cs.ananas.chaoxing.comdownload55accda5e4b04cd76d.ppt VIP
- 农业植物病理学题库.docx VIP
- 扬州大学线性代数§1.1排列与逆序详解.ppt VIP
- 2025年平顶山鲁山县部分机关及所属事业单位选调工作人员60名笔试备考试题及答案解析.docx VIP
- 党支部工作条例试卷.pptx VIP
- 220kV永福变电站110kV梅花站对侧GIS扩建间隔一二次设备安装施工方案1.pdf VIP
- 2024华南农业大学教师招聘考试笔试试题.docx VIP
文档评论(0)