并发编程之始
2018-12-03 09:26:13来源:博客园 阅读 ()
从今天开始看《并发编程的艺术》,然后留下学习的笔记,是学习,是提问,是散发思维,是形成自己的知识体系。抱着学习研究的态度,去学习这本书,去深挖一门技术。看完一遍,还有一遍,如此反复。好,废话不多说,马上开始头脑风暴。
上下文切换,时间片,线程调度算法
1 什么是上下文切换,上下文切换的原理是什么? 上下文怎么切换?什么时候会上下文切换?
在操作系统层面,有一个概念叫模式切换,从用户态到内核态,在我理解来,内核进程是用户态进程所共享的,在实际的ram(ddr3,ddr4)空间中,根据地址映射,不会发生改变,所以在内核态和用户态之间切换,TLB(存在于CPU内部的页表缓存,实际的页表存在于sdram空间中,当然假如TLB miss 的话,就需要从根据cpu拿到的虚地址,
根据高几位的页帧号,和页内偏移,发送寻址信号到sdram空间中定位到具体的存储单元)不会刷新。
还有就是进程的上下文切换,由于从一个虚拟地址空间到另外一个地址空间,对于多核机器来说,本地core的TLB,应该是除了内核的页表外,都会被刷新,cpu缓存中的数据,也要被清空,设置为invaliad。这就导致,进程切换的时候,很多东西都是未命中,需要重新加载。 那prev进程的现场保存到哪里呢? 据说是保存在内核进程的堆栈中。http://www.cnblogs.com/wz19860913/archive/2010/05/25/1742583.html
线程的上下文切换, 省略了进程切换时全局页表目录的切换,但是还是会把用户数据,状态字段存到pcb中。
什么时候会触发上下文切换? (这里的疑问??)
我的猜测,只有在系统时钟周期到了,或者由于中断,陷入内核态,才会触发调度算法。
欢迎各位大佬,来踩两脚,批评我的不对之处。哎,《并发编程的艺术》第一节就那么让人头疼。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 因为命名被diss无数次。简单聊聊编程最头疼的事情之一:命名 2020-06-10
- Java3个编程题整理 2020-06-09
- (易忘篇)java基础编程难点4 2020-06-08
- (易忘篇)java基础编程难点3 2020-06-05
- 国外大佬总结的 10 个 Java 编程技巧! 2020-06-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash