计算机核心基础详解
一、CPU详解
1. CPU的分类与指令集
1) 指令集
指令集:把程序员控制 CPU 的指令,转成 CPU 操作某个组件的指令。这些指令不会自发地运行,由人类控制它才运行
指令集的分类:精简指令集、复杂指令集
- 精简指令集:指令集简短,完成的事情非常的简单。
- 优点:不容易错,更稳定
- 缺点:实现复杂的操作,需要的指令集就会成堆,才会完成这一件事实现复杂的操作
- 作用:争对稳定的需求,争对大型的计算机架构的服务器,它就需要精简指令集(如:网络设备,服务器等)
- 复杂指令集:单条指令比较复杂
- 优点:单条指令集完成的事情比较多,意味着完成复杂的事,只需要几条就够
- 缺点:单挑指令比较复杂,容易出错,不稳定
- 作用:争对功能更丰富,更强大,因该需要cpu内部的复杂指令集
拓展:中国计算机硬件行cpu行业的落后,更多的是cpu精简指令集的开发,做上层的开发,尤其是涉及到硬件方面,是比较薄弱的
2) CPU的分类
- x86架构:指的是CPU的型号,或者说cpu架构的一种统称
最早的那颗 Intel 发明出来的CPU代号称为 8086,后来在8086的基础上又开发出了 80285、 80386....,因此这种架构的 CPU 就被统称为 x86 架构
由于 AMD、Intel、VIA 所开发出来的 x86 架构 CPU 被大量使用于个人计算机上面,因此,个人计算机常被称为 x86 架构的计算机
程序员开发出的软件最终都要翻译成 CPU 的指令集才能运行,因此软件的版本必须与 CPU 的架构契合
我们发现名字中有 x86,这其实就是告诉我们:该软件应该运行在 x86 架构的计算机上
- 64位:CPU 的位数,指的是 CPU 一次性能从内存中取出多少位二进制指令,64bit 指的一次性能从内存中取出64位二进制指令
二进制的由来:内存基于电信号工作,所以人为的定义,高电频代表数字1,低电频代表数字0,0101之间高低电频的变化,就类比出了二进制
CPU向下兼容性:x86-64的 CPU 既能运行32位的软件,也能运行64位的软件
为什么cpu具有向下兼容性
我们知道 CPU 取的指令集数,取决于内存提供的指令集数。
举个例子:CPU 与内存的关系就像车道与车的关系,车道:CPU 的每次读取指令集数量 车:内存最大提供给 CPU 的指令集数,车道能越宽,一次性能容纳车的个数也就越多
2. 内核态与用户态
CPU 工作的两种状态,就是 CPU 的运行状态,也叫计算机的运行状态
- 内核态
运行的程序是操作系统,也就是操作系统当前工作的状态,也就是说在当前的状态下,CPU 中所有的指令集开放(控制其他硬件的指令集 + 运算相关的指令集),可以操作硬件
总结:运行的程序时操作系统,可以操作硬件
- 用户态
运行的程序是应用程序,当前状态cpu中只开放运算相关的指令集,不能操作硬件
总结:运行的程序是应用程序。不可以操作硬件
- 用户态与内核态的切换
在什么情况下会发生用户态与内核态的切换?
应用程序的运行涉及到计算机硬件的操作,那就必须从用户态切换到内核态才能实现,因此计算机工作时频繁的发生内核态与用户态之间的转换
总结:应用程序的运行涉及到计算机硬件的操作,就会发生内核态与用户态之间的转换
3. 多线程与多核芯片
了解 moore定律,moore定律指出,计算机芯片的晶体管数量每18月翻一倍,到现在为止这个定律以及不太确切了
- 2核代表有2个CPU,4线程指的是每个CPU都有2个线程,通常也叫假4核
- 4核代表有4个CPU,8线程指的是每个CPU都有2个线程,通常也叫假8核
二、存储器
- 结构从上到下:CPU,寄存器,高速缓存,内存,硬盘,磁盘
- 为了提高 CPU 读取数据的速度,所以在 CPU 与磁盘之间引入了内存,然后 CPU 从内存中读取数据其实也是慢的,所以之间加入的高速缓存,高速缓存还是不够块,又在 CPU 与高速缓存之间又增加了寄存器,这样一步一步提高 CPU 读取数据的速度
- 寄存器: 使用 CPU 同等材质制造而成,在 CPU 内部集成,CPU 运行下一步操作立马需要的指令
- 高速缓存:存放 CPU 经常使用的数据。CPU 读取数据的时候,先从高数缓存中查看自己所需要的数据,如果有直接从高速缓存中取走,速度很快2ns(这叫高速缓存命中)。如果没有再跑到内存中
1. RAM
RAM 英文全称 random access memory,又叫随机存取存储器,是一个可存可取的内存,断电数据丢失,就是我们通常所说的内存
2. ROM
ROM 英文全称 ready only memory,又叫只读存储器
只读内存,出产就有。为了保证安全性计算机产商出产就往ROM中写死一段核心程序。这段核心程序叫BIOS(BIOS英文全称basic input output system,又叫基本输入输出操作系统),保证计算机在没有任何操作系统的前提下,计算机可以启动
3. CMOS
存放BIOS程序产生的数据,比如:启动设备的优先级等
-
优点:耗电量极低,主板电池为时钟芯片供电,时钟芯片存放与CMOS中。(拓展:主板电池使用寿命3~5年)
-
缺点:数据容易丢失,断电数据丢失
4. 硬盘
1) 机械硬盘
什么是机械硬盘?机械硬盘依赖于机械的转动,盘片基于磁型号,所以也称之为磁盘
- 高低磁性号,高磁性号:代表1,二进制1
- 低磁性号:代表0,二进制0
磁头:负责读写数据
磁道:磁盘的一圈圈数据,对应一串二进制数
单位换算
注意:严格区分大小写,1kb 是 1kbit 而不是 1kBytes。小写 b 表示比特位,大写比表示字节
1bit(比特位) = 8Bytes(字节)
1024Bytes = 1KBytes
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
拓展:对应产商的硬盘存储单位1000表示为一个单位,例200G=200*1000*1000B
扇区:
-
硬盘的一次性读写数据的最小单位就是扇区,1个扇区为512Bytes
-
由扇区拓展出操作的1次性读写单位:操作系统的1次性读写的单位是1个 block 块,blcok 的概念对应的是8个扇区的大小,也就是4096Bytes。操作系统攒够了 block 块的容量才交给硬盘,以此来减少与硬盘打交道的次数,从而减少IO次数。(block 块大小可以自定义,默认1个 block 等于8个扇区大小)
柱面:
- 如图所示:所有的盘片,多个盘片上下当成一个整体
- 磁盘的分区的概念,就是从一个柱面开始,到第二个柱面结束,下面的所有范围看作一个整体,就是一个磁盘的分区
2) 固态硬盘
基于电子工作,取代机械硬盘容易损坏的缺点,使用的是物理元件,闪存芯片
5. IO延迟
假设当前硬盘磁头转速是7200/min,也就是120/s,那么转一圈需要-花费1/120≈8ms,半圈也就是4ms
- 平均寻道时间
机械手臂从一个柱面随即移动到相邻的柱面的时间成为寻道时间。找到了磁道就以为找到了数据所在的那个圈圈,但是还不知道数据具体在这个圈圈的具体时间。所以机械手臂移动柱面的时间,就叫平均寻道时间。(目前受限于物理工艺水平目前机械硬盘可以达到得是5ms)
- 平均延迟时间
机械手臂到达正确的磁道之后还必须等待旋转到数据所在的扇区,这段时间就叫平均延迟时间。(基于上面例子,转半圈需要花费4ms,受限于硬盘得转速)
- IO延迟
平均寻道时间 + 平均延迟时间 = IO延迟
硬盘为什么慢的正真原因
1.由上面可以知道,硬盘主要慢,是慢在找数据得过程,读数据是很快得过程。因此想优化程序运行效率,就要让程序减少与硬盘打交道得过程,数据能从内存取,就不要从硬盘取
2.文件读写就是与硬盘打交道的过程,因此要减少文件的读写操作(文件时操作系统给人提供操作硬盘的虚拟单位)
6. 虚拟内存
内存不够用的时候,在硬盘上划一块空间,这个空间就叫虚拟内存(拓展:Liunx系统的 swap分区就是虚拟内存)
作用:当内存不够用的时候,保证程序的正常运行
7. 磁带
一般用于备份,价格低,容量大,便于携带
三、总线
所有的计算的组成部分,这些硬件都是集成在一块板子上,这块板子就叫主板。而总线就是组件于组件之间来回传输数据的一种桥梁
北桥即 PCI桥:负责连接CPU与内存,可以发现北桥连接的都是高速设备
南桥即 ISA桥:负责连接SCSI(硬盘的一种接口)、USB(鼠标键盘等一些接口),可以发现南桥连接的是慢速设备
四、操作系统的启动流程
裸机下的三大硬件
-
CPU
-
ROM:充当内存,存放BIOS系统,BIOS能保证没有安装任何操作系统的前提下,你的计算机能够启动起来
-
CMOS:充当硬盘,存放BIOS程序产生的数据
安装系统的启动流程
-
计算机通电
-
BIOS开始运行,检测硬件:CPU、内存、硬盘等
-
BIOS读取CMOS存储器中的参数,选择启动设备
-
从启动设备上(就是即将安装的操作系统)读取第一个扇区的内容(MBR 主引导记录:MBR 主引导记录共512字节,前446字节为主导信息,后64字节为分区信息,最后2字节为标志位)
-
根据分区信息读入 boot loader 启动加载模块,启动真正意义上的操作系统。(该分区信息指的就是上面所读取第一个扇区内容的后64个字节的分区信息)
-
然后真正意义上的操作系统询问BIOS,以获取配置信息。对于每种设备,操作系统会检查设备驱动程序是否存在,如果没有操作系统会要求用户安装设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核,完成BIOS与操作系统的交接,获取了控制所有硬件的最高权限
安装操作系统后的三大硬件
- CPU
- RAM:开机以后,操作系统就加载到内存
- 本地硬盘:分区,启动盘存放操作系统这个软件
五、密码破解与相关信息
破解操作系统设置的密码
- 那个存有无密码的操作系统的U盘,插入电脑U盘接口,充当硬盘
- 启动BIOS,设置该没有密码的操作系统的启动优先级,待BIOS与该没有密码的操作系统交接完毕,重启计算机,此时优先加载的就是该没有密码的操作系统
- 该没有密码的操作系统此时获取了控制所有硬件的最高权限,而那个设置密码了的操作系统,仅仅只是躺在硬盘上的一堆普通的程序无恙,这时就可以随意修改密码
- 修改过后,重启计算机,进入BIOS中,把修改密码的操作系统的启动优先级,设置为最优先,重启计算机,拔出U盘,达到修改密码锁定的问题
破解BIOS中设置的密码
归根结底,BIOS 存放在 ROM 中,而提供启动信息的参数,都存放在 CMOS 中,可知道的是 CMOS 由主板电池供电,拔插主板电池,数据缓存消失,插入以后,原始数据不存在,BIOS 中的密码设置也不起作用了。所以说没有绝对的安全
六、应用程序的启动流程
- 双击 exe 可执行程序的快捷方式(就相当于把 exe 文件路径,告诉操作系统,说我有一个应用程序需要执行)
- 操作系统会根据文件路径找到exe程序在硬盘上的位置,控制其代码从硬盘加载到内存
- 然后控制CPU从内存中读取刚刚读入的应用程序代码并执行,应用程序则完成启动
本文详细信息参考地址:https://www.cnblogs.com/linhaifeng/p/6523843.html