什么是计算机呢?
计算机其实是接受用户输入指令与数据,经过中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息。因此,只要有输入设备及输出设备,让你可以输入数据使该机器产生信息的就是一台计算机。根据这个定义,简易型加减乘除计算机、电话用的手机、卫星定位系统都是计算机。
一、计算机硬件的五大单元
计算机由输入单元、输出单元、CPU内部的控制单元、算术逻辑单元与内存五大部分。
整台主机的重点在于中央处理器,CPU为一个具有特定功能的芯片,里头含有微指令集。如果想要让主机进行什么特异的功能,就要参考CPU是否有相关配置的微指令集。由于CPU的工作主要在于管理与运算,因此CPU内可分为两个主要的单元,分别是算术逻辑单元与控制单元。其中算术逻辑单元主要负责程序运算与逻辑判断,控制单元则主要协调各uj组件与各单元间的工作。
既然CPU的重点是进行运算与判断,那么被运算与判断的数据是从哪里来的呢?CPU读取的数据都是从内存中读取来的。内存内的数据则是从输入单元输进来的。而CPU处理完毕的数据也必须要先写回内存中,最后数据才从内存传输到输出单元。
二、CPU
1、CPU种类
CPU种类主要分为精简指令集(RISC)与复杂指令集(CISC)两种。其中CISC以Intel,AMD的X86 CPU为代表,而RISC以ARM,IBM Power为代表。
RISC中,微指令集较为精简,每个指令的执行时间很短,完成的操作也很单纯,指令的执行性能较佳;但是若要做复杂的事情,就要多个指令来完成。
CISC中,每个小指令可以执行一些低阶的硬件操作,指令数目多而复杂,每条指令的长度并不相同。因为指令执行较为复杂,所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。
举一个例子,CISC提供的乘法指令,调用时可完成内存a和内存b中的两个数相乘,结果存入内存a,需要多个CPU周期才可以完成;而RISC不提供“一站式”的乘法指令,需调用四条单CPU周期指令完成两数相乘:内存a加载到寄存器,内存b加载到寄存器,两个寄存器中数相乘,寄存器结果存入内存a。
2、CPU的“外频”与“倍频”
所谓的外频指的是CPU与外部组件进行数据传输/运算时的速度,倍频则是CPU内部用来加速工作性能的一个倍数,两者相乘才是CPU的频率。比如说,一个CPU的频率是3.0GHZ,而外频是333MHz,则倍频就是9倍。
3、32位与64位
CPU运算的数据是由内存提供的,内存与CPU的通信速度依靠的是外部频率,那么每次工作可以传送的数据量有多大就是总线的功能了。一块主板芯片组分为北桥与南桥,北桥的总线被称为系统总线,因为是内存传输的主要信道,所以速度较快;南桥就是所谓的输入输出(I/O)总线,主要用于“联系”硬盘、USB等接口设备。
北桥所支持的频率我们称为前端总线速度,而每次传送的位数则是总线宽度。亦每秒钟可传送的最大数据量。目前常见的总线宽度有32/64位。
与总线宽度相似,CPU每次能够处理的数据量称为字组大小,字组大小依据CPU的设计而有32位/64位。我们现在所称的32位或者64位主要是依据CPU解析的字组大小而来的。
三、内存
CPU所使用的数据都是来自内存,不论是软件程序还是数据,都必须要读入内存后CPU才能利用。个人计算机的内存组件为动态随机访问内存(DRAM),随机访问内存只有在通电时才能记录与使用,断电后数据就消失了,这种RAM也称挥发性内存。
DRAM与SRAM
除了内存之外,我们的计算机当中还有很多“内存”,其中包括CPU内的第二层高速缓存。我们现在知道CPU的数据都是由内存提供的,但内存的数据毕竟得经由北桥送到CPU内。如果某些常用的的程序或数据可以放置到CPU内部,那CPU数据的读取就不用经过北桥了,这就是第二层高速缓存的设计理念。因为第二层缓存集成到CPU内部,所以他的速度必须要与CPU频率相同。使用DRAM是无法达到这个频率速度的,此时就需要静态随机访问内存(SRAM)帮忙了。
SRAM在设计上使用的晶体管数量较多,价格较高,且不易做成大容量,不过由于其速度较快,因此集成到CPU内成为高速缓存以加快数据的访问是个不错的方式。
四、操作系统
1、操作系统内核(Kernel)
。操作系统其实也是一组程序,这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件。如果说没有软件的计算机就是一堆废铁,那么操作系统的功能就是让CPU可以开始判断逻辑与运算数值,让内存可以开始加载/读出数据与程序代码,让硬盘可以开始被访问。总之,硬件的所有操作都必须要通过这个操作系统来完成。
以上的功能就是操作系统的内核了,一个计算机能不能做到某些事情,都与内核有关。只有内核提供了相关功能,计算机才能完成。但是单有内核我们用户也不知道能做啥事的。因为内核主要在于管控硬件与提供相关的能力,这些管理的操作是非常重要的,如果用户能够直接使用到内核的话,万一用户不小心将内核程序停止或破坏,将会导致整个系统的崩溃。因此内核程序所放置到内存当中的区块是受保护的,并且开机后就一直驻在内存当中。
2、系统调用(System Call)
既然计算机的硬件都是由内核管理,那么想要开发软件的话,要怎么办呢?为了解决这个问题,操作系统通常会提供一整组的开发接口给工程师来开发软件,工程师只需要遵守该开发接口那就很容易开发软件了。举例来说,我们学习C程序,只需要学习C语言的函数就可以了,不用考虑其他内核的相关功能,因为内核的系统调用接口会主动将C程序的相关语法转换为内核可以了解的任务函数,那内核就能自然而然地运行程序了。
操作系统的内核层直接参考硬件规格写成,所以同一操作系统程序不能够在不一样的硬件架构下运行。应用程序的开发都是参考操作系统提供的开发接口,所以该应用程序只能在该操作系统上面运行而已,不可以在其他操作系统上面运行的。