操作系统实验处理机调度C语言实现
本文主要介绍了操作系统实验处理机调度C语言实现的相关知识点。下面是详细的知识点解释:
一、进程控制块(PCB)
在操作系统中,进程控制块(PCB)是操作系统管理进程的重要数据结构。PCB中包含了进程的各种信息,如进程号、进程名、进程状态、到达时间、开场时间、完毕时间、效劳时间和优先级等信息。在本实验中,我们定义了一个名为PCB的结构体,用于存储进程的相关信息。
struct PCB {
int num[N]; //进程序号
char name[10]; //进程名
char state; //进程状态
int tijiaotime; //进程到达时间
int runtime; //进程开场时间
int finishtime; //进程完毕时间
int needtime; //效劳时间
int pro; //进程优先级
struct PCB *next; //指针指向下个作业
};
二、先来先到效劳调度算法
在操作系统中,调度算法是操作系统管理进程的重要机制之一。在本实验中,我们实现了一个先来先到效劳调度算法。该算法的基本思想是按照进程的到达时间排序,并按照该顺序执行进程。
void run_fcfo(pcb *p1) {
time = p1->tijiaotime > time ? p1->tijiaotime : time;
p1->runtime = time;
printf("\n现在时间是%d,开场运行进程%s\n", time, p1->name);
time += p1->needtime;
p1->state = 'F';
p1->finishtime = time;
printf("进程名开场时间所需时间完毕时间\n");
printf("%s %d %d %d ", p1->name, p1->runtime, p1->needtime, p1->finishtime);
}
三、进程管理
在操作系统中,进程管理是操作系统的重要组成部分。在本实验中,我们实现了进程的创建、管理和调度。在进程创建时,我们需要输入进程的相关信息,如进程号、进程名、到达时间和效劳时间等信息。
void getInfo() {
int num;
printf("\n 请输入要建立的进程个数:");
scanf("%d", &n);
for (num = 0; num < n; num++) {
p = (pcb *)malloc(sizeof(pcb));
if (head == NULL) {
head = p;
q = p;
}
printf("依次输入:\n 进程号进程名到达时间效劳时间 \n");
scanf("%s\t%s\t%d\t%d", &p->num, &p->name, &p->tijiaotime, &p->needtime);
if (p->tijiaotime < time) time = p->tijiaotime;
q->next = p;
p->runtime = 0;
p->finishtime = 0;
p->next = NULL;
p->state = 'W';
q = p;
}
}
四、计时器
在操作系统中,计时器是操作系统管理进程的重要机制之一。在本实验中,我们使用一个名为time的变量来记录系统当前时间的变量。
unsigned long current; //记录系统当前时间的变量
int time = 10000, n;
本文介绍了操作系统实验处理机调度C语言实现的相关知识点,涵盖了进程控制块、先来先到效劳调度算法、进程管理和计时器等内容。