操作系统与底层

CPU指令
控制单元:由指令寄存器,指令译码器,操作控制器组成;
运算单元;
数据单元;
CPU缓存结构
CPU分为物理核和逻辑核,逻辑核一般是物理核的两倍数量,超线程使得物理核变成逻辑核;一个物理核可以并发执行两个线程,但是用的不多,游戏软件上会利用这种超线程技术提高游戏体验;一台电脑上可以有多个CPU(服务器上4-8个),CPU上可以有多个核,核与核之间有些数据是可以共用的;

CPU提升速度快,内存发展慢,所以造成了失衡,而且距离远,没办法跟上CPU的处理速度,所以有多级缓存的结构,减少与内存条的交互;
寄存器:核独享
L1:分为数据缓存和指令缓存,逻辑核独占;一个核只有一个L1;
L2:物理核独占,逻辑核共享;一个物理核也只有一个物理核;
L3:所有物理核共享;
速度:寄存器>L1>L2>L3>内存;
(距离:越近越快,寄存器直接就嵌在cpu上了)
大小:内存>L3>L2>L1>寄存器;

最小的存储单元(L1,L2,L3)缓存行:64字节,最少分配这么多;
拿数据的过程:内存中的数据到L3–>L2–>L1–>寄存器;
可以跨缓存行存储;

空间局部性原则:当CPU发出一个请求拿一个变量时;并不会只去拿一个变量,CPU交互一次需要时间,他会把紧邻的区域全部加载进来;
时间局部性原则:如果一个对象被访问,那么近期也会很可能被访问,他不会马上被删除,而是存在缓存里面;
操作系统内存管理

32位系统:2的32次方,寻址空间:0-2的32次方,就是4G的空间,CPU运行安全等级划分成4个级别,r0,r1,r2,r3,处在不同的空间可以发出不同级别的命令.我们的系统一般都只有两个级别,分为两个空间:
内核空间(r0):1G空间运行操作系统;
用户空间(r3):运行第三方软件进程;
qq,JVM都是运行在用户空间;
分为两个空间是为了保护操作系统,不让其他软件修改重要东西;
创建线程线程的创建是jvm调用操作系统的库(指令)去创建线程,这些线程就由操作系统去管理。jvm运行在用户空间,操作系统运行在内核空间;线程就需要状态切换;线程和进程都有两个堆栈,线程的创建,杀死,阻塞都是要切换到内核里;线程就要放弃原有的用户空间,剩下内核空间;
调用完操作系统的功能函数之后,再从内核态转为用户态;
线程模型
KLT:线程的创建,销毁,调度都由操作系统去做;(JVM)
ULT:线程的创建,销毁,调度都再用户空间完成;(没办法发挥CPU的多核功能);
上下文切换:CPU执行线程的方式是给定线程一个时间片去执行代码,当这个时间片时间到了,就会停止执行,并且保存当前线程的状态,转而去执行另一个线程,这另一个线程也会分配一个时间片给他执行;
虚拟机指令集架构
栈指令集架构
运算A+B;
把A的值压入操作数栈,从操作数栈获取A的值把放到局部变量表的对应位置;
把B的值压入操作数栈,从操作数栈获取B的值把放到局部变量表的对应位置;
把A的值装载出来,把B的值装载出来,执行加法运算得道结果;
寄存器指令集架构
运算A+B;
直接发到CPU去运算;


版权声明:本文为qq_42001445原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。