Linux 基础学习篇 - CentOS 5.x

第零章、计算机概论 - for CentOS 5.x

学操作系统之前还是要对计算机有一定的概念比较妥当!

最近更新时间: 2009/08/03

本文数据主要针对 CentOS 5.x 的系统进行说明,而 CentOS 5.x 已经在 2017 年 3 月份正式不再进行维护,事实上,在 2012 年底几乎就不再维护了。 因此,建议您前往本站查找最新版本的 Linux distribution 文章来阅读,比较不会浪费时间。那为何还需要编辑 CentOS 5 的数据呢? 鸟哥只想要做个自己曾经撰写过的文档内容保存而已啰! ^_^!最新文章请前往鸟站首页查阅啰!
这几年鸟哥开始在大学任教了,在教学的经验中发现到,由于对 Linux 有兴趣的朋友很多可能并非信息相关科系出身, 因此对于电脑硬件及计算机方面的概念不熟。然而操作系统这种咚咚跟硬件有相当程度的关连性, 所以,如果不了解一下计算机概论,要很快的了解 Linux 的概念是有点难度的。因此,鸟哥就自作聪明的添加一个小章节来谈谈计概啰! 因为鸟哥也不是信息相关学门出身,所以,写的不好的地方请大家多多指教啊!^_^

电脑:辅助人脑的好工具

进入二十一世纪的现在,没有用过电脑的朋友应该算很少了吧?但是,你了解电脑是什么吗? 电脑的机壳里面含有什么组件?不同的电脑可以作什么事情?你生活周遭有哪些电器用品内部是含有电脑相关组件的? 底下我们就来谈一谈这些东西呢!

所谓的电脑就是一种计算机,而计算机其实是:『接受用户输入指令与数据, 经由中央处理器的数学与逻辑单元运算处理后,以产生或保存成有用的信息』。 因此,只要有输入设备 (不管是键盘还是触摸屏)及输出设备(屏幕或直接打印出来),让你可以输入数据使该机器产生信息的, 那就是一部计算机了。

计算机的功能
图1.1.1、计算机的功能

根据这个定义你知道哪些东西是计算机了吗?包括一般商店用的简易型加减乘除计算机、打电话用的手机、开车用的卫星定位系统 (GPS)、提款用的提款机 (ATM)、你常使用的桌面型个人电脑、可携带的笔记本电脑还有这两年 (2008, 2009) 很火红的 Eee PC (或称为 netbook) 等等,这些都是计算机!

那么计算机主要的组成组件是什么呢?底下我们以常见的个人电脑来作为说明。

电脑硬件的五大单元

关于电脑的组成部分,其实你可以观察你的台式机分析一下,依外观来说这家伙主要分为三部分:

  • 输入单元:包括键盘、鼠标、读卡机、扫描仪、手写板、触摸屏幕等等一堆;
  • 主机部分:这个就是系统单元,被主机机壳保护住了,里面含有 CPU 与主内存等;
  • 输出单元:例如屏幕、打印机等等

我们主要通过输入设备如鼠标与键盘来将一些数据输入到主机里面,然后再由主机的功能处理成为图表或文章等信息后, 将结果传输到输出设备,如屏幕或打印机上面。重点在于主机里面含有什么组件呢?如果你曾经拆开过电脑主机机壳, 会发现其实主机里面最重要的就是一片主板,上面安插了中央处理器 (CPU) 以及主内存还有一些适配器设备而已。

整部主机的重点在于中央处理器 (Central Processing Unit, CPU),CPU 为一个具有特定功能的芯片, 里头含有微指令集,如果你想要让主机进行什么特异的功能,就得要参考这颗 CPU 是否有相关内置的微指令集才可以。 由于 CPU 的工作主要在于管理与运算,因此在 CPU 内又可分为两个主要的单元,分别是: 算数逻辑单元与控制单元。(注1) 其中算数逻辑单元主要负责程序运算与逻辑判断,控制单元则主要在协调各周边组件与各单元间的工作。

既然 CPU 的重点是在进行运算与判断,那么要被运算与判断的数据是从哪里来的? CPU 读取的数据都是从主内存来的! 主内存内的数据则是从输入单元所传输进来!而 CPU 处理完毕的数据也必须要先写回主内存中, 最后数据才从主内存传输到输出单元。

综合上面所说的,我们会知道其实电脑是由几个单元所组成的,包括输入单元、 输出单元、CPU内部的控制单元、算数逻辑单元与主内存五大部分。 相关性如下所示:

电脑的五大单元
图1.1.2、电脑的五大单元(注2)

上面图标中的『系统单元』其实指的就是电脑机壳内的主要组件,而重点在于CPU与主内存。 特别要看的是实线部分的传输方向,基本上数据都是流经过主内存再转出去的! 至于数据会流进/流出内存则是CPU所发布的控制命令!而CPU实际要处理的数据则完全来自于主内存! 这是个很重要的概念喔!

而由上面的图标我们也能知道,所有的单元都是由CPU内部的控制单元来负责协调的,因此CPU是整个电脑系统的最重要部分! 那么目前世界上有哪些主流的CPU呢?是否刚刚我们谈到的硬件内全部都是相同的CPU种类呢?底下我们就来谈一谈。

CPU的种类

如前面说过的,CPU其实内部已经含有一些小指令集,我们所使用的软件都要经过CPU内部的微指令集来达成才行。 那这些指令集的设计主要又被分为两种设计理念,这就是目前世界上常见到的两种主要CPU种类: 分别是精简指令集(RISC)与复杂指令集(CISC)系统。底下我们就来谈谈这两种不同CPU种类的差异啰!

  • 精简指令集(Reduced Instruction Set Computer, RISC):(注3)

这种CPU的设计中,微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的运行性能较佳; 但是若要做复杂的事情,就要由多个指令来完成。常见的RISC微指令集CPU主要例如升阳(Sun)公司的SPARC系列、 IBM公司的Power Architecture(包括PowerPC)系列、与ARM系列等。

在应用方面,SPARC架构的电脑常用于学术领域的大型工作站中,包括银行金融体系的主要服务器也都有这类的电脑架构; 至于PowerPC架构的应用上,例如新力(Sony)公司出产的Play Station 3(PS3)就是使用PowerPC架构的Cell处理器; 那ARM呢?你常使用的各厂牌手机、PDA、导航系统、网络设备(交换器、路由器等)等,几乎都是使用ARM架构的CPU喔! 老实说,目前世界上使用范围最广的CPU可能就是ARM呢! (注4)

  • 复杂指令集(Complex Instruction Set Computer, CISC):(注5)

与RISC不同的,CISC在微指令集的每个小指令可以运行一些较低级的硬件操作,指令数目多而且复杂, 每条指令的长度并不相同。因为指令运行较为复杂所以每条指令花费的时间较长, 但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。

由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个人电脑(Personal computer)用途上面, 因此,个人电脑常被称为x86架构的电脑!那为何称为x86架构(注6)呢? 这是因为最早的那颗Intel发展出来的CPU代号称为8086,后来依此架构又开发出80286, 80386..., 因此这种架构的CPU就被称为x86架构了。

在2003年以前由Intel所开发的x86架构CPU由8比特升级到16、32比特,后来AMD依此架构修改新一代的CPU为64比特, 为了区别两者的差异,因此64比特的个人电脑CPU又被统称为x86_64的架构喔!

