深入linux内核架构-第二章-进程管理和调度
2015-02-01 14:19
225 查看
2.1什么是进程优先级以及抢占式多任务处理?
这个用过任何操作系统的程序员都能够理解的。在这里就不多说了。
那么linux进程管理和调度采用的什么模型呢?我们称这种方案为抢占式多任务处理(preemptive multitasking),各个进程都分配到一定的时间段执行。时间段到期后,内核会从进程收回控制权,让一个不同的进程执行,而不考虑前一进程所执行的上一个任务。被抢占进程的运行时环境,即所有CPU寄存器的内容和页表,都会被保存起来,因此其执行结果不会丢失。在该进程恢复执行时,其进程环境可以被完全恢复。时间片的长度会根据进程重要性(以及因此分配的优先级)的不同而变化。
但是,这种简化模型没有考虑几个问题。
(1)进程在某些时间可能会因为没事可做而无法执行,从而导致CPU时间的利益回报大大降低。
(2)另一个忽略的事实是Linux支持不同的调度类别(在进程之间完全公平的调度和实时调度),调度时也必须考虑到这一点。
Linux进程管理的结构中还需要另外两种进程状态选项:用户状态和核心态。这反映了所有现代CPU都有至少两种不同的执行状态的事实,其中一种具有无限的权利,而另一种则受到各种限制。例如,可能禁止访问某些内存区域。
进程通常都处于用户态,只能访问自身的数据,无法干扰系统中的其他应用程序,甚至也不会注意到自身之外其他程序的存在。
从用户态切换到核心态,有两种方法:(1)系统调用;(2)中断。
内核的抢占调度模型建立了一个层次结构,用于判断哪些进程状态可以由其它状态抢占。
(1)普通进程总是可能被抢占,甚至是由其他进程抢占。在一个重要进程变为可运行时,例如编辑器收到了等待已久的键盘输入,调度器可以决定是否立即执行该进程,即使当前进程仍然在运行。对于实现良好的交互行为和低系统延迟,这种抢占起到了重要作用。
(2)如果系统处于核心态并正在处理系统调用,那么系统中的其它进程是无法夺取他的CPU执行时间的。调度器必须等待系统调用执行结束,才能选择另一个进程执行,但中断可以终止系统调用。
(3)中断可以暂停处于用户状态和核心态的进程。中断具有最高优先级,因为在中断触发后需要尽快处理。
这个用过任何操作系统的程序员都能够理解的。在这里就不多说了。
那么linux进程管理和调度采用的什么模型呢?我们称这种方案为抢占式多任务处理(preemptive multitasking),各个进程都分配到一定的时间段执行。时间段到期后,内核会从进程收回控制权,让一个不同的进程执行,而不考虑前一进程所执行的上一个任务。被抢占进程的运行时环境,即所有CPU寄存器的内容和页表,都会被保存起来,因此其执行结果不会丢失。在该进程恢复执行时,其进程环境可以被完全恢复。时间片的长度会根据进程重要性(以及因此分配的优先级)的不同而变化。
但是,这种简化模型没有考虑几个问题。
(1)进程在某些时间可能会因为没事可做而无法执行,从而导致CPU时间的利益回报大大降低。
(2)另一个忽略的事实是Linux支持不同的调度类别(在进程之间完全公平的调度和实时调度),调度时也必须考虑到这一点。
Linux进程管理的结构中还需要另外两种进程状态选项:用户状态和核心态。这反映了所有现代CPU都有至少两种不同的执行状态的事实,其中一种具有无限的权利,而另一种则受到各种限制。例如,可能禁止访问某些内存区域。
进程通常都处于用户态,只能访问自身的数据,无法干扰系统中的其他应用程序,甚至也不会注意到自身之外其他程序的存在。
从用户态切换到核心态,有两种方法:(1)系统调用;(2)中断。
内核的抢占调度模型建立了一个层次结构,用于判断哪些进程状态可以由其它状态抢占。
(1)普通进程总是可能被抢占,甚至是由其他进程抢占。在一个重要进程变为可运行时,例如编辑器收到了等待已久的键盘输入,调度器可以决定是否立即执行该进程,即使当前进程仍然在运行。对于实现良好的交互行为和低系统延迟,这种抢占起到了重要作用。
(2)如果系统处于核心态并正在处理系统调用,那么系统中的其它进程是无法夺取他的CPU执行时间的。调度器必须等待系统调用执行结束,才能选择另一个进程执行,但中断可以终止系统调用。
(3)中断可以暂停处于用户状态和核心态的进程。中断具有最高优先级,因为在中断触发后需要尽快处理。
相关文章推荐
- 《深入理解linux内核架构》第二章 进程管理和调度
- Linux进程调度切换和虚拟空间管理深入分析
- 进程管理和调度(第二章)
- eCos的进程调度和管理
- 基于三级反馈队列调度算法的UNIX进程管理程序模拟
- [OS] 第二章 进程管理
- 深入php-fpm的两种进程管理模式详解
- 深入php-fpm的两种进程管理模式详解
- 读书笔记--深入分析Linux内核源码-第五章进程调度
- Linux内核进程调度schedule深入理解
- Linux 进程管理剖析: 创建、管理、调度和销毁进程
- Linux内核进程调度schedule深入理解
- linux进程管理 - 核心调度器
- Linux内核进程调度schedule深入理解
- 作业二:进程PCB管理与调度程序
- Linux 进程管理剖析: 创建、管理、调度和销毁进程
- Linux 进程管理(一) 进程调度
- 第二章-进程管理笔记(3)
- Android的内存,进程调度管理
- Linux 技巧:让进程在后台可靠运行的几种方法 用 cron 和 at 调度作业 使用 screen 管理你的远程会话