(四)0.计算机概论--自学鸟哥的Linux私房菜(基础篇)

0.2.6主机板

这个小节我们将主机板拿出来说明一下,特别要讲的就是晶片组与扩充卡之间的关系!

发挥扩充卡效能须考虑的插槽位置

如同图 0.2.1所示,其实系统上面可能会有多个 x8 的插槽,那么到底你的卡插在哪个插槽上面效能最好?我们以图来说,如果你是安插在左上方跟 CPU 直接连线的那几个插槽,那效能最佳!如果你是安插在左侧由上往下数的第五个 PCIe 2.0 x8 的插槽呢?哪个插槽是与南桥连接,所以你的扩充卡资料需要先进入南桥跟大家抢频宽,之后要转向 CPU 时,还得要透过 CPU 与南桥的沟通管道,那条管道称为 DMI 2.0

根据 Intel 方面的资料来看,DMI 2.0 的传输速度时 4GT/s,换算成档案传输量时,大约仅有 2GByte/s 的速度,要知道,PCIe 2.0 x8 的理论速度已经达到 4GBytes/s 了,但是与 CPU 的通道竟然仅有 2GB,效能的瓶颈就这样发生在 CPU 与南桥的沟通上面! 因此,卡安装在哪个插槽上面,对效能的影响也时很大的!所以插卡时,请详细阅读您主机板上面的逻辑图示(类似本章的 Intel 芯片示意图)!尤其 CPU 与南桥沟通的频宽方面,特别重要!

因为鸟哥的Linux伺服器,目前很多都需要执行一些虚拟化技术等会大量读写资料的服务,所以需要额外的磁盘阵列卡来提供资料的存放!同时得要提供 10G 网络让内部的多部伺服器互相透过网络连结。过去没有这方面的经验时,扩充卡都随意乱插,反正能动就好!但实际分析过效能之后,哇!现在都不敢随意乱插了!效能差太多!每次在选购新的系统时,也都会优先去查看晶片逻辑图~ 确认效能瓶颈不会卡在主机板上,这才下手去购买!惨痛的经验产生惨痛的$$飞走事件,所以,这里特别提出来跟大家分享的啦~~!

设置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界面取代,甚至较新的主机板可能就不再提供 PS/2 界面了;
  • USB 界面:通常只剩下 USB 2.0 与 USB 3.0,为了方便区分,USB 3.0 为蓝色的插槽颜色噢!
  • 声音输出、输入与麦克风:这个是一些圆形的插孔,而必须在你的主机板上面有内建音效芯片时,才会有这三个东西;
  • RJ-45网络头:如果有内建网络芯片的话,那么就会有这种接头出现。这种接头有点类似电话接头,不过内部有八蕊线噢!接上网线后再这个接头上会有橙灯亮起才对!
  • HDMI:如果有内建显卡芯片的话,可能就会提供这个与屏幕连接的界面了!这种界面可以同时传输声音与影像,目前也是电视机屏幕的主流连接界面噢!

我们以华硕主机板的连结界面来看的话,主要有这些:
在这里插入图片描述
图0.2.7 连接周边界面

0.2.7电源供应器

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

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

能源转化率

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

0.2.8选购须知

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

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

系统不稳定的可能原因

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

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

0.3信息表示方式

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

0.3.1数字系统

略,基础已经掌握了。

0.3.2文字编码系统

既然电脑都只有记录 0/1 而已,甚至记录得资料都是使用 byte/bit 等单位来记录的,那么文字该如何记录啊?事实上文字档案也是被记录为 0 与 1 而已,而这个档案的内容要被取出来查阅时,必须要经过一个编码系统的处理才行。所谓的【编码系统】可以想成时一个【字码对照表】,它的概念有点像底下的图示:
在这里插入图片描述
图0.3.2 资料参考编码表的示意图

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

常用的英文编码表为ASCII系统,这个系统中,每个符号(英文、数字或符号等)都会占用 1byte 的记录,因此总共会有 28=256 种变化,理论上最多可以有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 电脑上面运行的!而且机器码的修改非常困难!因为是机器码,一堆0和1组成的,不是人类能看得懂的语言啊!
  • 程序具有专一性:因为这样的程序必须要针对硬件功能函数来撰写,如果已经开发了一支浏览器程序,想要再开发档案管理程序时,还是得从头再参考硬件的功能函数来继续撰写,每天都在和【硬件】挑战!

为了解决这个问题,人们设计了一种能让人类看得懂的编程语言,然后创造一种【编译器】来将这些人类能够写的程序语言转翻译成机器能够看得懂的机器码,如此一来我们修改与撰写程序就变得容易多了!目前常见的编译器有C,C++,Java,Python等。机器语言与高级程序语言的差别如下所示:
在这里插入图片描述
图0.4.1 编译器的角色

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

举例来说,当你想要将运行的数据存入存储器,你就得要自行分配一个存储区块出来让自己的资料能够填上去所以你还得要了解到记忆体的位址是如何定位的!啊!留下了悲伤的眼泪,为什么写程序这么复杂呀!

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

操作系统核心(Kernel)

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

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

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

但是整部系统只有核心的话,我们就只能看着已经准备好运作的电脑系统,但无法操作他!这个时候就需要软件的帮忙了!

系统呼叫(System Call)

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

为了解决这个问题,操作系统通常会提供一整组的开发界面给工程师开发软件!工程师只有遵守该开发界面那就很容易开发软件了!举例来说,我们学习C语言主要参考C语言的相关语法转成核心可以了解的任务函数,那核心自然就能够顺利运作该程序了!

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

在这里插入图片描述
图0.4.2 操作系统的角色

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

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

在定义上,只要能够让电脑硬件准确无误的运行,那就算是操作系统了。所以说,操作系统其实就是核心与其提供的界面工具,不过就如同上面所述,因为最简单的核心缺乏了与使用者沟通的亲和界面,所以在目前,一般我们提到的【操作系统】都会包含核心与相关的使用者应用软件哦!

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

  • 作业系统的核心层直接参考硬件规格写成,所以同一个操作系统不能在不一样的硬件架构下运行。举例来说,个人电脑版的Windows 8.1 不能直接在 ARM 架构(手机与平板硬件)的电脑下运行。
  • 操作系统只是在管理整个硬件的资源,包括CPU、存储器、输入输出装置档案系统档。如果没有其他的应用程序辅助,操作系统也只能让电脑主机准备妥当而已!并无法运行其他功能。所以你现在知道为什么Windows上面要达成网页影像的运作还需要类似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之后进行驱动程序的安装!

操作系统与驱动程序

老实说,驱动程序可以说是操作系统里面非常重要的一环了!不过,硬件可以在持续的进步当中啊!包括主机板、显卡、硬盘等等。那么比较晚推出的较新的硬盘,例如显卡,我们的操作系统当然就不认识咯!那操作系统该如何驱动这块新的显示卡?为了克服这个问题,操作系统通常会提供一个开发界面给硬件开发商,让他们可以根据这个界面设计可以驱动他们硬件的【驱动程序】,这样一来,只要使用者安装驱动程序后,自然就可以在他们的操作系统上面驱动这块显卡了。在这里插入图片描述
图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 是一套应用程序,要安装前必须要了解它能在哪些操作系统上运行。

猜你喜欢

转载自blog.csdn.net/qq_33141353/article/details/88899216