那么不同的x86架构的CPU有什么差异呢?除了CPU的整体结构(如第二层缓存、每次运作可运行的指令数等)之外, 主要是在于微指令集的不同。新的x86的CPU大多含有很先进的微指令集, 这些微指令集可以加速多媒体程序的运作,也能够加强虚拟化的性能,而且某些微指令集更能够增加能源效率, 让CPU耗电量降低呢!由于电费越来越高,购买电脑时,除了整体的性能之外, 节能省电的CPU特色也可以考虑喔!

例题:
最新的Intel/AMD的x86架构中,请查找出多媒体、虚拟化、省电功能各有哪些重要的微指令集?(仅供参考)
答:
  • 多媒体微指令集:MMX, SSE, SSE2, SSE3, SSE4, AMD-3DNow!
  • 虚拟化微指令集:Intel-VT, AMD-SVM
  • 省电功能:Intel-SpeedStep, AMD-PowerNow!
  • 64/32比特兼容技术:AMD-AMD64, Intel-EM64T

周边设备

单有CPU也无法运作电脑的,所以电脑还需要其他的周边设备才能够实际运作。 除了前面稍微提到的输入/输出设备,以及CPU与主内存之外,还有什么周边设备呢? 其实最重要的周边设备是主板!因为主板负责将所有的设备通通连接在一起,让所有的设备能够进行协调与沟通。 而主板上面最重要的组件就是主板芯片组!这个芯片组可以将所有的设备汇集在一起!

其他重要的设备还有:

  • 保存设备:保存设备包括硬盘、软碟、光盘、磁带等等;
  • 显示设备:显卡对于玩3D游戏来说是非常重要的一环,他与显示的精致度、色彩与分辨率都有关系;
  • 网络设备:没有网络活不下去啊!所以网络卡对于电脑来说也是相当重要的!

更详细的各项周边设备我们将在下个小节进行介绍!在这里我们先来了解一下各组件的关系啰! 那就是,电脑是如何运作的呢?

运作流程

如果不是很了解电脑的运作流程,鸟哥拿个简单的想法来思考好了~ 假设电脑是一个人体,那么每个组件对应到那个地方呢?可以这样思考:

各组件运作
图1.4.1、各组件运作
  • CPU=脑袋瓜子:每个人会作的事情都不一样(微指令集的差异), 但主要都是通过脑袋瓜子来进行判断与控制身体各部分的活动;

  • 主内存=脑袋中的记录区块:在实际活动过程中,我们的脑袋瓜子能够将外界的交互暂时记录起来, 提供CPU来进行判断;

  • 硬盘=脑袋中的记忆区块:将重要的数据记录起来,以便未来将这些重要的经验再次的使用;

  • 主板=神经系统:好像人类的神经一样,将所有重要的组件连接起来,包括手脚的活动都是脑袋瓜子发布命令后, 通过神经(主板)传导给手脚来进行活动啊!

  • 各项周边设备=人体与外界沟通的手、脚、皮肤、眼睛等:就好像手脚一般,是人体与外界交互的重要关键!

  • 显卡=脑袋中的图像:将来自眼睛的刺激转成影响后在脑袋中呈现,所以显卡所产生的数据源也是CPU控制的。

  • 电源供应器 (Power)=心脏:所有的组件要能运作得要有足够的电力供给才行!这电力供给就好像心脏一样,如果心脏不够力, 那么全身也就无法动弹的!心脏不稳定呢?那你的身体当然可能断断续续的~不稳定!

由这样的关系图当中,我们知道整个活动中最重要的就是脑袋瓜子! 而脑袋瓜子当中与现在正在进行的工作有关的就是CPU与主内存!任何外界的接触都必须要由脑袋瓜子中的主内存记录下来, 然后给脑袋中的CPU依据这些数据进行判断后,再发布命令给各个周边设备!如果需要用到过去的经验, 就得由过去的经验(硬盘)当中读取啰!

也就是说,整个人体最重要的地方就是脑袋瓜子,同样的,整部主机当中最重要的就是CPU与主内存, 而CPU的数据源通通来自于主内存,如果要由过去的经验来判断事情时, 也要将经验(硬盘)挪到目前的记忆(主内存)当中,再交由CPU来判断喔!这点得要再次的强调啊! 下个章节当中,我们就对目前常见的个人电脑各个组件来进行说明啰!

电脑分类

知道了电脑的基本组成与周边设备,也知道其实电脑的CPU种类非常的多,再来我们想要了解的是,电脑如何分类? 电脑的分类非常多种,如果以电脑的复杂度与运算能力进行分类的话,主要可以分为这几类:

  • 超级电脑(Supercomputer)
    超级电脑是运作速度最快的电脑,但是他的维护、操作费用也最高!主要是用于需要有高速计算的计划中。 例如:国防军事、气象预测、太空科技,用在仿真的领域较多。详情也可以参考: 国家高速网络与计算中心http://www.nchc.org.tw的介绍! 至于全世界最快速的前500大超级电脑,则请参考:http://www.top500.org

  • 大型电脑(Mainframe Computer)
    大型电脑通常也具有数个高速的CPU,功能上虽不及超级电脑,但也可用来处理大量数据与复杂的运算。 例如大型企业的主机、全国性的证券交易所等每天需要处理数百万笔数据的企业机构, 或者是大型企业的数据库服务器等等。

  • 迷你电脑(Minicomputer)
    迷你电脑仍保有大型电脑同时支持多用户的特性,但是主机可以放在一般作业场所, 不必像前两个大型电脑需要特殊的空调场所。通常用来作为科学研究、工程分析与工厂的流程管理等。

  • 工作站(Workstation)
    工作站的价格又比迷你电脑便宜许多,是针对特殊用途而设计的电脑。在个人电脑的性能还没有提升到目前的状况之前, 工作站电脑的性能/价格比是所有电脑当中较佳的,因此在学术研究与工程分析方面相当常见。

  • 微电脑(Microcomputer)
    又可以称为个人电脑,也是我们这里主要探讨的目标!体积最小,价格最低,但功能还是五脏俱全的! 大致又可分为桌面型、笔记型等等。

若光以性能来说,目前的个人电脑性能已经够快了,甚至已经比工作站等级以上的电脑运算速度还要快! 但是工作站电脑强调的是稳定不当机,并且运算过程要完全正确,因此工作站以上等级的电脑在设计时的考量与个人电脑并不相同啦! 这也是为啥工作站等级以上的个人电脑售价较贵的原因。

电脑上面常用的计算单位 (容量、速度等)

电脑的运算能力是由速度来决定的,而存放在电脑保存设备当中的数据容量也是有单位的。

  • 容量单位

电脑依有没有通电来记录信息,所以理论上它只认识 0 与 1 而已。0/1 的单位我们称为 bit。但 bit 实在太小了, 并且在保存数据时每份简单的数据都会使用到 8 个 bits 的大小来记录,因此定义出 byte 这个单位,他们的关系为:

1 Byte = 8 bits

不过同样的,Byte 还是太小了,在较大的容量情况下,使用 byte 相当不容易判断数据的大小,举例来说,1000000 bytes 这样的显示方式你能够看得出有几个零吗?所以后来就有一些常见的简化单位表示法,例如 K 代表 1024,M 代表 1024K 等。 而这些单位在不同的进制下有不同的数值表示,底下就列出常见的单位与进制对应:

