资源简介
(1)假定系统有5个进程,每个进程用一个PCB来代表。PCB的结构为:
•进程名——如P1~P5。
•指针——按优先数的大小把5个进程连成队列,用指针指出下一个进程PCB的首地址。
•要求运行时间——假设进程需要运行的单位时间数。
•优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
•状态——假设两种状态:就绪和结束,用R表示就绪,用E表示结束。初始状态都为就绪状态。
(2) 开始运行之前,为每个进程确定它的“优先数”和“要求运行时间”。通过键盘输入这些参数。
(3) 处理器总是选择队首进程运行。采用动态改变优先数的办法,进程每运行1次,优先数减1,要求运行时间减1。
(4) 进程运行一次后,若要求运行时间不等于0,则将它加入就绪队列,否则,将状态改为“结束”,退出就绪队列。
(5) 若就绪队列为空,结束,否则转到(3)重复。
代码片段和文件信息
#include
#include
#include
int global_time = 0;//全局时间
struct PCB{
char name[10];
struct PCB *next;
int run_time;
int priority;
char status;
};
//定义结构体,包含五个属性,名字,下一个PCB指针,运行时间,优先级,目前状态
void initPCB(struct PCB *p int i){
p->name[0] = ‘P‘;
p->name[1] = i + ‘0‘;
p->name[2] = 0;
p->next = NULL;
printf(“Process %s\n“ p->name);
printf(“input run_time: “);
scanf(“%d“ &p->run_time);
printf(“input priority: “);
scanf(“%d“ &p->priority);
p->status = ‘R‘;
}
//输入任务名称, 时间和优先级,运行状态为E
void run(struct PCB *p){
printf(“Process: %s running @ tim %d priority %d run_time %d\n“
p->name global_time p->priority p->run_time);
global_time++;
p->run_time--;
p->priority--;
}//输出这个任务的状态,全局时间加1,任务还需要的时间减1,优先级减1
int main(){
int i;
struct PCB *head = (struct PCB *)malloc(sizeof(struct PCB));
head->next = NULL;//定义头节点,分配空间 目前链表中为空
struct PCB *p = NULL *q = NULL;//定义 指针p和q,p为待运行队列PCB指针,q为待插入队列PCB指针
for(i = 0; i < 5; i++){
p = (struct PCB *)malloc(sizeof(struct PCB));//分配空间,让p指向这个
- 上一篇:AES s盒生成代码
- 下一篇:G代码经典解释程序
相关资源
- FCFS和SJF调度算法C++
- 进程调度的设计与实现图形界面c++
- 使用动态优先权的进程调度算法的模
- 操作系统调度算法c语言实现
- 轮询调度算法代码
- 操作系统实验-计算机进程管理和进程
- 操作系统课程设计之进程调度源代码
- 使用动态优先权的进程调度算法的模
- 操作系统c语言模拟作业调度实验
- 进程调度时间片轮转+优先级进程调度
- c语言实现 FCFS和SJF调度算法
- 作业调度算法c语言版
- 水库优化调度程序源代码
- 生产者与消费者 进程调度模拟c++
- 解决System.Data.SQLite兼容32位和64位问题
- 解决System.Data.SQLite兼容32位和64位问题
- 操作系统抢占式短进程优先调度算法
- 无优先级运算问题C语言
- 操作系统进程调度C++代码实现
- 实验一 实现单处理机下的进程调度程
- 编写并调试一个模拟的进程调度程序
- 进程调度程序设计—课程设计
- 磁盘调度算法(c语言)44989
- 进程调度优先数算法
- 电梯调度算法基于C语言
- 进程调度算法(优先权)
- 作业调度先来先服务短作业高响应比
- 多级反馈队列调度算法 C语言模拟实现
- 车厢调度C++版本
- vc++多电梯调度完整原代码
评论
共有 条评论