硬件---计算机概论

电脑硬件的五大单元

  • 输入单元:包括键盘、鼠标、卡片阅读机、扫描仪、手写板、触控屏幕等等一堆;
  • 主机部分(控制单元、算数逻辑单元与主存储器):这个就是系统单元,被主机机壳保护住了,里面含有一堆板子、CPU 与主存储器等;
  • 输出单元:例如屏幕、打印机等等

主机部分

中央处理器 (Central Processing Unit, CPU)

  • CPU 为一个具有特定功能的芯片,里头含有微指令集,如果你想要让主机进行什么特异的功能,就得要参考这颗 CPU 是否有相关内建的微指令集才可以。
  • 被运算与判断的数据是从哪里来的?
    输入单元----->主存储器 ------>cpu
    CPU 处理完毕----->主存储器------>输出单元
    在这里插入图片描述

算数逻辑单元

算数逻辑单元主要负责程序运算逻辑判断

控制单元

控制单元则主要在协调各周边组件与各单元间的工作

CPU 的架构

微指令集

精简指令集 (RISC) 系统

  1. 微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成
  2. 目前世界上使用范围最广的 CPU 可能就是 ARM 这种架构的呢

复杂指令集 (CISC) 系统

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

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

电脑分类

  1. 超级计算机(Supercomputer)
    国防军事、气象预测、太空科技
  2. 大型计算机(Mainframe Computer)
    例如大型企业的主机、全国性的证券交易所等每天需要处理数百万笔数据的企业机构, 或者是大型
    企业的数据库服务器等等。
  3. 迷你计算机(Minicomputer)
    通常用来作为科学研究、工程分析与工厂的流程管理等
  4. 工作站(Workstation)
    在学术研究与工程分析方面相当常见。
  5. 微电脑(Microcomputer)
    个人计算机就属于这部份的计算机分类

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

  1. 容量单位
    1 Byte = 8 bits
    1字节 =1 Byte
    在这里插入图片描述
    1 K = 1024 byte
    1 M = 1024K
  2. 速度单位
    CPU 的指令周期常使用 MHz 或者是 GHz 之类的单位,Hz 其实就是秒分之一
    网络使用的Mbit/s就是每秒多少Mbit

个人计算机架构与相关设备组件

早期的芯片组通常分为两个网桥来控制各组件的沟通, 分别是:

  1. 北桥:负责链接速度较快的 CPU主存储器与显示适配器界 等组件
  2. 南桥负责连接速度较慢的装置接口, 包括硬盘、USB、网络卡等等。
    不过由于北桥最重要的就是 CPU 与主存储器之间的桥接,因此目前的主流架构中, 大多将北桥内存控制器整合到 CPU封装当中了。所以上图你只会看到 CPU 而没有看到以往的北桥芯片
    在这里插入图片描述
    在这里插入图片描述

执行脑袋运算与判断的 CPU

原本的单核心 CPU 仅有一个运算单元,所谓的多核心则是在一颗 CPU 封装当中嵌入了两个以上的运算核心, 简单的说,就是一个实体的 CPU 外壳中,含有两个以上的 CPU 单元
不同的 CPU 型号大多具有不同的脚针(CPU 上面的插脚),能够搭配的主板芯片组也不同, 所以当你想要将你的主机升级时,不能只考虑 CPU,你还得要留意你的主板上面所支援的 CPU 型号

cpu性能比较

不同的微指令集会导致 CPU 工作效率的优劣
CPU 的频率(能用来比较同款 CPU 的速度): 频率就是 CPU 每秒钟可以进行的工作次数。 所以频率越高表示这颗 CPU 单位时间内可以作更多的事情

CPU 的工作频率:外频与倍频

背景

早期的 CPU 架构主要透过北桥来链接系统最重要的 CPU、主存储器与显示适配器装置。因为所有的设备都得掉透过北桥来连结,因此每个设备的工作频率应该要相同。 于是就有所谓的前端总线(FSB) 这个东西的产生。但因为 CPU 的指令周期比其他的设备都要来的快,又为了要满足 FSB 的频率,因此厂商就在CPU 内部再进行加速, 于是就有所谓的外频与倍频了。

什么是外频和倍频

在早期的 CPU 设计中

  1. 外频:指的是 CPU 与外部组件进行数据传输时的速度
  2. 倍频:是 CPU 内部用来加速工作效能的一个倍数。

