操作系统时间片轮换_操作系统之时间片轮转算法

本文通过一个链队列实现的时间片轮转算法示例,详细解释了如何在操作系统中进行进程调度。代码展示了如何插入、删除进程,并模拟了时间片到时后进程的状态变化,帮助读者深入理解该算法。
摘要由CSDN通过智能技术生成

//时间片轮转算法

class ListQueue {

// 链队列

class Link {

private String name;

private int sertime;

private int priority;

public Link next;

public Link() {

}

public Link(String name, int sertime, int priority) {

this.name = name;

this.sertime = sertime;

this.priority = priority;

}

public void displayLink() {

System.out.println("进程名 " + name + "服务时间 " + sertime + "优先级"

priority);

}

}

public static Link head;

public static Link rear;

public boolean isEmptyQueue() {

return head == null;

}

public ListQueue() {

head = rear = null;

}

// 从尾部插入

public void insertToQueue(String name, int sertime, int priority) {

Link newLink = new Link(name, sertime, priority);

// 第一次的链接点为head端

if (isEmptyQueue()) {

head = newLink;

} else {

rear.next = newLink;

}

rear = newLink;

}

// 从头部删除

public void removeFromQueue() {

if (isEmptyQueue()) {

System.out.println("Queue is empty");

} else {

if (null == head.next) {

rear = null;

}

head = head.next;

}

}

public void displayQueue() {

Link currentLink = head;

while (null != currentLink) {

currentLink.displayLink();

currentLink = currentLink.next;

}

}

public static void main(String[] args) {

int i = 0;

ListQueue lq = new ListQueue();

// 插入数据

lq.insertToQueue("A", 3, 12);

lq.insertToQueue("B", 5, 31);

lq.insertToQueue("C", 2, 21);

lq.insertToQueue("D", 4, 10);

System.out.println("时间片轮转算法:");

for (Link visitLink = head; visitLink != null; visitLink = visitLink.next) {

System.out.print("t=" + i + " " + visitLink.name + "执行");

if (visitLink.sertime <= 2) {

System.out.println(" 完成任务");

lq.removeFromQueue();

} else {

System.out.println(" 未完成任务");

lq.insertToQueue(visitLink.name, visitLink.sertime - 2,

visitLink.priority);

lq.removeFromQueue();

}

i++;

}

}

}

打开App,阅读手记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值