计算机的基本组成

CPU(运算器,控制器) 存储器

1、首先为什么计算机是使用二进制而非十进制的?

因为CPU所利用的通信信号是利用电信号来进行标记的,而至今的技术无法精确地做到利用电荷数来标记区分,所以只能够使用简单的通与不通的原则来标记,故使用二进制来标识,无论电荷量为多少,通通都标记为1,不通则标记为0.


2、CPU是如何与存储器进行交互的,为什么需要存储器的存在?

CPU内部主要由运算器和控制器组成,运算器负责运算而控制器主要负责指挥运算器此时该做什么(如:到底是做加法还是做乘法),同时运算器所计算出来的结果需要存放起来可能后续程序需要用到故需要存储器的存在。


3、CPU如何识别所给的指令是来自哪一个设备的?

CPU上有许许多多的针脚,而这些针脚分别对应着不同的设备,通过一个特殊的装置-->控制芯片,从而使得CPU能够识别对应的指令是来自于哪一个设备的。


4、关于一些读取性能的优化

早先的北桥是用于连接CPU与内存,起到一个缓冲的作用,因为CPU的频率远远高于内存的频率。由于技术的发展,对于从硬盘上的读取速度有了较大的要求,随着SSD的出现,对于磁盘读取速度要求比较高的企业,便可以利用将SSD通过北桥直接与CPU进行交互,极大地提高了磁盘的读取速度。


5.程序的局部性原理

时间局部性:将刚刚访问过的数据缓存下来以备后续程序需要继续使用

空间局部性:程序访问了一个数据,顺带把此数据旁的数据一同读取下来

此机制在一定程度上提高了程序的运行效率


6、机器语言与高级语言

早先的机器语言晦涩难懂,对于程序员来说是一种折磨,故对于各个CPU的架构厂商来说分别针对自己开发的架构开发了一套微码(汇编语言),后来由于不同的CPU架构之间所开发的程序无法相互之间运行,为了实现程序的移植出现了高级语言(如C/C++),但是不同的架构如何实现对于高级语言来说如何把它们当成一致呢?故在其之间需要一个磨合机制---API。

API:提供一组已经编译好的库,以供程序调用。


7、常见的硬件架构

ARM:常用于手机等移动设备

X86 32位

X86 64位 也称为AMD64位

alpha  HP公司出产

安腾

UltraSparc

Power: IBM出产,用于高性能服务器

M68000 也称M68K

PowerPC


8、在Windows上用C编写的程序能够在Linux下运行吗?

由于C语言编程是利用已编译好的API,通过调用API来实现对自己编写的程序的实现,而在Windows上是利用Windows API来实现调用的而Linux是利用Linux API来实现调用的,如果两者调用的库一致的话则可以运行否则无法运行。