前提:
在学习Linux前,需要了解计算器概论。
一、🍒计算机:辅助人脑的好工具
计算机就是一种计算器:接受用户输入指令与数据, 经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的信息。
1.1🍕计算机硬件的五大类
-
计算机组成部分
小流程:我们只要透过输入设备(如鼠标或键盘)来将一些数据输入到主机里,后再由主机
的功能处理成为图表或文章等信息后,将结果传输到输出设备(如屏幕或打字机)计算机主机: 主机中最重要就是一片主板,上面有
中央处理器(CPU)
以及主存储器和一些适配卡装置。CPU:是一个具有特定功能的芯片,里面有微指令集,如果想让主机进行什么特异功能,需要参考这颗CPU是否有相关内建的微指令才可以。CPU重点在于运算与判断
CPU 主要单元:
CPU运算与判断:
-
计算机的五大单元
『系统单元』指的就是计算机机壳内的主要组件,而重点在于CPU 与主存储器。 特别要看的是实线部分的传输方向,基本上数据都是流经主存储器再转出去! 至于数据会流进/流出内存则是 CPU 所发布的控制命令!而 CPU 实际要处理的数据则完全来自于主存储器!
1.2🍕CPU种类
CPU内部含有一些小的指令集,我们所使用的软件都要经过CPU内部的微指令集来达成。
1.3🍕接口设备
主板负责将所有的设备连接在一起,让所有设备能够进行沟通和协调。
主板上最重要的就是主板芯片组——其将所有设备汇集在一起
1.4🍕运作流程
以人体为例:
CPU = 脑袋瓜子
:每个人做的事情都不一样(微指令集癿差异), 但主要都是透过脑袋瓜子来进行判断与控制身体各部分的活动;主存储器 = 脑袋中癿记录区块
:在实际活动过程中,脑袋瓜子能够将外界癿互动暂时记录起来, 提供 给CPU 来进行判断;硬盘 = 脑袋中的记忆区块
:将重要的数据记录起来,以便未来将这些重要经验再次使用;主板 = 神经系统
:好像人类的神经一样,将所有重要的组件连接起来,包括手脚癿活动都是脑袋瓜子发布命令后, 透过神经(主板)传导给手脚来迚行活动!各项接口设备 = 人体与外界沟通的手、脚、皮肤、眼睛等
:就好像手脚一般,是人体与外界互动癿重要关键!显示适配器 = 脑袋中癿影像
:将来自眼睛的刺激转成影响后在脑袋中呈现,所以显示适配器所产生的数据源也是 CPU 控制。电源供应器 (Power) = 心脏
:所有组件要能运作得要有够的电力供给!这电力供给就好像心脏一样,如果心脏不给力, 那么全身也就无法动弹!心脏不稳定呢?那身体可能断断续续癿~不稳定!
任何外界的接触都必须要由脑袋瓜子中的主存储器记录下来, 然后给脑袋中的CPU ,CPU依据这些数据进行判断后,再发布命令给各个接口设备!如果需要用到过去的经验, 就得由过去癿经验(硬盘)中读取
1.5🍕计算机分类
1.6🍕计算机常用的计算单位(容量、速度等)
- 容量单位
在计算机中只有0和1 ,在储存数据时每份简单的数据都会使用到 8 个 bits 癿大小来记录,此定义出 byte 这个单位
1 GBytes 档案大小实际上为:1024x1024x1024 Bytes
- 速度单位
CPU 的指令周期常使用 MHz 或是 GHz 之类的单位,这个 Hz 其实就是秒分之一
在网络传输方面,网络使用的是 bit 为单位, Mbps 是 Mbits per second,亦即是每秒多少 Mbit。
例题:
假设你买了 500GB 的硬盘,但是格式化完毕后却剩下 460GB 左右的容量,这是什么原因?
答:
因为一般硬盘制造商会使用十进制的单位,所以 500GByte 代表为500 * 1000 * 1000 * 1000Byte 的意思。 转成档案癿容量单位时使用二迚制(1024 为底),所以就成为 466GB 左右的容量。
硬盘厂商并非要骗人,是因为硬盘的最小物理量为 512Bytes,最小的组成单位为扇区(sector), 通常硬盘容量的计算采用『多少个 sector』,所以才会使用十进制来处理。
二、🍒个人计算机架构与接口设备
-
Intel 芯片架构
主板上的芯片组,分为u两个桥来控制各组件的沟通。
-
AMD 芯片架构
主存储器直接与CPU沟通而不通过北桥,将内存控制组件整合到CPU中。
2.1🍔CPU :CPU的外频与倍频,32位与64位,CPU等级
- 若想将主机升级,不能只考虑CPU,还要留意主板上所支援的CPU型号
- CPU效能
- CPU的外频 与 倍频
由来:CPU 与外部各组件的速度理论上应该要一致。但是因为 CPU 需要较强大的运算能力, 因为很多判断与数学都是在 CPU内处理,因此 CPU 开发商在 CPU 内再加上一个加速功能, 所以 CPU 有所谓的外频与倍频!
Intel Core 2 Duo E8400 CPU 来说,他频率是 3.0GHz, 而外频是 333MHz,因此倍频就是 9 倍!
(3.0G = 333M * 9, 其中 1G=1000M)
- 32位与64位
由来:CPU 运算的数据都是由主存储器提供,主存储器与CPU 的沟通速度靠的是外部频率, 每次工作可以传送癿资料量有多大呢?
答:
总线的功能了。
一般主板芯片组有分北桥不南桥, 北桥的总线称为系统总线,因为是内存传输癿主要信道,所以速度较快。
南桥就是所谓的输入输出(I/O)总线,主要在联系硬盘、USB、网绚卡等接口设备。
北桥所支持的频率称为前端总线速度(Front Side Bus, FSB)
, 而每次传送的位数则是总线宽度。
总线带宽则是:『FSBx 总线宽度
』亦即每秒钟可传送的最大数据量。 目前常见癿总线宽度有 32/64 位(bits)。
如:
在该架构中前端总线最高速度可达 1600MHz。 看到内存与北桥的带宽为
12.8GBytes/s,亦即是 1600MHz*64bits = 1600MHz * 8Bytes = 12800MByes/s = 12.8GBytes/s
- CPU等级
2.2🍔内存
- 🍎前提
因为CPU 所使用的数据都是来自主存储器(main memory),无论是软件程序还是数据,都必须要读入主存储器后 CPU 才能利用。
PC主存储器主要组件为动态随机存取内存(Dynamic Random Access Memory, DRAM), 随机存取内存只有在通电时才能记录与使用,断电后数据就消失了。
主存储器除了频率/带宽不型号需要考虑之外,内存的容量也是很重要
- 🍎双通道设计
由于所有数据必须存放在主存储器中,所以主存储器的数据宽度是越大越好。 但传统的总线宽度一般大约仅达 64 位,为了要加大这个宽度,因此芯片组厂商就将两个主存储器汇整在一起, 如果一支内存可达 64 位,两支内存就可以达到 128 位了,这就是双通道癿设计理念。
可以看出颜色两两成对,要启用双信道功能,需要将两根容量相同的主存储器插在相同颜色的插槽
- 🍎CPU 频率不主存储器的关系
CPU 与主存储器的外频应该要相同才好 - 🍎DRAM 与 SRAM
第二层快取设计概念
:某些常用的程序or数据可以放置到 CPU 内部的话,那么 CPU 资料癿读取就不需要透过北桥了! 对效能来说就可以大大提升。
使用SRAM
:因为第二层快取(L2 cache)整合到 CPU 内部,因此这个 L2 内存的速度必须要 CPU 频率相同。 使用DRAM 是无法达到这个频率速度,就需要静态随机存取内存(Static Random Access Memory, SRAM)癿帮忙了
- 🍎只读存储器(ROM)
2.3🍔显示适配器 VGA(Video Graphics Array)
显示适配器又称为 VGA(Video Graphics Array):图形影像的显示,一般对于图形影像的显示
重点在于分辨率与颜色深度
,因为每个图像显示的颜色会占用掉内存, 因此显示适配器上面会有一个内存的容量,显示适配器内存容量会影响到最终屏幕分辨率与颜色深度。
例题:
假设桌面使用 1024x768 分辨率,且使用全彩(每个像素占用 3bytes 癿容量),请问你显示适配器至少需要多少内存才能使用这样癿彩度?
答:
因为 1024x768 分辨率中会有 786432 个像素,每个像素占用 3bytes,所以总共需要2.25MBytes 以上才行! 但如果考虑屏幕的更新率(每秒钟屏幕的更新次数),显示适配器的内存还是越大越好!
2.4🍔硬盘与存储设备
储存设备:进行记录与读取数据。
2.5🍔PCI适配卡
相当多组件是使用 PCI 接口作为传输癿, 例如网络卡、声卡、特殊功能卡等等。
2.6🍔主板
BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中, 这个内存芯片在没有通电时也能够将数据记录下来,就是只读存储器(Read Only Memory, ROM);
2.7🍔电源供应器
三、🍒数据表示方式
3.1🍟数字系统
十进制:
二进制:
- 十进制106转为二进制
3.2🍟文字编码系统
文本文件也是被记录为 0 和 1, 文档内容被取出来查阅时,需要经过一个编码系统
的处理,编码系统可以假设为字码对照表。
要写入档案的文字数据,该文字数据会由编码对照表将该文字转成数字后,再存入档案中。
同样,将档案内容的数据读出时,也会经过编码对照表将该数字转成对应的文字后,再显示 到屏幕上。
常用的英文编码表为ASCII系统,每个符号都会占用1bytes,中文字每个占有2bytes,其编码系统目前最常用的就是big5编码表, 有些汉字癿内部编码会被误判为单/双引号,在读出数据的对照表时, 常常就会变成乱码,解决这个问题,指定Unicode 编码系统,UTF8。
四、🍒软件程序运作
4.1🌭机器程序与编译程序
首先计算机只认识 0 与 1 ,而计算机最重要的运算与逻辑判断是在 CPU内部, 而CPU 其实是具有微指令集。因此,需要CPU帮忙工作时,就得要参考微指令集的内容, 然后撰写 CPU 读的懂得脚本给CPU执行,这样就能够让CPU 运作了。
怎么撰写CPU懂得的脚本的几点困难说明:
- 要了解机器语言:机器只认识0和1
- 了解所有硬件的相关功能函数:因为程序须要写给机器看,就要参考机器本身功能,然后针对该功能去撰写程序代码。例如,要 DVD 影片能够放映, 那就得要参考 DVD 光驱癿硬件信息。参看技术手册。
- 程序不具有可移植性:每个 CPU 都有独特的微指令集,同样,每个硬件都有其功能函数。 因此,你为 A 计算机写的程序,理论上是没有办法在 B 计算机上面运作!而程序代码修改非常困难! 因为是机器码,把是人类看懂得程序
- 程序具有专一性:因为这样的程序必须要针对硬件功能函数来撰写, 如果开发了一支浏览器程序,想要再开发档案管理程序时,还是得从头再参考硬件的功能函数来继续撰写
。
怎么解决?
答:
设计人类看的懂得程序语言, 然后创造一种『编译程序』来将这些人类能够写的程序语言转译成为机器能看懂得机器码
举例:需要将运作的数据写入内存中,就要自行分配一个内存区块出来让数据能够填上去, 所以还要了解到内存的地址是如何定位的?
4.2🌭操作系统
早期计算机执行程序就要参考一堆硬件功能函数,并学习机器语言才能够撰写程序。 同时每次写程序时都必须要重新改写,因为硬件与软件功能不一致。如果能够将所有硬件都驱动, 并提供一个发展软件的参考接口来给工程师开发软件——操作系统(Operating System, OS)
① 、 操作系统核心(Kernel)
操作系统(Operating System, OS)也是一组程序, 这组程序重点在于管理计算机的所有活动以及驱动系统中的所有硬件。
计算机能不能做到某些事,与核心有关,只有核心提供的功能,计算机系统才能完成。
核心程序放置在内存中的区块是受保护的。
② 、 系统呼叫((System Call)
硬件由核心管理,若要开发软件,需要参考核心相关功能,这样子需要了解核心功能,操作系统通常会提供一组开发接口给工程师开发软件,只需要遵守该开发接口容易开发软件,不需要考虑核心的相关功能。
- 计算机系统主要由硬件构成,然后核心程序主要管理硬件,提供合理的计算机系统资源分配(包括CPU资源,内存资使用资源等),核心只会进行计算机系统的资源分配,所以还需要应用程序提供,用户才能操作操作系统。
- 为了保护核心,让程序设计师能够比较容易开发软件,因此操作系统除核心程序之外,还提供一整组开发接口——系统呼叫层。。软件开发工程只要遵循公认的系统参数来开发软件,该软件就能够在该核心上运作。
③ 、 操作系统与驱动程序
若比较晚推出新的硬件,操作系统如何驱动这块新的硬件?
答:
操作系统通常会提供一个开发接口给硬件开发商, 其可以根据这个接口设计可以驱动硬件的『驱动程序』,只要使用者安装驱动程序后, 自然就可以在操作系统上面驱动这块显示适配器了。
4.3🌭应用程序
应用程序是参考操作系统提供的开发接口所开发出来的软件,这些软件可让用户操作,以达到某些计算机功能利用。如:,办公室软件(Office)主要是用来让使用者办公用;图像处理软件主要是让用户用来处理影音资料; 浏览器软件主要是让用户用来上网浏览用等等。
参考文献:鸟哥的Linux私房菜基础篇-第三版