实验要求:
模拟操作系统运转, 设置时间片轮,进程运行一次,所需运行时间减去时间片轮大小(设为2),优先级减去2,等待系统调用。
相关理论:
时间片轮调度算法中,每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程实现过程。
动态优先级调度算法是指在创建进程之初,先赋予其一个优先级,然后其值随着进程的推进或等待时间的增加而改变,以便获得更好的调度性能。例如,可以规定在就绪队列中的进程随其等待的时间的正常,使其优先级相应提高。若所有的进程都具有相同的优先级初值,则最先进入就绪队列的进程会因为其优先级变得最高,而优先获得处理机,这相当于FCFS算法。若所有的就绪进程具有各不相同的优先级初值,那么对于优先级初值低的进程,在等待了足够的时间后,也可以获得处理机。
实现过程:
1、定义结构体
typedef struct pcb
{
int name; //进程名
int status; //进程状态
int priority; //进程优先级
int time; //进程所需运行时间
struct pcb * next; //指向下一个节点
}pcb;
2、建立头指针
pcb* init_circular_linkedlist(pcb * head)
{
head = (pcb *)malloc(sizeof(pcb));
if(head == NULL)
printf("申请