iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >认识Java底层操作系统与并发基础
  • 769
分享到

认识Java底层操作系统与并发基础

2024-04-02 19:04:59 769人浏览 独家记忆
摘要

目录一、现代计算机硬件结构1.CPU内部结构1.1.CPU缓存结构1.2.CPU运行安全等级2.操作系统内存管理3.进程与线程一、现代计算机硬件结构  核心部分:&nbs

一、现代计算机硬件结构

image.png

 核心部分: CPU、内存

1.CPU内部结构

image.png

  • 控制单元: 整个 CPU 的指挥控制中心
  • 运算单元: 运算器核心,执行算术运算与逻辑运算。运算器接收控制单元的指令而执行动作
  • 存储单元: CPU 中暂时存储数据的地方,包括 CPU 片内缓存 Cache 和 寄存器组

1.1.CPU缓存结构

现代 CPU 为了提升执行效率,减少 CPU 与内存的交互(交互影响 CPU 效率),一般在 CPU上集成了多级缓存架构,常见的为三级缓存结构

  • L1 Cache,分为数据缓存和指令缓存,逻辑核独占
  • L2 Cache,物理核独占,逻辑核共享
  • L3 Cache,所有物理核共享

image.png

此机器的三级缓存架构如下图:L1 Cache又分为两种,指令存储单元(存指令),和逻辑存储单元(存逻辑)。理论上一台机器可以有多个 CPU,由插槽决定,一个 CPU 又有多核,一个核又可以由多个逻辑处理器。

image.png

寄存器是 CPU 内部元件,读写速度非常快。 CPU 读取数据只会从寄存器中去取,每个 CPU 都有一个独有的寄存器,其他 CPU 无法访问。采用寄存器,可以减少 CPU 访问内存的次数,从而提高了 CPU 的工作速度。

越靠近 CPU 读取速度越快,摩尔定律中,CPU 以每18个月翻一番的速度在发展,而内存和硬盘的发展速度远远跟不上。为了解决 CPU 运算速度和 I\O 速度不匹配的问题,CPU 开始被内置了少量的高速缓存 Lx Cache(CPU空间有限,存储元件大小受限)。

  • 存储器存储空间大小: 内存 > L3 Cache > L2 Cache > L1 Cache > 寄存器
  • 存储器读取速度快慢: 寄存器 > L1 Cache > L2 Cache > L3 Cache > 内存
  • 缓存是由最小的存储区块--- 缓存行(CacheLine) 组成,缓存行大小通常为64byte。我的机器L1的缓存大小时512K,则由512 * 1024/64个缓存行组成。

CPU读取存储器数据过程: CPU 仅能直接从寄存器中获取数据。 假设数据 x = 0 在内存中,则它的取值过程如下:

判断寄存器中是否存在

不存在则遍历L1 Cache 看是否存在,不存在遍历L2 Cache,L2 Cache 中没有,遍历L3 Cache。中间过程存在,则会把 Cache 行住,拷贝到上一级,直至到寄存器。

Cache 中没有则区内存中找,先通知内存控制器占用总线带宽,通知内存加锁,发起内存读请求,等待回应,回应数据拷贝到L3 Cache。 注意:整个过程加锁直至到CPU才会解开

局部性原理:在CPU访问存储设备时,无论是存取数据还是存取指令,都趋于聚集在一片连续的区域中。

这种局部性原理又有两种:

  • 时间局部性(Temporal Locality): 如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。 比如循环、递归、方法的反复调用等。
  • 空间局部性(Spatial Locality): 如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。 比如顺序执行的代码、连续创建的两个对象、数组等。

空间局部性的例子: 一个很大的二维数组,累加求和一行一行加会比一列一列累加快很多。在CPU 在内存中读取数据时会将附件的数据都读进去。

1.2.CPU运行安全等级

CPU被划分为 4 个运行级别:

  •  ring0 内核态
  •  ring1
  •  ring2
  •  ring3 用户态

linuxwindows 都只用到了两个级别:ring0ring3,操作系统内部内部程序指令通常运行在 ring0 级别,操作系统以外的第三方程序运行在 ring3 级别,第三方程序如果要调用操作系统内部函数功能,由于运行安全级别不够,必须切换CPU运行状态,从 ring3 切换到 ring0, 然后执行系统函数,创建线程,线程阻塞唤醒是重型操作,因为CPU要切换运行状态。 

JVM 创建线程是 CPU 的流程:

  • 第一步:CPU 从 ring3 切换 ring0 创建线程
  • 第二步: 创建完毕,CPU从 ring0 切回 ring3
  • 第三步: 线程执行JVM程序
  • 第四步: 线程执行完毕,销毁切回 ring0
  • 第五步: 线程销毁,切回 ring3

2.操作系统内存管理