两者相乘才是 CPU 的频率速度。例如 Intel Core 2E8400 的内频为 3.0GHz,而外频是 333MHz,因此倍频就是 9 倍!(3.0G=333Mx9, 其中 1G=1000M)

  1. 超频: 将 CPU 的倍频或者是外频透过主板的设定功能更改成较高频率的一种方式。但因为 CPU 的倍频通常在出厂时已经被锁定而无法修改, 因此较常被超频的为外频。
32 位与 64 位的 CPU 与总线『宽度』
如何知道主存储器能提供的数据量呢?

此时还是得要藉由 CPU 内的内存控制芯片主存储器间的传输速度【前端总线速度】(Front Side Bus, FSB) 来说明。
与 CPU 的频率类似的,主存储器也是有其工作的频率,这个频率限制还是来自于 CPU 内的内存控制器所决定的。

  1. 位宽:一般来说,每次频率能够传输的数据量,大多为 64 位,这个 64 位就是所谓的『宽度』了

以图 0.2.1 为例, CPU 内建的内存控制芯片对主存储器的工作频率最高可达到1600MHz。这只是工作频率(每秒几次)。一般来说,每次频率能够传输的数据量,大多为 64 位,这个 64 位就是所谓的『宽度』了! 因此,在图 0.2.1 这个系统中,CPU 可以从内存中取得的最快带宽就是 1600MHz * 64bit = 1600MHz * 8 bytes = 12.8Gbyte/s。

  1. 字组大小(word size):与总线宽度相似的,CPU 每次能够处理的数据量称为字组大小(word size),字组大小依据 CPU 的设
    计而有 32 位与 64 位。我们现在所称的计算机是 32 或 64 位主要是依据这个 CPU 解析的字组大小而来的!

CPU 等级

有不统一的脚位与设计,为了将不同种类的 CPU 规范等级,所以就有 i386,i586,i686 等名词出现了
32 位 CPU 就称为 i686等级。 至于目前的 64 位 CPU 则统称为 x86_64 等级。

超线程 (Hyper-Threading, HT)

  1. 怎么达成这个 HT 功能?
    在每一个 CPU内部将重要的缓存器 (register) 分成两群, 而让程序分别使用这两群缓存器。。也就是说,可以有两个程序『同时竞争 CPU 的运算单元』,而非透过操作系统的多任务切换! 这一过程就会让 CPU 好像『同时有两个核心』的模样!因此,虽然大部分 i7 等级的 CPU 其实只有四个实体核心,但透过HT 的机制, 则操作系统可以抓到八个核心!并且让每个核心逻辑上分离,就可以同时运作八个程序了

内存

个人计算机的主存储器主要组件为动态随机存取内存(DynamicRandom Access Memory, DRAM), 随机存取内存只有在通电时才能记录与使用,断电后数据就消失 了。因此我们也称这种 RAM 为挥发性内存。

使用上较广泛

  1. SDRAM
  2. DDR SDRAM

脚位与工作电压上的不同之外,DDR 是所谓的双倍数据传送速度(Double Data Rate), 他可以在一次工作周期中进行两次数据的传送,感觉上就好像是 CPU 的倍频啦! 所以传输频率方面比 SDRAM 还要好。

通常越大的内存代表越快速的系统,以服务器来说,主存储器的容量有时比 CPU 的速度还要来的重要的

多通道设计

背景:由于所有的数据都必须要存放在主存储器,所以主存储器的数据宽度当然是越大越好。 但传统的总线宽度一般大约仅达 64 位,为了要加大这个宽度,因此芯片组厂商就将两个主存储器汇整在一起,如果一支内存可达 64 位,两支内存就可以达到 128 位了,这就是双通道的设计理念。
要启用双信道的功能你必须要安插两支(或四支)主存储器,容量大小要一致之外,型号也最好相同,要启动双信道的功能时, 你必须要将两根容量相同的主存储器插在相同颜色的插槽当中

DRAM 与 SRAM

在这里插入图片描述
CPU 内的第二层高速缓存
如果某些很常用的程序或数据可以放置到 CPU 内部的话,那么 CPU数据的读取就不需要跑到主存储器重新读取了
因为第二层快取(L2 cache)整合到 CPU 内部,因此这个 L2 内存的速度必须要 CPU 频率相同。 使用DRAM 是无法达到这个频率速度的,此时就需要静态随机存取内存(Static Random Access Memory, SRAM)的帮忙了。

