一、cpu详解
CPU按照指令集可以分为精简指令集CPU和复杂指令集CPU两种,区别在于前者的指令集精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。后者的指令集每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。
1、x86-64的含义
x86:是针对CPU的型号或者说架构的一种统称。
64位:CPU的位数指的是CPU一次性能从内存中取出多少位二进制指令,64bit指的是一次性能从内存中取出64位二进制指令。
CPU具有向下兼容性:64位的CPU既能运行32位的程序也能运行64位的程序
2、内核态与用户态(代表cpu的两种工作状态)
(1)内核态:运行的程序是操作系统,可以操作计算机硬件
(2)用户态:运行的程序是应用程序,不能操作计算机硬件
内核态与用户态的转换:
应用程序的运行必然涉及到计算机硬件的操作,那就必须有用户态切换到内核态下才能实现,所以计算机工作时在频繁发生内核态与用户态的转换。
3、多线程与多核芯片
(1)2核4线程(假4核):2核代表有两个cpu,4线程指的是每个cpu都有两个线程。
(2)4核8线程(假8核):4核代表有4个cpu,8线程指的是每个cpu都有两个线程。
二、存储器
RAM:内存
ROM:“只读内存”,存放计算机厂商写死计算机上的一段核心程序,BIOS。
CMOS:存取速度慢,断电数据丢失,耗电量极低
1、硬盘:
(1)机械硬盘:磁盘
磁道:一圈数据,对应着一串二进制(1bit代表一个二进制位)
磁头:负责读写数据
扇区:一个扇区通过为512Bytes
站在硬盘的解读,一次性读写数据的最小单为为扇区,操作系统一次性读写的单位是一个block块,相当于8扇区的大小=4096Bytes。
(2)固态硬盘:基于电工作,比机械硬盘速度快,可永久存放,但造价较高。
2、IO延迟=平均寻道时间+平均延迟时间
平均寻道时间:机械手臂转到数据所在磁道需要花费的时间,受限于物理工艺水平,目前机械硬盘可以达到的是5ms。
平均延迟时间:机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间。转半圈需要花费4ms,受限于硬盘的转速。
优化程序运行效率的一个核心法则:能从内存取数据,就不要从硬盘取
三、操作系统的启动流程
1、计算机加电
2、BIOS开始运行,检测硬件:cpu、内存、硬盘等
3、BIOS读取CMOS存储器中的参数,选择启动设备
4、从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
5、根据分区信息读入bootloader启动装载模块,启动操作系统
6、然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核
四、应用程序的启动流程
1、双击exe快捷方式,找到exe文件的绝对路径,就是在告诉操作系统说:我有一个应用程序要执行,应用程序的文件路径是(exe文件的绝对路径)。
2、操作系统会根据文件路径找到exe程序在硬盘的位置,控制其代码从硬盘加载到内存。
3、然后控制cpu从内存中读取刚刚读入内存的应用程序的代码执行,应用程序完成启动。
来源:https://www.cnblogs.com/python-htl/p/12444505.html