进制KMGTP
二进位10241024K1024M1024G1024T
十进位10001000K1000M1000G1000T

一般来说,文件容量使用的是二进位的方式,所以 1 GBytes 的文件大小实际上为:1024x1024x1024 Bytes 这么大! 速度单位则常使用十进位,例如 1GHz 就是 1000x1000x1000 Hz 的意思。

  • 速度单位

CPU的运算速度常使用 MHz 或者是 GHz 之类的单位,这个 Hz 其实就是秒分之一。而在网络传输方面,由于网络使用的是 bit 为单位,因此网络常使用的单位为 Mbps 是 Mbits per second,亦即是每秒多少 Mbit。举例来说,大家常听到的 8M/1M ADSL 传输速度,如果转成文件容量的 byte 时,其实理论最大传输值为:每秒 1Mbyte/ 每秒125Kbyte的下载/上传容量喔!

例题:
假设你今天购买了500GB的硬盘一颗,但是格式化完毕后却只剩下460GB左右的容量,这是什么原因?
答:
因为一般硬盘制造商会使用十进位的单位,所以500GByte代表为500*1000*1000*1000Byte之意。 转成文件的容量单位时使用二进位(1024为底),所以就成为466GB左右的容量了。

硬盘厂商并非要骗人,只是因为硬盘的最小物理量为512Bytes,最小的组成单位为磁区(sector), 通常硬盘容量的计算采用『多少个sector』,所以才会使用十进位来处理的。相关的硬盘信息在这一章后面会提到的!

个人电脑架构与周边设备

一般消费者常说的电脑通常指的就是x86的个人电脑架构,因此我们有必要来了解一下这个架构的各个组件。 事实上,Linux最早在发展的时候,就是依据个人电脑的架构来发展的,所以,真的得要了解一下呢! 另外,因为两大主流x86开发商(Intel, AMD)的CPU架构并不兼容,而且设计理念也有所差异, 所以两大主流CPU所需要的主板芯片组设计也就不太相同。目前(2009)最新的主板架构主要是这样的:

Intel芯片架构
图2.1.1、Intel芯片架构

就如同前一小节提到的,整个主板上面最重要的就是芯片组了!而芯片组通常又分为两个桥接器来控制各组件的沟通, 分别是:(1)北桥:负责链接速度较快的CPU、主内存与显卡等组件;(2)南桥:负责连接速度较慢的周边接口, 包括硬盘、USB、网络卡等等。(芯片组的南北桥与三国的大小乔没有关系 @_@)至于AMD的芯片组架构如下所示:

AMD芯片架构
图2.1.2、AMD芯片架构

与Intel不同的地方在于主内存是直接与CPU沟通而不通过北桥!从前面的说明我们可以知道CPU的数据主要都是来自于主内存提供, 因此AMD为了加速这两者的沟通,所以将内存控件集成到CPU当中, 理论上这样可以加速CPU与主内存的传输速度!这是两种CPU在架构上面主要的差异点。

毕竟目前世界上x86的CPU主要供应商为Intel,所以底下鸟哥将以Intel的主板架构说明各组件啰! 我们以技嘉公司出的主板,型号:Gigabyte GA-X48-DQ6作为一个说明的范例,主板各组件如下所示:

技嘉主板各组件
图2.1.3、技嘉主板各组件(图片为各公司所有)

主要的组件为:CPU、主内存、磁盘设备(IDE/SATA)、总线芯片组(南桥/北桥)、显卡接口(PCI-Express)与其他适配器(PCI)。 底下的各项组件在讲解时,请参考Intel芯片组架构与技嘉主板各组件来印证喔!

CPU

如同技嘉主板示意图上最上方的中央部分,那就是CPU插槽。 由于CPU负责大量运算,因此CPU通常是具有相当高发热量的组件。所以如果你曾经拆开过主板, 应该就会看到CPU上头通常会安插一颗风扇来主动散热的。

x86个人电脑的CPU主要供应商为Intel与AMD,目前(2009)主流的CPU都是双核以上的架构了! 原本的宏内核CPU仅有一个运算单元,所谓的多内核则是在一颗CPU封装当中嵌入了两个以上的运算内核, 简单的说,就是一个实体的CPU外壳中,含有两个以上的CPU单元就是了。

不同的CPU型号大多具有不同的脚位(CPU上面的插脚),能够搭配的主板芯片组也不同, 所以当你想要将你的主机升级时,不能只考虑CPU,你还得要留意你的主板上面所支持的CPU型号喔! 不然买了最新的CPU也不能够安插在你的旧主板上头的!目前主流的CPU有Intel的Core 2 Duo与AMD的Athlon64 X2双核CPU, 高端产品则有Intel的Core i7 与AMD的Phenom II 四内核CPU喔!

不同的CPU脚位
图2.1.4、不同的CPU脚位

我们前面谈到CPU内部含有微指令集,不同的微指令集会导致CPU工作效率的优劣。除了这点之外, CPU性能的比较还有什么呢?那就是CPU的时脉了!什么是时脉呢?简单的说, 时脉就是CPU每秒钟可以进行的工作次数。 所以时脉越高表示这颗CPU单位时间内可以作更多的事情。举例来说,Intel的Core 2 Duo型号E8400的CPU时脉为3.0GHz, 表示这颗CPU在一秒内可以进行3.0x109次工作,每次工作都可以进行少数的指令运作之意。

Tips 鸟哥 注意,不同的CPU之间不能单纯的以时脉来判断运算性能喔!这是因为每颗CPU的微指令集不相同,架构也不见得一样, 每次时脉能够进行的工作指令数也不同之故!所以,时脉目前仅能用来比较同款CPU的速度!
  • CPU的『外频』与『倍频』

我们可以看到图2.1.1的芯片架构图当中各个组件都是通过北桥与南桥所连接在一起。 但就像一群人共同在处理一个连续作业一般,如果这一群人里面有个人的动作特别快或特别慢, 将导致前面或者是后面的人事情一堆处理不完!也就是说,这一群人最好能够速度一致较佳! 所以,CPU与外部各组件的速度理论上应该要一致才好。但是因为CPU需要较强大的运算能力, 因为很多判断与数学都是在CPU内处理的,因此CPU开发商就在CPU内再加上一个加速功能, 所以CPU有所谓的外频与倍频!

所谓的外频指的是CPU与外部组件进行数据传输时的速度,倍频则是 CPU 内部用来加速工作性能的一个倍数, 两者相乘才是CPU的时脉速度。我们以刚刚Intel Core 2 Duo E8400 CPU来说,他的时脉是3.0GHz, 而外频是333MHz,因此倍频就是9倍啰!(3.0G=333Mx9, 其中1G=1000M)

Tips 鸟哥 很多电脑硬件玩家很喜欢玩『超频』,所谓的超频指的是: 将CPU的倍频或者是外频通过主板的设置功能更改成较高频率的一种方式。但因为CPU的倍频通常在出厂时已经被锁定而无法修改, 因此较常被超频的为外频。
举例来说,像上述3.0GHz的CPU如果想要超频, 可以将他的外频333MHz调整成为400MHz,但如此一来整个主板的各个组件的运作频率可能都会被增加成原本的1.333倍(4/3), 虽然CPU可能可以到达3.6GHz,但却因为频率并非正常速度,故可能会造成当机等问题。
  • 32比特与64比特

