鸟哥的Linux私房菜2018简体化 第零章(3)、计算机概论

0.3 资料表示方式

事实上我们的电脑只认识0与1,记录的资料也是只能记录0与1而已,所以电脑常用的数据是二进制的。但是我们人类常用的数值运算是十进制,文字方面则有非常多的语言,台湾常用的语言就有英文、中文(又分繁体与简体中文)、日文等。那么电脑如何记录与现实这些数值/文字呢?就得要通过一系列的转换才可以啦!下面我们就来谈谈数值与文字的编码系统啰!

0.3.1 数字系统

早期的电脑使用的是利用通电与否的特性的真空管,如果通电就是1,没有通电就是0,后来沿用至今,我们称这种只有0/1的环境为二进制,英文称为binary。所谓的十进制指的是逢十进一位,因此在个位数归零而十位数写成1.所以所谓的二进制,就是逢二就前进一位的意思。

那二进制怎么用呢?我们先以十进制来解释好了。如果以十进制来说,3456的意义为:

3456=3x103+4x102+5x101+6x100

特别注意:“任何数值的零次方为1”所以100的结果就是1啰。同样的,将这个原理带入二进制的环境中,我们来解释一下1101010的数值转为十进制的话,结果如下:

1101010=1x26+1x25+0x24+1x23+0x22+1x21+0x20

=64+32+0x16+8+0x4+2+0x1=106

这样你了解二进制的意义了吗?二进制是电脑基础中的基础喔!了解了二进制,八进制、十六进制就以此类推啦!那么知道二进制转成十进制后,那如果有十进制数值转为二进制的环境时,该如何计算?刚刚是乘法,现在则是除法就对了!我们同样的使用十进制的106转成二进制来测试一下好了:

图0.3.1、十进制转二进制的方法

最后的写法就如同上面的红色箭头,由最后的数字向上写,因此可得到1101010的数字啰!这些数字的转换系统是非常重要的,因为电脑的加减乘除都是使用这些机制来处理的!有兴趣的朋友可以再参考一下其他计算机概论的书籍中,关于1的补码/2的补码等运算方式喔!

0.3.2 文字编码系统

既然电脑都只有记录0/1而已,甚至记录的数据都是使用Byte/bit等单元来记录的,那么文字该如何记录啊?事实上文本文件也是被记录为0与1而已,而这个文件的内容要被取出来查阅时,必须要经过一个编码系统的处理才行。所谓的“编码系统”可以想成是一个“字码对照表”,它的概念有点像下面的图示:

图0.3.2、资料参考编码表的示意图

当我们要写入文件的文本数据时,该文本数据会由编码对照表将该字符转成数字后,再存入文件当中。同样的,当我们要将文件内容的数据读出时,也会经过编码对照表将该数字转成对应的字符后,再显示到屏幕上。现在你知道为何浏览器上面如果编码写错时,会出现乱码了吗?这是因为编码对照表写错,导致对照的字符产生误差之故啦!

常用的英文编码表为ASCII系统,这个编码系统中,每个字符(英文、数字或符号等)都会占用1Byte的记录,因此总共会有28=256种变化。至于中文字符当中的编码系统早期最常用的就是Big5这个编码表了。每个中文会占用2Bytes,理论上最多可以有216=65536,亦即最多可达6万多个中文字符。但是因为Big5编码系统并非将所有的位都拿来运用成为对照,所有并非可达这么多的中文字符的。目前Big5仅定义了一万三千多个中文字符,很多中文利用Big5是无法成功显示的~所有才会有造字程序。

Big5码的中文字符编码对于某些数据库系统来说是很有问题的,某些字符例如“许、盖、功”等字,由于这几个字的内部编码会被误判为单/双引号,在写入时还不成问题,在读出数据的对照表时,常常就会变成乱码。不止中文字符,其他非英语系国家也常常会有这样的问题出现啊!

为了解决这个问题,由国际组织ISO/IEC站出来制定了所谓的Unicode编码系统,我们常常称为UTF8或者国际码的编码就是这个东西。因为这个编码系统打破了所有国家的不同编码,因此目前互联网社会大多朝向这个编码系统在走,所以各位亲爱的朋友啊,记得将你们的编码系统修订一下喔!

0.4 软件程序运行