为了使程序运行安全隔离与稳定,操作系统有用户空间内核空间两个概念。以 32位操作系统4G大小的内存空间为例:

image.png

Linux 为内核代码和数据结构预留了几个页框,这些页永远不会被转出到磁盘上(4GB内存空间,用户程序可使用3GB)。如图绿色部分的线性地址可由用户代码和内核代码进行引用(即用户空间)。黄色部分的线性地址只能由内核代码进行访问(即内核空间)。

进程与线程只能运行在用户方式(usermode) 或 内核方式(kernelmode) 下。用户程序运行在用户方式下,而系统调用运行在内核方式下。

用户方式下使用一般的堆栈(用户空间的堆栈),内核方式下使用固定大小的堆栈(内核空间的堆栈,一般为一个内存页的大小),即每个进程与线程其实有两个堆栈,分别运行与用户态内核态

CPU调度的基本单位线程,也划分为:

  • 内核线程模型(KLT): Java使用,内核保存线程的状态和上下文信息,线程阻塞不会引起进程阻塞。在多处理器系统上,多线程在多处理器上并行运行。线程的创建、调度和管理由内核完成,效率比ULT要慢,比进程操作快。
  • 用户线程模型(ULT): 不依赖操作系统核心,应用提供创建、同步、调度和管理线程的函数来控制用户线程。不需要用户态/内核态切换,速度快。内核对ULT无感知,线程阻塞则进程(包括它的所有线程)阻塞

image.png

 线程都有两个堆栈,一个在用户空间,一个在内核空间。阻塞、创建、杀死线程将抛弃用户空间的堆栈,转移到内核空间,执行完毕后再转移到用户空间。

3.进程与线程

进程: 操作系统资源分配的最小单位,例如:启动一个 Java 程序,操作系统就会创建一个Java 进程,进程中可以包含多个线程。

线程: 操作系统调度CPU的最小单元,线程都拥有各自的计数器、堆栈和局部变量等属性, 并且能够访问共享的内存变量。CPU 在这些线程上高速切换,让使用者感觉到这些线程在同时执行(并发)。

线程上下切换: 保存上一个线程运行的中间状态,执行下一个线程

image.png

  • 串行: 时间上不可重叠,前一个任务没完成,下一个任务只能等待
  • 并行: 时间上是重叠的,两个任务在同一时刻互不干扰的同时执行
  • 并发: 运行两个任务彼此干扰,同一时间点,只有一个任务执行,交替执行

到此这篇关于认识Java底层操作系统与并发基础的文章就介绍到这了,更多相关Java底层操作系统内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 认识Java底层操作系统与并发基础

