Java和操作系统交互细节

结合 CPU 理解一行 Java 代码是怎么执行的

根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器、控制器、存储设备,以及输入输出设备,如下图所示。


我们先来分析 CPU 的工作原理,现代 CPU 芯片中大都集成了,控制单元,运算单元,存储单元。控制单元是 CPU 的控制中心, CPU 需要通过它才知道下一步做什么,也就是执行什么指令,控制单元又包含:指令寄存器(IR ),指令译码器( ID )和操作控制器( OC )。

当程序被加载进内存后,指令就在内存中了,这个时候说的内存是独立于 CPU 外的主存设备,也就是 PC 机中的内存条,指令指针寄存器IP 指向内存中下一条待执行指令的地址,控制单元根据 IP寄存器的指向,将主存中的指令装载到指令寄存器,这个指令寄存器也是一个存储设备,不过他集成在 CPU 内部,指令从主存到达 CPU 后只是一串 010101 的二进制串,还需要通过译码器解码,分析出操作码是什么,操作数在哪,之后就是具体的运算单元进行算术运算(加减乘除),逻辑运算(比较,位移)。而 CPU 指令执行过程大致为:取址(去主存获取指令放到寄存器),译码(从主存获取操作数放入高速缓存 L1 ),执行(运算)。

这里解释下上图中 CPU 内部集成的存储单元 SRAM ,正好和主存中的 DRAM 对应, RAM 是随机访问内存,就是给一个地址就能访问到数据,而磁盘这种存储媒介必须顺序访问,而 RAM 又分为动态和静态两种,静态 RAM 由于集成度较低,一般容量小,速度快,而动态 RAM 集成度较高,主要通过给电容充电和放电实现,速度没有静态 RAM 快,所以一般将动态 RAM 做为主存,而静态 RAM 作为 CPU 和主存之间的高速缓存 (cache),用来屏蔽 CPU 和主存速度上的差异,也就是我们经常看到的 L1 , L2 缓存。每一级别缓存速度变低,容量变大。

下图展示了存储器的层次化架构,以及 CPU 访问主存的过程,这里有两个知识点,一个是多级缓存之间为保证数据的一致性,而推出的缓存一致性协议,具体可以参考这篇文章,另外一个知识点是, cache 和主存的映射,首先要明确的是 cahce 缓存的单位是缓存行,对应主存中的一个内存块,并不是一个变量,这个主要是因为 ** CPU 访问的空间局限性:被访问的某个存储单元,在一个较短时间内,很有可能再次被访问到,以及空间局限性:被访问的某个存储单元,在较短时间内,他的相邻存储单元也会被访问到。

而映射方式有很多种,类似于 cache 行号 = 主存块号 mod cache总行数 ,这样每次获取到一个主存地址,根据这个地址计算出在主存中的块号就可以计算出在 cache 中的行号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源介绍: 本次分享的资源是一份围绕“基于Spring Boot开发的BB平台医疗病历交互系统”的Java毕业设计项目,包含了完整的毕业论文和相应的毕设源代码。这一资源对于正在进行类似毕业设计或希望深入了解Spring Boot在医疗病历交互系统应用中的同学来说,具有极高的参考价值和实践指导意义。 该医疗病历交互系统以Spring Boot为框架,充分利用了其轻量级、易上手和快速开发的特点,实现了病历信息的数字化管理和高效交互系统能够支持医生、患者和管理员等不同角色的操作,提供了病历录入、查询、修改、删除等功能,实现了病历信息的实时更新和共享。 在毕业论文中,作者详细阐述了系统的设计思路、实现过程以及所遇到的技术难题和解决方案。论文不仅展示了作者扎实的Java编程基础和Spring Boot框架应用能力,还体现了作者对医疗病历交互系统实际需求的深刻理解和分析。 毕设源代码部分则提供了系统实现的具体细节,包括数据库设计、接口开发、前端页面实现等。代码结构清晰,注释详尽,方便读者阅读和理解。此外,源代码还包含了必要的依赖配置和测试用例,确保了系统的稳定性和可靠性。 总之,这份“基于Spring Boot开发的BB平台医疗病历交互系统”毕业设计资源是一份难得的学习和实践资料,无论是对于正在进行类似项目开发的同学,还是对于希望提升Spring Boot应用能力的开发者来说,都具有重要的参考价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值