ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《操作系统底层工作》

2021-04-07 15:32:27  阅读:114  来源: 互联网

标签:缓存 操作系统 工作 线程 内存 寄存器 cpu 底层


一、计算机的五大核心
控制器、运算器、存储器、输入设备以及输出设备;(这个就不多解释了,不懂问度娘)
二、CPU的指令结构
从java方面来说,首先有装载子系统进行加载java文件,加载成class文件最后存入内存(在方法区存成class元信息,并通过指针的方式在堆空间中创建class对象),在内存中就会有指令段和数据段,然后再通过控制总线,数据总线以及地址总线与cpu的控制单元进行交互调度,cpu调度后指令以及数据到运算单元进行计算,然后临时存入存储单元;

三、CPU缓存结构

      cpu在摩尔定律下几乎每18个月翻一番的速度发展,但是内存发展太慢,一直跟不上cpu的速度,这时候cpu为了减少与内存经常发生没必要的I/O磁盘交互,提高性能,于是在cpu上创建了三级缓存;

       速度比较:  cpu本身的寄存器> L1 > L2 > L3

       大小比较:  L3 > L2 >L1 >cpu本身的寄存器

       cpu  一般是多核状态, 我的电脑是64位, 一个cpu,4个物理核, 8个逻辑核(正常来说电脑的一个核只能运行一个线程,但是由于超线程的引入,现在电脑可以一个核处理两个线程);

       寄存器和L1和L2都i是cpu每个核独自的,核与核之间是访问不到的, L3是核与核之间共享的;

      

 

这里注意  cpu缓存是如何读取数据的,cpu首先先会去寄存器,如果寄存器没有,就找L1依次类推L2、L3 如何最后缓存都没有,那就到内存中去拿,拿到以后依次放到L3、L2、L1、寄存器;

并且缓存是以缓存行来存储数据的,每个缓存行可以存储64byte, 并且cpu读取数据的时候,不只是读取自己需要的数据,而且每次从内存中读取时,是把整个缓存行的数据一次性全部读出来,这样也是为了不必要的I/O,提高性能;

四、 操作系统内存管理

 操作系统分用户空间和内核空间, 一般第三方软件等等都作用在用户空间,然后操作系统在内核空间,这样也是为了保护操作系统,不能随便让一个软件访问操作系统,然后改变操作系统里的内容;

根据用户空间和内核空间的划分,我们可以把线程分为内核态和用户态,而我们jvm里用的是内核态,KTL, 意思就是线程创建、调度、销毁等等都是操作系统来控制的;所以咱们new Thread() 其实就是有jvm从ring3然后切换ring0,执行完后,在切换到ring3

 

 

进程与线程 什么是进程? 现代操作系统在运行一个程序时,会为其创建一个进程;例如,启动一个Java程序,操作系 统就会创建一个Java进程。进程是OS(操作系统)资源分配的最小单位。 什么是线程? 线程是OS(操作系统)调度CPU的最小单元,也叫轻量级进程(Light Weight Process), 在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性, 并且能够访问共享的内存变量。CPU在这些线程上高速切换,让使用者感觉到这些线程在同 时执行,即并发的概念,相似的概念还有并行! (上下文切换);

标签:缓存,操作系统,工作,线程,内存,寄存器,cpu,底层
来源: https://www.cnblogs.com/ryaisxj1314/p/14627837.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有