鸟哥的Linux私房菜读书笔记:计算机概论

文章介绍了电脑硬件的基本组成,包括CPU、内存、硬盘、主板等,并详细讲解了它们各自的作用和工作原理。此外,讨论了操作系统的角色,特别是其核心功能,如系统调用、进程管理、内存管理和文件系统管理。文章还提到了驱动程序和应用程序与操作系统的关联,以及各种硬件接口和数据编码系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们接触Linux之前,首先我们得清楚它的运作场景

最底层的,肯定离不开我们的电脑,以台式机来说, 电脑的机箱里面含有什么元件? 不同的电脑可以应用在哪些工作? 你生活周遭有哪些电器用品内部是含有电脑相关元件的? 下面我们就来谈一谈这些东西

计算机其实就是:接受使用者二输入指令与数据,经由中央处理器的数学与逻辑单元运算处理之后,来产生或者储存成有用的信息,因此,只要有输入设备,以及输出设备,让你可以输入数据使该机器产生信息的,那就是一部计算机

那么根据这个定义,我们就可以知道生活中的哪些东西是计算机了,比如加减乘除的计算器,打电话用的手机,开车用的卫星定位系统,提款用的提款机,上课用的笔记本

计算机硬件的五大单元

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

输入单元: 包括键盘、 鼠标、 读卡机、 扫描仪、 手写板、 触摸屏等等一堆;

主机部分: 这个就是系统单元, 被主机机箱保护住了, 里面含有一堆板子、 CPU 与内存等;

输出单元: 例如屏幕、 打印机等等

而重点在于CPU,CPU又可以分为两部分:算术逻辑单元与控制单元.其中算术逻辑单元主要负责程序运算与逻辑判断,控制单元则主要再协调各个周边元件与各单元间的工作

既然CPU的重点是在进行运算与判断,那么要被运算与判断二点数据是从哪里来的呢,CPU读取数据都是从内存过来的

而内存内的数据则是从输入单元所传输进来的,而CPU处理完毕的数据也必须要先写回内存中,最后数据才从内存传输到输出单元

为什么我们都会说, 要加快系统性能, 通常将内存容量加大就可以获得相当好的成效?

如同下图以及上面的说明, 因为所有的数据都要经过内存的传输, 所以内存的容量如果太小, 数据高速缓存就不足~影响性能相当大! 尤其针对 Linux 作为服务器的环境下!

上面图示中的“系统单元”其实指的就是电脑机箱内的主要元件, 而重点在于 CPU 与内存。 特别要看的是实线部分的传输方向, 基本上数据都是流经过内存再转出去的! 至于数据会流进/流出内存则是 CPU 所发布的控制命令! 而 CPU 实际要处理的数据则完全来自于内存 ( 不管是程序还是一般文件数据) ! 这是个很重要的概念! 这也是为什么当你的内存不足时, 系统的性能就很糟糕! 也是为什么现在人们买智能手机时, 对于可用内存的要求都很高的原因

CPU的架构

就像前面所说的,CPU其实内部已经含有了一些微指令,我们所使用的软件都要经过CPU内部的微指令集来达成.

那么这些指令集的设计主要分为两种设计理念,分别为:精简指令集(RISC)与复杂指令集(CISC)系统.

精简指令集 Reduced Instruction Set Computer, RISC

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

Architecture ( 包括 PowerPC) 系列、 与安谋公司 ( ARM Holdings) 的 ARM CPU 系列等。

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

复杂指令集 Complex Instruction Set Computer, CISC

与精简指令集不同,CISC在微指令集的每个小指令可以执行一些较低阶的硬件操作,指令很多很复杂,每条指令的长度都不相等.

因为指令较为复杂,所以每条指令花费的时间较长,但是每条个别指令可以处理的工作较为丰富.常见得分CISC为指令集CPU主要有AMD.Intel

因为这些厂商开发出来的x86架构CPU被大量使用于个人电脑上面,所以个人电脑也常常被成为x86架构的电脑,

那么为甚麽叫x86呢?

这是因为最早的Intel发展出来的CPU代号成为8086,后来;依次架构又开发出80286,80386...,因此这种架构的CPU就被称为x86架构了

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

所谓的位指的是CPU一次数据读取的最大量! 64位CPU代表CPU一次可以读写64bits这
么多的数据, 32位CPU则是CPU一次只能读取32位的意思。 因为CPU读取数据量有限制, 因此能够从内存中读写的数据也就有所限制。 所以, 一般32位的CPU所能读写的最大数据量,大概就是4GB左右。