前面谈到CPU运算的数据都是由主内存提供的,主内存与CPU的沟通速度靠的是外部频率, 那么每次工作可以发送的数据量有多大呢?那就是总线的功能了。一般主板芯片组有分北桥与南桥, 北桥的总线称为系统总线,因为是内存传输的主要信道,所以速度较快。 南桥就是所谓的输入输出(I/O)总线,主要在联系硬盘、USB、网络卡等周边设备。

目前北桥所支持的频率可高达333/400/533/800/1066/1333/1600MHz等不同频率,支持情况依芯片组功能而有不同。 北桥所支持的频率我们称为前端总线速度(Front Side Bus, FSB), 而每次发送的比特数则是总线宽度。 那所谓的总线带宽则是:『FSBx总线宽度』亦即每秒钟可发送的最大数据量。 目前常见的总线宽度有32/64比特(bits)。

而如图 2.1.1中的图标,在该架构中前端总线最高速度可达1600MHz。 我们看到内存与北桥的带宽为12.8GBytes/s,亦即是1600MHz*64bits = 1600MHz*8Bytes = 12800MByes/s = 12.8GBytes/s

与总线宽度相似的,CPU每次能够处理的数据量称为字组大小(word size), 字组大小依据CPU的设计而有32比特与64比特。我们现在所称的电脑是32或64比特主要是依据这个 CPU解析的字组大小而来的!早期的32比特CPU中,因为CPU每次能够解析的数据量有限, 因此由主内存传来的数据量就有所限制了。这也导致32比特的CPU最多只能支持最大到4GBytes的内存。

Tips 鸟哥 字组大小与总线宽度是可以不同的!举例来说,在Pentium Pro时代,该CPU是32比特的处理器, 但当时的芯片组可以设计出64比特的总线宽度。在这样的架构下我们通常还是以CPU的字组大小来称呼该架构。 个人电脑的64比特CPU是到2003年由AMD Athlon64后才出现的。
  • CPU等级

由于x86架构的CPU在Intel的Pentium系列(1993年)后就有不统一的脚位与设计,为了将不同种类的CPU规范等级, 所以就有i386,i586,i686等名词出现了。基本上,在Intel Pentium MMX与AMD K6年代的CPU称为i586等级, 而Intel Celeron与AMD Athlon(K7)年代之后的32比特CPU就称为i686等级。 至于目前的64比特CPU则统称为x86_64等级。

目前很多的程序都有对CPU做优化的设计,万一哪天你发现一些程序是注明给686的CPU使用时, 就不要将他安装在586以下等级的电脑中,否则可是会无法运行该软件的! 不过,在686倒是可以安装386的软件喔!也就是说,这些东西具有向下兼容的能力啦!

内存

如同图2.1.3、技嘉主板示意图中的右上方部分的那四根插槽,那就是主内存的插槽了。 主内存插槽中间通常有个突起物将整个插槽稍微切分成为两个不等长的距离, 这样的设计可以让用户在安装主内存时,不至于前后脚位安插错误,是一种防呆的设计喔。

前面提到CPU所使用的数据都是来自于主内存(main memory),不论是软件程序还是数据,都必须要读入主内存后CPU才能利用。 个人电脑的主内存主要组件为动态随机访问内存(Dynamic Random Access Memory, DRAM), 随机访问内存只有在通电时才能记录与使用,断电后数据就消失了。因此我们也称这种RAM为挥发性内存。

DRAM根据技术的更新又分好几代,而使用上较广泛的有所谓的SDRAM与DDR SDRAM两种。 这两种内存的差别除了在于脚位与工作电压上的不同之外,DDR是所谓的双倍数据发送速度(Double Data Rate), 他可以在一次工作周期中进行两次数据的发送,感觉上就好像是CPU的倍频啦! 所以传输频率方面比SDRAM还要好。新一代的PC大多使用DDR内存了。 下表列出SDRAM与DDR SDRAM的型号与频率及带宽之间的关系。

SDRAM/DDR型号数据宽度(bit)外频(MHz) 频率速度带宽(频率x宽度)
SDRAMPC10064100100800MBytes/sec
SDRAMPC133641331331064MBytes/sec
DDRDDR266641332662.1GBytes/sec
DDRDDR400642004003.2GBytes/sec
DDRDDRII800642008006.4GBytes/sec

DDR SDRAM又依据技术的发展,有DDR, DDRII, DDRIII等等,其中,DDRII 的频率倍数则是 4 倍喔!

Tips 鸟哥 主内存型号的挑选与CPU及芯片组有关,所以主板、CPU与内存在购买的时候必须要考虑其相关性喔。 并不是任何主板都可以安插DDR III的内存呢!

主内存除了频率/带宽与型号需要考虑之外,内存的容量也是很重要的喔! 因为所有的数据都得要加载内存当中才能够被CPU判读,如果内存容量不够大的话将会导致某些大容量数据无法被完整的加载, 此时已存在内存当中但暂时没有被使用到的数据必须要先被释放,使得可用内存容量大于该数据,那份新数据才能够被加载呢! 所以,通常越大的内存代表越快速的系统,这是因为系统不用常常释放一些内存内部的数据。 以服务器来说,主内存的容量有时比CPU的速度还要来的重要的

  • 双信道设计

由于所有的数据都必须要存放在主内存,所以主内存的数据宽度当然是越大越好。 但传统的总线宽度一般大约仅达64比特,为了要加大这个宽度,因此芯片组厂商就将两个主内存汇整在一起, 如果一支内存可达64比特,两支内存就可以达到128比特了,这就是双信道的设计理念。

如上所述,要激活双信道的功能你必须要安插两支(或四支)主内存,这两支内存最好连型号都一模一样比较好, 这是因为启动双信道内存功能时,数据是同步写入/读出这一对主内存中,如此才能够提升整体的带宽啊! 所以当然除了容量大小要一致之外,型号也最好相同啦!

你有没有发现图 2.1.3、技嘉主板示意图上那四根内存插槽的颜色呢?是否分为两种颜色,且两两成对? 为什么要这样设计?答出来了吗?是啦!这种颜色的设计就是为了双信道来的!要启动双信道的功能时, 你必须要将两根容量相同的主内存插在相同颜色的插槽当中喔!

  • CPU时脉与主内存的关系

理论上,CPU与主内存的外频应该要相同才好。不过,因为技术方面的提升,因此这两者的频率速度不会相同, 但外频则应该是一致的较佳。举例来说,上面提到的Intel E8400 CPU外频为333MHz,则应该选用DDR II 667这个型号, 因为该内存型号的外频为333MHz之故喔!

  • DRAM与SRAM

除了主内存之外,事实上整部个人电脑当中还有许许多多的内存存在喔!最为我们所知的就是CPU内的第二层高速缓存。 我们现在知道CPU的数据都是由主内存提供,但主内存的数据毕竟得经由北桥送到CPU内。 如果某些很常用的程序或数据可以放置到CPU内部的话,那么CPU数据的读取就不需要通过北桥了! 对于性能来说不就可以大大的提升了?这就是第二层缓存的设计概念。第二层缓存与主内存及CPU的关系如下图所示:

内存相关性
图2.2.1、内存相关性

