切换进程 切换线程
进程间切换的步骤:
1,保存程序计数其以及其他寄存器。
2, 更新当前处于“运行态”的进程的进程控制块,把进程状态改为相应状态,
更新其他相关域
3, 把被切换进程的进程控制块移到相关状态的队列
4, 选择另外一个进程开始执行,把该进程进程控制块的状态改为“运行态”
5, 恢复被选择进程的处理器在最近一次被切换出运行态时的上下文,比如载入
程序计数器以及其他处理器的值
进程间切换伴随着两次模式切换(用户--内核,内核--用户)。
(同一进程内)线程间切换的步骤:
线程分两种,用户级线程和内核级线程
在用户级线程中,有关线程管理的所有工作都由应用程序完成,内核没有意识到
线程的存在。
(同一进程内)用户级线程间切换时,只需要保存用户寄存器的内容,程序计数
器,栈指针,不需要模式切换。
缺点:
1, 在进程的某个线程执行系统调用时,不仅该线程被阻塞,该线程所在进程的
所有线程都被阻塞
2, 无法利用多处理器
在内核级线程中,有关线程的管理工作都是由内核完成的,应用程序部分没有线
程管理的权限,只有一个接口(API)
(同一进程内)内核级线程间切换时,除了保存上下文,还要进行模式切换。
优点:
1, 可以利用多处理器
2, 线程阻塞不会导致进程阻塞
切换进程 切换线程相关推荐
- Linux中断与进程切换,结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程...
@ 实验环境 OS Linux cj-virtual-machine 5.3.0-51-generic 虚拟机 QEMU 内核版本 5.3.4 调式方法 GDB PS:调试环境安装请看上一篇博客汇编级 ...
- 《深入理解Linux内核》-3.3. 进程切换
3.3. 进程切换 为了控制进程的执行,内核必须能够挂起正在运行的进程并恢复运行其他之前被挂起的进程.这个活动通过进程切换,任务切换或上下文切换执行这种各样的操作.接下来的章节介绍Linux系统上的进 ...
- python线程与进程视频教程_[PYTHON系列教程]→进程 vs. 线程
我们介绍了多进程和多线程,这是实现多任务最常用的两种方式.现在,我们来讨论一下这两种方式的优缺点.首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Work ...
- Python学习笔记__10.4章 进程VS线程
# 这是学习廖雪峰老师python教程的学习笔记 1.概览 我们介绍了多进程和多线程,这是实现多任务最常用的两种方式.现在,我们来讨论一下这两种方式的优缺点 要实现多任务,通常我们会设计Master- ...
- python多线程调度_python并发编程之进程、线程、协程的调度原理(六)
进程.线程和协程的调度和运行原理总结. 系列文章 进程.线程的调度策略介绍 linux中的进程主要有三种调度策略: 优先级调度:将进程分为普通进程和实时进程: 先进先出(队列)调度:实时进程先创建的先 ...
- 进程和线程(4)-进程 vs. 线程
进程 vs. 线程 我们介绍了多进程和多线程,这是实现多任务最常用的两种方式.现在,我们来讨论一下这两种方式的优缺点. 首先,要实现多任务,通常我们会设计Master-Worker模式,Master负 ...
- [转载] Python开发系列课程(16) - 进程和线程
参考链接: Python | 使用Tkinter进行消息编码-解码 进程和线程 今天我们使用的计算机早已进入多CPU或多核时代,而我们使用的操作系统都是支持"多任务"的操作系统,这 ...
- linux+kill+进程和线程,什么是程序,进程和线程?三者之间有何关系?
进程 进程与线程的历史 进程与线程之间的关系 重点 进程 和 线程的概念 进程和程序关系 cpu在执行程序时什么叫进程 swap 内存的缺页异常 大的异常 小的异常 内存映射mmap 内存泄露 tas ...
- (EPROCESS/KPROCESS/ETHREAD/KTHREAD)进程与线程内核层中的结构
概括 多进程模型 现代操作系统通过中央处理器进行任务执行的操作,通过把时间细分,在适当的时间粒度上轮流执行任务,每个任务都有机会进行执行.通过这种方式用户会认为系统的任务是在同时进行的,这种并行方式被 ...
- 进程和线程:进程的开销比线程大在了哪里?
不知你在面试中是否遇到过这样的问题,题目很短,看似简单,但在回答时又感觉有点吃力?比如下面这两个问题: 进程内部都有哪些数据? 为什么创建进程的成本很高? 这样的问题确实不好回答,除非你真正理解了进程 ...
最新文章
- Web 服务器 之 简易WWW服务器的架设
- 001PHP文件处理——文件处理disk_total_space disk_free_space basename dirname file_exists filetype...
- duilib 子窗口位置_duilib绝对定位与相对定位
- C++网络游戏程序员笔试题
- Spring Boot 2.x基础教程:使用集中式缓存Redis
- php Imagick()扩展,实现将原图截取成不同规格尺寸的图片
- 软工作业PSP与单元测试训练
- 限制文本框只能输入数字和小数点
- Koa 中实现 chunked 数据传输
- 初学者选黑卡还是微单_3500以内的微单相机好用吗?值得初学者入手吗?
- 爬虫原理与数据抓取----- Requests模块
- idea创建VUE项目
- OPPO正在拆掉“创新围墙”
- sql根据出生日期计算当前年龄 函数TIMESTAMPDIFF()
- 不定积分、定积分的区别与联系
- 5.电影搜索之 自动填充,也叫autocomplete、搜索建议!
- 计算机毕业设计Java重庆旅游景点(源码+系统+mysql数据库+Lw文档)
- jdbc mysql emoji 读取_mysql+jdbc的emoji异常问题
- 关于SaaS运营的不成熟的小建议
- 处理 mysql error 1205
热门文章
- 英文网站SEO优化技巧大全
- 手动修改dns服务器设置,手动设置dns地址服务器
- SpringCloud七:配置中心Eureka+Config+Bus+RabbitMQ
- Python-Leetcode-剑指offer(五月上做题整理)
- python加权求和_python求加权平均值的实例(附纯python写法)
- 微信公众号图片上传和预览功能前端实现
- 实现原理 扫描枪_条码扫描枪的原理
- angular6添加子路由_如何将Ionicons添加到Angular 6应用
- Sql语句优化案例-两表关联查询
- 【转】用java将pdf转换成jpg图片的代码