【鸟哥的Linux私房菜-基础篇读书笔记】一、计算机概论
计算机:辅助人脑的好工具
计算机其实是:接收用户输入指令与数据,经过中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息。
计算机硬件的五大单元
- 输入单元
中央处理器
- 控制单元
- 算术逻辑单元
- 输出单元
- 内存
CPU的种类
- 精简指令集
- 复杂指令集
接口设备
- 存储设备
- 显示设备
- 网络设备
运作流程
假如计算机是一个人体:
- CPU=大脑
- 内存=大脑中的记录区块
- 硬盘=大脑中的记忆区块
- 主板=神经系统
- 各项接口设备=人体与外界通信的手、脚、皮肤、眼睛等
- 显卡=脑袋中的影像
- 电源=心脏
计算机分类
- 超级计算机
- 大型计算机
- 迷你计算机
- 工作站
- 微电脑
计算机上面常用的计算单位(大小、速度等)
大小单位
- 计算机依据有没有通电来记录信息,所以理论上他只认识
0
与1
而已。0
/1
的单位成为bit
- 1Byte = 8bit
- 除此之外还有:
K
、M
、G
、T
、P
单位,它们之间的换算单位为1024
(二进制)、1000
(十进制) - 一般来说,文件大小使用二进制的方式;速度单位常使用十进制
- 计算机依据有没有通电来记录信息,所以理论上他只认识
- 速度单位
CPU的运算速度使用MHz
或者是GHz
之类的单位,这个Hz
其实就是秒分之一。而在网络传输方面,由于网络使用的是bit
为单位,因此网络常使用的单位为Mbit/s
,即每秒多少Mbit
。
个人计算机架构与接口设备
一般消费者常说的计算机通常指定就是x86的个人计算机架构。
整个主板上面最重要的就是芯片组了!而芯片组通常又分为两个桥接器来控制各组建通信,分别是:
- 北桥负责连接速度较快的CPU、内存与显卡等组件;
- 南桥负责连接速度较慢的周边接口,包括硬盘、USB、网卡等。
CPU
- 由于CPU负责大量运算,因此CPU通常是具有相当高发热量的组件
- x86个人计算机的CPU主要生产商为Intel与AMD
- 处理指令集会导致CPU工作效率的优劣外,CPU的频率也是一个因素。频率就是CPU每秒钟可以进行的工作次数。
- CPU的外频与倍频
所谓的外频指的是CPU与外部组件进行数据传输/运算时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者相乘才是CPU的频率。 32位与64位
- 一般主板芯片组分为北桥与南桥,北桥的总线称为系统总线,因为是内存传输的主要信道,所以速度较快;南桥就是所谓的输入输出(I/O)总线,主要用于“联系”硬盘、USB、网卡等接口设备。
- 北桥所支持的频率我们称为前端总线速度(Front Side Bus, FSB),而每次传送的位数则是总线宽度。那所谓的总线频宽则是“FSB x 总线宽度”,亦即每秒钟可以传送的最大数据量。目前常见的总线宽度有32/64位(
bit
)。 - 与总线宽度类似,CPU每次能够处理的数据量称为字组大小(word size),字组大小依据CPU的设计而有32与64位。我们现在所称的计算机是32位或64位主要是依据CPU解析的字组大小而来的!
- CPU等级
为了将不同种类的CPU规范等级,所以就有i386、i586、i686等名词出现了。基本上,在Intel Pentium MMX与AMD K6 年代的CPU称为i586等级,而Intel Celeron与AMD Athlon(K7)年代之后的32位CPU称为i686等级,至于目前的64位CPU则统称为x86_64等级。
内存
CPU所使用的数据都是来自内存(Memory),不论是软件程序还是数据,都必须要读入内存后CPU才能利用。个人计算机的内存主要组件为动态随机访问内存(Dynamic Random Access Memory, DRAM),随机访问内存只有在通电时才能记录与使用,断电后数据就消失了。因此我们也称这种RAM为挥发性内存。
影像内存性能的因素有频率/频宽、型号和容量。对服务器而言,内存的容量有时比CPU的速度还重要。
- 双通道设计
由于所有数据都必须存放在内存中,所以内存的数据宽度当然是越大越好。如果一个内存可达64位,两条内存就可以达到128位了,这就是双通道的设计理念。要启用双信道(双通道)功能时,你必须要将两根容量相同的内存插在相同颜色的插槽中。 - CPU频率与内存的关系
理论上,CPU与内存的外频应该要相同才好。 - DRAM与SRAM
除了内存外,事实上整台个人计算机中还有许多内存,最常见的就是CPU内的第二层高速缓存。因为第二层缓存集成到CPU内部,因此这个L2内存的速度必须要与CPU频率相同。使用DRAM是无法达到这个频率速度的,此时就需要静态随机访问内存(Static Random Access Memory, SRAM)。 只读存储器(ROM)
- 主板上面的组件是非常多的,而每个组件的参数又具有可调整性。指定的功能是否要启动与该功能的各项参数被记录到主板上面的一个称为CMOS的芯片上,这个芯片需要借着额外的电源来发挥记录功能,所以主板上会有一个电池。
- 通过开机时按下[Del]按键来进入一个名为BIOS的界面可以对CMOS内的数据进行读取与更新。BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中的,这个内存芯片在没有通电时也能够将数据记录下来,那就是只读只读存储器(Read Only Memory, ROM)。
- 另外,固件很多也是使用ROM来进行软件的写入的。固件像软件一样也是一个被计算机所执行的程序,然而它是对于硬件内部而言更加重要的部分。
显卡
- 显卡又称为VGA(Video Graphics Array),它对于图形影像的显示扮演相当关键的角色。一般对于图形影像的显示重点在于分辨率与色彩深度,因为每个图像显示的颜色会占用内存,因此显卡上面会有一个内存的容量,这个显卡内存容量(显存)将会影响到最终你的屏幕分辨率与色彩深度。
- 除了显卡内存外,现在的3D游戏或动画需要大量的运算,因此显卡的运算能力越来越重要。早期这些都是CPU去运行,但是后来为了性能显卡厂商直接在显卡上嵌入一个3D加速的芯片,这就是GPU称谓的由来。
- 显卡主要也是通过北桥与CPU、内存等通信。显卡也是一个高速运算的组件。
磁盘与存储设备
计算机总是需要记录与数据数据的,而存储设备有很多,最常见的就是硬盘了。
硬盘的物理组成
- 硬盘由许多的盘片、机械手臂、磁头与主轴马达所组成的
- 实际的数据都是写在具有磁性物质的盘片上,而读写主要是通过在机械手臂上的读取头来完成。实际运行时,主轴马达让盘片转动,然后机械手臂可伸展让读取头在盘片上面进行读写操作。
盘片上的数据
- 整个盘片上面好像有多个同心圆绘制出的饼图,而由圆心以放射状的方式分割出磁盘的最小存储单位,那就是扇区(Sector)。在物理组成方面,每个扇区大小为512bytes,这个值是不会改变的。而扇区组成一个圆就成为磁道(Track),如果在多硬盘上面,在所有盘片上面的同一个磁道可以组成一个柱面(Cylinder)。柱面也是一般我们分割硬盘时的最小单位了。
- 计算整个硬盘的存储容量的简单公式是:header数量 x 每个header负责的柱面数量 x 每个柱面包含的扇区数量 x 扇区的容量,单位换算为:header x cylinder/header x sector/cylinder x 512bytes/sector,简单写法如下:Head x Cylinder x Sector x 512bytes。一般硬盘制造商在显示硬盘容量时,大多以十进制来编号,所以常常会发现真实容量少于所标注的容量。
传输接口
- IDE接口(老规格)
- SATA接口(当前主流)
- SCSI接口(工作站等级以上计算机常用)
选购参考
- 容量
- 缓冲存储器(为将硬盘常用数据缓存起来的一块内存)
- 转速(主轴马达转动的速度)
PCI适配卡
如果用户有额外的功能卡,可以插在PCI接口插槽上。常见的功能卡如:网卡、声卡、特殊功能卡等。
主板
所有组件都是安插在主板上的,而主板上面负责通信各个组件的就是芯片组。如前所述,芯片组一般分为北桥与南桥。北桥负责CPU/RAM/VGA等的连接,南桥则负责PCI接口与速度较慢的I/O设备。
芯片组功能
- 集成型芯片组:主板集成常用的组件,性能弱无法更换。如集成显卡。
- 独立型芯片组:需要单独外接组件,性能高易更换。如独立显卡。
设备I/O地址与IRQ中断通信
主板是负责各计算机组件之间通信的,但计算机组件太多了,这个时候就需要用到所谓IO地址与IRQ。- I/O地址有点类似每个设备的门牌号码,每个设备都有他自己的地址,不能有两个设备使用同一I/O地址。
- 如上说明I/O地址,那么IRQ就可以想成是各各门牌连接到邮件中心(CPU)的专门路径。
CMOS与BIOS
如前所述:- CMOS主要功能为记录主板上面的重要参数,包括系统时间、CPU电压与频率、各设备的I/O地址与IRQ等,由于这些数据的记录需要花费电力,因此主板上面才有电池。
- BIOS为写入到主板上某一块闪存或EEPROM的程序,它可以在开机的时候执行,以加载CMOS当中的参数,并尝试调用存储设备中的开机程序,进一步进入操作系统当中。
连接接口设备
主板与各项输出/输入设备的连接主要都是在主机箱的后方,主要有:- PS/2接口:常见的键盘与鼠标的接口,现逐渐被USB接口取代。
- USB接口:非常流行的接口,支持即插即用。常用版本有USB2.0、USB3.0,新老版本之间的差异为传输速度的大幅提升。
- 声音输出、输入与麦克风:即一些圆形的插孔。
- RJ-45接口:即插入网线的接口,这种接口类似电话线。
电源
电源有如下重要概念:
- 能源转换率
电源本身也会吃掉一部分的电力,所以需要挑选高于你主机系统所需电力的电源,最好挑选高转换率的电源。所谓高转换率指的是输出的功率与输入的功率的比值。即额外损耗电力很低的电源。 连接接口
- 20pin
- 24pin
主机速度的快慢与整体系统最慢的那个设备有关
数据表示方式
事实上我们的计算机只认识 0 与 1,记录的数据也都是 0 与 1 而已,所以计算机常用的数据是二进制的。
数字系统
- 计算机中,通电为1,没通电就是0,我们称这种0/1的环境为二进制(Binary)。同十进制逢十进一,二进制为逢二进一。
进制转换:
低进制到高进制转换用乘法并相加就是结果
相应位的值x进制数^相应位数(从右往左数,从0开始) + ... 3456 = 3x10^3 + 4x10^2 + 5x10^1 + 6x10^0 十进制 10101 = 1x2^4 + 0x2^3 + 1x2^2 + 0x2^1 + 1x2^0 二进制
反之高进制到低进制转换用除法后取余数就是结果
原来的数 / 进制数 = 结果 取得所得余数即结果数中的一位 106 / 2 = 53 余 0 53 / 2 = 26 余 1 ... 一直除直到不能除为止,然后把余数从最后的运算结果开始至最开始的运算结果连起来即可
文字编码系统
计算机中常见的文字同理都是二进制数字存储的,但这个内容被取出来时必须经过一个编码系统的处理才行。
如常见的英文编码表为ASCII系统,这个编码系统中,每个符号都会占用1B的记录,因此总共有2^8=256种变化。其次还有现在通用的Unicode编码系统,我们常常称呼为UTF-8或统一码,可以表示中文在内的所有不同国家的文字。
软件程序运行
机器程序与编译程序
- 机器程序
计算机只认识0和1,而且计算机最重要的运算与逻辑判断是在CPU内部,而CPU是有微指令集的,我们需要计算机工作就得编写CPU读得懂的指令码给CPU执行。这就是机器程序,其有很多不便的地方,最主要的就是编写的难度和代码的易读性。 - 编译程序
为了解决机器程序的缺陷,计算机科学家设计出了人类看得懂的程序语言,然后创造一种“编译器”来将这些人类能够写的程序语言转译为机器能够看得懂的机器码。如此一来我们编写与修改程序就变得容易多了。
操作系统
虽然有了程序语言编写代码容易得多了,但还是得考虑整体硬件系统来设计程序。为了克服硬件方面老是重复编写句柄但问题,所以就有操作系统了。
操作系统
- 操作系统其实也是一组程序,这组程序但重点在于管理计算机的所有活动以及驱动系统中的所有硬件。
- 上述功能就是操作系统的内核了,你的计算机能不能做某些事情,都与操作系统内核有关。
- 但是单有内核我们用户也不知道能做啥事,因为内核主要在于管控硬件与提供相关的能力。内核的管理操作是非常重要的,因此内核程序所放置到内存当中的区块是受保护的,并且开机后就一直常驻的内存中。
系统调用(System Call)
- 现在我们的硬件都是由内核管理了,所以如果我们想要开发软件,就是从原本的参考硬件函数变成了参考内核功能
- 为了解决此问题,操作系统提供了一整组的开发接口给工程师来开发软件。
- 计算机系统主要由硬件构成,然后内核程序管理硬件,因此只要硬件不同(如x86架构与RISC架构的CPU)内核就得要进行修改才行
- 为了保护内核并且让程序员比较容易开发软件,因此操作系统除来内核外通常还会提供一整组开发接口,那就是系统调用。软件工程师只要遵循公认的系统调用参数来开发软件,改软件就能在该内核上运行。
简单说操作系统的概念如下:
- 操作系统的内核层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运行
- 操作系统只是在管理整个硬件资源,包括CPU、内存、输入输出设备及系统文件。
- 应用程序的开发都是参考操作系统提供的开发接口,所以该应用程序只能在该操作系统上面运行而已,不可以在其他操作系统上面运行的。
内核功能
- 系统调用接口
- 程序管理
- 内存管理
- 文件系统管理
- 设备驱动
操作系统与驱动程序
驱动程序可以说是操作系统里面相当重要的一环了。有如下几点:- 操作系统必须能够驱动硬件,如此应用程序才能够使用该硬件功能。
- 一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序。
- 要使用新硬件功能,必须要安装厂商提供的驱动程序才行
- 驱动程序是由(硬件)厂商提供的,与操作系统开发者无关。
应用程序
应用程序是参考操作系统提供的开发接口所开出来的软件,这些软件可以让用户操作,以达到某些计算机的功能利用。
应用程序与操作系统有关;操作系统与硬件架构有关。