计算机底层知识简述

计算机要解决的问题

如何表示0和1。
在经历过晶体管等历程后,使用通过CPU进行通电断电过程表示及进行运算;

而内存,是提供给CPU用来计算的运算过程和数据;

由于计算机仅能识别0和1的的形式,所以产生了汇编语言;

汇编语言的本质:机器语言助记符,本质仍是机器语言

CPU的基础组成

PC:Program Counter 程序计数器,记录当前指令地址
Registers:寄存器,暂时存储CPU需要用到的数据
ALU:运算逻辑单元
CU:控制单元
MMU:内存管理单元

CPU乱序执行

在进行读等待的同时执行指令,提高效率
乱序可能引发读取到半初始化的问题

禁止重排序,在cpu层面通过lfence,sfence,mfence,内存屏障来保证屏障前后的操作不可乱序执行。

JVM实现:LL,SS,LS,SL屏障实现
Java中volatile,读操作:只有读完才可以进行写操作,写操作:只有写完才可以进行写操作

Happens-Before

Jvm规定重排序必遵守的问题
1、volatile变量规则:对一个volatile变量进行写操作先行发生于后面的变量的读操作
2、线程启动:start方法优先发生于这个线程每一个操作
3、线程关闭:线程的所有操作都优先于线程关闭检测
。。。

As-If-Serial

当成按照顺序执行。
不管如何排序,单线程执行的结果都不会改变

操作系统

即管理硬件,又管理软件。通过内核进行调度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值