鸟哥在上课时常常会开玩笑的问:“我们知道没有插电的电脑是一堆废铁,那么插了电的电脑是什么”?答案是:“一堆会电人的废铁”!这是因为没有软件的运行,电脑的功能就无从发挥之故。就好像没有了灵魂的躯体也不过就是行尸走肉,重点在于软件/灵魂啰!所以下面咱们就得要了解一下“软件”是什么。

一般来说,目前的电脑系统将软件分为两大类,一个是系统软件,一个是应用程序。但鸟哥认为我们还是得要了解一下什么是程序,尤其是机器程序,了解之后再来讨论一下为什么现今的电脑系统需要“操作系统”这玩意呢!

0.4.1 机器程序与编译程序

我们前面谈到电脑只认识0与1而已,而且电脑最重要的运算与逻辑判断是在CPU内部,而CPU其实是具有微指令集的。因此,我们需要CPU帮忙工作时,就得要参考微指令集的内容,然后撰写让CPU读得懂的指令码给CPU执行,这样就能够让CPU运行了。

不过这样的流程有几个很麻烦的地方,包括:

需要了解机器语言:机器只认识0与1,因此你必须要学习直接写给机器看的语言!这个地方想到都难呢!

需要了解所有硬件的相关功能函数:因为你的程序必须要写给机器看,当然你就得要参考机器本身的功能,然后针对该功能去撰写源代码。例如,你要让DVD影片能够播放,那就得要参考DVD影碟机的硬件资料才行。万一你的系统有比较冷门的硬件,光是参考技术手册可能会昏倒~

程序不具有可移植性:每个CPU都有独特的微指令集,同样的,每个硬件都有其功能函数。因此,你为A电脑写的程序,理论上是没有办法在B电脑上运行的!而源代码的修改非常困难!因为是机器码,并不是人类看的懂的程序语言啊!

程序具有专用性:因为这样的程序必须要针对硬件功能函数来撰写,如果已经开发了一个浏览器程序,想要再开发文件管理程序时,还是得从头再参考硬件的功能函数来继续撰写,每天都在和“硬件”挑战!可能需要天天喝红牛了!@_@

那怎么解决啊?为了解决这个问题,电脑科学家设计出一种让人类看得懂的程序语言,然后创造一种“编译器”来将这些人类能够写的程序语言转译成为机器能看懂的机器码,如此一来我们修改与撰写程序就变得容易多了!目前常见的编译器有C,C++,Java,Fortran等等。机器语言与高级程序语言的差别如下所示:

图0.4.1、编译器的角色

从上面的图示我们可以看到高级程序语言的源代码是很容易查看的!鸟哥已经将源代码(英文)写成中文~这样比较好理解啦!所以这样已经将程序的修改问题处理完毕了。问题是,在这样的环境下面我们还是得要考虑整体的硬件系统来设计程序喔!

举例来说,当你需要将运行的数据写入内存中,你就得要自行分配一个内存区域出来让自己的数据能够填进去,所以你还得要了解到内存的地址是如何定位的,啊!眼泪还是不知不觉的流了下来……怎么写程序这么麻烦啊!

为了要克服硬件方面老是需要重复撰写控制码的问题,所以就有操作系统(Operating System, OS)的出现了!什么是操作系统呢?下面就来谈一谈!

0.4.2 操作系统

如同前面提到的,在早期想要让电脑执行程序就得要参考一堆硬件功能函数,并且学习机器语言才能够撰写程序。同时每次写程序时都必须要重新改写,因为硬件与软件功能不见得都一致之故。那如果我能够将所有的硬件都驱动,并且提供一个开发软件的参考接口来给工程师开发软件的话,那开发软件不就变得非常简单了?那就是操作系统啦!

操作系统核心(Kernel)

操作系统(Operating System, OS)其实也是一组程序,这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。我们刚刚谈到电脑没有软件只是一堆废铁,那么操作系统的功能就是让CPU可以开始判断逻辑与运算数据、让内存可以开始载入/读出数据与代码、让硬盘可以开始被存取、让网卡可以开始传输数据、让所有外设可以开始运行等等。总之,硬件的所有动作都必须要通过这个操作系统来完成就是了。