不同的x86架构的CPU之间有什么差异呢?

除了CPU的整体结构不同之外,主要是在于微指令集的不同,新的x86的CPU大多含有很先进的微指令集, 这些微指令集可以加速多媒体程序的运行, 也能够加强虚拟化的性能, 而且某些微指令集更能够增加能源效率, 让CPU耗电量降低.由于电费越来越高, 购买电脑时,除了整体的性能之外, 节能省电的CPU特色也可以考虑.

  • CPU=脑袋瓜子: 每个人会作的事情都不一样( 微指令集的差异) , 但主要都是通过脑袋瓜子来进行判断与控制身体各部分的活动;
  • 内存=脑袋中放置正在被思考的数据的区块: 在实际活动过程中, 我们的脑袋瓜子需要有外界刺激的数据 ( 例如光线、 环境、 语言等) 来分析, 那这些互动数据暂时存放的地方就是内存, 主要是用来提供给脑袋瓜子判断用的信息。
  • 硬盘=脑袋中放置回忆的记忆区块: 跟刚刚的内存不同, 内存是提供脑袋目前要思考与处理的信息, 但是有些生活琐事或其他没有要立刻处理的事情, 就当成回忆先放置到脑袋的记忆深处吧! 那就是硬盘! 主要目的是将重要的数据记录起来, 以便未来将这些重要的经验再次的使用;
  • 主板=神经系统: 好像人类的神经一样, 将所有重要的元件连接起来, 包括手脚的活动都是脑袋瓜子发布命令后, 通过神经( 主板) 传导给手脚来进行活动啊!
    各项周边设备=人体与外界沟通的手、 脚、 皮肤、 眼睛等: 就好像手脚一般, 是人体与外界互动的重要关键!
  • 显卡=脑袋中的影像: 将来自眼睛的刺激转成影像后在脑袋中呈现, 所以显卡所产生的数据来源也是CPU控制的。
  • 电源供应器 ( Power) =心脏: 所有的元件要能运行得要有足够的电力供给才行! 这电力供给就好像心脏一样, 如果心脏不够力, 那么全身也就无法动弹的! 心脏不稳定呢? 那你的身体当然可能断断续续的~不稳定!

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

电脑对数据的判断主要依据有没有通电来记录信息, 所以理论上对于每一个纪录单位而言,它只认识 0 与 1 而已。 0/1 这个二进制的的单位我们称为 bit。 但 bit 实在太小了, 所以在储存数据时每份简单的数据都会使用到 8 个 bits 的大小来记录, 因此定义出 Byte 这个单位, 他们的关系为:

1 Byte = 8 bits

一般来说, 文件大小使用的是二进制的方式, 所以 1GBytes 的文件大小实际上为:

1024x1024x1024Bytes 这么大! 速度单位则常使用十进制, 例如 1GHz 就是1000x1000x1000Hz 的意思。

CPU的运算速度常使用 MHz 或者是 GHz 之类的单位, 这个 Hz 其实就是秒分之一。 而在网络传输方面, 由于网络使用的是 bit 为单位, 因此网络常使用的单位为 Mbps 是 Mbits persecond, 亦即是每秒多少 Mbit。 举例来说, 大家常听到的 20M/5M 光世代传输速度, 如果转成文件大小的 Byte 时, 其实理论最大传输值为: 每秒 2.5MByte/ 每秒625KByte的下载/上传速度喔!

个人电脑架构与相关设备元件

一般消费者常说的电脑通常指的就是x86的个人电脑架构, 因此我们有必要来了解一下这个架构的各个元件。 事实上, Linux最早在发展的时候, 就是依据个人电脑的架构来发展的, 所以真的得要了解一下呢! 另外, 早期两大主流x86开发商( Intel, AMD) 的CPU架构与设计理念都有些许差异。 不过互相学习对方长处的结果, 就是两者间的架构已经比较类似了。 由于目前市场占有率还是以 Intel 为大宗,