因为第二层缓存(L2 cache)集成到CPU内部,因此这个L2内存的速度必须要CPU时脉相同。 使用DRAM是无法达到这个时脉速度的,此时就需要静态随机访问内存(Static Random Access Memory, SRAM)的帮忙了。 SRAM在设计上使用的晶体管数量较多,价格较高,且不易做成大容量,不过由于其速度快, 因此集成到CPU内成为高速缓存以加快数据的访问是个不错的方式喔!新一代的CPU都有内置容量不等的L2缓存在CPU内部, 以加快CPU的运作性能。

  • 唯读内存(ROM)

主板上面的组件是非常多的,而每个组件的参数又具有可调整性。举例来说,CPU与内存的时脉是可调整的; 而主板上面如果有内置的网络卡或者是显卡时,该功能是否要启动与该功能的各项参数, 是被记录到主板上头的一个称为CMOS的芯片上,这个芯片需要借着额外的电源来发挥记录功能, 这也是为什么你的主板上面会有一颗电池的缘故。

那CMOS内的数据如何读取与更新呢?还记得你的电脑在开机的时候可以按下[Del]按键来进入一个名为BIOS的画面吧? BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中, 这个内存芯片在没有通电时也能够将数据记录下来,那就是唯读内存(Read Only Memory, ROM)。 ROM是一种非挥发性的内存。另外,BIOS对于个人电脑来说是非常重要的, 因为他是系统在开机的时候首先会去读取的一个小程序喔!

另外,固件(firmware)(注7)很多也是使用ROM来进行软件的写入的。 固件像软件一样也是一个被电脑所运行的程序,然而他是对于硬件内部而言更加重要的部分。例如BIOS就是一个固件, BIOS虽然对于我们日常操作电脑系统没有什么太大的关系,但是他却控制着开机时各项硬件参数的取得! 所以我们会知道很多的硬件上头都会有ROM来写入固件这个软件。

BIOS 对电脑系统来讲是非常重要的,因为他掌握了系统硬件的详细信息与开机设备的选择等等。但是电脑发展的速度太快了, 因此 BIOS 代码也可能需要作适度的修改才行,所以你才会在很多主板官网找到 BIOS 的更新程序啊!但是 BIOS 原本使用的是无法改写的 ROM ,因此根本无法修正 BIOS 代码!为此,现在的 BIOS 通常是写入类似闪存 (flash) 或 EEPROM (注8) 中。(注9)

显卡

显卡插槽如同图 2.1.3、技嘉主板示意图所示,是在中央较长的插槽! 这张主板中提供了两个显卡插槽喔!

显卡又称为VGA(Video Graphics Array),他对于图形图像的显示扮演相当关键的角色。 一般对于图形图像的显示重点在于分辨率与色彩深度,因为每个图像显示的颜色会占用掉内存, 因此显卡上面会有一个内存的容量,这个显卡内存容量将会影响到最终你的屏幕分辨率与色彩深度的喔!

除了显卡内存之外,现在由于三度空间游戏(3D game)与一些3D动画的流行,因此显卡的『运算能力』越来越重要。 一些3D的运算早期是交给CPU去运作的,但是CPU并非完全针对这些3D来进行设计的,而且CPU平时已经非常忙碌了呢! 所以后来显卡厂商直接在显卡上面嵌入一个3D加速的芯片,这就是所谓的GPU称谓的由来。

显卡主要也是通过北桥芯片与CPU、主内存等沟通。如前面提到的,对于图形图像(尤其是3D游戏)来说, 显卡也是需要高速运算的一个组件,所以数据的传输也是越快越好!因此显卡的规格由早期的PCI导向AGP, 近期AGP又被PCI-Express规格所取代了。如前面技嘉主板图标当中看到的就是PCI-Express的插槽。 这些插槽最大的差异就是在数据传输的带宽了!如下所示:

规格宽度速度带宽
PCI32 bits33 MHz133 MBytes/s
PCI 2.264 bits66 MHz533 MBytes/s
PCI-X64 bits133 MHz1064 MBytes/s
AGP 4x32 bits66x4 MHz1066 MBytes/s
AGP 8x32 bits66x8 MHz2133 MBytes/s
PCIe x1250 MBytes/s
PCIe x82 GBytes/s
PCIe x164 GBytes/s

比较特殊的是,PCIe(PCI-Express)使用的是类似管线的概念来处理,每条管线可以具有250MBytes/s的带宽性能, 管线越大(最大可达x32)则总带宽越高!目前显卡大多使用x16的PCIe规格,这个规格至少可以达到4GBytes/s的带宽! 比起AGP是快很多的!此外,新的PCIe 2.0规格也已经推出了,这个规格又可将每个管线的性能提升一倍呢! 好可怕的传输量....

如果你的主机是用来打3D游戏的,那么显卡的选购是非常重要喔!如果你的主机是用来做为网络服务器的, 那么简单的入门级显卡对你的主机来说就非常够用了!因为网络服务器很少用到3D与图形图像功能。

例题:
假设你的桌面使用1024x768分辨率,且使用全彩(每个像素占用3bytes的容量),请问你的显卡至少需要多少内存才能使用这样的彩度?
答:
因为1024x768分辨率中会有786432个像素,每个像素占用3bytes,所以总共需要2.25MBytes以上才行! 但如果考虑屏幕的更新率(每秒钟屏幕的更新次数),显卡的内存还是越大越好!

硬盘与保存设备

电脑总是需要记录与读取数据的,而这些数据当然不可能每次都由用户经过键盘来打字!所以就需要有保存设备咯。 电脑系统上面的保存设备包括有:硬盘、软碟、MO、CD、DVD、磁带机、U盘(闪存)、还有新一代的蓝光光驱等, 乃至于大型机器的局域网路保存设备(SAN, NAS)等等,都是可以用来保存数据的。而其中最常见的应该就是硬盘了吧!

  • 硬盘的物理组成

大家应该都看过硬盘吧!硬盘依据桌面型与笔记本电脑而有分为3.5吋及2.5吋的大小。我们以3.5吋的台式机使用硬盘来说明。 在硬盘盒里面其实是由许许多多的圆形磁盘盘、机械手臂、 磁盘读取头与主轴马达所组成的,整个内部如同下图所示:

硬盘物理构造
图2.4.1、硬盘物理构造(图片取自维基百科)

实际的数据都是写在具有磁性物质的磁盘盘上头,而读写主要是通过在机械手臂上的读取头(head)来达成。 实际运作时, 主轴马达让磁盘盘转动,然后机械手臂可伸展让读取头在磁盘盘上头进行读写的动作。 另外,由於单一磁盘盘的容量有限,因此有的硬盘内部会有两个以上的磁盘盘喔!

  • 磁盘盘上的数据

既然数据都是写入磁盘盘上头,那么磁盘盘上头的数据又是如何写入的呢? 其实磁盘盘上头的数据有点像下面的图标所示:

磁盘盘上的数据格式
图2.4.2、磁盘盘上的数据格式

整个磁盘盘上头好像有多个同心圆绘制出的圆形图,而由圆心以放射状的方式分割出磁盘的最小保存单位,那就是磁区(Sector), 在物理组成分面,每个磁区大小为512Bytes,这个值是不会改变的。而磁区组成一个圆就成为磁道(track), 如果是在多碟的硬盘上面,在所有磁盘盘上面的同一个磁道可以组成一个磁柱(Cylinder), 磁柱也是一般我们分割硬盘时的最小单位了

