深入理解Linux内核-进程调度
1、什么时候进行进程切换
调度策略目标:1、进程响应尽量快;2、后台作业吞吐量尽量高;3、尽可能避免进程饥饿;4、低优先级和高优先级进程需要尽量调和。 调度策略:决定什么时候选择什么进程运行的规则。基于分时技术。调度程序跟踪进程,动态调整优先级 进程分三类:1、交互进程;2、批处理进程;3、实时进程; 抢占无需等待当前进程的时间片片结束 时间片:应该大于进程切换花费的时间,越大,CPU利用率越高。但是太大又会导致进程看起来不是并发的。 进程动态优先级:进程的动态优先级,是在静态优先级的基础上,根据它的平均睡眠时间,调整它的优先级,睡眠时间长,提高它的优先级;反之,降低优先级
公式 动态优先级 = max(100, min(静态优先级 - bonus +5, 139)
其中bonus 与平均睡眠时间成正比,范围是0~10。 活动进程:没有用完时间片的进程,运行运行 过期进程:用完了时间片的进程,被禁止运行,直到所有的活动进程都过期 另外:活动的批处理进程总是会变为过期进程,活动的交互进程通常仍然是活动进程,它会被调度程序重新填充时间片。 实时进程:与实时优先级相关(1~99),实时进程总是活动进程 两种创建新进程的方式:1、fork:创建当前进程的副本;2、exec:将新进程加载到当前进程的内存中执行。 内核支持的程序执行形式:
1、Unix进程,也叫做重量级进程;本质上进程可以由N个线程组成,这些线程共享数据和资源。
2、线程,也叫做轻量级进程 命名空间:
1、包含N个PID的集合
进程地址空间:
、每个进程使用独立的虚拟地址空间
2、虚拟地址空间都是一样都大小,不考虑可用物理内存的大小
3、使用页表为物理地址分配虚拟地址
4、两个进程的虚拟地址页可以映射到同一个物理地址页帧,即共享内存 页:虚拟地址空间中的页
页帧:物理内存页 页表:将虚拟地址空间映射到物理地址空间的数据结构。
深入理解Linux内核-进程调度的更多相关文章
- 读书笔记之Linux系统编程与深入理解Linux内核
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...
- 【读书笔记::深入理解linux内核】内存寻址【转】
转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...
- 【读书笔记::深入理解linux内核】内存寻址
我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0xC0000000:这是内核地址空间的地址转换关系. 这句话瞬间让我惊呆了,根据我的CPU的知识,开 ...
- 《深入理解Linux内核》 读书笔记
深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...
- 理解Linux内核之中断控制
乍一看下边的Linux内核代码,貌似L3389有bug,于是我就绕有兴趣地阅读了一下local_irq_save/local_irq_restore的源代码. /* linux-4.14.12/mm/ ...
- Linux内存管理(深入理解Linux内核)
Linux的内存管理,实际上是借助80x86的硬件分段和分页电路,将逻辑地址转化为物理地址的. 物理内存中,有一部分是一直(Permanently)映射给内核使用的,这部分主要用于保存内核的代码,以及 ...
- 【深入理解Linux内核架构】第3章:内存管理
3.1 概述 内存管理涵盖了许多领域: 内存中物理内存页的管理: 分配大块内存的伙伴系统: 分配小块内存的slab.slub.slob分配器: 分配非连续内存块的vmalloc机制: 进程的地址空间. ...
- 深入理解Linux内核 学习笔记(1)
1.用户和用户组 每个用户是一个或多个用户组的一名成员,组由唯一的用户组标识符(user group ID)标识.每个文件的相关权限也恰好与一个组相对应. root为超级用户, 2.模块 为了达到微内 ...
- 深入理解Linux内核-信号
信号:1.最初被引入作为用户态进程间通信2.内核也使用信号通知进程系统所发生的事件3.信号很短,发送给进程的唯一信息通常是一个数.4.名称通常以SIG为前缀5.信号时可消费资源,每个信号只能被传递一次 ...
- 深入理解Linux内核-中断和异常
Linux内核代码查看 http://androidxref.com/ 中断:被定义位一个事件,它能改变处理器执行指令的顺序.它对应硬件(CPU.其他硬件设备)电路产生的电信号. 同步中断:指令执行时 ...
随机推荐
- Oracle数据库查看SID和service_name
怎样查看Oracle的数据库名称sid用sysdba身份登录 比如 conn / as sysdba 匿名管理员登陆执行 select name form V$database; 或是执行selec ...
- (转载)【TP5.0】设置session有效时长+修改默认存储路径
//查看默认session存储路径:print_r(session_save_path()); \thinkphp\helper.php if (!function_exists('ses ...
- 【原创视频教程】SqlServer2008视频教程[共9集]
这些视频都是13年-14年两年里面录制的,怀着一份创造之心, 可能说得不对,或者说得肤浅,望见谅....也请指正... 谢谢你的支持.. 更多资料:北盟网 www.bamn.cn ---------- ...
- <转>lua解析脚本过程中的关键数据结构介绍
在这一篇文章中我先来介绍一下lua解析一个脚本文件时要用到的一些关键的数据结构,为将来的一系列代码分析打下一个良好的基础.在整个过程中,比较重要的几个源码文件分别是:llex.h,lparse.h.l ...
- tensorflow中的sequence_loss_by_example
在编写RNN程序时,一个很常见的函数就是sequence_loss_by_example loss = tf.contrib.legacy_seq2seq.sequence_loss_by_examp ...
- LAMP环境搭建实现网站动静分离[转]
目录: 1.环境概述 2.动静分离拓扑图 3.各服务器功能规划 4.各服务器基础环境配置 5.httpd安装配置 6.php安装配置及启用opcache加速功能 7.mysql安装配置 8.wordp ...
- 进阶之路(基础篇) - 008 SPI数据传输(库函数方法)
主机端: /********************************* 代码功能:SPI数据传输(主机端) 引脚说明: SS/CS:片选(高电平屏蔽,低电平启用) MOSI :主机送出信号 M ...
- jquery实现点击展开列表同时隐藏其他列表 js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象
这篇文章主要介绍了jquery实现点击展开列表同时隐藏其他列表的方法,涉及jquery鼠标事件及节点的遍历与属性操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery实现点击 ...
- 基于matplotlib的数据可视化 -
matplotlib.pyplot(as mp or as plt)提供基于python语言的绘图函数 引用方式: import matplotlib.pyplot as mp / as plt 本章 ...
- java单双派机制理解
引言:Java是一个支持双分派的单分派语言 知道java是支持后期动态绑定,也知道访问者模式,但是两者之间的关系,还真不知道,况且在这之间还有一个静态绑定. 1.动态绑定 class Father { ...