上述的功能就是操作系统的核心(Kernel)了!你的电脑能不能做到某些事情,都与核心有关!只有核心提供了的功能,你的电脑系统才能帮你完成!举例来说,你的核心并不支持TCP/IP的网络协议,那么无论你购买了什么样的网卡,这个核心都无法提供网络能力的!

但是单有核心我们用户也不知道能做啥事的~因为核心主要在管控硬件与提供相关的能力(例如存取硬盘、网络功能、CPU资源取得等),这些管理的动作是非常的重要的,如果使用者能够直接使用核心的话,万一用户不小心将核心程序停止或破坏,将会导致整个系统的崩溃!因此核心程序所放置到内存当中的区块是受保护的!并且开机后就一直常驻在内存当中。

Tips

所以整个系统只有核心的话,我们就只能看着已经准备好运行(Ready)的电脑系统,但无法操作它!好像有点望梅止渴的那种感觉啦!这个时候就需要软件的帮忙了!

系统调用

既然我的硬件都是由核心管理,那么如果我想要开发软件的话,自然就得要去参考这个核心的相关功能!唔!如此一来不是从原本的参考硬件函数变成参考核心功能,还是很麻烦啊!有没有更简单的方法啊!

为了解决这个问题,操作系统通常会提供一整组的开发接口给工程师来开发软件!工程师只要遵守该开发接口那就很容易开发软件了!举例来说,我们学习C程序语言只要参考C程序语言的函数即可,不需要再去考虑其他核心的相关功能,因为核心的系统调用接口会主动的将C程序语言的相关语法转成核心可以理解的任务函数,那核心自然就能够顺利运行该程序了!

如果我们将整个电脑系统的相关软/硬件绘制成图的话,它的关系有点像这样:

图0.4.2、操作系统的角色

电脑系统主要由硬件构成,然后核心程序主要在管理硬件,提供合理的电脑系统资源分配(包括CPU资源、内存使用资源等等),因此只要硬件不同(如x86架构与RISC架构的CPU),核心就得要进行修改才行。而由于核心只会进行电脑系统的资源分配,所以在上面还需要有应用程序,用户才能够操作系统的。

为了保护核心,并且让程序设计师比较容易开发软件,因此操作系统出了核心程序之外,通常还会提供一整组开发接口,那就是系统调用层。软件开发工程师只要遵循公认的系统调用函数来开发软件,该软件就能够在该核心上面运行。所以你可以发现,软件与核心有比较大的关系,与硬件关系则不大!硬件也与核心有比较大的关系!至于与用户有关的,那就是应用程序啦!

Tips

在定义上,只要能够让电脑硬件正确无误的运行,那就算是操作系统了。所以说,操作系统其实就是核心与其提供的接口工具,不过就如同上面讲的,因为最基本的核心缺少了与用户沟通的友善界面,所以在目前,一般我们提到的“操作系统”都会包含核心与相关的用户应用软件呢!

简单的说,上面的图示可以带给我们下面的概念:

      操作系统的核心层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运行。举例来说,个人电脑的Windows 8.1不能直接在ARM架构(手机与平板硬件)的电脑下运行。

      操作系统只是在管理整个硬件资源,包括CPU、内存、输入输出设备及文件系统。如果没有其他的应用程序辅助,操作系统只能让电脑主机准备妥当(Ready)而已!无法运行其他功能。所以你现在知道为何Windows上面要完成网页影像的运行还需要类似PhotoImpact或Photoshop之类的软件安装了吧?

      应用程序的开发都是参考操作系统提供的开发接口,所以该应用程序只能在该操作系统上面运行而已,不可以在其他操作系统上面运行的。现在您知道为何去购买网络游戏的光盘时,光盘上面会明明白白的写着该软件适合用于哪一种操作系统上了吧?也该知道某些游戏为何不能够在Linux上面安装了吧?

核心功能