在计算整个硬盘的保存量时,简单的计算公式就是:『header数量 * 每个header负责的磁柱数量 * 每个磁柱所含有的磁区数量 * 磁区的容量』,单位换算为『header * cylinder/header * secter/cylinder * 512bytes/secter』,简单的写法如下: Head x Cylinder x Sector x 512 Bytes。 不过要注意的是,一般硬盘制造商在显示硬盘的容量时,大多是以十进位来编号,因此市售的500GB硬盘, 理论上仅会有460GBytes左右的容量喔!

  • 传输接口

由于传输速度的需求提升,目前硬盘与主机系统的联系主要有几种传输接口规格:

两款硬盘接口(左边为IDE接口,右边为SATA接口)
图2.4.3、两款硬盘接口(左边为IDE接口,右边为SATA接口)
  • IDE接口

    如同图 2.1.3、技嘉主板图标右侧的较宽的插槽所示,那就是IDE的接口插槽。 IDE接口插槽所使用的排线较宽,每条排在线面可以接两个IDE设备,由于可以接两个设备,那为了判别两个设备的主/从架构, 因此这种磁盘机上面需要调整跳针(Jump)成为Master或slave才行喔!这种接口的最高传输速度为Ultra 133规格, 亦即每秒理论传输速度可达133MBytes。

    IDE 接口的排线 (图标取自 Seagate 网站)
    图2.4.4、IDE 接口的排线 (图标取自 Seagate 网站)

  • SATA接口

    如同技嘉主板图标右下方所示为SATA硬盘的连接接口插槽。 我们可以看到该插槽要比IDE接口的小很多,每条SATA连接线仅能接一个SATA设备。SATA接口除了速度较快之外, 由于其排线较细小所以有利于主机机壳内部的散热与安装!目前SATA已经发展到了第二代, 其速度由SATA-1的每秒150MBytes提升到SATA-2每秒300MBytes的传输速度喔, 也因此目前主流的个人电脑硬盘已经被SATA取代了。SATA的插槽示意图如下所示:

    SATA 接口的排线 (图标取自 Seagate 网站)
    图2.4.5、SATA 接口的排线 (图标取自 Seagate 网站)

    由于SATA一条排线仅接一颗硬盘,所以妳不需要调整跳针。不过一张主板上面SATA插槽的数量并不是固定的, 且每个插槽都有编号,在连接SATA硬盘与主板的时候,还是需要留意一下。

  • SCSI接口

    另一种常见于工作站等级以上的硬盘传输接口为SCSI接口,这种接口的硬盘在控制器上含有一颗处理器, 所以除了运转速度快之外,也比较不会耗费CPU资源喔!在个人电脑上面这种接口的硬盘不常见啦!

  • 选购与运转须知

如果你想要增加一颗硬盘在你的主机里头时,除了需要考虑你的主板可接受的插槽接口(IDE/SATA)之外, 还有什么要注意的呢?

  • 容量
    通常首先要考量的就是容量的问题!目前(2009)主流市场硬盘容量已经到达320GB以上,甚至有的厂商已经生产高达 2TB 的产品呢!硬盘可能可以算是一种消耗品,要注意重要数据还是得常常备份出来喔!

  • 缓冲内存
    硬盘上头含有一个缓冲内存,这个内存主要可以将硬盘内常使用的数据缓存起来,以加速系统的读取性能。 通常这个缓冲内存越大越好,因为缓冲内存的速度要比数据从硬盘盘中被找出来要快的多了! 目前主流的产品可达16MB左右的内存大小喔。

  • 转速
    因为硬盘主要是利用主轴马达转动磁盘盘来访问,因此转速的快慢会影响到性能。 主流的台式机硬盘为每分钟7200转,笔记本电脑则是5400转。有的厂商也有推出高达10000转的硬盘, 若有高性能的数据访问需求,可以考虑购买高转速硬盘。

  • 运转须知
    由于硬盘内部机械手臂上的磁头与硬盘盘的接触是很细微的空间, 如果有抖动或者是脏污在磁头与硬盘盘之间就会造成数据的损毁或者是实体硬盘整个损毁~ 因此,正确的使用电脑的方式,应该是在电脑通电之后,就绝对不要移动主机,并免抖动到硬盘, 而导致整个硬盘数据发生问题啊!另外,也不要随便将插头拔掉就以为是顺利关机!因为机械手臂必须要归回原位, 所以使用操作系统的正常关机方式,才能够有比较好的硬盘保养啊!因为他会让硬盘的机械手臂归回原位啊!
Tips 鸟哥 可能因为环境的关系,电脑内部的风扇常常会卡灰尘而造成一些声响。很多朋友只要听到这种声响都是二话不说的 『用力拍几下机壳』就没有声音了~现在你知道了,这么做的后果常常就是你的硬盘容易坏掉! 下次千万不要再这样做啰!

PCI适配器

PCI适配器的插槽就如同图2.1.3、技嘉主板示意图所示的左下方那个白色的插槽, 这种PCI插槽通常会提供多个给用户,如果用户有额外需要的功能卡, 就能够安插在这种PCI接口插槽上。

我们在前面显卡的部分稍微谈过PCI接口,事实上有相当多的组件是使用PCI接口作为传输的, 例如网络卡、声卡、特殊功能卡等等。但由于PCI Express规格的发展,很多制造商都往PCIe接口开发硬件了。 不过还是有很多硬件使用PCI接口啦,例如大卖场上面常见的网络卡就是一个。

目前在个人电脑上面常见到的网络卡是一种称为以太网路(Ethernet)的规格,目前以太网路卡速度轻轻松松的就能到达10/100/1000 Mbits/second的速度,但同样速度的以太网路卡所支持的标准可能不太一样,因此造成的价差是非常大的。 如果想要在服务器主机上面安装新的网络卡时,得要特别注意标准的差异呢!

由于各组件的价格直直落,现在主板上面通常已经集成了相当多的设备组件了! 常见集成到主板的组件包括声卡、网络卡、USB控制卡、显卡、磁盘数组卡等等。 你可以在主板上面发现很多方形的芯片,那通常是一些个别的设备芯片喔。 由于主板已经集成了很多常用的功能芯片,所以现在的主板上面所安插的PCI适配器就少很多了!

主板

主板可以说是整部主机相当重要的一个部分,因为上面我们所谈到的所有组件都是安插在主板上面的呢! 而主板上面负责沟通各个组件的就是芯片组,如同图2.1.1、Intel芯片组图标所示, 图中我们也可以发现芯片组一般分为北桥与南桥喔!北桥负责CPU/RAM/VGA等的连接,南桥则负责PCI接口与速度较慢的I/O设备。

由于芯片组负责所有设备的沟通,所以事实上芯片组(尤其是北桥)也是一个可能会散发出高热量的组件。 因此在主板上面常会发现一些外置的小风扇或者是散热片在这组芯片上面。在本章所附的主板图标中, 技嘉使用较高散热能力的热导管技术,因此你可以发现图中的南桥与北桥上面覆盖着黄铜色的散热片, 且连接着数根圆形导管,主要就是为了要散热的。

  • 芯片组功能

所有的芯片组几乎都是参考CPU的能力去规划的,而CPU能够接受的主内存规格也不相同,因此在新购买或升级主机时,CPU、主板、主内存与相关的周边设备都需要同时考虑才行 !此外,每一种芯片组的功能可能都不太相同, 有的芯片组强调的是全功能,因此连显卡、音效、网络等都集成了,在这样的集成型芯片中, 你几乎只要购买CPU、主板、主内存再加上硬盘,就能够组装成一部主机了。不过集成型芯片的性能通常比较弱, 对于爱玩3D游戏的玩家以及强调高性能计算的主机来说,就不是这么适合了。

