计算机操作系统-进程调度(动态优先调度算法C语言实现)

设计一个有 N个进程的进程调度程序。

一、实验目的 通过一个简单的进程调度模拟程序的实现,加深对各种进程调度算法,进程切换的理解。 二 实验内容

1、进程调度算法:采用动态最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)。

2、每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:

进程名---进程标示数 ID

优先数 PRIORITY 优先数越大优先权越高

到达时间---进程的到达时间为进程输入的时间。、

进程还需要运行时间ALLTIME,进程运行完毕ALLTIME=0,

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统中常用的动态优先进程调度算法包括Round-Robin算法、最短进程优先(SPN)算法、最短剩余时间优先(SRTN)算法等等。下面是一个使用Round-Robin算法的进程调度程序示例,使用C语言编写: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_PROCESS_NUM 10 // 最大进程 #define TIME_QUANTUM 4 // 时间片长度 typedef struct Process { char name[10]; // 进程名 int arrival_time; // 到达时间 int burst_time; // 运行时间 int priority; // 优先级 int remaining_time; // 剩余时间 } Process; int main() { int n; // 进程 Process processes[MAX_PROCESS_NUM]; int current_time = 0; // 当前时间 int completed_num = 0; // 已完成的进程 int i, j; printf("请输入进程:"); scanf("%d", &n); for(i = 0; i < n; i++) { printf("请输入第%d个进程的信息:\n", i + 1); printf("进程名:"); scanf("%s", processes[i].name); printf("到达时间:"); scanf("%d", &processes[i].arrival_time); printf("运行时间:"); scanf("%d", &processes[i].burst_time); printf("优先级:"); scanf("%d", &processes[i].priority); processes[i].remaining_time = processes[i].burst_time; } while(completed_num < n) { int min_priority = 10000; // 最小优先级 int min_priority_index = -1; // 最小优先级进程的下标 // 找到当前时间所有已到达的进程中优先级最高的进程 for(i = 0; i < n; i++) { if(processes[i].arrival_time <= current_time && processes[i].remaining_time > 0 && processes[i].priority < min_priority) { min_priority = processes[i].priority; min_priority_index = i; } } // 如果当前时间没有已到达的进程,则时间加一 if(min_priority_index == -1) { current_time++; continue; } // 运行当前进程 printf("当前时间:%d,运行进程:%s\n", current_time, processes[min_priority_index].name); processes[min_priority_index].remaining_time -= TIME_QUANTUM; current_time += TIME_QUANTUM; // 判断当前进程是否已完成 if(processes[min_priority_index].remaining_time <= 0) { completed_num++; printf("当前时间:%d,进程:%s已完成\n", current_time, processes[min_priority_index].name); } } return 0; } ``` 该程序中使用了Round-Robin算法,通过循环遍历所有已到达的进程中优先级最高的进程来选择要运行的进程。运行进程时每次使用固定长度的时间片,当进程剩余时间小于等于0时即表示该进程已完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值