只读存储器(ROM)
  1. BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中, 这个内存芯片在没有通电时也能够将数据记录下来,那就是只读存储器(Read Only Memory, ROM)。 ROM 是一种非挥发性的内存。另外,BIOS 对于个人计算机来说是非常重要的, 因为他是系统在开机的时候首先会去读取的一个小程序
  2. 固件(firmware)很多也是使用 ROM 来进行软件的写入的。

显卡

硬盘与存储设备

硬盘的物理组成

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

  1. 扇区 (sector):设计就是在类似磁盘(磁片)同心圆上面切出一个一个的小区块,这些小区块整合成一个圆形,让机器手臂上的读写头去存取。 这个小区块就是磁盘的最小物理储存单位。原本硬盘的扇区都是设计成 512byte 的容量。新的高容量硬盘已经有 4Kbyte 的扇区设计
    在这里插入图片描述
    其实整颗磁盘的第一个扇区特别的重要,因为他记录了整颗磁盘的重要信息! 早期磁盘第一个扇区里面含有的重要信息我们称为 MBR (Master Boot Record) 格式,但是由于近年来磁盘的容量不断扩大,造成读写上的一些困扰, 甚至有些大于 2TB 以上的磁盘分区已经让某些操作系统无法存取。因此后来又多了一个新的磁盘分区格式,称为 GPT (GUID partition
    table)!
  2. 磁道(track):那同一个同心圆的扇区组合成的圆。
  3. 磁柱(柱面) (cylinder):由于磁盘里面可能会有多个磁盘盘,因此在所有磁盘盘上面的同一个磁道可以组合成一个磁柱

默认通常数据的读写会由外圈开始往内写

MSDOS(MBR) 与 GPT 磁盘分区表(partition table)

你必须要针对你的硬盘进行分区,这样硬盘才可以被你使用的.
通常磁盘可能有多个磁盘盘,所有磁盘盘的同一个磁道我们称为磁柱 (Cylinder), 通常那是文件系统的最小单位,也就是分区槽的最小单位啦!为什么说『通常』呢?因为近来有 GPT 这个可达到 64bit 纪录功能的分区表, 现在我们甚至可以使用扇区 (sector) 号码来作为分区单位哩! 所以说,我们就是利用参考对照磁柱或扇区号码的方式来处理
也就是说,分区表其实目前有两种格式:

MSDOS (MBR) 分区表格式与限制

早期的 Linux 系统为了兼容于 Windows 的磁盘,因此使用的是支持 Windows 的 MBR(Master Boot
Record, 主要引导纪录区) 的方式来处理开机引导程序与分区表。

开机引导程序纪录区与分区表则通通放在磁盘的第一个扇区,这个扇区通常是 512bytes 的大小 (旧的磁盘扇区都是 512bytes 喔!),所以说,第一个扇区 512bytes 会有这两个数据:

  • 主引导记录区(Master Boot Record, MBR):可以安装启动引导程序的地方,有 446 bytes
  • 分区表(partition table):记录整颗硬盘分区的状态,有 64 bytes
    由于分区表所在区块仅有 64 bytes 容量,因此最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码

若将硬盘以长条形来看,然后将磁柱以柱形图来看,那么那 64 bytes 的记录区段有点像底下的图示
在这里插入图片描述

假设上面的硬盘装置文件名为/dev/sda时,那么这四个分区槽在Linux系统中的装置文件名如下所示,
重点在于档名后面会再接一个数字,这个数字与该分区槽所在的位置有关

  • P1:/dev/sda1
  • P2:/dev/sda2
  • P3:/dev/sda3
  • P4:/dev/sda4

上图中我们假设硬盘只有 400 个磁柱,共分区成为四个分区槽,第四个分区槽所在为第 301 到 400
号磁柱的范围。当你的操作系统为 Windows 时,那么第一到第四个分区槽的代号应该就是 C, D, E, F。
当你有资料要写入 F 槽时, 你的数据会被写入这颗磁盘的 301~400 号磁柱之间的意思。

由于分区表就只有 64 bytes 而已,最多只能容纳四笔分区的记录, 这四个分区的记录被称为主要
(Primary)或扩展(Extended)分区

  • 其实所谓的『分区』只是针对那个 64 bytes 的分区表进行设定而已!
  • 硬盘默认的分区表仅能写入四组分区信息
  • 这四组分区信息我们称为主要(Primary)或扩展(Extended)分区
  • 分区的最小单位『通常』为磁柱(cylinder)
  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区槽进行数据的处理