既然核心主要是在负责整个电脑系统相关的资源分配与管理,那我们知道其实整部电脑最重要的就是CPU与内存,因此,核心至少也要有这些功能的:

      系统调用接口(System call interface)

      刚刚谈过了,这是为了方便程序开发者可以轻松的通过与核心的沟通,将硬件的资源进一步的利用,预算需要有这个简单的接口来方便程序开发者。

      进程管理(Process control)

      总有听过所谓的“多任务环境”吧?一台电脑可能同时有很多的工作跑到CPU等待运算处理,核心这个时候必须要能够控制这些工作,让CPU的资源有效的分配才行!另外,良好的CPU调度机制(就是CPU先运行哪个任务的排列顺序)将会有效的加快整体系统性能呢!

      内存管理(Memory management)

      控制整个系统的内存管理,这个内存控制是非常重要的,因为系统所有的代码与数据都必须要先存放在内存当中。通常核心会提供虚拟内存的功能,当内存不足时可以提供内存交换(swap)的功能。

      文件系统管理(Filesystem management)

      文件系统的管理,例如数据的输入输出(I/O)等等的工作啦!还有不同文件系统的支持啦等等,如果你的核心不认识某个文件系统,那么您将无法使用该文件系统里的文件啰!例如:Windows 98就不认识NTFS文件系统的硬盘;

      设备的驱动(Device drivers)

      就如同上面提到的,硬件的管理是核心的主要工作之一,当然啰,设备的驱动程序就是核心需要做的事情啦!好在目前都有所谓的“可加载模块”功能,可以将驱动程序编译成模块,就不需要重新编译核心啦!这个也会在后续的第十九章当中提到的!

Tips

事实上,驱动程序的提供应该是硬件厂商的事情!硬件厂商要推出硬件时,应该要自行参考操作系统的驱动程序开发接口,开发完毕后将该驱动程序连同硬件一起卖给用户才对!举例来说,当你购买显卡时,显卡包装盒都会附上一张光盘,让你可以在进入Windows之后进行驱动程序的安装啊!

操作系统与驱动程序

老实说,驱动程序可以说是操作系统里面相当重要的一环了!不过硬件可是持续在进步当中的!包括主板、显卡、硬盘等等。那么比较晚推出的较新的硬件,例如显卡,我们的操作系统当然就不认识啰!那操作系统该如何驱动这块新的显卡?为了克服这个问题,操作系统通常会提供一个开发接口给硬件开发商,让他们可以根据这个接口设计可以驱动他们硬件的“驱动程序”,如此一来,只要用户安装驱动程序后,自然就可以在他们的操作系统上面驱动着块显卡了。

图0.4.3、驱动程序与操作系统的关系

由上图我们可以得到几个小重点:

      操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件的功能;

      一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序;

      要使用新硬件的功能,必须要安装厂商提供的驱动程序才行;

      驱动程序是由厂商提供的,与操作系统开发者无关。

所以,如果你想要在某个操作系统上面安装一张新的显卡,那么请要求该硬件厂商提供适当的驱动程序吧!^_^为什么要强调“适当的驱动程序”呢?因为驱动程序仍然是依据操作系统而开发的,所以,给Windows用的驱动程序当然就不能用于Linux的环境下了。

0.4.3 应用程序

应用程序是参考操作系统提供的开发接口所开发出来的软件,这些软件可以让用户操作,以达到某些软件的功能利用。举例来说,办公软件(Office)主要是用来让用户办公用的;影像处理软件主要是让用户用来处理影音资料的;浏览器软件主要是让用户用来上网浏览用的等等。

需要注意的是,应用程序是与操作系统有关的,如同上面的图示当中的说明喔。因此,如果你想要购买新软件,请务必参考软件上面的说明,看看该软件是否能够支持你的操作系统啊!举例来说,如果你想要购买网络游戏光盘,务必参考一下该光盘是否支持你的操作系统,例如是否支持Windows XP/Windows

Vista/MAC/Linux等等,不要购买了才发现该软件无法安装在你的操作系统上喔!

我们拿常见的微软公司的产品来说明。你知道Windows 8.1,Office 2013之间的关系了吗?

      Windows 8.1是一套操作系统,他必须先安装到个人电脑上面,否则电脑无法开机运行;

      Windows 7与Windows 8.1是两套不同的操作系统,所以能在Win 7上安装的软件不见得可在Win 8.1上安装;

      Windows 8.1安装好后,只拥有很少的功能,并没有办公软件;

      Office 2013是一套应用软件,要安装前必须要了解他能在哪些操作系统上面运行。

0.5 重点回顾

[if !supportLists]l  [endif]计算机的定义为:接受使用者输入指令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的信息;

[if !supportLists]l  [endif]电脑的五大单元包括:输入单元、输出单元、控制单元、数学逻辑单元、存储单元五大部分。其中CPU占用控制、数学逻辑单元,存储单元又包含内存与辅助存储器;