由于主板是链接各元件的一个重要项目, 因此在主板上面沟通各部元件的芯片组设计优劣,
就会影响性能不少喔! 早期的芯片组通常分为两个桥接器来控制各元件的沟通, 分别是:
( 1) 北桥: 负责链接速度较快的CPU、 内存与显卡接口等元件; ( 2) 南桥: 负责连接速度较慢的设备接口, 包括硬盘、 USB、 网卡等等。 ( 芯片组的南北桥与三国的大小乔没有关系

@_@) 。 不过由于北桥最重要的就是 CPU 与内存之间的桥接, 因此目前的主流架构中, 大多将北桥内存控制器整合到 CPU 封装当中了。 所以上图你只会看到 CPU 而没有看到以往的北桥芯片喔!

早期芯片组分南北桥, 北桥可以连接 CPU、 内存与显卡。 只是 CPU 要读写到内存的动作, 还需要北桥的支持, 也就是 CPU 与内存的交流, 会瓜分掉北桥的总可用带宽, 真浪费! 因此目前将内存控制器整合到 CPU 后, CPU与内存之间的沟通是直接交流, 速度较快之外, 也不会消耗更多的带宽!

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

注意, 不同的CPU之间不能单纯的以频率来判断运算性能喔! 这是因为每颗CPU的微指令集不相同, 架构也不见得一样, 可使用的第二层高速缓存及其计算机制可能也不同, 加上每次频率能够进行的工作指令数也不同! 所以, 频率目前仅能用来比较同款CPU的速度!

外频与倍频

早期的 CPU 架构主要通过北桥来链接系统最重要的 CPU、 内存与显卡设备。 因为所有的设备都得通过北桥来链接, 因此每个设备的工作频率应该要相同。 于是就有所谓的前端总线( FSB) 这个东西的产生。 但因为 CPU 的运算速度比其他的设备都要来的快, 又为了要满足FSB 的频率, 因此厂商就在 CPU 内部再进行加速, 于是就有所谓的外频与倍频了。
总结来说, 在早期的 CPU 设计中, 所谓的外频指的是CPU与外部元件进行数据传输时的速度, 倍频则是 CPU 内部用来加速工作性能的一个倍数, 两者相乘才是CPU的频率速度。 例如 Intel Core 2 E8400 的内频为 3.0GHz, 而外频是333MHz, 因此倍频就是9倍啰!( 3.0G=333Mx9, 其中1G=1000M)

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

但如此一来所有的数据都被北桥卡死了, 北桥又不可能比 CPU 更快, 因此这家伙常常是系统性能的瓶颈。 为了解决这个问题, 新的 CPU 设计中, 已经将内存控制器整合到 CPU 内部,而链接 CPU 与内存、 显卡的控制器的设计, 在Intel部份使用 QPI ( Quick PathInterconnect) 与 DMI 技术, 而 AMD 部份则使用 Hyper Transport 了, 这些技术都可以让CPU 直接与内存、 显卡等设备分别进行沟通, 而不需要通过外部的链接芯片了

现在 Intel 的 CPU 会主动帮你超频喔! 例如 i7-4790 这颗 CPU 的规格 [10] 中, 基本频率为 3.6GHz, 但是最高可自动超频到 4GHz 喔! 通过的是 Intel 的 turbo 技术。 同时, 如果你没有大量的运算需求, 该 CPU 频率会降到 1.xGHz 而已, 借此达到节能省电的目的! 所以, 各位好朋友, 不需要自己手动超频了! Intel 已经自动帮你进行超频了...所以, 如果你用cpu-z 观察 CPU 频率, 发现该频率会一直自动变动, 很正常! 你的系统没坏掉!

内存

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

前面提到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的型号与频率及带宽之间的关系。

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

只读存储器( ROM)

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

显卡

卡插槽如同图 0.2.2、 华硕主板示意图所示, 在中左方有个 PCIe 3.0 的项目, 这张主板中提供了两个显卡插槽喔!
显卡又称为VGA( Video Graphics Array) , 他对于图形影像的显示扮演相当关键角色。 一般对于图形影像的显示重点在于分辨率与色彩深度, 因为每个图像显示的颜色会占用掉内存, 因此显卡上面会有一个内存的容量, 这个显存容量将会影响到你的屏幕分辨率与色彩深度的喔!

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

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


比较特殊的是, PCIe( PCI-Express) 使用的是类似管线的概念来处理, 在 PCIe 第一版( PCIe 1.0) 中, 每条管线可以具有250MBytes/s的带宽性能, 管线越多( 通常设计到 x16管线) 则总带宽越高! 另外, 为了提升更多的带宽, 因此 PCIe 还有进阶版本, 目前主要的版本为第三版, 相关的带宽如下:

 

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

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

