计算机系统基础

  计算机是一个非常广泛的概念,大到占用数层楼的用于科学计算的超级计算机,小到手机上的前嵌入式芯片都可以称为计算机。虽然它们在外形、结构以及性能上都有很大的差异,但是它们都有计算的概念。现在我们讨论一下计算机系统的基础,主要分为硬件部分和软件部分,为接下来的深入学习做一点知识储备。

  一:硬件部分

      撇开计算机硬件中纷繁复杂的各种设备、芯片以及外围接口等,站在软件开发者的角度看,我们只需要抓住硬件的几个关键部分:中央处理器CPU、内存和I/O控制芯片以及设备,这三个部分几乎就是计算机的核心了。

  1.内存。内存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序要处理的数据,从物理上来说,内存是由一组动态随机存取存储器(DRAM)芯片组成,从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的地址,以便查询,这些地址是从零开始的。

   2.中央处理器CPU。简称处理器,是解释存储在内存中的指令的引擎。处理器从程序计数器(PC)指向的存储器处读取指令,执行该指令指示的简单操作,然后更新PC,使其指向下一条指令,而这一条指令并不一定与存储器中刚刚执行的指令相邻。随着制造CPU的工艺到达了物理上的极限,CPU的频率不再快速增长,这样的情况下,为了提高计算机的运行速度,多核计算机应运而生。

   3.I/O设备。输入/输出(I/O)设备是系统与外部世界的联系通道,作为用户输入的键盘和鼠标、作为用户输出的显示器以及用于长期存储数据和程序的磁盘都是I/O设备。每一个I/O设备都通过一个控制器或适配器与I/O总线相连,而控制器和适配器的功能就是在I/O总线和I/O设备之间传递消息,这样CPU便可以通过I/O总线来与I/O设备通信。这里将会涉及到非阻塞型I/O和阻塞性I/O等概念,以后会深入理解。

  二:软件部分

      系统软件这个概念比较模糊,传统意义上一般将拥有管理计算机本身的软件称为系统软件,以区别普通的应用程序。系统软件可以分为两块,一块是平台性的,比如操作系统内核、驱动程序、运行库以及数以千计的系统工具;另一块是用于程序开发的,比如编译器、汇编器、链接器等开发工具和开发库。

       “计算机的任何问题都可以通过增加一个间接的中间层来解决”。这句话几乎概括了计算机系统软件体系的所有设计要点,整个体系都是按照严格的层次结构来设计的。

                                                                        计算机软件体系结构

                                                                                             图1-1 计算机软件体系结构

  由图1-1 易知每个层次之间都需要相互通信,既然要相互通信就必须有一个通信协议,一般我们称其为接口。接口的上面那一层是接口的使用者,接口的下面那一层是接口的提供者,由它来定义接口。在层次体系中,接口是被精心设计过的,尽量保持稳定不变,那么理论上层次之间只要遵循这个接口,任何一个层都可以被修改和替换。除了硬件和应用程序,其他都是中间层,每个中间层都是对它下面那层的包装与扩展。从整个层次结构上来看,开发工具与应用程序是属于同一个层次的,因为它们都使用同一个接口:操作系统应用程序编程接口。应用程序编程接口的提供者是运行库。什么样的运行库提供什么样的API,例如Linux下的Glibc提供POSIX的API。Windows的运行库提供windows的API。运行库使用操作系统提供的系统调用接口。另外,操作系统内核层对于硬件来说是硬件接口的使用者,而硬件是接口的定义者。硬件的接口定义决定了操作系统内核,具体来说就是驱动程序如何与硬件交互通信。硬件的生产厂商提供硬件规格,操作系统和驱动程序开发者通过阅读硬件规格来编写操作系统和驱动程序。

  

                                                                       

 

posted @ 2015-12-31 11:10  niuluoyu  阅读(289)  评论(0编辑  收藏  举报