调度的三个层次
多道批处理系统中大多配有作业调度,而其他系统中通常不需要配置作业调度。
中级调度实际上就是存储器管理中的对换功能。
进程正在进行I/O操作时不能换出内存,否则其I/O数据区将被新换入的进程占用,导致错误。不过可以开辟I/O缓冲区,将数据从外设输入或将数据输出到外设的I/O活动在缓冲区中进行,这时缓冲区与外设进行I/O活动,进程换出换入不受限制。
调度的时机、切换与过程、方式
调度是指决定资源分配给哪个进程的行为,是一种决策行为;
切换是指实际分配的行为,是执行行为;
闲逛进程(idle):
在进程切换时,如果没有就绪进程,就会调用闲逛进程(idle)运行。该进程会一直执行,并不断测试中断。
闲逛进程的优先级最低,只要有就绪进程,就会立刻让出处理机。
闲逛进程不需要CPU之外的资源,所以不会被阻塞。
两种线程的调度
- 用户级线程调度
内核并不知道线程的存在,只负责选择一个进程然后执行。
由进程中的调度程序决定哪个线程执行。
- 内核级线程调度
内核选择一个线程执行,并不考虑其属于哪个进程。
用户级线程的线程切换在同一进程内进行,只需要少量的机器指令;
内核级线程的线程切换需要完整的上下文切换、修改内存映像(修改页表)、使高速缓存失效(TLB失效),这就导致了若干数量级的延迟。