[if !supportLists]l  [endif]数据会流进/流出内存是CPU所发布的控制指令,而CPU实际要处理的数据则完全来自于内存;

[if !supportLists]l  [endif]CPU依设计理念主要分为:精简指令集(RISC)与复杂指令集(CISC)系统;

[if !supportLists]l  [endif]关于CPU的频率部分:外频指的是CPU与外部元件进行数据传输时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者相乘才是CPU的频率速度;

[if !supportLists]l  [endif]新的CPU设计中,已经将北桥的内存控制芯片集成到CPU内,而CPU与内存、显卡沟通的总线通常称为前端总线。南桥就是所谓的输入输出(I/O)总线,主要在联系硬盘、USB、网卡等周边设备;

[if !supportLists]l  [endif]CPU每次能够处理的数据量称为字宽(word size),字宽大小依据CPU的设计而有32位与64位。我们现在所称的电脑是32或64位主要是依据这个CPU解析的字宽大小而来的!

[if !supportLists]l  [endif]个人电脑的内存主要元件为动态随机存取存储器(Dynamic Random Access Memory, DRAM),至于CPU内部的二级缓存则使用静态随机存取存储器(Static Random Access Memory, SRAM);

[if !supportLists]l  [endif]BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个存储芯片中,这个存储芯片在没有通电时也能将数据记录下来,那就是只读存储器(Read Only Memory, ROM);

[if !supportLists]l  [endif]目前主流的扩展卡接口大多为PCIe接口,且最新为PCIe 3.0,单通道速度高达1GBytes/s;

[if !supportLists]l  [endif]常见的显卡连接到屏幕的接口有HDMI/DVI/D-Sub/Display

port等等。HDMI可同时传送影像与声音;

[if !supportLists]l  [endif]传统硬盘的组成为:圆形磁盘片、机械臂、磁盘读取头与主轴马达所组成的,其中磁盘片的组成为扇区、磁道与柱面;

[if !supportLists]l  [endif]磁盘连接到主板的界面大多为SATA或SAS,目前台式机主流为SATA 3.0,理论速度可达600MBytes/s;

[if !supportLists]l  [endif]常见的字符编码为ASCII,繁体中文编码主要有Big5及UTF8两种,目前主流为UTF8;

[if !supportLists]l  [endif]操作系统(Operating System, OS)其实也是一组程序,这组程序的重点在于管理电脑的所有活动及驱动系统中的所有硬件;

[if !supportLists]l  [endif]电脑主要以二进制作为单位,常用的磁盘容量单位为Byte,其单位换算为1 Byte = 8 bits;

[if !supportLists]l  [endif]最基本的操作系统仅在驱动与管理硬件,而要使用硬件时,就得要通过应用软件或者是壳程序(shell)的功能,来调用操作系统操纵硬件工作。目前称为操作系统的,除了上述功能外,通常已经包含了日常工作所需要的应用软件在内了。

0.6 本章习题

[if !supportLists]l  [endif]根据本章内文的说明,请找出目前全世界跑的最快的超级电脑的:(1)系统名称(2)所在位置(3)使用的CPU型号与规格(4)总共使用的CPU数量(5)全功率操作1天时,可能耗用的电费。

[if !supportLists]l  [endif]动手实践题:假设你不知道你的主机内部的各项元件资料,请拆开你的主机机箱,并将内部所有的元件拆开,并且依次列出:

CPU的品牌、型号、最高频率;

内存的容量、接口(DDR/DDR2/DDR3等);

显卡的接口(AGP/PCIe/内置)与容量;

主板的品牌、南北桥的芯片型号、BIOS的品牌,有无内置的网卡或声卡等;

硬盘的连接接口(SATA/SAS等)、硬盘容量、转速、缓存容量等。

然后再将他组装回去。注意,拆装前务必先取得你主板的说明书,因此你可能必须要上网查询上述的各项资料;

