时间片轮转法是操作系统进程调度的一种算法,该算法的目的旨在实现多道程序技术,即宏观上程序并发。
串行、并行和并发
首先理解这个算法要理解什么是并发、并行和串行。用一个别人通俗易懂的解释:
- 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行,你是串行执行的。
- 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
- 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。所以我认为它们最关键的点就是:是否是『同时』。 该解释来源
时间片轮转简介
时间片轮转法是一种操作系统赋予CPU软件实现的并发能力。单核CPU能在宏观上做到并发,实际在微观上是串行的。该算法的关键在于时间片的划分,时间片过短导致操作系统进行频繁的进程调度,浪费资源;时间片过长会变成串行,算法也就是失去了价值,我使用Java语言模拟该算法地实现。
数据结构
- 进程的数据结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20Class 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; //进程已经运行的时间