为什么要分区?
  1. 数据的安全性: C 盘重装系统并不会影响到 D
  2. 系统的效能考虑:
    由于分区槽将数据集中在某个磁柱的区段,例如上图当中第一个分区槽位于磁柱号码 1-100 号,如此一来当有数据要读取自该分区槽时, 磁盘只会搜寻前面 1~100 的磁柱范围,由于数据集中了,将有助于数据读取的速度与效能
既然分区表只有记录四组数据的空间,那么是否代表一个颗硬盘最多只能分出四个分区

当然不是
在 Windows/Linux 系统中, 我们是透过刚刚谈到的扩展分区(Extended)的方式来处理的!扩展分区
的想法是: 既然在第一个扇区的分区表只能记录四组数据, 那我可否利用额外的扇区来记录更多的分区信息?实际上图示有点像底下这样:
在这里插入图片描述
实际上扩展分区并不是只占一个区块,而是会分布在每个分区槽的最前面几个扇区来记载分区信息的!只是为了方便读者记忆, 在上图就将他简化了
实际扩展分区的纪录方式:http://en.wikipedia.org/wiki/Extended_boot_record

在上图当中,我们知道硬盘的四个分区记录区仅使用到两个,P1 为主要分区,而 P2 则为扩展分区。
请注意,扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。然
后我们可以透过扩展分区所指向的那个区块继续作分区的记录。

如上图右下方那个区块有继续分区出五个分区, 这五个由扩展分区继续切出来的分区,就被称为逻辑分区(logical partition)。 同时注意一下,由于逻辑分区是由扩展分区继续分区出来的,所以他可以使用的磁柱范围就是扩展分区所设定的范围! 也就是图中的 101~400 !

同样的,上述的分区在 Linux 系统中的装置文件名分别如下:

  • P1:/dev/sda1
  • P2:/dev/sda2
  • L1:/dev/sda5
  • L2:/dev/sda6
  • L3:/dev/sda7
  • L4:/dev/sda8
  • L5:/dev/sda9
    怎么装置文件名没有/dev/sda3 与/dev/sda4 呢?因为前面四个号码都是保留给 Primary 或Extended 用的嘛! 所以逻辑分区槽的装置名称号码就由 5 号开始了!这在 MBR 方式的分区表中是个很重要的特性

MBR 主要分区、扩展分区与逻辑分区的特性我们作个简单的定义啰:

  • 主要分区与扩展分区最多可以有四个(硬盘的限制)
  • 扩展分区最多只能有一个(操作系统的限制)
  • 逻辑分区是由扩展分区持续切割出来的分区;
  • 能够被格式化后,作为数据存取的分区为主要分区与逻辑分区。扩展分区无法格式化;
  • 逻辑分区的数量依操作系统而不同,在 Linux 系统中 SATA 硬盘已经可以突破 63 个以上的分区限制;

分区是个很麻烦的东西,因为他是以磁柱为单位的『连续』磁盘空间, 且扩展分区又是个类似独立的磁盘空间,所以在分区的时候得要特别注意。

要注意的是:如果扩展分区被破坏,所有逻辑分区将会被删除。 因为逻辑分区的信息都记录在扩展分区里

由于第一个扇区所记录的分区表与 MBR 是这么的重要,几乎只要读取硬盘都会先由这个扇区先读起。因此,如果整颗硬盘的第一个扇区(就是 MBR 与 partition table 所在的扇区)物理实体坏掉了,那这个硬盘大概就没有用了

MBR 分区表除了上述的主分区、扩展分区、逻辑分区需要注意之外,由于每组分区表仅有 16bytes 而
已,因此可纪录的信息真的是相当有限的!

所以,在过去 MBR 分区表的限制中经常可以发现如下的问题:

  • 操作系统无法抓取到 2.2T 以上的磁盘容量!
  • MBR 仅有一个区块,若被破坏后,经常无法或很难救援。
  • MBR 内的存放开机管理程序的区块仅 446bytes,无法容纳较多的程序代码。
GUID partition table, GPT 磁盘分区表

为了解决MBR带来的问题。
为了兼容于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块地址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(预设为 512bytes 喔!) 来规划,而第一个 LBA 称为 LBA0 (从0 开始编号)。

与 MBR 仅使用第一个 512bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区信息!同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份
在这里插入图片描述
上述图示的解释说明如下:

  1. LBA0 (MBR 相容区块)#### 传输接口

