Juc10_CPU指令、缓存结构、运行安全等级、操作系统内存管理、上下文切换、虚拟机指令集架构(二)

简介: ③. CPU缓存结构④. CPU运行安全等级

③. CPU缓存结构


  • ①. 现代CPU为了提升执行效率,减少CPU与内存的交互(交互影响CPU效率),一般在CPU上集成了多级缓存架构,常见的为三级缓存结构: L1、L2是多核独享、L3是多核共享


微信图片_20220107181826.png

微信图片_20220107181912.png


②. 存储器存储空间大小:内存>L3>L2>L1>寄存器


存储器速度快慢排序:寄存器>L1>L2>L3>内存


③. 还有一点值得注意的是:缓存是由最小的存储区块-缓存行(cacheline)组成,缓存行大小通常为64byte


缓存行是什么意思呢?


比如你的L1缓存大小是512kb,而cacheline = 64byte,那么就是L1里有512 * 1024/64个cacheline


④. CPU读取存储器数据过程 重点


CPU要取寄存器X的值,只需要一步:直接读取


CPU要取L1 cache的某个值,需要1-3步(或者更多):把cache行锁住,把某个数据拿来,解锁,如果没锁住就慢了


CPU要取L2 cache的某个值,先要到L1 cache里取,L1当中不存在,在L2里,L2开始加锁,加锁以后,把L2里的数据复制到L1,再执行读L1的过程,上面的3步,再解锁


CPU取L3 cache的也是一样,只不过先由L3复制到L2,从L2复制到L1,从L1到CPU


CPU取内存则最复杂:通知内存控制器占用总线带宽,通知内存加锁,发起内存读请求,等待回应,回应数据保存到L3(如果没有就到L2),再从L3/2到L1,再从L1到CPU,之后解除总线锁定


⑤. 时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问


比如循环、递归、方法的反复调用等


空间局部性(Spatial Locality):如果一个存储器的位置被引用,那么将来他附近的位置也会被引用


比如顺序执行的代码、连续创建的两个对象、数组等


⑥. 多线程的引入,摩尔定律失效(硬件方面)


集成电路上可以容纳的晶体管数目在大约每经过18个月便会增加一倍,可是从2003年开始CPU主频已经不再翻倍,而是采用多核而不是更快的主频


在主频不再提高且核数不断增加的情况下,要想让程序更快就要用到并行或并发编程


④. CPU运行安全等级


①. CPU有4个运行级别,分别为:ring0、ring1、ring2、ring3


②. Linux与Windows只用到了2个级别:ring0、ring3,操作系统内部内部程序指令通常运行在ring0级别,操作系统以外的第三方程序运行在ring3级别,第三方程序如果要调用操作系统内部函数功能,由于运行安全级别不够,必须切换CPU运行状态,从ring3切换到ring0,然后执行系统函数,说到这里相信同学们明白为什么JVM创建线程,线程阻塞唤醒是重型操作了,因为CPU要切换运行状态


③. 下面我大概梳理一下JVM创建线程CPU的工作过程


CPU从ring3切换ring0创建线程


创建完毕,CPU从ring0切换回ring3


线程执行JVM程序


线程执行完毕,销毁还得切会ring0


④. 我们的线程都有两个堆和栈,一个在用户空间(用户态),一个在系统空间(系统态)如果我们不去调用系统库的话(比如开启一个线程),都是运行在用户空间,一旦你的线程需要阻塞,或者杀死,那么你的CPU状态就要从用户态切换到内核态,把操作系统的堆和栈给丢了,杀死掉(这个时候CPU的安全等级是ring0,ring0表示的是最高的等级)杀掉或者阻塞好了以后,又会从系统态(ring0)切回到用户态(ring3) 掌握


相关文章
|
3月前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
114 0
Vanilla OS:下一代安全 Linux 发行版
|
1月前
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
128 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
23天前
|
运维 安全 数据安全/隐私保护
更安全、更丰富 、更兼容 Anolis OS 23.2 版本重磅上线
该版本不仅新增了许多实用功能,还修复了大量的已知问题和安全漏洞,显著提升了用户体验。
|
2月前
|
人工智能 安全 Android开发
移动应用开发与操作系统的深度协同:构建高效、安全的移动生态####
【10月更文挑战第21天】 本文深入探讨了移动应用开发与移动操作系统之间的内在联系与相互影响,强调了两者在构建高效、安全移动生态系统中的关键作用。通过分析当前主流移动操作系统(如Android、iOS)的特性及发展趋势,结合移动应用开发的最新技术与挑战,本文旨在为开发者提供一套全面的理解框架,以促进更加协同高效的应用开发实践。 ####
84 18
|
2月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
3月前
|
安全 物联网 Unix
什么是安全操作系统?
什么是安全操作系统?
108 2
|
4月前
|
存储 Dart Java
Dart 虚拟机运行原理
【10月更文挑战第20天】Dart 虚拟机通过一系列复杂的机制和操作,确保 Dart 代码能够准确、高效地执行。它为 Dart 语言的广泛应用提供了坚实的基础和可靠的运行环境
74 6
|
3月前
|
人工智能 安全 Ubuntu
操作系统加码主动防护:数智化有了“安全底座”
操作系统的发展遵循约20年的周期律,从大型机到个人电脑,再到互联网时代,每次变革都催生了新的应用和市场。当前,随着数字化、智能化的浪潮,操作系统再次迎来革新机遇。以Linux为代表的开源操作系统,凭借其开放性和安全性,在服务器市场占据主导地位。面对AI时代的安全挑战,openEuler提出“OS for AI,AI for OS”理念,通过复式内核设计和AI技术,强化了系统的安全性和性能,展现了中国在开源领域的创新实力。
|
3月前
|
人工智能 供应链 安全