java以及c++模拟处理机调度的时间片轮转算法实现

实验研究内容:
输入进程的个数,每个进程的名称及每个进程需要工作的时间,本实验中假定对CPU时间片设置为一个时间单位,首先输入进程的个数,然后输入进程名称,最后输入进程所需要的处理时间。然后通过模拟程序,显示以下信息:
1)处理机对进程的调度过程。
2)计算每个进程的周转时间(假设N个进程在0时刻几乎同时达到,处理机对进程的调度顺序和输入进程的顺序一致)。

示例:
若输入:
3
A 2
B 3
C 4
进程名称 每个进程需要工作的时间

显示:
CPU时刻:1
正在运行的进程:A
Name run req status
A 1 2 R    R:就绪  E: 结束
B 0 3 R
C 0 4 R
CPU时刻:2
正在运行的进程:B
Name run req status
A 1 2 R
B 1 3 R
C 0 4 R
CPU时刻:3
正在运行的进程:C
Name run req status
A 1 2 R R:就绪 E: 结束
B 1 3 R
C 1 4 R
CPU时刻:4
正在运行的进程:A
Name run req status
A 2 2 E
B 1 3 R
C 1 4 R
CPU时刻:5
正在运行的进程:B
Name run req status
B 2 3 R
C 1 4 R
CPU时刻:6
正在运行的进程:C
Name run req status
B 2 3 R
C 2 4 R
CPU时刻:7
正在运行的进程:B
Name run req status
B 3 3 E
C 2 4 R
CPU时刻:8
正在运行的进程:C
Name run req status
C 3 4 R
CPU时刻:9
正在运行的进程:C
Name run req status
C 4 4 E

A的周转时间:4ms
B的周转时间:7ms
C的周转时间:9ms

思路:跟着这些示例的提示来,走一遍示例的过程,就能模拟出处理机调度的时间片轮转算法的基本思想。其实类似于一道编程题,不用太熟悉处理机调度的时间片轮转算法也可以。下面直接上实现代码。

1.java实现,运用到队列的知识

进程实体类
Process.java

public class Process {
   
    String name;
    int req;
    int run;
    int all;
    String status;
    int time;
    @Override
    public String toString() {
   
        return name+"\t"+run+"\t"+req+"\t"+status;
    }
}

测试类
Test.java

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Test {
   
    public static void input() {
   
        int num, counter = 0;
        Queue<Process> queue = new LinkedList<>();
        ArrayList<Process> a = new ArrayList<>();
        Scanner s = new Scanner(System.in);
        Scanner c = new Scanner(System.in);
        System.out.println("输入进程个数");
        num = s.nextInt();
        for (int i = 0; i < num; i++) {
   
            Process p = new Process();
            p.status = "R";
            System.out.println("输入进程名");
            p.name = c.nextLine()
  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值