除了显卡与主板的连接接口需要知道外, 那么显卡是通过什么格式与电脑屏幕 ( 或电视) 连接的呢? 目前主要的连接接口有:

硬盘与储存设备

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

硬盘的物理组成

 

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

由于盘片是圆的, 并且通过机器手臂去读写数据, 盘片要转动才能够让机器手臂读写。 因此, 通常数据写入当然就是以圆圈转圈的方式读写啰! 所以, 当初设计就是在类似盘片同心圆上面切出一个一个的小区块, 这些小区块整合成一个圆形, 让机器手臂上的磁头去存取。这个小区块就是磁盘的最小物理储存单位, 称之为扇区 ( sector) , 那同一个同心圆的扇区组合成的圆就是所谓的磁道( track) 。 由于磁盘里面可能会有多个盘片, 因此在所有盘片上面的同一个磁道可以组合成所谓的柱面 ( cylinder)

我们知道同心圆外圈的圆比较大, 占用的面积比内圈多啊! 所以, 为了善用这些空间, 因此外围的圆会具有更多的扇区[16]! 就如同图 0.2.5 的示意一般。 此外, 当盘片转一圈时, 外圈的扇区数量比较多, 因此如果数据写入在外圈, 转一圈能够读写的数据量当然比内圈还要多! 因此通常数据的读写会由外圈开始往内写的喔! 这是默认值啊!

传统硬盘有个很致命的问题, 就是需要驱动马达去转动盘片~这会造成很严重的磁盘读取延迟! 想想看, 你得要知道数据在哪个扇区上面, 然后再命令马达开始转, 之后再让磁头去读取正确的数据。 另外, 如果数据放置的比较离散( 扇区分佈比较广又不连续) , 那么读写的速度就会延迟更明显! 速度快不起来。 因此, 后来就有厂商拿闪存去制作成大容量的设备,这些设备的连接接口也是通过 SATA 或 SAS, 而且外型还做的跟传统磁盘一样! 所以, 虽然这类的设备已经不能称为是磁盘 ( 因为没有磁头与盘片啊! 都是内存! ) 。 但是为了方便大家称呼, 所以还是称为磁盘! 只是跟传统磁盘 ( Hard Disk Drive, HDD) 不同, 就称为固态硬盘 ( Solid State Disk 或 Solid State Driver, SSD)

固态硬盘最大的好处是, 它没有马达不需要转动, 而是通过内存直接读写的特性, 因此除了没数据延迟且快速之外, 还很省电! 不过早期的 SSD 有个很重要的致命伤, 就是这些闪存有“写入次数的限制”, 因此通常 SSD 的寿命大概两年就顶天了! 所以数据存放时, 需要考虑到备份或者是可能要使用 RAID 的机制来防止 SSD 的损毁
 

其实我们在读写磁盘时, 通常没有连续读写, 大部分的情况下都是读写一大堆小文件, 因此, 你不要妄想传统磁盘一直转很少圈就可以读到所有的数据! 通常很多小文件的读写, 会很耗硬盘, 因为盘片要转好多圈! 这也很花人类的时间啊! SSD 就没有这个问题! 也因为如此, 近年来在测试磁盘的性能时, 有个很特殊的单位, 称为每秒读写操作次数( Input/Output Operations Per Second, IOPS) ! 这个数值越大, 代表可操作次数较高, 当然性能好的很!

  • 缓冲内存 硬盘上头含有一个缓冲内存, 这个内存主要可以将硬盘内常使用的数据高速缓存起来, 以加速系统的读取性能。 通常这个缓冲内存越大越好, 因为缓冲内存的速度要比数据从硬盘盘中被找出来要快的多了! 目前主流的产品可达64MB左右的内存大小喔。
  • 转速 因为硬盘主要是利用主轴马达转动盘片来存取, 因此转速的快慢会影响到性能。 主流的台式机硬盘为每分钟7200转, 笔记本电脑则是5400转。 有的厂商也有推出高达10000转的硬盘, 若有高性能的数据存取需求, 可以考虑购买高转速硬盘。
  • 运行须知 由于硬盘内部机械手臂上的磁头与硬盘盘的接触是很细微的空间, 如果有抖动或者是脏污在磁头与硬盘盘之间就会造成数据的损毁或者是实体硬盘整个损毁~ 因此,正确的使用电脑的方式, 应该是在电脑通电之后, 就绝对不要移动主机, 并免抖动到硬盘, 而导致整个硬盘数据发生问题啊! 另外, 也不要随便将插头拔掉就以为是顺利关机! 因为机械手臂必须要归回原位, 所以使用操作系统的正常关机方式, 才能够有比较好的硬盘保养啊! 因为他会让硬盘的机械手臂归回原位啊!
  • 可能因为环境的关系, 电脑内部的风扇常常会卡灰尘而造成一些声响。 很多朋友只要听到这种声响都是二话不说的 “用力拍几下机箱”就没有声音了~现在你知道了, 这么做的后果常常就是你的硬盘容易坏掉! 下次千万不要再这样做啰

