基础-计算机及操作系统和应用程序的概念

编程语言用来开发应用程序,应用程序要基于操作系统运行,硬件需要操作系统控制;

CPU即计算机的大脑,它从内存中获取指令然后进行解码,最后执行,周而复始直至程序被执行完成;但由于CPU的计算速度远大于内存,等待内存中的指令,就要浪费时间,所以在CPU的内部存在一个关键性的寄存器,用来保存临时数据,这样就可以弥补内存速度跟不上CPU的情况了;寄存器分为4类:

通用寄存器;程序计数器,堆栈指针,程序状态字存储器(PSW)

用于保存临时数据的就是通用寄存器了,CPU即将执行的指令会存放在程序计数器中,而还没有推出的过程框架会从存放在堆栈指针中,最重要的程序状态字寄存器是用来控制CPU的模式,内核态和用户态。

内核态:可以理解为让CPU对硬件直接进行操作调用所有指令集,一般操作系统的指令是可以直接将CPU转为内核态的

用户态:可以理解为不让CPU对硬件直接进行操作只能调用部分指令集,应用程序绝大部分只能将CPU在用户态下工作,只能通过系统调用(SystemCall)将状态转成内核态

存储器

CPU的L1L2缓存,曾经只听老师讲过CPU有1级2级缓存,但是没有深度的了解过L1L2的缓存是什么?

L1缓存就是刚才上面提到的寄存器了,与CPU同一个材质制造,死贵死贵的而且存储容量非常的小小小,32位CPU就是32*32位,64位CPU就是64*64位。

L2缓存可以理解为高速缓存区,其特性与RAM内存相似,是失忆性存储,断电数据就会消失了,但是其运行速度非常之快,介于CPU与内存之间。

RAM内存,这就是我们熟知的内存,后现代称其为运存,失忆性存储,断电数据就消失,用于快速存储指令供CPU调取。

闪存(FlashMemory)我是把它理解为读写速度非常快的记忆存储,你们也可以理解为U盘,SSD硬盘

CMOS是计算机最基础的存储器了,用于存储BIOS的相关设置和计时功能,可这么重要的存储器却是失忆性存储,不可以断电呀,所以只有靠BIOS电池CR2032,进行持续供电。

机械硬盘(磁盘),记忆存储器,用于存放大量资料数据,被广泛应用:

利用扇区存储,但是圆形寻道,这样的话每当想要寻找数据时,磁盘就会一圈一圈一圈的寻找存储的扇区,如果运气好,瞬间就可以寻找到,如果运气不好,就等着它一圈一圈的转吧,这个等待时间就叫平均寻道时间。

磁带,对于98年出生的我来说,已经没有见过了,存储速度慢,容积大,方便携带是它的特性,这个特性使他在数据备份领域占据了一定的优势。

虚拟内存,其实我的理解就是在物理内存不足以分配的时候,物理硬盘将部分存储空间划分为内存使用,在Linux操作系统中专门有一个虚拟内存的分区叫Swap,而虚拟内存映着在CPU中的地址则被称为MMU(存储器管理单元)

控制器,负责控制连接设备,从操作系统中得到指令并控制设备,例如操作系统保存一个数据,就会给硬盘控制器一个指令,控制器收到指令就去执行了,但是控制器本身也是需要执行方法的,这个执行方法,就是所谓的驱动程序
总线是一个非常不好理解的概念,我把它理解成电路:

ISA南桥用于连接非关键的慢速设备

PCI北桥用于高速设备的连接和交互

了解了这么多理论知识,来看一下当你的电源灯亮起,到屏幕上出现“小窗口”的过程吧

计算机通电-BIOS开始运行-检测硬件-BIOS加载CMOS中的设备参数-从启动设备中加载MBR主分区的内容-读取分区中的Boot启动模块-加载内容到内存中-出现小窗口
应用程序的启动程序-输入设备操作系统发送应用程序的指令-操作系统会将应用程序存放在内存中-CPU将指令从内存中取出解码运算返回,程序就开启了。

于是乎,一天就过去了

2017年3月10日

闫龙

原文地址:https://www.cnblogs.com/DragonFire/p/6531352.html