本文链接: https://www.lsjlt.com/news/165602.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 认识Java底层操作系统与并发基础
    目录一、现代计算机硬件结构1.CPU内部结构1.1.CPU缓存结构1.2.CPU运行安全等级2.操作系统内存管理3.进程与线程一、现代计算机硬件结构  核心部分:&nbs...
    99+
    2024-04-02
  • PHP底层与操作系统的交互与实现
    PHP底层与操作系统的交互与实现在Web开发中,PHP被广泛应用于服务器端的编程语言,它具有强大的功能和易用性。PHP底层与操作系统的交互与实现是PHP开发者必须掌握的知识之一。本文将介绍PHP底层与操作系统的交互方法,并提供一些具体的代码...
    99+
    2023-11-08
    操作系统 PHP底层 交互实现
  • 计算机基础知识—Linux操作系统
    这一块操作系统主要分为两个部分,一个部分是书本上操作系统的知识,还有一部门是linux的相关知识:linux相关知识###(1) Linux中同步异步、阻塞非阻塞的区别(超级重要)首先是同步异步、阻塞非阻塞的区别:同步:所谓同步,就是在发出...
    99+
    2023-06-05
  • 揭秘操作系统线程管理的底层原理,掌握并发之钥
    线程管理的基本概念 线程是一个轻量级的进程,它共享进程的地址空间和资源。多线程应用程序可以同时执行多个任务,从而提高性能和响应能力。 线程创建 线程由一个新创建的内核栈和一个寄存器集合组成。操作系统将上下文信息(例如程序计数器和堆栈指针)...
    99+
    2024-04-02
  • 计算机操作系统基础知识点有哪些
    这篇文章主要讲解了“计算机操作系统基础知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“计算机操作系统基础知识点有哪些”吧!操作系统:Operating System,简称OS操作系...
    99+
    2023-06-20
  • FreeRTOS实时操作系统多任务管理基础知识
    目录什么是多任务系统?FreeRTOS  任务与协程1.任务(Task) 的特性2.协程(Co-routine)的特性任务状态运行态就绪态阻塞态挂起态任务优先级任务实现任务...
    99+
    2024-04-02
  • java理论基础Stream管道流状态与并行操作
    目录一、回顾Stream管道流操作二、中间操作:有状态与无状态三、Limit与Skip管道数据截取四、Distinct元素去重五、Sorted排序六、串行、并行与顺序一、回顾Stre...
    99+
    2024-04-02
  • Linux操作系统基础的网络管理知识有哪些
    Linux操作系统基础的网络管理知识有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。网络管理(1) 网络状态查看在Linux中经常使用ifconfig,ro...
    99+
    2023-06-16
  • FreeRTOS实时操作系统信号量基础知识点有哪些
    今天小编给大家分享一下FreeRTOS实时操作系统信号量基础知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.信...
    99+
    2023-06-29
  • 剖析操作系统线程管理的底层机制:探寻并发世界的运行之道
    1. 操作系统线程与进程 操作系统中的线程是一个轻量级的执行单元,拥有自己的栈和寄存器组,属于同一进程。进程是一个包含线程组的独立执行环境,拥有自己的地址空间和资源。线程共享进程的内存、文件系统和其他资源,允许多个线程同时运行,提高应用...
    99+
    2024-03-04
    线程、进程、调度、同步、死锁
  • FreeRTOS实时操作系统多任务管理基础知识有哪些
    本篇内容主要讲解“FreeRTOS实时操作系统多任务管理基础知识有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“FreeRTOS实时操作系统多任务管理基础知识有哪些”吧!RTOS 系统的核心...
    99+
    2023-06-29
  • 从基础知识到尖端技术:操作系统在物联网知识点中的作用
    ...
    99+
    2024-04-02
  • 面试必备:Java并发编程与Linux操作系统的完美结合。
    Java并发编程和Linux操作系统可以说是现代软件开发中最为重要的两个主题之一。Java并发编程是指在Java程序中使用多线程和锁等机制来实现并发处理,而Linux操作系统则是一种开源的、免费的、高性能的操作系统,被广泛应用于服务器和嵌入...
    99+
    2023-06-24
    linux 面试 并发
  • Java基础教程之获取操作系统及浏览器信息
    目录User Agent 的含义浏览器的 UA 字串UserAgentUtils.jar通过(User-Agent)获取 浏览器类型,操作系统类型,手机机型再给出一个:总结在生产环境...
    99+
    2024-04-02
  • 面试必备技能:Java并发编程与Linux操作系统的结合应用。
    面试必备技能:Java并发编程与Linux操作系统的结合应用 在当今互联网时代,Java并发编程和Linux操作系统成为了程序员求职市场中的热门技能。Java并发编程是指在多个线程同时执行的情况下,保证程序正确执行的编程技术,而Linux操...
    99+
    2023-06-24
    linux 面试 并发
  • 操作系统线程管理与实时系统的关系:并发执行的特殊考验
    实时系统的特点 实时系统以其实时性要求为特点,这意味着必须在严格的时间限制内响应事件。这种时间约束性对操作系统线程管理带来了挑战,因为操作系统必须确保线程在预期的时刻执行。 并发执行的挑战 并发执行是指多个线程同时运行。在实时系统中,并发...
    99+
    2024-04-02
  • 线程管理在操作系统中的重要性:并发编程的基石
    引言: 线程管理是操作系统(OS)中的一项核心服务,它负责创建、同步、调度和终止线程。线程是轻量级的执行单元,它在进程的上下文中运行。有效管理线程对于现代操作系统至关重要,它不仅支持并发性和响应能力,还提高了资源利用率。 1. 并发编程...
    99+
    2024-04-02
  • 网络操作系统的未来发展趋势:机遇与挑战并存
    NOS 发展的机遇 云端部署:云提供商正在推动 NOS 的云端部署,这将简化管理、降低成本并提高敏捷性。 人工智能集成:NOS 将与人工智能技术相结合,实现自动化运维、安全增强和性能优化。 大数据分析:NOS 将利用大数据分析技术,提供...
    99+
    2024-03-05
    网络操作系统、云计算、人工智能、大数据
  • 操作系统线程管理中的死锁问题:识别和解决并发的陷阱
    死锁是并发编程中常见且棘手的问题,它会导致两个或多个线程无限期地等待彼此的资源。在操作系统线程管理中,死锁可以冻结整个系统,导致严重的后果。本文将深入探讨死锁问题,提供识别和解决死锁的有效策略。 死锁的产生: 死锁通常发生在以下四个条件...
    99+
    2024-03-04
    死锁、操作系统、并发、进程、线程
  • 操作系统线程管理的教学与实践:培养并发执行大师
    现代计算机系统的高度并行化使得并发执行变得至关重要。通过有效地管理线程,操作系统可以充分利用多核处理器和并行计算的优势,从而提升系统性能和用户体验。 教学方面 理论基础: 涵盖线程的概念、生命周期、同步和调度机制。 介绍常见的线程库,如...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作