一文说透系统和软件调优基础原理

#图片来自本站多看阅读下载

 

#极简整理排版

@有空的话陆续边更深更新docker   kubernetes   python

:感谢各位看官支持打赏我生存不忘记美丽

指针(内存溢出,,病毒风险)
指令寄存器
指令译码器
算数运算
逻辑运算
相临访问
dram内存条
sram     cpu   动态ram
ram是随机访问内存,给一个地址就能访问数据
映射   cache块 到行

三个流程
取指  取数据   译码  执行

操作系统任务调度器识别
分配cpu资源   翻译成cpu指令    执行

java不能直接运行到硬件上
只能运行到能识别语言特性的虚拟机上
java编译器   指令序列  也就是 java字节码

jvm类加载器加载class文件字节码,解释器到汇编指令,再转译成cpu可以识别的机器指令,解释器是软件来实现的,转移是硬件来实现转移速度很快

堆存数据,栈存代码
时钟滴答时钟中断,键盘输入到内核,中断后取走数据否则内核数据溢出会出现卡顿死机

中断寄存器
中断是系统调用产生的,用户太和内核态
用户和内核共享同一个地址空间
一般4g的虚拟地址1给内核,3给用户
尽量减少切换
创建县城是一个系统调用,所以有了线程池来减少切换

进程是操作系统对处理器中运行的程序的一种抽象

进程的物理实体用户太程序和支持进程运行的环境内核就是上下文,上下文切换就是换进程,切换可能来自操作系统调度,也可能来自进程内部,读取io的时候,会进行用户代码和操作系统代码内核态之间进行切换

每个进程分配一个连续空间的内存段,多个内存段,超出物理内存的时候就移动到硬盘上,等有充足内存的时候再加载进来,就是swap,每次操作都需要交换整段的数据

内存分页
连续的线性地址,分页后的物理地址,两者用内存分页实现关联,线性地址和物理地址,物理地址往往是分段不连续的

物理空间多个进程共享,通过页表映射管理,标准页4kb,一个进程分配的内存空间是以页为单位存储的,当需要和硬盘发生交换的时候也是以页为单位

内存映射,是从虚拟地址空间直接到硬盘

系统调用,磁盘到内核,到用户空间

用户进程和内核共享内存条只是位移而已

缺页异常就是还没加载进数据,只有映射而已,文件预热就是将数据加载进来

在linux中只要知道了一个变量的起始地址就能整体加载变量,因为变量开头就告知了变量大小

进程是资源管理最小单位
线程是cpu调度最小单位

线程是为了减少进程的切换,县城的上下文切换比进程小很多

一个进程多个线程可以在不同cpu上执行,

线程同步
是因为访问公共资源需要多个操作,而多个操作之间不具备原子性,但是内部有抢锁机制,

理想线程数和阻塞时间有关,比如全部是计算密集型的,只需要设置相同cpu核心数的线程数量,就能把cpu打满

cpu帮忙如果需要io操作,cpu将通道和设备进行连接,然后完成输入,然后处理io结束中断,

 

 

 

 

 

 

 

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34618 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月16日
下一篇 2022年2月16日

相关推荐