[if !supportLists]l  [endif]利用软件:假设你不想要拆开主机机箱,但想了解你的主机内部各元件的资料时,该如何是好?如果使用的是Windows操作系统,可使用CPU-Z(http://www.cpuid.com/cpuz.php)这个软件,如果是Linux环境下,可以使用“cat/proc/cpuinfo”及使用“lspci”来查阅各项元件的型号;

[if !supportLists]l  [endif]如本章图0.2.1所示,找出第四代Intel i7 4790CPU的:(1)与南桥沟通的DMI带宽有多大?(2)二级缓存的容量多大?(3)最大PCIe通道数量有多少?并据以说明主板上面的PCIe插槽的数量限制(请Google此CPU相关资料即可发现);

[if !supportLists]l  [endif]由Google查询Intel SSD 520固态硬盘相关的功能表,了解(1)连接接口、(2)最大读写速度及(3)最大随机读写数据(IOPS)的数据。

0.7 参考资料与延伸阅读

注1:卡片型电脑,或单板电脑:

香蕉派台湾官网:http://tw.bananapi.org/

Xapple pi粉丝团:https://www.facebook.com/roseapplepi

注2:可穿戴设备:http://en.wikipedia.org/wiki/Wearable_computer

注3:对于CPU的原理有兴趣的读者,可以参考维基百科的说明:

英文CPU(http://en.wikipedia.org/wiki/CPU)

中文CPU(http://zh.wikipedia.org/w/index.php?title=%E4%B8%AD%E5%A4%AE%E5%A4%84%E7%90%86%E5%99%A8&variant=zh-hant)

注4:图片参考:

Wiki book:http://en.wikibooks.org/wiki/IB/Group_4/Computer_Science/Computer_Organisation

作者:陳錦輝,『計算機概論-探索未來2008』,金禾資訊,2007出版

注5:更详细的RISC架构可以参考维基百科:

http://zh.wikipedia.org/w/index.php?title=%E7%B2%BE%E7%AE%80%E6%8C%87%E4%BB%A4%E9%9B%86&variant=zh-tw

相关的CPU种类可以参考:

http://en.wikipedia.org/wiki/SPARC

http://en.wikipedia.org/wiki/IBM_POWER_microprocessors

注6:关于ARM架构的说明,可以参考维基百科:

http://zh.wikipedia.org/w/index.php?title=ARM%E6%9E%B6%E6%A7%8B&variant=zh-tw

注7:更详细的CISC架构可参考维基百科:

http://zh.wikipedia.org/w/index.php?title=CISC&variant=zh-tw

注8:更详细的x86架构发展史可以参考维基百科:

http://zh.wikipedia.org/w/index.php?title=X86&variant=zh-tw

注9:用来观察CPU相关信息的CPU-Z软件网站:

http://www.cpuid.com/softwares/cpu-z.html

注10:Intel i7 4790 CPU的详细规格介绍

http://ark.intel.com/zh-tw/products/80806/Intel-Core-i7-4790-Processor-8M-Cache-up-to-4_00-GHz

注11:DDR内存的详细规格介绍

http://zh.wikipedia.org/wiki/DDR_SDRAM

注12:相关的固件说明可参考维基百科:

http://zh.wikipedia.org/w/index.php?title=%E9%9F%8C%E9%AB%94&variant=zh-hant

注13:相关EEPROM可以参考维基百科:

http://zh.wikipedia.org/w/index.php?title=EEPROM&variant=zh-tw

注14:相关BIOS的说明可以参考维基百科:

http://zh.wikipedia.org/w/index.php?title=BIOS&variant=zh-tw

注15:相关PCIe的说明可以参考维基百科:

http://en.wikipedia.org/wiki/PCI_Express

注16:关于磁盘片资料的说明:Zone bit recording:

http://en.wikipedia.org/wiki/Zone_bit_recording

注17:关于SATA磁盘接口的wiki说明:

http://zh.wikipedia.org/wiki/SATA

注18:关于SAS磁盘接口的wiki说明:

http://en.wikipedia.org/wiki/SCSI#SCSI-EXPRESS

http://en.wikipedia.org/wiki/Serial_attached_SCSI

注19:关于USB接口的wiki说明:

http://en.wikipedia.org/wiki/USB

注20:关于SSD的wiki说明:

http://en.wikipedia.org/wiki/Solid-state_drive

感谢:本章当中出现很多图示,很多是从Tom’s Hardware(http://www.tomshardware.com/)网站取得的,在此特别感谢!

你可能感兴趣的:(鸟哥的Linux私房菜2018简体化 第零章(3)、计算机概论)