操作系统:时间片轮转调度算法

时间片轮转法是操作系统进程调度的一种算法,该算法的目的旨在实现多道程序技术,即宏观上程序并发。

串行、并行和并发

首先理解这个算法要理解什么是并发、并行和串行。用一个别人通俗易懂的解释:

  • 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行,你是串行执行的。
  • 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
  • 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
    并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。所以我认为它们最关键的点就是:是否是『同时』。 该解释来源

时间片轮转简介

时间片轮转法是一种操作系统赋予CPU软件实现的并发能力。单核CPU能在宏观上做到并发,实际在微观上是串行的。该算法的关键在于时间片的划分,时间片过短导致操作系统进行频繁的进程调度,浪费资源;时间片过长会变成串行,算法也就是失去了价值,我使用Java语言模拟该算法地实现。

数据结构

  1. 进程的数据结构:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Class Process{
    public String processName; //进程名称
    public int arriveTime; //进程到达时间
    public int startTime; //进程开始时间
    public int endTime; //进程结束时间
    public int durationTime; //进程持续时间
    public int processStatus; //进程状态(taking wait run finished)
    public int runTimed; //进程已经运行的时间

    }

    char processName[20];//进程名称
    int arriveTime;//进程到达时间
    int startTime;//进程开始时间
    int endTime;//进程结束时间
    int runTime;//进程运行时间大小
    int turnOverTime;//周转时间
    int userweightTurnOverTime;//带权周转时间
    char provessStatus[10];//进程状态
    int runTimeed; //进程已经运行的时间