Linux2.6--进程抢占和上下文切换
上下文切换,也就是从一个可执行进程切换到另一个可执行进程,由定义在kernel/sched.c中的context_switch()函数负责处理。每当一个新的进程被选出来准备投入运行的时候,schedule()就会调用该函数。它完成了两相基本工作:
1.调用声明在<asm/mmu_context.h>中的switch_mm(),该函数负责把虚拟内存从上一个进程映射切换到新的进程中去,其实就是切换到另一个进程的地址空间中,请看下图示例:
2.调用声明在<asm/system.h>中的switch_to(),该函数负责从上一个处理器状态切换到新进程的处理器状态。这包括保存,恢复栈信息和寄存器信息,还有其他和体系结构有关的状态信息,都必须以每个进程为对象进行管理和保存。请看如下示例:
下面我们看下进程抢占的时机。
1.用户抢占
从系统调用返回用户空间时
从中断处理程序返回用户空间时
2.内核抢占
中断处理程序正在执行,且返回内核空间之前
内核代码再一次具有可抢占性的时候
如果内核中的任务显示的调用schedule()
如果内核中的任务阻塞(这同样会导致调用schedule())
Linux2.6--进程抢占和上下文切换相关推荐
- 进程和线程上下文切换_编码人员:上下文切换对于计算机和关系而言都很难
进程和线程上下文切换 Clive Thompson is a longtime contributing writer for the New York Times Magazine and a co ...
- Linux2.6内核--抢占
[摘要]本文首先介绍非抢占式内核(Non-Preemptive Kernel)和可抢占式内核(Preemptive Kernel)的区别.接着分析Linux下有两种抢占:用户态抢占(User Pree ...
- 进程用户态 上下文切换需要保存哪些_漫话性能:CPU上下文切换
序言 表弟:CPU平均负载zhuanlan.zhihu.com 我们理解了平均负载( Load Average),并用三个案例展示了不同场景下平均负载升高的分析方法.这其中,多个进程(或线程)竞争 ...
- 进程和线程上下文切换
图文对比 进程上下文切换 进程上下文包含了进程执行所需要的所有信息. 1.用户地址空间:包括程序代码,数据,用户堆栈等: 2.控制信息:进程描述符,内核栈等: 3.硬件上下文:进程恢复前,必须装入寄存 ...
- 进程切换(上下文切换)
多任务操作系统是怎么实现运行远大于CPU 数量的任务个数的?当然,这些任务实际上并不是真的在同时运行,而是因为系统通过时间片分片算法,在很短的时间内,将CPU 轮流分配给它们,造成多任务同时运行的错觉 ...
- Linux内核:进程上下文切换
目录 1.进程上下文的概念 2.上下文切换详细过程 2.1 进程地址空间切换 2.2 处理器状态(硬件上下文)切换 3.ASID机制 4. 普通用户进程.普通用户线程.内核线程切换的差别 5. 进程切 ...
- Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)
日期 内核版本 架构 作者 GitHub CSDN 2016-07-01 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 ...
- CPU上下文切换、进程上下文、中断上下文
由于Linux是一个多任务操作系统,能够支持远大于CPU数量的任务同时运行.当然,这些任务实际上并不是真的在同时运行,而是由CPU进行调度,将时间分片,每个任务占用1个时间片,通过轮流的方式运行,但由 ...
- Linux:上下文,进程上下文和中断上下文概念,上下文切换
Linux:上下文,进程上下文和中断上下文概念,上下文切换 1. 上下文 context:(就是一个环境) 2. 进程上下文 2.1 进程上下文的三个部分:用户级上下文.寄存器上下文以及系统级上下文 ...
最新文章
- Android ListView (多个adapter 说明)
- 数字孪生卫星:概念、关键技术及应用
- Django restfulframework 开发相关知识 整理
- RabbitMQ(4) TopicExchange
- 最短路径之Floyd算法
- netty里集成spring注入mysq连接池(二)
- 函数返回指针类型(strchr函数)
- (132)FPGA面试题-Verilog实现格雷码转二进制
- 怎么在html中加入相对链接,html直接跳转超链接 html中怎么实现同一页面超级链接...
- /etc/mtab must be a symlink to /proc/mounts
- HDOJ 4223 (DP)
- 便签记事本 手机便签记事本app
- Java基础-深拷贝和浅拷贝的区别
- C#中使用设置(Settings.settings) Properties.Settings.Default .
- Collectors,Collection,Collections傻傻分不清楚
- 看图学维修mp3之电源篇65Z8\65Z5
- Zigbee无线协议 和 WiFi通信协议的区别
- skinme找不到java_我的世界skinme皮肤下载|我的世界skinme模组安装器v1.2.1 官方版 - 极光下载站...
- android手机助手排名,2019手机份额排行_2019安卓手机助手排行榜Top10
- 上海房屋租赁价格数据(11月24日)