第0章 计算机概论
一、计算机概述
计算机其实就是接收用户输入指令和数据。经过中央处理器的数据与逻辑单元运算处理后,已产生或存储成有用的信息。
1、计算机硬件的五大单元:
输入单元:包括键盘、鼠标、触摸屏、扫描仪、手写板等
中央处理器(CPU):CPU是一个具有特定功能的芯片,里头含有微指令集。由于CPU的工作主要在于管理与运算,因此CPU内又可分为两个主要的单元,分别是算术逻辑单元与控制单元。其中算数逻辑单元主要负责程序运算与逻辑判断,控制单元则主要协调各组件与各单元之间的工作。
内存: CPU进行运算与判断的数据来源都是从内存中读取来的。内存中的数据则是由输入单元传输进来的。而CPU处理完的数据也必须先写回到内存当中,最后数据才从内存传输到输出单元当中。
输出单元:屏幕、打印机等。
综上所述,计算机是由以上5个单元所构成的,而重点在于CPU与内存。最重要的概念就是CPU处理的数据都是来源于内存。
2、CPU的种类
前面说过CPU内部含有微指令集,我们所使用的软件都要经过CPU内部的微指令集来完成才行。这种指令集的设计主要又分为两种设计理念,这也是目前世界上最常见的两种CPU种类,分别是精简指令集(RISC)与复杂指令集(CISC)系统。
(1)、精简指令集:执行时间短,执行的指令较单纯
(2)、复杂指令集:执行时间长一些,但每条指令可以处理的工作复杂一些。
由AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个人计算机用途上面,因此个人计算机常称为x86架构的计算机。那为何称为x86架构的计算机呢?这是因为最早的Intel发展出来的CPU代号称为8086,后来依次架构又开发出80286,80836等,因此这种架构的CPU就被称为x86架构了。
3、接口设备
单有CPU也无法运作计算机的,所以计算机还需要其他的接口设备才能够实际运行。
最重要的接口设备是主板!主板负责将所有的设备连接在一起,让所有的设备能够进行协调与通信。而主板上面最重要的组件就是主板芯片组,这个芯片组将所有的设备汇集在一起,其他重要设备还有存储设备、显示设备、网络设备等。
4、运作流程
加入计算机是一个人体,那么每个组件对应人体哪个部分呢?
CPU=大脑:每个人会做的事情都不一样(微指令集的区别),但主要都是通过大脑来进行判断与控制身体各部分的活动。
内存=大脑中的记录区块: 在实际的活动过程中,我们的大脑能够将外界互动的活动暂时记录下来,提供CPU来进行判断。
硬盘=大脑中的记忆区块:将重要的数据记录下来,以备以后使用。
主板=神经系统:好像人类的神经一样,将所有的重要区块连接起来,包括手脚的活动都是大脑发布命令后,通过神经传输给手脚进行活动。
各项接口设备=人体与外界通信的手、脚、皮肤、眼睛:就好像手脚一般,是人体与外界互动的关键部位。
显卡=脑袋中的影像:将来自眼睛的刺激转换成影像后在脑袋中呈现,所以显卡所显示的数据来源也是CPU控制的。
电源=心脏:所有组件要能运作就需要足够的电力供给。
5、计算机分类
超级计算机:运行速度最快的计算机,维护操作费用也高。主要应用于军事、太空科技、气象预测等领域。 全世界最快的500台超级计算机请参考http://www.top500.org
大型计算机:通常也有数个高速的CPU,可用来处理大量数据及复杂的运算。例如大型企业的主机、服务器。
迷你计算机:主机可以放在一般作业场所,不像前两个要求特殊的空调场所。通常用于科学研究、工程分析等。
工作站:针对特殊用途而设计的计算机。
微电脑:就是我们的个人计算机,体积小,价格低,但功能还是五脏俱全的。
6、计算机上常用的单位(大小、速度等)
大小单位:计算机只认识0和1,0/1的单位是bit,但bit实在是太小了,因此定义出byte这个单位:1Byte=8bit, 还有K M G T 等。
一般来说,文件大小使用的是二进制的方式,所以1GB的文件大小实际为:1024*1024*1024B这么大。速度单位常使用十进制 例如1GHz就是1000*1000*1000Hz的意思。
速度单位:CPU运算速度常使用MHz 或者GHz之类的 单位
为什么我们买的U盘或者硬盘实际大小总是比标注的小呢,例如买了个500G硬盘实际大小只有460G,为什么呢? 这就是因为一般硬盘厂商会使用十进制为单位,500G的硬盘就是500*1000*1000*1000B大小,而在计算机中采用二进制所以大小显示成500*1000*1000*1000/(1024*1024*1024)GB.
二、个人计算机架构与接口设备
整个主板最重要的就是芯片组了,芯片组通常又分为两个桥接器来控制各组件的通信,分别是:
(1)、北桥负责连接速度较快的CPU、内存、显卡等组件
(2)、南桥负责连接速度较慢的周边接口,包括硬盘、USB、网卡等。
1、CPU
CPU负责大量运算,因此CPU通常是具有相当高发热量的组件。
CPU的频率是指CPU每秒钟可以进行的工作次数,所以频率越高代表CPU单位时间内可以做越多的事情。
需要注意的是电脑的运行速度就像一群人在进行一个连续的作业一般,如果有一个人速度特快或者特曼就会导致他前面的或者后面的人事情一堆处理不完。也就是说,这群人最好能够速度一致。电脑也是,CPU与外部组件的速度理论上保持一致才好。所以我们在配电脑的时候要对各个组件进行综合考虑,不要出现短板!
(1)CPU的外频与倍频
外频指的是CPU与外部组件进行数据传输/运算时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者相乘才是CPU的频率,例如一个CPU的外频是333MHz,倍频是9,那么该CPU的频率是333MHz*9=3.0GHz。
(2)32位与64位
CPU每次能处理的数据量称为字组大小,字组大小依据CPU的设计而有32位和62位。
2、内存
个人计算机的内存主要组件为动态随机访问内存(DRAM),随机访问内存只有在通电的时候才能记录和使用,断电后数据又消失了,因此我们称这种RAM为挥发性内存。
选择内存要考虑他的频率/频宽、型号,除此之外,内存的容量也是很重要的。因为所有数据都得要先加载到内存中才能被CPU所读取,如果内存容量不够大的话会导致某些大容量数据无法被完整加载,此时已存在内存当中但暂时没有被用到的数据必须要先被释放,使得可用内存容量大于该数据,那份新数据才能被加载。通常内存越大表示系统越快,这是因为系统不用常常释放一些内存内部的数据。对于服务器而言,内存的容量有时候比CPU的速度还要重要。
(1)、双通道设计 所有的数据都要放到内存中,那么内存的数据宽度当然越大约好。所以芯片组厂商将两个内存插口汇整到一起,如果一条内存可达64位,那么两条就可以达到128位了,这就是双通道的设计理念。
要启用双通道必须要安插两支(或者四只)内存,最好这两个内存的规格型号是一模一样的。
(2)、DRAM与SRAM
除了内存之外,事实上计算机当中还有许多的"内存"存在!最为我们熟知的就是CPU内的第二层高速缓存,我们知道,CPU的数据都是由内存提供的,但内存 的数据毕竟是要通过北桥传送到CPU内。如果某些常用的程序或者数据可以放到CPU内部的话,那么CPU读取这些数据就不需要经过北桥了,对于性能不就大大的提升了吗?这就是第二层缓存的设计理念
由于第二层缓存要集成到CPU内部,因此这个L2内存的速度必须要与CPU频率相同。使用DRAM是无法达到这个频率速度的,此时就需要静态随机访问内存(SRAM)帮忙了,SRAM在设计使用上的晶体管数量较多,价格较高,且不易做成大容量,不过由于其速度快,倒是可以集成在CPU内部,加快COU运行性能。
3、显卡
显卡又称VGA,它对于图形影像的显示扮演着相当关键的角色。一般对于图形影像的显示重点在于分辨率与色彩浓度,因为每个图像显示的颜色会占用内存,因此显卡上面会有一个内存的容量,我们平时叫它显存,这个显存会影响到最终你的屏幕分辨率与色彩浓度。
除了显存之外,由于现在3D游戏3D动画的流行,显卡的"运算能力"越来越重要。一些3D的运算早期是交给CPU的,但是CPU并非完全针对这些3D来设计,再说了CPU平时都够忙碌的了。所以后来显卡厂商直接在显卡上嵌入了一个3D加速的芯片,这就是GPU的由来。
4、硬盘与存储设备
这个不写了 ,针对图说说它的内部构成还行。
5、主板
(1)、芯片组
由于芯片组负责所有设备的通信,所以事实上芯片组(特别是北桥)也是一个可能散发高热量的组件。因此主板上面常常会看见一些外界的小风扇或者散热片在这组芯片上面。
集成芯片组:有的芯片强调全功能,因此把显卡、音效、网络都集成了,在这样的集成芯片中只需要在购买CPU、内存、主板、硬盘就能组装成一台主机了,不过集成芯片的性能通常比较弱,对于3D游戏玩家以及强调高性能运算的主机来说不太合适。
至于独立芯片组性能较高,当然成本也高。
(2)、设备I/Q地址与IRQ中断信道
主板负责计算机各组件之间的通信,但是计算机的组件实在是太多了,所以每个组件有一个唯一标识对他们进行区分,这个唯一标识就是I/Q地址。
至于IRQ中断信道就是各个I/Q地址连接CPU 的专门路径。各设备可以通过IRQ中断信道来告诉CPU该设备的运转情况,以方便CPU进行工作任务的分配。
6、电源
能源转化率:电源本身会吃掉一部分电力。 输出的功率/输入的功率就是电源的能源转化率。
三、数据表示方式
1、数字系统
计算机只识别0和1,我们称这种只有0和1的环境为二进制环境。
1101010转化为十进制就是1*2^6+1*2^5+0*2^4+1*2^3+0*2^2+1*2^1+0*2^0=106
106转化为二进制就用除法 用106/2 一直除下去 得到每一次的余数 倒着拼接到一起就是十进制106对应的二进制数据。
2、文字编码系统
由于计算机只认识0和1 所以当我们向文件写入文字数据时,该文字数据会由编码对照表将该文字转成数字后存入文件中,同样 读取的时候也是根据编码对照表将数字转换成文字显示出来。现在我们就知道了,为何浏览器上如果编码写错会出现乱码了,因为他找不到对应的编码对照表了,不会翻译啦。
常用的英文编码表为ASCII系统,这个编码系统中,每个符号(数字、英文、符号等)都会占用1B的记录,ASCII可以表示256中不同字符。中文常用的编码系统是GB2312(简体)BIG5(繁体) 每个汉字占2B。
国际组织制定了统一的UNICODE编码系统,就是我们常用的UTF-8。
四、软件程序运行
1、机器程序与编译程序
前面谈到计算机只认识0和1而已,计算机最重要的判断与运算是在CPU内,而CPU是具有微指令集的。所以我们需要CPU做什么事情的时候就得编写让CPU读得懂的代码让CPU直行。这样的过程有以下几个麻烦点
(1)、需要了解机器语言,也就是把你要写的东西翻译成0和1。
(2)、需要了解硬件功能及相关参数 我们的程序要写给机器看,当然需要我们参考机器本身的功能。
(3)、程序不可移植 每个CPU都有独特的微指令集,每个硬件的功能函数也不相同,理论上针对A计算机写的程序不能在B计算机上执行,而且程序的代码修改非常艰难,因为是机器语言。
为了解决这一问题,科学家们设计出了一种人类看得懂的语言,然后创造一种编译器将人类写的语言编译成计算机识别的语言,这样写起程序就容易得多了,现在常用的编译器有JAVA C C++等。
2、操作系统
如同前面提到的,在早期想要让计算机执行程序就得参考一堆硬件功能函数,并且要学习机器语言才可编写程序,而且这种程序还不具有可移植性。 所以极为不便,那么如果我们能将所有的硬件都驱动,并且提供一个开发软件的参考接口给工程师开发软件的话,那开发软件不就变得简单了,这就是操作系统。
操作系统内核:
操作系统其实也是一组程序,这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件,操作系统的功能可以让CPU开始判断逻辑与运算函数,让内存可以开始加载/读出数据与程序代码,让硬盘可以开始被访问,让网卡开始可以传输数据等。总之硬件的所有操作都需要通过这个操作系统来完成。
上述功能描述的就是操作系统内核的功能,计算机能不能做某些事情都与内核有关,例如如果你的内核不支持TCP/IP协议,那么无论你买多么好的网卡也别想上网。
内核是很重要的,内核程序被放置到内存当中的区块是受保护的,并且开机后就一直常驻在内存当中。
系统调用:
既然我们的硬件都由内核管理,那么我们想开发软件就得参考这个内核的相关功能了。即便是不用参考硬件功能参数,参考内核功能对于我们来说也是比较难的,为了解决这个问题,操作系统通常会提供一整组的开发接口给工程师来开发软件。工程师只要遵守该开发接口就很容易开发软件了。举例来说,我们用JAV语言进行开发,那么我们只需要遵守JAVA语言的函数即可,不需要去考虑内核的功能了,因为内核的系统调用接口会主动将JAVA语言转化为内核识别的任务函数,这样内核自然就可以运行程序了。
这说的就是操作系统的系统调用层。
第0章完结,虽然貌似简单,但是多看一遍也会多一分收获的。