与 MBR 模式相似的,这个兼容区块也分为两个部份

  • 一个就是跟之前 446 bytes 相似的区块,储存了第一阶段的开机管理程序!
  • 而在原本的分区表的纪录区内,这个兼容模式仅放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式之意。而不懂 GPT 分区表的磁盘管理程序, 就不会认识这颗磁盘,除非用户有特别要求要处理这颗磁盘,否则该管理软件不能修改此分区信息,进一步保护了此磁盘
  1. LBA1 (GPT 表头纪录)
    这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的 GPT 分区 (就是前面谈到的在最后 34个 LBA 区块) 放置的位置, 同时放置了分区表的检验机制码 (CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以透过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运作!

  2. LBA2-33 (实际纪录分区信息处)
    从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分区纪录,所以在默认的情况下,总共可以有 432 = 128 笔分区纪录喔!因为每个 LBA 有 512bytes,因此每笔纪录用到 128 bytes 的空间,除了每笔纪录所需要的标识符与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对于单一分区槽来说, 他的最大容量限制就会在『 264 * 512bytes = 263 * 1Kbytes = 233TB = 8 ZB 』,要注意 1ZB = 230TB

现在 GPT 分区预设可以提供多达 128 笔纪录,而在 Linux 本身的核心装置纪录中,针对单一磁盘来说,虽然过去最多只能到达 15 个分区槽,不过由于 Linux kernel 透过 udev 等方式的处理,现在Linux 也已经没有这个限制在了! 此外,GPT 分区已经没有所谓的主、延伸、逻辑分区的概念,既然每笔纪录都可以独立存在,当然每个都可以视为是主分区!每一个分区都可以拿来格式化使用

到网络上有朋友实际拿一颗磁盘分区出 130 个以上的分区槽, 结果他发现 120 个以前的分区槽均可以格式化使用,但是 130 之后的似乎不太能够使用了!或许跟默认的 GPT 共 128 个号码有关!

SATA 接口(主流)
SAS 接口
USB接口
固态硬盘 (Solid State Disk, SSD)

传统硬盘有个很致命的问题,就是需要驱动马达去转动磁盘盘~这会造成很严重的磁盘读取延迟

后来就有厂商拿闪存去制作成高容量的设备,这些设备的连接界面也是透过SATA 或 SAS,而且外型还做的跟传统磁盘一样!所以, 虽然这类的设备已经不能称为是磁盘 (因为没有读写头与磁盘盘啊!都是内存!)。但是为了方便大家称呼,所以还是称为磁盘!只是跟传统磁盘 (Hard Disk Drive, HDD) 不同, 就称为固态硬盘 (Solid State Disk 或 Solid State Driver, SSD)。

固态硬盘最大的好处是,它没有马达不需要转动,而是透过内存直接读写的特性,因此除了没数据延
迟且快速之外,还很省电!

每秒读写操作次数 (Input/Output Operations Per Second, IOPS)!这个数值越大,代表可操作次数较高,当然效能好的很

选购与使用须知
  1. 考虑你的主板可接受的插槽接口(SATA/SAS)
  2. HDD 或 SSD
    使用 SSD 作为系统碟,然后数据储存大多放置在 HDD 上面!这样系统运作快速 (SSD),而数据储存量也大 (HDD)
  3. 容量
  4. 缓冲存储器
    硬盘上头含有一个缓冲存储器,这个内存主要可以将硬盘内常使用的数据快取起来,以加速系统的读取效能。 通常这个缓冲存储器越大越好
  5. 转速
  6. 运转须知
    正确的使用计算机的方式,应该是在计算机通电之后,就绝对不要移动主机,并免抖动到硬盘;使用操作系统的正常关机方式

扩充卡与接口

一般服务器惯用的扩充卡,大多数都使用 PCIe x8 的界面

主板

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

如同图 0.2.1 所示,如果你是安插在左上方跟 CPU 直接联机的那几个插槽,那效能最佳!如果你是安插在左侧由上往下数的第五个 PCIe 2.0 x8 的插槽呢? 那个插槽是与南桥连接,所以你的扩充卡数据需要先进入南桥跟大家抢带宽,之后要传向 CPU 时,还得要透过 CPU 与南桥的沟通管道, 那条管道称为 DMI 2.0。

设备 I/O 地址与 IRQ 中断请求

有输出/输入/不同的储存装置等等, 主板芯片组怎么知道如何负责通信呢?
  1. I/O 地址
    有点类似每个装置的门牌号码,每个装置都有他自己的地址
  2. IRQ 中断
    如果 I/O 地址想成是各装置的门牌号码的话,那么 IRQ 就可以想成是各个门牌连接到邮件中心(CPU)的专门路径。如果 I/O 地址想成是各装置的门牌号码的话,那么 IRQ 就可以想成是各个门牌连接到邮件中心(CPU) 的专门路径

CMOS 与 BIOS

  1. CMOS
    CMOS 主要的功能: 为记录主板上面的重要参数, 包括系统时间、CPU 电压与频率、各项设备的 I/O 地址与 IRQ 等,由于这些数据的记录要花费电力,因此主板上面才有电池。
  2. BIOS

BIOS 为写入到主板上某一块 flash 或EEPROM 的程序,他可以在开机的时候执行,以加载 CMOS 当中的参数,并尝试呼叫储存装置中的开机程序,进一步进入操作系统当中。 BIOS 程序也可以修改 CMOS 中的数据,每种主板呼叫

BIOS设定程序的按键都不同,一般桌面计算机常见的是使用[del]按键进入 BIOS 设定画面。

连接接口设备的接口

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

  1. PS/2 接口:这原本是常见的键盘与鼠标的接口,不过目前渐渐被 USB 接口取代,甚至较新的主板可能就不再提供 PS/2 界面了;
  2. USB 接口:通常只剩下 USB 2.0 与 USB 3.0,为了方便区分,USB 3.0 为蓝色的插槽颜色喔!
  3. 声音输出、输入与麦克风:这个是一些圆形的插孔,而必须你的主板上面有内建音效芯片时,才会有这三个东西;
  4. RJ-45 网络头:如果有内建网络芯片的话,那么就会有这种接头出现。 这种接头有点类似电话接头,不过内部有八个芯片触电!接上网络线后在这个接头上会有灯号亮起才对!
  5. HDMI:如果有内建显示芯片的话,可能就会提供这个与屏幕连接的界面了!这种接口可以同时传输声音与影像, 目前也是电视机屏幕的主流连接接口
    在这里插入图片描述

数据表示方式

数字与文字编码系统

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

由国际组织 ISO/IEC 跳出来制订了所谓的 Unicode 编码系统, 我们常常称呼的
UTF8 或万国码的编码就是这个东西,因为这个编码系统打破了所有国家的不同编码, 因此目前因特网社会大多朝向这个编码系统为主

软件程序运行

  1. 软件分两大类
  • 系统软件
  • 应用程序

操作系统

操作系统内核

操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件

只有内核有提供的功能,你的计算机系统才能帮你完成!

内核主要在管控硬件与提供相关的能力(例如存取硬盘、网络功能、CPU 资源取得等)

核心程序所放置到内存当中的区块是受保护的! 并且开机后就一直常驻在内存当中。

系统调用

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

在这里插入图片描述

只要硬件不同(如 x86 架构与 RISC 架构的 CPU),核心就得要进行修改才行。而由于核心只会进行计算机系统的资源分配,所以在上头还需要有应用程序的提供,用户才能够操作系统的。

  1. 操作系统的核心层直接参考硬件规格写成, 所以同一个操作系统程序不能够在不一样的硬件架构下运作。

  2. 操作系统只是在管理整个硬件资源,包括 CPU、内存、输入输出装置及文件系统文件。 如果没有其他的应用程序辅助,操作系统只能让计算机主机准备妥当(Ready)而已!并无法运作其他功能。

  3. 应用程序的开发都是参考操作系统提供的开发接口, 所以该应用程序只能在该操作系统上面运作而已,不可以在其他操作系统上面运作的。

内核功能

  1. 系统调用接口(System call interface)
    为了方便程序开发者可以轻易的透过与核心的沟通,将硬件的资源进一步的利用, 于是需要有这个简易的接口来方便程序开发者。

  2. 程序管理(Process control)
    总有听过所谓的『多任务环境』吧?一部计算机可能同时间有很多的工作跑到 CPU 等待运算处理, 核心这个时候必须要能够控制这些工作,让 CPU 的资源作有效的分配才行!另外, 良好的 CPU 排程机制(就是CPU 先运作那个工作的排列顺序)将会有效的加快整体系统效能呢!

  3. 内存管理(Memory management)
    通常核心会提供虚拟内存的功能,当内存不足时可以提供内存置换(swap)的功能。

  4. 文件系统管理(Filesystem management)

  5. 装置的驱动(Device drivers)

  6. 操作系统与驱动程序
    在这里插入图片描述

  • 操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;
  • 一般来说,操作系统会提供开发接口,让开发商制作他们的驱动程序;
  • 要使用新硬件功能,必须要安装厂商提供的驱动程序才行;
  • 驱动程序是由厂商提供的,与操作系统开发者无关。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值