至于独立型芯片组虽然可能具有较高的性能,不过你可能必须要额外负担周边设备的CoCo呢! 例如显卡、网络卡、声卡等等。但独立型芯片组也有一定程度的好处,那就是你可以随时抽换周边设备。

  • 设备I/O地址与IRQ中断信道

主板是负责各个电脑组件之间的沟通,但是电脑组件实在太多了,有输出/输入/不同的保存设备等等, 主板芯片组怎么知道如何负责沟通呐?这个时候就需要用到所谓的I/O地址与IRQ啰!

I/O地址有点类似每个设备的门牌号码,每个设备都有他自己的地址,一般来说,不能有两个设备使用同一个I/O地址, 否则系统就会不晓得该如何运作这两个设备了。而除了I/O地址之外,还有个IRQ中断(Interrupt)这个咚咚。

如果I/O地址想成是各设备的门牌号码的话,那么IRQ就可以想成是各个门牌连接到邮件中心(CPU)的专门路径啰! 各设备可以通过IRQ中断信道来告知CPU该设备的工作情况,以方便CPU进行工作分配的任务。 老式的主板芯片组IRQ只有15个,如果你的周边接口太多时可能就会不够用, 这个时候你可以选择将一些没有用到的周边接口关掉,以空出一些IRQ来给真正需要使用的接口喔! 当然,也有所谓的sharing IRQ的技术就是了!

  • CMOS与BIOS

前面内存的地方我们有提过CMOS与BIOS的功能,在这里我们再来强调一下: CMOS主要的功能为记录主板上面的重要参数, 包括系统时间、CPU电压与频率、各项设备的I/O地址与IRQ等,由于这些数据的记录要花费电力,因此主板上面才有电池。 BIOS为写入到主板上某一块 flash 或 EEPROM 的程序,他可以在开机的时候运行,以加载CMOS当中的参数, 并尝试调用保存设备中的开机程序,进一步进入操作系统当中。BIOS程序也可以修改CMOS中的数据, 每种主板调用BIOS设置程序的按键都不同,一般台式机常见的是使用[del]按键进入BIOS设置画面。

  • 连接周边设备的接口

主板与各项输出/输入设备的链接主要都是在主机机壳的后方,主要有:

  • PS/2接口:这是常见的键盘与鼠标的接口,不过渐渐有被USB接口取代的趋势;
  • USB接口:目前相当流行的一个接口,支持随插即用。 主流的USB版本为USB 2.0,这个规格的速度可达480Mbps,相对之下的USB 1.1仅达12Mbps差异很大,购买周边设备要注意啊! 不然copy一些数据到USB硬盘时,会吐血....
  • 声音输出、输入与麦克风:这个是一些圆形的插孔, 而必须你的主板上面有内置音效芯片时,才会有这三个东西;
  • RJ-45网络头:如果有内置网络芯片的话,那么就会有这种接头出现。 这种接头有点类似电话接头,不过内部有八蕊线喔!接上网络线后在这个接头上会有灯号亮起才对!
  • 其他过时接口:包括早期的用来链接鼠标的九针串口(com1),以及链接打印机的25针并列端口(LPT1)等等。

我们以技嘉主板的链接接口来看的话,主要有这些:

连接周边接口
图2.6.1、连接周边接口

电源供应器

除了上面这些组件之外,其实还有一个很重要的组件也要来谈一谈,那就是电源供应器(Power)。 在你的机壳内,有个大大的铁盒子,上头有很多电源线会跑出来,那就是电源供应器了。 我们的CPU/RAM/主板/硬盘等等都需要用电,而近来的电脑组件耗电量越来越高,以前很古早的230W电源已经不够用了, 有的系统甚至得要有500W以上的电源才能够运作~真可怕~

电源供应器的价差非常大!贵一点的300W可以到4000 NT,便宜一点的300W只要500 NT不到! 怎么差这么多?没错~因为Power的用料不同,电源供应的稳定度也会差很多。如前所述,电源供应器相当于你的心脏, 心脏差的话,活动力就会不足了!所以, 稳定度差的电源供应器甚至是造成电脑不稳定的元凶呢!所以,尽量不要使用太差的电源供应器喔!

  • 能源转换率

电源供应器本身也会吃掉一部份的电力的!如果你的主机系统需要 300W 的电力时,因为电源供应器本身也会消耗掉一部份的电力, 因此你最好要挑选400W以上的电源供应器。电源供应器出厂前会有一些测试数据,最好挑选高转换率的电源供应器。 所谓的高转换率指的是『输出的功率/输入的功率』。意思是说,假如你的主板用电量为250W, 但是电源供应器其实已经使用掉320W的电力,则转换率为:250/320=0.78的意思。 这个数值越高表示被电源供应器『玩掉』的电力越少,那就符合能源效益了!^_^

  • 连接接口

目前主板与电源供应器的连接接口主要有20pin与24pin两种规格,购买时也需要考虑你的主板所需要的规格喔!

选购须知

在购买主机时应该需要进行整体的考量,很难依照某一项标准来选购的。 老实说,如果你的公司需要一部服务器的话,建议不要自行组装,买品牌电脑的服务器比较好! 这是因为自行组装的电脑虽然比较便宜,但是每项设备之间的适合性是否完美则有待自行检测。

另外,在性能方面并非仅考量CPU的能力而已,速度的快慢与『整体系统的最慢的那个设备有关!』,如果你是使用最快速的Intel Core 2 Duo,使用最快的DDR II内存, 但是配上一个慢慢的过时显卡,那么整体的3D速度性能将会卡在那个显卡上面喔!所以,在购买整套系统时, 请特别留意需要全部的接口都考虑进去喔!尤其是当您想要升级时,要特别注意这个问题, 并非所有的旧的设备都适合继续使用的。

  • 系统不稳定的可能原因

除此之外,到底那个组件特别容易造成系统的不稳定呢?有几个常见的系统不稳定的状态是:

  • 系统超频:这个行为很不好!不要这么做!

  • 电源供应器不稳: 这也是个很严重的问题,当您测试完所有的组件都没有啥大问题时,记得测试一下电源供应器的稳定度!

  • 内存无法负荷:现在的内存品质差很多,差一点的内存,可能会造成您的主机在忙碌的工作时, 产生不稳定或当机的现象喔!

  • 系统过热:『热』是造成电子零件运作不良的主因之一,如果您的主机在夏天容易当机, 冬天却还好,那么考虑一下加几个风扇吧!有助于机壳内的散热,系统会比较稳定喔! 『 这个问题也是很常见的系统当机的元凶!』(鸟哥之前的一台服务器老是容易当机, 后来拆开机壳研究后才发现原来是北桥上面的小风扇坏掉了,导致北桥温度太高。后来换掉风扇就稳定多了。)
Tips 鸟哥 事实上,要了解每个硬件的详细架构与构造是很难的!这里鸟哥仅是列出一些比较基本的概念而已。 另外,要知道某个硬件的制造商是哪间公司时,可以看该硬件上面的信息。 举例来说,主板上面都会列出这个主板的开发商与主板的型号,知道这两个信息就可以找到驱动程序了。 另外,显卡上面有个小小的芯片,上面也会列出显卡厂商与芯片信息喔。

