大家好,很高兴又和大家见面啦!!!
在上一篇内容中我们介绍了计算机层次结构中硬件的组成。
随着“存储程序”这一概念的提出,于是计算机便逐渐演变成了现在的冯·诺依曼机的基本结构。
在早期的冯·诺依曼机中,主要是以运算器为核心,这样就导致了运算器在整个运行的过程中,主要起到了一个数据的转移的过渡角色,这样大大降低了运算器的使用效率;
为了改善这一问题,在后来的计算机中,便逐渐演变成了以存储器为核心的计算机结构,这样就能保证在整个运行的过程中,运算器只需要负责运算的工作即可,数据的转移、存储与过渡的工作则全部交由存储器来完成,大大提高了运算器的使用效率。
我们知道,一个完整的计算机系统是由硬件系统与软件系统共同构成,那么计算机软件系统又是如何构成的呢?在今天的内容中我们将会对计算机软件系统的相关内容进行学习;
计算机软件按其功能进行分类可以分为系统软件用于应用软件。
计算机语言作为程序员与计算机之间进行沟通的桥梁,在整个编程过程中起着一个十分重要的作用。从ENIAC
开始到现在,计算机在发展的同时,随着操作系统的出现,计算机语言也在不断的发展。计算机语言可以分为3个级别的语言:
在程序员的眼中,像机器语言与汇编语言属于低级的编程语言,其特点可以总结为语言的可读性不高,不容易被记忆与理解,而像C/C++/JAVA/Python
这种编程语言都属于是高级语言,其特点是语言的可读性高,容易被记忆与理解。
在计算机眼中,越是高级的语言,就越难被计算机给识别,因此,为了保证由各种语言编译的程序能够在计算机中正常运行,所有的程序都需要通过一定的方式将其转换成机器语言程序。而能够进行这种转换的软件系统倍称为翻译程序。翻译程序由以下三类:
对于C语言程序而言,它从完成编译到运行需要经过3个阶段:
.i
未后缀的文件.o
为后缀的汇编文件(Windows下生成的是.obj
文件).exe
为后缀的最终的可执行程序。类似于C语言程序这种由高级语言编写的能够一次性被翻译成机器语言程序的源程序,我们就可以将其称为编译程序;
而由Python编写的程序在执行时,会直接通过解释器将每一条语句翻译成对应的机器指令后立即执行。并且每一次运行该程序时,都需要借助翻译器完成一次翻译。类似于Python程序这种由高级语言编写的程序,每一次运行都需要借助解释器来完成翻译的源程序,我们就可以将其称为解释程序。
如果将高级语言比喻成计算机王国所使用的语言的话,那么这些翻译程序就是这类语言的翻译官。
从这两种实现方式上来看,很明显编译程序的执行效率要比解释程序的执行效率要高。
计算机是一个由硬件与软件组成的综合体。由于面对的应用范围越来越广,必须有复杂的系统软件和硬件的支持。由于软/硬件的设计者与使用者从不同的角度、用不同的语言来对待同一个计算机系统,因此他们看到的计算机系统的属性对计算机系统提出的要求也就各不相同。
计算机系统的多级层次结构的作用,就是针对上述情况,根据从各种角度所看到的机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统。
关于计算机系统的层次分层方式,目前尚无统一的标准,这里我们介绍如下图所示的层次结构:
在该多级层次结构中,微程序机器层为第一级,而高级语言层则为第五级。那从第一级到第五级分别代表什么意思呢?下面我们就一起来探讨一下;
我们知道对于一台计算机而言,它能够识别的计算机语言有且仅有机器语言这一种,而计算机在识别到二进制语言后,会将该语言的指令进行拆解,并由指定的硬件来执行拆解后的各个指令,如果我们将完整的二进制代码视作机器指令的话,那么经由计算机识别并拆解后的指令我们则可以将其认为是一条条的微指令;
因此由硬件直接识别并执行的微指令层为计算机系统的最底层,在其上层则是机器语言层,不管是微指令层还是机器语言层都是计算机系统的硬件层面;
在计算机系统的软件层面中,最上层的是通过高级语言程序来进行编程的高级语言层,像C语言程序这样的高级语言程序会借助编译程序被翻译成汇编语言程序,因此高级语言层的下一级则是汇编语言层,在由高级语言编写的程序中难免会涉及到一些系统调用的指令,因此在汇编语言层的下一级则是操作系统层。
在操作系统程序中,主要有机器指令与广义指令,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称为混合层。
一台没有配备软件的存硬件计算机系统称为裸机,而第3层~第5层称为虚拟机,简单来说就是由软件实现的机器。
在虚拟机器中,观察者只能通过该层的语言来了解与使用计算机,而不必关心下一层是如何工作的,也就是说,对于高级语言层的使用者来说,他们能够直观的感受到的是计算机是能够识别他们所编写的高级语言程序的,但是他们并不会关心计算机从汇编到机器语言的整个识别过程;同理,对于汇编语言层的使用者来说,他们能够直观的感受到的是计算机是能够识别他们所编写的汇编语言程序的,但是他们并不关心计算机将其翻译成机器语言的过程。
在不同的层次之间,层次与层次的关系是紧密相连的,下层是上层的基础,而上层则是下层的扩展。
简单的理解就是,没有硬件能够直接识别与执行的微指令,就不存在计算机能识别的机器指令,而多条微指令结合则形成了机器指令,没有机器语言编写的机器指令,就不会存在操作系统,没有操作系统,就不会有后面的汇编语言甚至是高级语言。因此我们说,下层是上层的基础,上层是下层的扩展。
软件与硬件之间的界面就是指令集体系结构(ISA),ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。可以看出,ISA是指软件能够感知的部分,也称为软件可见部分。
在今天的内容中我们介绍了计算机软件与计算机层次结构的相关内容:
今天的内容到这里就全部结束了,在下一篇内容中我们将介绍《计算机系统的工作原理》的相关内容,大家记得关注哦!如果大家喜欢博主的内容,可以点赞、收藏加评论支持一下博主,当然也可以将博主的内容转发给你身边需要的朋友。最后感谢各位朋友的支持,咱们下一篇再见!!!