电源供应器

除了上面这些元件之外, 其实还有一个很重要的元件也要来谈一谈, 那就是电源供应器

( Power) 。 在你的机箱内, 有个大大的铁盒子, 上头有很多电源线会跑出来, 那就是电源供应器了。 我们的CPU/RAM/主板/硬盘等等都需要用电, 而近来的电脑元件耗电量越来越高, 以前很古早的230W电源已经不够用了, 有的系统甚至得要有500W以上的电源才能够运行

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

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

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

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

例题: 你的系统使用 i7 的 4790 CPU, 使用了 DDR3-1600 内存, 使用了 PCIe 2.0 x8 的磁盘阵列卡, 这张卡上面安装了 8 颗 3TB 的理论速度可达 200MByte/s 的硬盘 ( 假设为可加总速度的 RAID0 配置) , 是安插在 CPU 控制芯片相连的插槽中。 网络使用 giga 网卡, 安插在PCIe 2.0 x1 的接口上。
在这样的设备中, 上述的哪个环节速度可能是你的瓶颈? 答:

通过上述分析, 我们知道, 速度最慢的为网络的 125MBytes/s ! 所以, 如果想要让整体性能提升, 网络恐怕就是需要克服的一环!

系统不稳定的可能原因

  • 系统超频: 这个行为很不好! 不要这么做!
  • 电源供应器不稳: 这也是个很严重的问题, 当您测试完所有的元件都没有啥大问题时,记得测试一下电源供应器的稳定性
  • 内存无法负荷: 现在的内存品质差很多, 差一点的内存, 可能会造成您的主机在忙碌的工作时, 产生不稳定或死机的现象喔!
  • 系统过热: “热”是造成电子零件运行不良的主因之一, 如果您的主机在夏天容易死机,冬天却还好, 那么考虑一下加几个风扇吧! 有助于机箱内的散热, 系统会比较稳定喔! “这个问题也是很常见的系统死机的元凶! ”

事实上, 要了解每个硬件的详细架构与构造是很难的! 这里鸟哥仅是列出一些比较基本
的概念而已。 另外, 要知道某个硬件的制造商是哪间公司时, 可以看该硬件上面的信息。 举例来说, 主板上面都会列出这个主板的开发商与主板的型号, 知道这两个信息就可以找到驱动程序了。 另外, 显卡上面有个小小的芯片, 上面也会列出显卡厂商与芯片信息喔。

数据表示方式

事实上我们的电脑只认识0与1, 记录的数据也是只能记录0与1而已, 所以电脑常用的数据是二进制的。 但是我们人类常用的数值运算是十进制, 文字方面则有非常多的语言, 那么电脑如何记录与显示这些数值/文字呢? 就得要通过一系列的转换才可以啦! 下面我们就来谈谈数值与文字的编码系统

数字系统

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

文字编码系统

既然电脑都只有记录0/1而已, 甚至记录的数据都是使用Byte/bit等单位来记录的, 那么文字该如何记录啊? 事实上文字文件也是被记录为0与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等等。 机器语言与高阶程序语言的差别如下所示:
 


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

为了要克服硬件方面老是需要重复撰写控制码的问题, 所以就有操作系统( Operating

System, OS) 的出现了!

操作系统

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

操作系统核心(Kernel)

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

