用C语言写一段单处理器系统的进程调度的代码
时间: 2024-02-15 12:04:36 浏览: 19
以下是一个简单的单处理器系统的进程调度代码示例:
```
#include <stdio.h>
#define MAX_PROCESS 10
#define MAX_TIME_SLICE 10
typedef struct {
int pid;
int burst_time;
int priority;
int remaining_time;
} Process;
Process processes[MAX_PROCESS];
int n;
void init_processes() {
printf("Enter the number of processes: ");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("Enter the burst time and priority of process %d: ", i + 1);
scanf("%d %d", &processes[i].burst_time, &processes[i].priority);
processes[i].pid = i + 1;
processes[i].remaining_time = processes[i].burst_time;
}
}
void execute_processes() {
int time = 0;
int completed = 0;
int time_slice = 0;
while (completed < n) {
Process* current = NULL;
int highest_priority = -1;
// Find the process with the highest priority
for (int i = 0; i < n; i++) {
if (processes[i].remaining_time > 0 && processes[i].priority > highest_priority) {
current = &processes[i];
highest_priority = current->priority;
}
}
if (current == NULL) {
// No process is ready to execute
time++;
continue;
}
// Execute the current process for a time slice
time_slice = (current->remaining_time > MAX_TIME_SLICE) ? MAX_TIME_SLICE : current->remaining_time;
current->remaining_time -= time_slice;
time += time_slice;
if (current->remaining_time == 0) {
// The process has completed
completed++;
printf("Process %d completed at time %d\n", current->pid, time);
}
}
}
int main() {
init_processes();
execute_processes();
return 0;
}
```
该代码使用简单的优先级调度算法,根据每个进程的优先级选择下一个要运行的进程。每个进程被分配一个时间片来运行,如果进程没有完成,则在下一次调度时重新选择进程并分配新的时间片。如果进程完成,则记录其结束时间并继续调度下一个进程。