硬件:
CPU是怎么运行的?
这个问题在写并发程序的时候困惑过我, 我一直搞不清楚并发的 可见性 和 volatile 到底是怎么实现的。
虽然看过很多帖子 , 但是模糊不清。
研究了 CPU 和 Linux的内存模型才有了一下见解。
首先CPU如同一个资源嵌在主板上,处理器的执行由外部时钟来监控。这个时钟称为系统时钟,它每隔相同的时间间隔就向CPU发送一个脉冲。在每个时钟脉冲上,处理器都会做一些工作。比如,处理器每个时钟脉冲上执行一条指令。处理器的速度一般以系统时钟的速率来描叙(说到这里,我知道了以前玩超频到底怎么回事, 提高)。一个100MHz的处理器每秒将接收100,000,000 个时钟滴答。但是用CPU的时钟频率来描叙CPU的工作能力是不正确的,因为它们执行的指令不相同。另外CPU并不总是100%工作的,它取决于操作系统分配给它的用户指令。(CPU有两种执行指令方式:内核和用户,支持VM的CPU还有客户模式用来运行虚拟机指令)
然而,快速的时钟可以在某种程度上代表高性能的CPU。处理器执行的指令是非常简单的;例如"将内存X处的内容读入寄存器Y"。寄存器是微处理器的内部存储部件,用来存储数据并对数据执行某些指令。寄存器依据存储内容不同分为多种,常见如:PC(程序计数器,记录下条指令地址,执行指令后自增长),SP(堆栈指针),PS(处理结果,执行方式等)。有些指令有可能使处理器停止当前的工作而跳转到内存中另外一条指令执行(操作系统就是这样进行进程切换的) 。
在CPU的外部还有一些缓存, 如 一级缓存, 二级缓存, 他们快于内存, 慢于寄存器, 主要作用就是提高速度。
在Java中不同线程也同进程一样被CPU在不同时刻或同时执行, 内存中的数据必须读入寄存器中才能被运算, 当先一个线程改变寄存器中的数据但没有同步到内存中时,其他线程重复从内存相同位置读取数据到寄存器,使得在寄存器中不同时刻代表相同意义的数据不一致, 而且 volatile关键字就是标志JVM保证变量在寄存器中的改变和内存是保持一致的。
而Java中的锁都是在JVM级别直接避免不同线程在同一时刻操作相同数据的机制。
分享到:
相关推荐
Linux操作系统是全球最广泛使用的开源操作系统之一,尤其在服务器领域占据主导地位。了解其原理对于计算机科学专业的学生和IT从业者至关重要。这份“Linux原理和复习PPT试卷.rar”压缩包包含了一系列的学习资源,...
3. **文件系统**:Linux的文件系统是其核心组件之一,它组织并管理磁盘上的数据。Linux采用的是EXT系列(如EXT2、EXT3、EXT4)或XFS、Btrfs等文件系统。文件系统管理着文件的创建、删除、读写操作,以及权限、链接和...
在IT领域,Linux操作系统是许多专业开发者和系统管理员的核心技能之一。对于初学者来说,Linux可能显得有些复杂和陌生,但通过系统的学习和实践,你可以掌握这个强大的工具。以下是一些推荐的书籍,它们可以帮助你从...
VI(Visual Editor)是Linux系统中最常用的文本编辑器之一,具有强大的文本处理能力和高效的工作流程。VI操作主要包括命令模式和插入模式。在命令模式下,用户可以进行移动、删除、复制、查找等操作;在插入模式下,...
学习Linux,意味着掌握了计算机科学中的核心技能之一,能够为未来的职业生涯打开更多的可能性。 ### 2. ARM架构与Linux ARM架构是当今移动设备中最常用的处理器架构之一,包括智能手机和平板电脑等。Linux操作系统...
这本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之一,作者宋劲松。 这是一本从零基础开始学习编程的书,不要求读者有任何编程经验,但读者应勤于思考。本书尽最大努力理清...
《Linux程序员学习必看:Linux那些事儿之我是USB》是一本深入浅出介绍Linux系统以及其与USB设备交互的专业书籍,对于想要在Linux领域深化学习的程序员来说,是一份不可多得的参考资料。本书全面覆盖了Linux操作系统...
《Linux原理及应用》这本书是Linux学习者的重要参考资料,它以深入浅出的方式,系统地介绍了Linux操作系统的基础知识和核心概念。Linux作为一种开源、免费的操作系统,被广泛应用于服务器、嵌入式设备以及桌面环境等...
Linux操作系统是计算机...Linux的灵活性和可定制性使得它广泛应用于服务器、嵌入式设备、云计算平台等各个领域,是IT专业人士必备的知识技能之一。通过实际操作和深入学习,用户可以更加熟练地驾驭这一强大的操作系统。
进程管理是Linux编程的重点之一,书中会涵盖进程创建、进程间通信(IPC)、信号处理等内容。理解这些概念有助于编写多线程、多进程的应用程序,提高程序的并发性和效率。 网络编程是现代应用程序不可或缺的部分,...
Linux操作系统原理是IT领域的核心知识之一,它涵盖了操作系统的基础理论、设计原则以及实现技术。Linux作为开源的操作系统,它的源代码公开,使得学习者能够深入理解操作系统的工作机制。以下是对"Linux操作系统原理...
《跟老男孩学Linux运维》是一本专注于Linux操作系统管理和维护的教材。本书的标题直接指向了其主要内容——Linux运维。Linux运维工程师需要掌握一系列技术,包括但不限于Linux系统安装、配置、优化、故障排除、监控...
网络配置是Linux管理员的重要工作之一。书中将介绍如何配置网络接口,如eth0或wlan0,设置静态IP地址,以及使用ping、netstat、nslookup等命令检查网络状态。此外,还会讲解远程访问工具如SSH,用于安全地远程管理...
本书最初是为北京亚嵌教育研究中心的嵌入式linux系统工程师就业班课程量身定做的教材之一,也适合作为高等院校程序设计基础课程的教材。本书对于c语言的语法介绍得非常全面,对c99标准做了很多解读,因此也可以作为...
C语言的重要性不言而喻,因为它是嵌入式系统开发中最常用的编程语言之一。掌握C语言的程度将直接影响嵌入式Linux的学习进程和效果。即使不用达到精通的水平,也必须具备一定的基础能力,如能编写数组排序、求和等...
- **Red Hat Linux 7.1发布**:2001年4月16日发布的Red Hat Linux 7.1版本,是当时功能强大且易用的操作系统之一。 #### 二、Red Hat Linux 7.1的新特性 1. **最新内核支持**:采用最新的Linux 2.4.2版稳定内核,...
1. **Red Hat Linux**:是最知名且流行的Linux发行版之一,面向企业和个人用户。它拥有强大的社区支持和商业服务,开发了RPM包管理系统和Gnome桌面环境。然而,由于图形化安装过程,初学者可能缺乏对系统底层运作的...
《基于Linux学习APUE》是针对那些热衷于在ARM平台上进行系统级编程的开发者们的...总之,《基于Linux学习APUE》是一次全面而深入的UNIX/Linux系统编程之旅,它将带你领略这个领域的精髓,助你在ARM开发道路上更进一步。
这一阶段旨在培养学员能够根据具体需求开发相应硬件设备的驱动程序的能力,这是成为一名合格的嵌入式系统工程师不可或缺的技能之一。 总之,“ARM+Linux学习路径”是一条系统性很强的学习路线,涵盖了从基础到进阶...