上述的功能就是操作系统的核心( Kernel) 了! 你的电脑能不能做到某些事情, 都与核心有关! 只有核心有提供的功能, 你的电脑系统才能帮你完成! 举例来说, 你的核心并不支持TCP/IP的网络协定, 那么无论你购买了什么样的网卡, 这个核心都无法提供网络能力的!
但是单有核心我们使用者也不知道能作啥事的~因为核心主要在管控硬件与提供相关的能力( 例如存取硬盘、 网络功能、 CPU资源取得等) , 这些管理的动作是非常的重要的, 如果使用者能够直接使用到核心的话, 万一使用者不小心将核心程序停止或破坏, 将会导致整个系统的崩溃! 因此核心程序所放置到内存当中的区块是受保护的! 并且开机后就一直常驻在内存当中
所以整部系统只有核心的话, 我们就只能看着已经准备好运行( Ready) 的电脑系统,
但无法操作他! 好像有点望梅止渴的那种感觉啦! 这个时候就需要软件的帮忙了!

系统调用

既然我的硬件都是由核心管理, 那么如果我想要开发软件的话, 自然就得要去参考这个核心的相关功能! 唔! 如此一来不是从原本的参考硬件函数变成参考核心功能, 还是很麻烦啊!
有没有更简单的方法啊!
为了解决这个问题, 操作系统通常会提供一整组的开发接口给工程师来开发软件! 工程师只要遵守该开发接口那就很容易开发软件了!

举例来说, 我们学习C程序语言只要参考C程序语言的函数即可, 不需要再去考虑其他核心的相关功能, 因为核心的系统调用接口会主动的将C程序语言的相关语法转成核心可以了解的任务函数, 那核心自然就能够顺利运行该程序
了!

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


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

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

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

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

  • 操作系统的核心层直接参考硬件规格写成, 所以同一个操作系统程序不能够在不一样的硬件架构下运行。 举例来说, 个人电脑版的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) 就如同上面提到的, 硬件的管理是核心的主要工作之一,当然啰, 设备的驱动程序就是核心需要做的事情啦! 好在目前都有所谓的“可载入模块”功能, 可以将驱动程序编辑成模块, 就不需要重新的编译核心啦!

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

操作系统与驱动程序

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

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

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

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

操作系统

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

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

重点回顾

  • 计算机的定义为: “接受使用者输入指令与数据, 经由中央处理器的数学与逻辑单元运算处理后, 以产生或储存成有用的信息”;
  • 电脑的五大单元包括: 输入单元、 输出单元、 控制单元、 算数逻辑单元、 存储单元五大部分。 其中CPU占有控制、 算术逻辑单元, 存储单元又包含内存与辅助内存;
  • 数据会流进/流出内存是CPU所发布的控制命令, 而CPU实际要处理的数据则完全来自于
    内存;
  • CPU依设计理念主要分为: 精简指令集( RISC) 与复杂指令集( CISC) 系统;
  • 关于CPU的频率部分: 外频指的是CPU与外部元件进行数据传输时的速度, 倍频则是
    CPU内部用来加速工作性能的一个倍数, 两者相乘才是CPU的频率速度;
  • 新的 CPU 设计中, 已经将北桥的内存控制芯片整合到 CPU 内, 而 CPU 与内存、 显卡沟通的总线通常称为系统总线。 南桥就是所谓的输入输出( I/O) 总线, 主要在联系硬盘、 USB、 网卡等周边设备;
  • 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) ;
  • 目前主流的外接卡接口大多为 PCIe 接口, 且最新为 PCIe 3.0, 单信道速度高达1GBytes/s
  • 常见的显卡连接到屏幕的接口有 HDMI/DVI/D-Sub/Display port 等等。 HDMI 可同时传送影像与声音。
  • 传统硬盘的组成为: 圆形盘片、 机械手臂、 磁头与主轴马达所组成的, 其中盘片的组成为扇区、 磁道与柱面;
  • 磁盘连接到主板的接口大多为 SATA 或 SAS, 目前台式机主流为 SATA 3.0, 理论极速可达 600MBytes/s。
  • 常见的文字编码为 ASCII, 繁体中文编码主要有 Big5 及 UTF8 两种, 目前主流为 UTF8
  • 操作系统( Operating System, OS) 其实也是一组程序, 这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件。
  • 电脑主要以二进制作为单位, 常用的磁盘容量单位为Bytes, 其单位换算为1 Byte =
    8bits。
  • 最阳春的操作系统仅在驱动与管理硬件, 而要使用硬件时, 就得需要通过应用软件或者
    是壳程序( shell) 的功能, 来调用操作系统操纵硬件工作。 目前称为操作系统的, 除了上述功能外, 通常已经包含了日常工作所需要的应用软件在内
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gremmie2003

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值