Linux 第0章 - 计算机概论
操作系统跟硬件有相当程度的关联性,所以,了解一下计算机概论可能会帮助你更快的了解Linux的概念。
1 电脑:辅助人脑的好工具
计算机:接受用户输入的命令与数据,经由中央处理器的算术与逻辑单元运算处理后,产生或存储成有用的信息。
计算机包括:商店的简易型加减乘除计算器、手机、卫星定位系统(GPS)、取款用的提款机(ATM)、台式电脑、笔记本电脑、平板电脑和智能手机,单板电脑、智能手表,只能穿戴式电脑。
1.1 电脑硬件的五大单元
输入单元,主机部分,输出单元
整台主机的重点在于中央处理器(CPU),CPU 为一个具有特定功能的芯片,里面含有指令集, 如果你想让主机进行什么特殊的功能,就得参考这块CPU是否有相关内置的指令集才可以。
CPU:算术逻辑运算单元和控制单元。 其中算术逻辑单元主要负责程序运算与逻辑判断,控制单元则主要协调各周边组件与各单元间的工作。
CPU 读取的数据都是从内存来的, 内存中的数据则是从输入单元传输进来的,而CPU处理完毕的数据也必须要先写回内存,最后数据才从内存传输到输出单元。
电脑 = 输入单元 + 输出单元 + 控制单元 + 算术逻辑单元 + 内存
基本上数据都是通过内存再流出去的
1.2 一切设计的起点:CPU的架构
精简指令集(RISC)与复杂指令集(CISC)
- 精简指令集(RISC)
这种CPU的设计中,指令集较为精简,每条指令的运行时间都很短,完成的操作也很简单,指令的执行性能较佳;但是若要做较为复杂的事情,就要多个指令来完成。
目前世界上使用范围最广的CPU可能就是ARM这种架构。
- 复杂指令集(CISC)
与RISC不同的是,CISC在指令集的每个小指令可以执行一些较低级的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因为指令执行较为复杂,所以每条指令花费的时间较长,但每个单条指令可以处理的工作较为丰富。
1.3 其他单元的设备
通过主板的芯片组连接其他设备,好让CPU可以通过这些设备执行命令。
- 系统单元: 系统单元包括CPU与内存及主板相关组件
- 存储单元: 包括内存与辅助存储
- 输入、输出单元
1.4 运作流程
- CPU = 脑袋
- 内存 = 脑袋中存放正在被思考的数据的区块
- 硬盘 = 脑袋中存放回忆的记忆区块
- 主板 = 神经系统
- 各项接口设备 = 人类与外界沟通的手、脚、皮肤、眼睛等
- 显卡 = 脑袋中的影像
- 主机电源 = 心脏
1.5 电脑的分类
- 超级计算机
- 大型计算机
- 迷你计算机
- 工作站
- 微电脑
1.6 电脑上面常用的计算单位(容量、速度等)
一般来说,数据容量使用是二进制的方式,速度单位则常使用十进制。
进位制 |
Kilo |
Mega |
Giga |
Tera |
Peta |
Exa |
Zetta |
二进制 |
1024 |
1024K |
1024M |
1024G |
1024T |
1024P |
1024E |
十进制 |
1000 |
1000K |
1000M |
1000G |
1000T |
1000P |
1000E |
- 速度单位
CPU的命令周期常使用MHz或是GHz之类的单位,这个Hz其实就是“次数/秒”的意思。而在网络传输方面,由于网络使用的是位(bit)为单位,因此网络常使用的单位为Mbit/s是Mbits per second,亦即是每秒多少Mbit。举例来说,大家常听说的“20M/5M”光纤传输速度,如果转成数据容量的字节时,其实理论最大传输值为:每秒2.5MB/每秒625KB的下载或上传速度。
一般硬盘制造商会使用十进制的单位,所以500GB代表50010001000*1000字节之意。转成数据的容量单位时使用二进制(1024为基数),所以就成为466GB左右的容量了。 并非是硬盘生产商骗人,只是因为硬盘的最小物理量为512B,最小的组成单位为扇区,通常硬盘容量的计算采用多少个扇区,所以才会使用十进制来处理的。
2 个人电脑架构与相关设备组件
早期的芯片组通常分为两个网桥来控制个组件的通信,分别是:
- 北桥,负责连接速度较快的CPU、内存与显卡等组件;
- 南桥,负责连接速度较慢的设备接口,包括硬盘、USB设备、网卡等。
不过由于北桥最重要的就是CPU与内存之间的桥接,因此在目前的主流架构中,大多将北桥的内存控制器整合到了CPU当中。 之前存在北桥的时候,CPU和内存的交流会消耗掉北桥的总可用带宽。 因此目前将内存控制器整合到CPU后,CPU与内存之间的通信是直接交流,速度加快之外,也不会消耗更多的带宽。
2.1 执行脑袋运算与判断的CPU
频率就是CPU每秒钟可以进行的工作次数
注意,不同的CPU之间不能单纯地以频率来判断运算性能。这是因为每块CPU的指令集不同,架构也不见得一样,可使用的二级缓存及其运算机制可能也不同,加上每一次频率能够进行的工作指令数也不同,所以,频率目前仅能用来比较同款CPU的速度。
- CPU的工作频率:外频与倍频
所谓的外频指的是CPU与外部组件进行数据传输时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者想乘才是CPU的频率速度。
现在已经没有所谓的北桥(已经整合到CPU内),因此,CPU的频率设计就无须考虑要同步的外频,只需要考虑整体的频率即可。
- 32位与64位的CPU与总线“位宽”
内存能提供的数据量,还是得要借由CPU中的内存控制芯片与内存间的传输速度“前端总线速度(FSB)”来说明。
与CPU频率类似,内存也有其工作频率,这个频率的限制还是来自于CPU中的内存控制器所决定。
与总线位宽相似的,CPU每次能够处理的数据量称为字长,字长依据CPU的设计而有32位与64位。我们现在所称的电脑是32或64位主要是依据这个CPU解析的字长而来的。 早期的32位CPU中,因为CPU每次能够解析的数据量有限,因此由内存传来的数据量就有所限制,这也导致32位的CPU最多只能支持最大到4GB的内存。
得益于北桥整合到CPU内部的设计,CPU得以单独与各个组件进行通信。因此,每种组件与CPU的通信具有很多不同的方式。例如内存使用系统总线带宽来与CPU通信,而显卡则通过PCI-E的序列信道设计来与CPU通信。
- CPU等级
目前很多程序都有对CPU做优化的设计,不要在等级低的机器上安装高等级软件,可能会无法运行。不过,可以在高等级机器上面安装低等级软件,也就是说,这些东西具有向下兼容的能力。
- 超线程(Hyper - Threading,HT)
主要原因就是想榨干CPU剩余的运算能力
那HT功能是怎么实现的呢?
在每一个CPU内部将重要的寄存器分成两组,而让程序员分别使用这两组寄存器。也就是说,可以有两个程序“同时竞争CPU的运算单元”,而非通过操作系统的多任务切换。 这一过程就会让CPU好像“同时有两个内核”的样子。
2.2 内存
个人电脑的内存主要组件为动态随机存取内存。
以服务器来说,内存的容量有时比CPU的速度还要重要。
- 多通道设计
启动双通道内存功能时,数据是同步写入/读出这一对内存中, 如此才能提升整体的带宽。
- DRAM和SRAM
二级缓存的速度必须要与CPU频率相同,DRAM是无法达到这个频率速度的,此时就需要静态随机存取内存(SRAM) SRAM在设计上使用的集体管数量较多,价格较高,且不易做成大容量,不过由于其速度快,因此整合到CPU内成为高速缓存以加快数据的读写是个不错的方式。
- 只读存储器(RAM)
BIOS是一个程序,这个程序是写死到主板上面的一个存储芯片中,这个存储芯片在没有通电时也能记录数据,这就是只读存储器。
2.3 显卡
显卡又称VGA,它对于图形影像的显示扮演着相当关键的角色。一般对于图形影像的显示重点在于分辨率与色彩深度,因为每个图像显示的颜色会占用内存,因此显卡上面会有集成内存并被称为显存,这个显存容量将会影响到你的屏幕分辨率与色彩深度。
一些3D的运算任务早期是由CPU完成,但是CPU并非完全针对这些3D运算需求来进行设计的,而且CPU平时已经很忙碌了。所以后来显卡厂商直接在显卡上面嵌入一个3D加速的芯片,这就是所谓的GPU称谓的由来。显卡主要也是通过GPU的控制芯片来与CPU、内存等通信。
2.4 硬盘与存储设备
- 硬盘的物理组成
硬盘其实是由许许多多的圆形碟片、机械手臂、磁头与主轴马达所组成的。
实际的数据都是写在具有磁性物质的碟片上面,而读写主要是通过在机械手臂上的磁头来完成。实际运行时,主轴马达让磁片转动,然后机械手臂可伸展让磁头在碟片上面进行读写的操作。
- 碟片上的数据
磁盘上的一个小区块就是磁盘的最小物理存储单位,称之为扇区,同一个同心圆的扇区组合成的圆就是所谓的磁道。 由于磁盘里面可能会有多个碟片,因此在所有碟片上面的同一个磁道可以组合成所谓的柱面。
- 传输接口
SATA接口
SAS接口
USB接口
- 固态硬盘
它没有马达不需要转动,而是通过闪存直接读写的特性,因此除了没数据延迟且快速之外,还很省电。
- 选购与使用须知
HDD或SSD
容量
缓冲存储器(缓存)
转速
使用须知
2.5 扩展卡与接口
常见的集成到主板的组件包括声卡、网卡、USB控制器、显卡、磁盘阵列卡等。
多通道卡(例如x8的卡)安装在少通道插槽(例如x4的插槽)的可用性
2.6 主板
主要讲的就是芯片组与扩展卡之间的关系
- 发挥扩展卡性能须考虑的插槽位置
有的插槽是直接与CPU相连接的,有些是通过南桥和CPU进行数据交互的,要知道PCIe 2.0 x8的理论速度已经达到4GB/s,但是于CPU的数据带宽尽然仅有2GB,性能的瓶颈就这样发生在CPU与南桥的带宽上面。
- 设备I/O地址与IRO中断请求
主板芯片组怎么知道如何负责通信呢?这个时候就需要用到所谓的I/O地址与IRQ。
如果把I/O地址想成是各设备的门牌号码的话,那么IRQ(中断)就可以想成是各个门牌连接到邮件中心(CPU)的专门路径。
- CMOS与BIOS
CMOS主要的功能为记录主板上面的重要参数,包括系统时间、CPU电压与频率、各项设备的I/O地址与IRQ等,由于这些数据的记录要用电,因此主板上面才有电池。BIOS是写入到主板上某一块flash或EEPROM的程序,它可以在计算机启动的时候执行,以加载CMOS当中的参数,并尝试调用存储设备中的引导程序,进一步进入操作系统当中。
- 连接外置设备的接口
PS/2接口
USB接口
声音输出、输入与麦克风
RJ-45 网络头
HDMI
2.7 主机电源
能源转换率
主机电源本身也会使用一部分的电力
2.8 选购须知
在性能方面并非仅考虑CPU的能力而已,速度的快慢与整体系统的最慢的那个设备有关。
系统不稳定的可能原因
系统超频
主机电源不稳
内存无法负荷
系统过热
3 数据表示方式
3.1 数字系统
二进制与十进制相互转换
3.2 字符编码系统
所谓的编码系统可以想成是一个字码对照表。写入文件的字符数据时,该文字数据会由编码对照表将该字符转成数字后,在存放文件当中。当我们要将文件内容的数据读出时,也会经过编码对照表将该数字转成对应的字符后,在显示到屏幕上。
常见的英文编码表为ASCII系统,中文当中的编码系统早期最常用的是Big5这个编码表(台湾,大陆为GB2312或GBK编码方案)
国际组织指定UYnicode编码系统,我们常常称呼的UTF-8或万国码的编码就是这个东西。
4 软件程序运行
软件 = 系统软件 + 应用程序
4.1 机器语言程序与编译型程序
- 需要了解机器语言
- 需要了解所有硬件的相关功能函数
- 程序不具有可移植性
- 程序具有专一性
为了要解决硬件方面老是需要重复编写句柄的问题,所以就有操作系统的出现了。
4.2 操作系统
如果我能够将所有的硬件都驱动,并且提供一个软件的参考接口来给工程师开发软件的话,那开发软件不就变得非常的简单了吗?这就是操作系统。
-
操作系统内核(Kernel)
操作系统其实也是一组程序,这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。 硬件的所有操作都必须要通过操作系统来实现。内核程序被放置到内存当中的区块是受保护的,并且启动后就一直常驻在内存当中。
-
系统调用(System Call)
只要硬件不同(如x86架构与RISC架构的CPU),内核就得要进行修改才行。
为了保护内核,并且能让程序员比较容易开发软件,操作系统除了内核程序之外,通常还会提供一套API,那就是系统调用层。
操作系统的内核层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运行
操作系统只是管理整个硬件资源,包括CPU、内存、输出输出设备及文件系统等
应用程序的开发都是参考操作系统提供的API,所以该应用程序只能在该操作系统上面运行而已,不可以在其他操作系统上运行
-
内核功能
系统调用接口
进程管理
内存管理
文件系统管理
设备驱动
-
操作系统与驱动程序
操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能
一般来说,操作系统会提供API,让开发商编写他们的驱动程序
要使用新硬件功能,必须要安装厂商提供的驱动程序才行
驱动程序是由厂商提供,与操作系统无关
4.3 应用程序
应用程序是与操作系统有关系的
5 重点回顾
- 计算机的定义为:接收用户输入命令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或存储成有用的信息
- 电脑的五大单元包括:输入单元、输出单元、控制单元、算术逻辑单元、记忆单元五大部分,其中CPU包含控制、算术逻辑单元,记忆单元又包含内存与辅助存储
- 数据会流进或流出内存是CPU所发布的控制命令,而CPU实际要处理则完全来自于内存
- CPU依设计理念主要分为:精简指令集(RISC)与复杂指令集(CISC)系统
- 关于CPU的频率部分:外频指的是CPU与外部组件进行数据传输时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者想乘才是CPU的频率速度
- 新的CPU设计中,已经将北桥的内存控制芯片整合到CPU内,而CPU与内存、显卡通信的总线通常称为系统总线。南桥就是所谓的输入输出(I/O)总线,主要在连接硬盘、USB、网卡等设备
- CPU每次能够处理的数据量称为字长,字长依据CPU的设计而有32位与64位。我们现在所称的电脑是32或64位主要是依据这个CPU解析的字长而来
- 个人电脑的内存主要组件为动态随机存取内存,至于CPU内部的二级缓存则使用静态随机存取内存
- BIOS是一个程序,这个程序是写死到主板上面的一个内存芯片中,这个内存芯片在没有通电时也能够将数据记录下来,那就是只读存储器
- 目前主流的外接卡接口大多为PCle接口,且最新为PCle3.0,单通道速度高达 1GB/s
- 常见的显卡连接到屏幕的接口有HDMI、DVI、D-Sub、DisplayPort等。HDMI可同时传送影像和声音
- 传统硬盘的组成为:圆形碟片、机械手臂、磁头与主轴马达所组成的,其中碟片的组成为扇区、磁道与柱面
- 磁盘连接到主板的接口大多为SATA或SAS,目前桌面电脑主流使用得为SATA 3.0,理论极速可达 600MB/s
- 常见的字符编码为ASCII,简体中文编码主要GB2312及UTF-8两种,目前主流为UTF-8
- 操作系统其实也是一组程序,这组程序的重点在于管理电脑的所有操作以及驱动程序中的所有硬件
- 电脑主要以二进制为单位,常见的磁盘容量单位为字节,其单位转换为1字节=8位
- 最普通的操作系统仅在驱动与管理硬件,而要使用硬件时,就得需要通过应用软件或是壳程序(Shell)的功能,来调用操作系统操作硬件哥工作。目前称为操作系统的除了上述功能外,通常已经包含了日常工作所需要的应用软件在内