数据表示方式

事实上我们的电脑只认识0与1,记录的数据也是只能记录0与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转成二进位来测试一下好了:

二进位转十进位
图3.1.1、十进位转二进位的方法

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

文本编码系统

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

编码表
图3.2.1、数据参考编码表的示意图

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

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

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

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

软件程序运作

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

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

机器程序与编译程序

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

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

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

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

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

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

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

编译器
图4.1.1、编译器的角色

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

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

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

操作系统

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

  • 操作系统内核(Kernel)

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

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

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

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

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

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

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

操作系统的角色
图4.2.1、操作系统的角色

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

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

Tips 鸟哥 在定义上,只要能够让电脑硬件正确无误的运作,那就算是操作系统了。所以说, 操作系统其实就是内核与其提供的接口工具,不过就如同上面讲的,因为最阳春的内核缺乏了与用户沟通的亲和接口, 所以在目前,一般我们提到的『操作系统』都会包含内核与相关的用户应用软件呢!

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

  • 操作系统的内核层直接参考硬件规格写成, 所以同一个操作系统程序不能够在不一样的硬件架构下运作。举例来说,个人电脑版的Windows XP不能直接在RISC架构的电脑下运作。 所以您知道为何Windows XP又分为32比特及64比特的版本了吧?因为32/64比特的CPU指令集不太相同, 所以当然要设计不同的操作系统版本了。

  • 操作系统只是在管理整个硬件资源,包括CPU、内存、输入输出设备及文件系统档。 如果没有其他的应用程序辅助,操作系统只能让电脑主机准备妥当(Ready)而已!并无法运作其他功能。 所以你现在知道为何Windows XP上面要达成网页图像的运作还需要类似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之后进行驱动程序的安装啊!
  • 操作系统与驱动程序

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

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

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

  • 操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;
  • 一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序;
  • 要使用新硬件功能,必须要安装厂商提供的驱动程序才行;
  • 驱动程序是由厂商提供的,与操作系统开发者无关。

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

应用程序

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

需要注意的是,应用程序是与操作系统有关系的,如同上面的图标当中的说明喔。因此,如果你想要购买新软件, 请务必参考软件上面的说明,看看该软件是否能够支持你的操作系统啊!举例来说,如果你想要购买在线游戏光盘, 务必参考一下该光盘是否支持你的操作系统,例如是否支持Windows XP/Windows Vista/MAC/Linux等等。 不要购买了才发现该软件无法安装在你的操作系统上喔!

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

  • Windows XP是一套操作系统,他必须先安装到个人电脑上面,否则电脑无法开机运作;
  • Windows 98与Windows XP是两套不同的操作系统,所以能在Win 98上安装的软件不见得可在WinXP上安装;
  • Windows XP安装好后,就只能拥有很少的功能,并没有办公室软件;
  • Office 2007是一套应用程序,要安装前必须要了解他能在哪些操作系统上面运作。

重点回顾

  • 计算机的定义为:『接受用户输入指令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或保存成有用的信息』;
  • 电脑的五大单元包括:输入单元、 输出单元、CPU内部的控制单元、算数逻辑单元与主内存五大部分;
  • 数据会流进/流出内存是CPU所发布的控制命令,而CPU实际要处理的数据则完全来自于主内存;
  • CPU依设计理念主要分为:精简指令集(RISC)与复杂指令集(CISC)系统;
  • 关于CPU的时脉部分:外频指的是CPU与外部组件进行数据传输时的速度,倍频则是CPU内部用来加速工作性能的一个倍数, 两者相乘才是CPU的时脉速度;
  • 一般主板芯片组有分北桥与南桥,北桥的总线称为系统总线,因为是内存传输的主要信道,所以速度较快。 南桥就是所谓的输入输出(I/O)总线,主要在联系硬盘、USB、网络卡等周边设备;
  • 北桥所支持的频率我们称为前端总线速度(Front Side Bus, FSB),而每次发送的比特数则是总线宽度。
  • CPU每次能够处理的数据量称为字组大小(word size),字组大小依据CPU的设计而有32比特与64比特。 我们现在所称的电脑是32或64比特主要是依据这个 CPU解析的字组大小而来的!
  • 个人电脑的主内存主要组件为动态随机访问内存(Dynamic Random Access Memory, DRAM), 至于CPU内部的第二层缓存则使用静态随机访问内存(Static Random Access Memory, SRAM);
  • BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中, 这个内存芯片在没有通电时也能够将数据记录下来,那就是唯读内存(Read Only Memory, ROM);
  • 显卡的规格有PCI/AGP/PCIe,目前的主流为PCIe接口;
  • 硬盘的组成为:圆形磁盘盘、机械手臂、 磁盘读取头与主轴马达所组成的,其中磁盘盘的组成为磁区、磁道与磁柱;
  • 操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。
  • 电脑主要以二进位作为单位,常用的磁盘容量单位为bytes,其单位换算为1 Byte = 8bits。
  • 最阳春的操作系统仅在驱动与管理硬件,而要使用硬件时,就得需要通过应用软件或者是壳程序(shell)的功能, 来调用操作系统操纵硬件工作。目前称为操作系统的,除了上述功能外,通常已经包含了日常工作所需要的应用软件在内了。

本章习题

  • 动动手实作题:假设你不知道你的主机内部的各项组件数据,请拆开你的主机机壳,并将内部所有的组件拆开,并且依串行出:
    • CPU的厂牌、型号、最高时脉;
    • 主内存的容量、接口 (DDR/DDR II等);
    • 显卡的接口 (AGP/PCIe/内置) 与容量
    • 主板的厂牌、南北桥的芯片型号、BIOS的厂牌、有无内置的网卡或声卡等
    • 硬盘的连接接口 (IDE/SATA等)、硬盘容量、转速、缓冲内存容量等。
    然后再将他组装回去。注意,拆装前务必先取得你主板的说明书,因此你可能必须要上网查找上述的各项数据。

  • 利用软件:假设你不想要拆开主机机壳,但想了解你的主机内部各组件的信息时,该如何是好? 如果使用的是Windows操作系统,可使用CPU-Z(http://www.cpuid.com/cpuz.php)这套软件,如果是Linux环境下,可以使用『cat /proc/cpuinfo』 及使用『lspci』来查阅各项组件的型号;

  • 依据文末的延伸阅读链接,自行搜索出 BIOS 的主要任务,以及目前在个人电脑上面常见的 BIOS 制造商有哪几家?

参考数据与延伸阅读

修改历史:
  • 2008/07/22:利用暑假期间足足写了快要两个星期这篇才写完!好多图标都不知道如何呈现比较漂亮~@_@
  • 2008/07/29:又加入了SATA/IDE的连接排线,还有一些额外的图标。
  • 2009/08/03:加入电源供应器是心脏一词的说明
  • 2009/08/03:更正原本 BIOS 只放于 ROM 的数据,新的 BIOS 通常放于 EEPROM 或 Flash 内存中。
  • 2010/10/19:感谢讨论区网友 186003415a 兄的回报,发现 DDR II 的外频写错了!是 200MHz 才对喔!
其他链接
环境工程模式篇
鸟园讨论区
鸟哥旧站

今日 人数统计
昨日 人数统计
本月 人数统计
上月 人数统计