什么是进程调度?
进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程。无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
那么我们先来看看进程的一个状态----》
当计算机系统处于就绪状态的用户进程数多于CPU数时,就会产生多个进程或线程同时竞争CPU的结果。假设现在只有一个CPU可用,那么操作系统就必须选择下一个要运行的进程。完成这种选择工作的这一部分称为调度程序,该程序使用的算法称为调度算法。
在这里面我们就要学到并发和并行的知识了。
并发:一个CPU时间片轮转调度的方式,执行多个进程,给我们的感觉是同时进行的。但是 并不是。
并行:多个CPU在一个时间点,同时执行多个进程。
系统数如何管理进程?
首先他会先创建一个进程的pcb结构体(用于描述进程的信息),它包括:
- pid 表示进程的身份;
- 状态:包括运行,阻塞等;
- 内存指针进程内存地址;
- 资源清单:iO设备,硬盘文件;
- 调度信息:即 进程运行了多少代码,等待了多久;
- 上下文。
那么什么是调度算法?
我们最常见的调度算法就是时间片轮转调度算法。
即:只有一个CPU时,以时间片轮转调度,一段时间后换到下一个进程执行。
同时,我们有事也会常见抢占式调度。
当我们的任务有优先级较高的任务的时候,就要使用抢占式调度,优先执行,此时,我们的优先级进程会优先执行,A进程,时间片提前结束,有运行态转为就绪态。