Linux系统
linux系统主要组成:应用程序、shell、文件系统、内核;
内核
内核作用:负责管理系统的进程、内存、设备驱动、文件系统和网络系统等,是操作系统的核心。
内核组成:
内存管理
进程管理
文件系统
设备驱动管理
网络管理
内核实现:通过系统调用接口来完成用户和内核之间的交互
内存
内存:
优点:存取速度远高于硬盘的速度
缺点:断电丢失数据,不能持久化数据
作用:交换数据
暂时存放cpu中的运算数据,与硬盘外部存储器交换的数据(相当于一个仓库)
保存从硬盘读取的数据,提供给cpu进行运算
保存cpu运算的临时执行结果,以便cpu下次使用或保存到硬盘中
硬盘:
优点:持久化存储数据(磁盘、光盘等)、存储容量大
缺点:速度慢
电脑工作时,会把要用的东西先从硬盘调用到内存中(内存比硬盘速度快,如果每次访问硬盘太慢了)
当我们在计算机上执行一个程序时,首先由输入设备向CPU发出操作指令,CPU接收到操作指令后,硬盘中对应的程序指令被直接加载到内存中,此后,CPU再对内存进行寻址操作,将加载到内存中的指令翻译出来,而后发送操作信号给操作控制器,实现程序的运行或数据的处理
cpu
cpu:
作用:处理指令、执行操作、控制时间、处理数据(即数据运算)等
组成:寄存器、控制单元、逻辑运算单元等
cpu执行指令过程:
程序实际上就是一条条指令,程序的运行过程就是指令一步步的执行起来,cpu本质上就是执行指令;
1. cpu先读取【程序计数器】的值即指令的内存地址,cpu的【控制单元】操作【地址总线】指定需要访问的内存地址,通知内存准备数据,数据准备好后通过【数据总线】将指令数据传给cpu,cpu收到传来的数据,将指令数据存入到【指令寄存器】;
2. cpu分析【指令寄存器】中的指令,确定指令的类型和参数,如果是计算类型的指令,就把指令交给【逻辑运算单元】运算,如果是存储类型的指令,则交由【控制单元】执行;
3. cpu执行完指令后,【程序计数器】的值自增,表示指向下一条指令;
缓存
缓存:
位置:缓存是cpu的一部分,位于cpu中
来源:在没有缓存之前,cpu一直是在内存中读取数据,但由于两者速度差异,cpu每次都要等内存的"回信", 缓存的设计是用来解决cpu与内存速度差异问题
理解:
假设一个8核的cpu,每个核都有自己独立L1 Cache(1级缓存)、L2 Cache(2级缓存),而L3 Cache(3级缓存)是8核共享的;
缓存大小:离核心越近、等级越高越小、速度越快、L1 Cache缓存最小,速度最快;
内存的数据会先加载到共享的L3 Cache中,再加载到每个核心独有的L2 Cache,最后进入到最快的L1 Cache,之后才被cpu读取;
虚拟内存
虚拟内存是windows操作系统用来管理内存的一种方法,虚拟内存说穿了就是把内存中的信息分出去一部分存在硬盘上,
这样从表面上看就扩大了内存容量(难怪内存中存了这么多东西,原来有一部分被转到了硬盘上)
缓存是一种硬件,而虚拟内存是存在硬盘上的文件,缓存的目的是加快系统的速度,而虚拟内存技术是为了使更多的程序能够在有限的内存中运行。
寄存器
寄存器:
作用:暂时存放参与运算的数据和运算结果
位置:是cpu内部元件,其读写速度非常快
种类:
通用寄存器:存储需要进行运算的数据(需要加减等运算的两个数据)
程序计数器:存储cpu要执行下一条指令所在的内存地址
指令寄存器:存储程序计数器指向的指令,指令被执行完之前都放在这里
cpu中的寄存器主要是存储计算时的数据,为什么有了内存还需要寄存器?因为内存离cpu太远了,而寄存器就在cpu里,
就比如,将100元放在口袋(寄存器), 和放在书包(内存)里,你(cpu)当然从口袋里取是最快的,并且寄存器离控制和逻辑运算单元都很近,速度可想而知;
进程
各个进程间共享cpu资源
进程间的内存是共享的
总结
速度:
寄存器 > 缓存 > 内存 > 硬盘
关系:
寄存器存储在cpu中,缓存是cpu划分的一片区域,cpu从内存中获取数据,内存是从硬盘中获取数据,
cpu从内存中拿到数据后,在cpu内部开辟一片存储空间,即缓存,将数据存储在缓存中,
以后cpu就从缓存中读取频繁使用的数据,减少cpu与内存的频繁交互,cpu从缓存中拿到数据后,
再将数据放入寄存器中,cpu对寄存器的数据进行计算,计算完后再将数据放到内存中
注:
1.当缓存中没有cpu所需要的数据,cpu会从内存中读取数据,再放到缓存中,再从缓存中读取数据;
2.当cpu需要将数据写入到内存中,会先存入到缓存,再找合适的机会写到内存中;