进程调度
2015-07-07 17:31
218 查看
现在明确一下阻塞(Block)这个概念。当进程调用一个阻塞的系统函数时,该进程被置于睡眠(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了(比如网络上接收到数据包,或者调用
正在被调度执行。CPU处于该进程的上下文环境中,程序计数器(
就绪状态。该进程不需要等待什么事件发生,随时都可以执行,但CPU暂时还在执行另一个进程,所以该进程在一个就绪队列中等待被内核调度。系统中可能同时有多个就绪的进程,那么该调度谁执行呢?内核的调度算法是基于优先级和时间片的,而且会根据每个进程的运行情况动态调整它的优先级和时间片,让每个进程都能比较公平地得到机会执行,同时要兼顾用户体验,不能让和用户交互的进程响应太慢。
http://docs.linuxtone.org/ebooks/C&CPP/c/ch28s04.html
sleep指定的睡眠时间到了)它才有可能继续运行。与睡眠状态相对的是运行(Running)状态,在Linux内核中,处于运行状态的进程分为两种情况:
正在被调度执行。CPU处于该进程的上下文环境中,程序计数器(
eip)里保存着该进程的指令地址,通用寄存器里保存着该进程运算过程的中间结果,正在执行该进程的指令,正在读写该进程的地址空间。
就绪状态。该进程不需要等待什么事件发生,随时都可以执行,但CPU暂时还在执行另一个进程,所以该进程在一个就绪队列中等待被内核调度。系统中可能同时有多个就绪的进程,那么该调度谁执行呢?内核的调度算法是基于优先级和时间片的,而且会根据每个进程的运行情况动态调整它的优先级和时间片,让每个进程都能比较公平地得到机会执行,同时要兼顾用户体验,不能让和用户交互的进程响应太慢。
http://docs.linuxtone.org/ebooks/C&CPP/c/ch28s04.html
相关文章推荐
- 2.13 带逗号的print语句输出的元素之间自动带个空格
- lua函数随记
- Android通讯录获取联系方式
- UIAlertView/警告框
- GBK编码详细解析(附GBK码位分布图)
- 淘宝TFS分布式文件系统内部实现
- android实现wifi与移动数据的切换
- nginx配置
- maven添加镜像地址
- 从WordCount看Spark大数据处理的核心机制(2)
- 数据挖掘之支持向量机分类实现
- jboss信息安全
- http协议分析工具【转】
- (转).NET代码混淆实践
- vs2010安装的一些问题
- Spring学习(14)--- 基于Java类的配置Bean 之 @ImportResource & @Value 注解
- CSS简单理解与应用
- Windows平台分布式架构实践 - 负载均衡(下)
- 【iOS】屏幕适配之NSLayoutConstraint
- iOS的主要框架介绍