鸟哥的Linux私房菜
第0章 计算机概论
0.1 计算机
0.1.1 计算机硬件五大单元
计算机硬件五大单元:控制器、运算器、存储器、输入单元、输出单元;
CPU(Central Processing Unit):算术逻辑单元 and 控制单元;
CPU处理的数据来自于主存储器,处理完毕后写回主存储器,由主存储器与输入输出单元传输数据;
0.1.2 CPU架构
CPU存有微指令集,微指令集的两种不同的设计理念形成了两种主要的CPU架构:精简指令集系统(RISC)和复杂指令集系统(CISC);
-
精简指令集系统(Reduced Instruction Set Computer,RISC):
1、SPARC:
太阳微系统公司(Sun)开发了Sparc处理器,后Sun被甲骨文公司(Oracle)收购;
Sun还开发了Solaris操作系统,是Unix的一个衍生版本,被Oracle收购后改名为Oracle Solaris;
Sparc CPU常用于学术领域的大型工作站,包括银行金融体系的主服务器;
2、Power(主要为PowerPC):
IBM公司(International Business Machines Corporation)开发出Power系列处理器之后,又与苹果、摩托罗拉共同开发了PowerPC(Performance Computer)处理器;
索尼公司(Sony)退出的PS3(Play Station 3)就是使用的基于PowerPC架构的Cell处理器;
3、ARM:
ARM公司(Advanced RISC Machines)推出的ARM处理器是世界上适用范围最广的处理器,在包括手机、导航、路由、pad等各领域都广泛应用;
-
复杂指令集系统(Complex Instruction Set Computer,CISC):
1、AMD:
AMD公司(Advanced Micro Devices,AMD)开发的AMD处理器;
2、Intel:
英特尔公司(Intel)开发的Intel处理器;
由于AMD、Intel所开发出来的x86架构的CPU被大量用于个人计算机(Personal Computer,PC),因此,个人计算机被称为x86架构的计算机;
第一枚Intel8086处理器是16位处理器,第三枚Intel80386处理器是32位处理器,也是第一枚32位处理器,2003年后出现了x86架构的64位CPU,因此64位个人计算机CPU又统称为x86_64架构CPU;
32位处理器每次只能读取32bits的数据,即使32bits装载的全部都是地址位,每个地址对应一个字节B,32bits也只能编码2^32B(即4GB)的地址,这就是32位个人电脑内存最大到4G,而64位个人电脑内存理论上无限制(2^34GB)的原因;
0.1.3 其他单元的设备
主机设备大多通过主板(main board)连接,包括网卡、显示适配器(显卡)、磁盘阵列器等适配卡,主存储器(main memory,RAM(随机存储器,Random Access Memory))、硬盘、光盘等辅助存储设备、输入输出单元等;
0.1.4 运作流程
0.1.5 计算机用途的分类
1、超级计算机(Super Computer):国防军事、气象预测、太空科技等;
2、大型计算机(Mainframe Computer):大型企业主机、全国性证券交易所等大型企业机构;
3、迷你计算机(Mini Computer):科学研究、工程分析、工厂流程管理等;
4、工作站(Work Station):针对特殊用途设计的计算机,比迷你计算机性价比高,科学研究、工程分析、工厂流程管理等;
5、微电脑(Micro Computer):个人计算机;
0.1.6 计算机的常用单位
-
容量单位:
比特(bit,binary digit):0/1;
字节(Byte):1Byte=8bits;
KB、MB、GB、TB、PB、EB、ZB等;
容量单位 全部使用二进制表示;
-
速度单位:
指令周期:MHz、GHz,其中Hz为秒分之一;
网络传输:Mbps=Mbits per second;
速度单位 全部使用十进制表示,这里的G=1000M,M=1000K,而不是1024;
0.2 个人计算机架构与设备组件
芯片组通常用两个网桥来控制各组件的沟通:
1、北桥:连接速递较快的CPU、主存储器和显示适配器;
2、南桥:连接速度较慢的硬盘、USB、网卡;
由于北桥中CPU和主存储器之间传输频繁,会占用北桥的总可用带宽,目前大多将北桥的内存控制器整合到CPU中,CPU可以直接和存储器交流,加快了速度的同时解放了北桥的带宽;
现在已经没有所谓的北桥了,北桥已经整合到CPU内部了;
0.2.1 CPU相关内容
多核心CPU开始普及;
不同CPU型号具有不同的脚位,搭配的主板芯片组也不同;
CPU的频率表示了CPU每秒可以进行的工作次数,但是因为不同CPU微指令集不同,架构不同,第二层快取不同等,所以频率只能用来比较同款CPU速度;
-
CPU工作频率:外频和倍频
外频是CPU与外部组件进行数据传输的速度,倍频是CPU内部用来加速工作性能的倍数,二者相乘是CPU内部的工作频率;
倍频一般是锁定的,无法修改,所以超频一般指外频;
现在的Intel CPU可以自动超频,大量运算的时候自动超频,不需要大量运算的时候降低频率,实现节能省电的目的;
-
Intel超线程(HT,Hyper-Threading):
CPU实际运行中有两个程序同时进行运行,以解决CPU指令周期太快造成运算核心经常闲置的问题;
0.2.2 内存
个人计算机的主存储器主要组件是动态随机存取内存(Dynamic Random Access Memory,DRAM);
随机存取内存(Random Access Memory,RAM)只有通电时才能记录和使用,断电时失去数据,因此也被称为挥发性内存;
动态(Dynamic)指的是存储阵列需要不断地刷新来保持数据不丢失;
随机(Random)指的是数据不是线性依次存储,而是自由指定地址进行数据读写的;
现在广泛使用的DRAM有动态随机存取内存SDRAM(Synchronous Dynamic Random Access Memory)和双倍数据传输速率同步动态随机存取内存DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory)两种;
双倍数据传输速率(Double Data Rate)指的是一个工作周期内进行两次数据传送;
同步(Synchronous)指的是内存工作需要同步时钟,内部命令的传送和数据的传输都以它为基准;
DDR2,DDR3,DDR4等技术也相继出现,DDR2的频率倍数是4倍,DDR3的频率倍数是8倍,DDR4的频率倍数是16倍;
DDR3有DDR3L版本,指的是DDR3的低电压版,DDR3的工作电压为1.5V,DDR3L的工作电压为1.35V,可以节能,有的电脑内存规格为DDR3/DDR3L,支持DDR3和DDR3L;
-
多通道设计
为提高主存储器带宽,多通道设计允许两个主存储器汇整在一起进行存储,原来两个64位主存储器可以用作一个128位的主存储器使用,数据是同步写入/读出这一对主存储器的,为实现两个主存储器的多通道,要求尽量实现两个主存储器的容量大小和型号都相同;
部分服务器要求更高的速度,除了双通道之外,中阶服务器也经常使用三通道甚至四通道等多通道的内存环境;
-
DRAM和SRAM
CPU内的第二层高速缓存:L2 cache;L2 cache位于CPU内部,存储CPU常用的程序和数据;
L2 cache位于CPU内部,所以cache的内存速度必须与CPU相同,DRAM不能满足。所以L2 cache使用的是SRAM静态随机存取内存(Static Random Access Memory);
-
只读存储器ROM(Read-Only Memory)
主板组件的各项参数记录在CMOS芯片中,CMOS芯片是一块可以读写的RAM芯片,需要供电,电源是主板上的CMOS纽扣电池;
CMOS芯片记录的数据通过BIOS程序进行读取和更新,BIOS程序(Basic Input Output System)是一套写死在主板上一个ROM芯片上的程序;
这个ROM芯片在没有通电的状态下也能存储数据,是一种非挥发性内存;
BIOS程序属于韧体(Firmware),韧体是嵌入在硬件上的软件程序,虽然是一个软件,但却是连接硬件与使用它的软件的桥梁,例如磁盘阵列器(RAID,Redundant Arrays of Independent Drives)、网卡等设备都有韧体;
ROM芯片只能读不能修改,所以现在的BIOS程序改为存储在EPROM(Erasable Programmable ROM,可擦除可编程只读存储器)、EEPROM(Electrically Erasable Programmable ROM,电可擦除可编程只读存储器);奔腾时代之后,现在的电脑主板都使用NORFlash存储BIOS程序;
0.2.3 显示适配器
显示适配器就是显卡,显卡有一个内存容量,用于存储和计算图像显示的数据;
随着显示适配器对运算能力的要求越来越高,显卡厂商会直接在显卡上嵌入一个3D加速的芯片,即GPU(Graphics Processing Unit),是一种专门运行绘图运算工作的微处理器;
显卡与北桥各组件相连接的接口(即 显卡总线接口)从PCI规格到AGP规格直到现在的PCI-Express(PCIe);
显示适配器输入输出接口(显卡与显示器的接口)有:
D-Sub接口(VGA接口):现在只有低端显卡采用,只能传输模拟信号;
DVI接口:常用于液晶屏幕,有多种接口,常用传输数字信号的DVI-D,传输数字信号和模拟信号的DVI-I;
HDMI接口:常用于电视屏幕、计算机屏幕,可以同时传输影像和声音;
Display port:可以同时传输影像和声音,传输速率快而且免费,但是使用不普及,是以后的发展方向;
0.2.4 硬盘和存储设备
台式机使用3.5寸硬盘,笔记本使用2.5寸硬盘;
机械硬盘组成:主轴马达、磁碟盘、机械手臂、读取头;主轴马达转动磁碟盘。然后机械手臂伸展带动读取头在磁碟盘上进行读写;
磁盘最小的物理存储单位为扇区(sector),同一个同心圆环的扇区组合成的圆环为磁道(track),所有磁碟盘上面的相同磁道组合为磁柱(cylinder);
磁道从外向内,自0开始, 顺序进行编号;
外围磁道比内圈磁道的扇区多,每个扇区的容量相同,所以外围磁道比内圈磁道读写速度快,这就是通常把系统盘数据放在磁盘最外围,也就是第一个盘C盘的原因;
原本磁盘的扇区容量设计为512Bytes,新的高容量磁盘有4KBytes的设计;
硬盘连接传输接口:
-
SATA:
SATA接口从1.0到2.0发展到现在的3.0版本,速度不断提升,每一代都向下兼容;由于SATA接口传输过程中,传输10位编码时只有8位是数据编码,其他2位是校验位,所以SATA接口的带宽(Gbit/s)与理论速度(Mbyte/s)的换算不是1:8,而是1:10,例如最新的SATA 3.0带宽是6Gbit/s,理论速度为600Mbyte/s;
-
SAS
用于大型工作站或大型电脑上,传输速度比SATA快,稳定性比SATA高,但是价格昂贵;
-
USB
USB 3.0(USB 3.1 Gen 1)带宽5Gbit/s,理论速度500Mbyte/s;
USB 3.1(USB 3.1 Gen 2)带宽10Gbit/s,理论速度1000Mbyte/s,除去支持其他功能外,实际有效带宽7.2Gbit/s,实际理论速度720Mbyte/s;
-
固态硬盘(SSD,Solid State Disk)
使用闪存制作,相比于机械硬盘(HDD,Hard Disk Drive)传输速度更快更省电;
0.2.5 扩充卡与界面
如显示适配器插槽大多为PCIe一样,现在的扩充卡预留接口大多为PCIe,又是保留一个PCI插槽用于老旧卡的使用;
PCIe 1.0、PCIe 2.0,PCIe 3.0,PCIe 4.0每一代速度都比上一代成倍增加,每一代都是上一代的2倍;
同时PCIe技术使用了信道/管线(lane)的概念,每一条lane的带宽相同,所以每一代PCIe都有x1,x4,x8,x16等不同的信道数,例如PCIe 3.0 x4带宽为4Gbyte/s,而PCIe 3.0 x8的带宽为8Gbyte/s;
x16的插槽长度最长,适合x1,x4,x8,x16所有的卡,但是速度只有相应速度,一般表示为(x长度 @ x速度)如(x16 @ x4);
有些主板会将x4,x8等速度的插槽设计为x16插槽的长度,此时的插槽虽然能使用x16的卡,但是速度也只有接口x4,x8的速度;
0.2.6 主板
-
设备I/O地址与IRQ终端信道
主板芯片组沟通不同的输入、输出、存储装置等计算机组件时,不同的计算机组件有自己的I/O地址用于表示自己,同时使用IRQ中断信道来告知CPU该装置的工作情况,IRQ中断信道相当于每个装置连接到CPU的专用路径;老式主板芯片组只有15个IRQ,可以选择将周边没有用到的接口关闭空出IRQ,也可以使用sharing IRQ技术;
-
CMOS芯片与BIOS程序
CMOS芯片主要的功能为记录主板上的重要参数,包括系统时间、CPU电压与频率,各项设备的I/O地址与IRQ等,由于这些数据的记录需要花费电力,因此主板上面才有CMOS纽扣电池用于CMOS芯片的供电;
BIOS程序是写入到主板上某一块Flash或EEPROM的程序,可以在开机的时候执行,以已在CMOS芯片中的参数,并尝试呼叫储存装置中的开机程序,进一步进入操作系统当中,也可以修改CMOS芯片中的参数。每种主板呼叫BIOS设定程序的按键都不同,一般桌面计算机常见的是使用[del]按键进入BIOS设定画面;
0.3 数据表示方式
0.3.1 数字系统
二进制与十进制之间的相互转换
0.3.2 文字编码系统
常用的英文编码表为ASCII系统,每个符号占用1byte空间,共记录256条内容;
繁体中文(正体中文)编码系统为BIG5系统,俗称大五码,每个中文字占用2bytes,实际存储一万三千多字符;
简体中文编码系统为GB码,俗称国标码;
国际组织ISO/IEC制定了Unicode编码系统,俗称为UTF-8或者万国码;
0.4 软件程序运作
0.4.1 机器程序与编译程序
高阶程序语言解决了机器语言难以编写,不易修改移植的问题;
高阶语言编程,编译器将高阶程序语言编译得到机器语言,用于机器硬件的运行;
但是仍然需要考虑相对应硬件的使用方法,也就是硬件功能参数,才能编写,例如内存如何定位地址,此时需要操作系统(Operating System);
0.4.2 操作系统
操作系统下能驱动所有硬件,上能提供一个发展软件的参考接口用于工程师开发软件;
-
操作系统核心(Kernel):
操作系统(Operating System,OS)其实也是一组程序,这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件,硬件的所有动作都必须透过操作系统来达成,这些功能就是操作系统的核心(Kernel),核心主要管控硬件与提供相关的能力(例如存取硬盘、网络功能、CPU资源取得等),这些管理的动作非常重要,因此,核心程序所放置到内存当中的区块是受保护的,并且开机后就一直常驻在内存中;
-
系统呼叫(System Call):
第一层:硬件组成的计算机系统;
第二层:操作系统核心(Kernel);主要管理硬件,提供合理的计算机系统资源分配(包括CPU资源、内存使用资源等);
只要硬件不同(如x86架构与RISC架构的CPU),核心就要修改;
第三层:操作系统系统呼叫层(System Call);提供一整组开发接口,用于软件开发工程师开发软件时使用呼叫参数;
第四层:软件应用程序;
所以操作系统就是核心与其提供的接口工具;
(1)操作系统的核心层是直接参考硬件规格写成,所以同一个操作系统不能在不同的【硬件架构】下运作。PC版Windows 10不能在ARM架构的计算机(手机和平板)运行;
(2)操作系统只能管理所有硬件资源,包括CPU、内存、输入输出装置及系统文件,只能让计算机主机准备妥当(Ready)而已并不运作其他功能;
(3)应用程序的开发需要参考操作系统提供的开发接口,所以应用系统必须在相关操作系统运行,不适合其他操作系统;
-
核心功能
(1)系统呼叫接口(System Call Interface):提供呼叫接口,方便程序开发者使用【系统呼叫参数】而不用参考【硬件参数】或【操作系统核心参数】利用硬件
(2)程序管理(Process Control):对CPU的资源进行分配,控制进程调度,相应算法对CPU处理的进程排序,进行 进程管理;
(3)内存管理(Memory Management):内存控制管理,相应算法对内存中存储的数据进行调整置换,通常核心(Kernel)还会提供虚拟内存的功能,当内存不足时可以进行内存置换(swap)的功能,即操作系统的 SWAP区;
(4)文件系统管理(FileSystem Management):管理文件系统,例如文件目录,文件数据的输入输出(I/O)等;
(5)装置的驱动(Device Drivers):驱动硬件,目前有【可加载模块】功能,可以将驱动程序编辑成模块,而不需要重新编译核心了;
驱动程序时硬件厂商推出硬件时,自行参考操作系统的驱动程序开发接口,所开发出来的,一般购买硬件时都会附上带有【相应操作系统驱动程序的光盘】;
-
操作系统和驱动程序
为了驱动不断更新的硬件,操作系统通常会提供一个开发接口给硬件开发商,硬件开发商可以根据相应的操作系统提供的接口设计专门的驱动系统;
操作系统必须能驱动硬件,应用程序才能使用该硬件功能;
一般来说,操作系统会提供开发接口,让开发商制作硬件的驱动程序;
要使用新硬件功能,必须要先安装厂商提供的驱动程序才行;
驱动程序是硬件厂商提供的,与操作系统开发者无关;
0.4.3 应用程序
0.5 重点回顾
计算机:接受用户输入指令和数据,经过中央处理器的数学逻辑单元运算处理后,输出或储存为有用信息的设备;
计算机五大单元:输入单元、输出单元、控制单元、算术逻辑单元、存储单元;其中CPU内有控制单元、算术逻辑单元;
数据由CPU控制流入/流出内存,CPU实际处理的数据完全来自于主存储器;
CPU根据设计理念可以分为:精简指令集系统(RISC,Reduced Instruction Set Computer)和复杂指令集系统(CISC,Complex Instruction Set Computer);
CPU外频指CPU与外部组件进行数据传输的速度,倍频指CPU内部用于加速工作效能的倍数,二者相乘才是CPU的频率速度;
新的CPU设计中,已经将北桥的内存控制芯片整合到CPU内部,而CPU与主存储器、显示适配器沟通的总线通常称为【系统总线】。南桥就是所谓的输入输出(I/O)总线,主要在联系硬盘、USB、网卡等接口设备;
CPU每次能处理的数据量成为【字大小】(Word Size),字大小依据CPU的设计而有32位与64位;
个人计算机的主存储器主要组件为动态随机存取内存(DRAM,Dynamic Random Access Memory),至于CPU内部的第二层快取cache L2则使用静态随机存取内存(SRAM,Static Random Access Memory);
BIOS程序(Basic Input Output System)是一套写死在主板一个只读存储器(ROM,Read Only Memory)的内存芯片上的程序,只读存储器不通电也能记录数据;
目前主流的外界卡界面为PCIe界面,且最新为PCIe 3.0,单信道速度高达1GBytes/s;
常见的显示适配器链接屏幕的界面有 HDMI(同时传输影像声音) / DVI(DVI-D数字信号,DVI-I数字信号和模拟信号)/ D-Sub(VGA)/ Display port;
传统硬盘的组成为:圆形磁盘,机械手臂,磁盘读写头、主轴马达,其中磁盘分为扇区、磁道、磁柱;
磁盘连接主板的界面大多为SATA和SAS,目前台式电脑主流为SATA 3.0,理论极限速度为600MBytes/s;
常见的文字编码为ASCII码,繁体中文编码有Big5,简体中文编码有GB码,此外简体中文,繁体中文都有UTF8为主流;
操作系统(OS,Operating System)是一组程序,程序的重点在于管理计算机的所有活动,驱动系统中的所有硬件,提供软件开发者系统呼叫接口;
计算机主要以二进制为单位,常用的磁盘容量单位为Bytes,1Byte = 8bits;
单纯的操作系统仅在于驱动和管理硬件,而要使用硬件时,就要透过应用软件或者是壳程序(Shell)的功能,来呼叫操作系统操纵硬件工作。如今的操作系统还加入了一些日常工作需要的应用软件;