【计算机组成原理】计算机系统的层次结构——计算机软件

计算机系统的层次结构

  • 导读
  • 一、计算机软件的分类
  • 二、计算机语言
  • 三、计算机系统的层次结构
    • 3.1 从计算机语言的角度来理解多级层次结构
    • 3.2 计算机层次之间的关系
    • 3.3 指令集体系结构(ISA)
  • 结语

封面

导读

大家好,很高兴又和大家见面啦!!!

在上一篇内容中我们介绍了计算机层次结构中硬件的组成。

随着“存储程序”这一概念的提出,于是计算机便逐渐演变成了现在的冯·诺依曼机的基本结构。

在早期的冯·诺依曼机中,主要是以运算器为核心,这样就导致了运算器在整个运行的过程中,主要起到了一个数据的转移的过渡角色,这样大大降低了运算器的使用效率;

为了改善这一问题,在后来的计算机中,便逐渐演变成了以存储器为核心的计算机结构,这样就能保证在整个运行的过程中,运算器只需要负责运算的工作即可,数据的转移、存储与过渡的工作则全部交由存储器来完成,大大提高了运算器的使用效率。

我们知道,一个完整的计算机系统是由硬件系统与软件系统共同构成,那么计算机软件系统又是如何构成的呢?在今天的内容中我们将会对计算机软件系统的相关内容进行学习;

一、计算机软件的分类

计算机软件按其功能进行分类可以分为系统软件用于应用软件。

  • 系统软件是一组保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户使用。系统软件主要有操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序等;
  • 应用软件是指用户为解决某个应用领域中的各类问题而编制的程序,如各种科学计算类程序、工程设计类程序、数据统计与处理程序等。

二、计算机语言

计算机语言作为程序员与计算机之间进行沟通的桥梁,在整个编程过程中起着一个十分重要的作用。从ENIAC开始到现在,计算机在发展的同时,随着操作系统的出现,计算机语言也在不断的发展。计算机语言可以分为3个级别的语言:

  • 机器语言(又称二进制代码语言)——机器语言由代表电信号的0和1组成,是计算机唯一可以直接识别和执行的语言。编程人员在进行机器语言编程时,需要记忆每条指令所对应的二进制编码,因此机器语言对于计算机来说是可读性很强的语言,但是对于编程人员来说则是可读性极差的语言;
  • 汇编语言——汇编语言使用英文单词或其缩写代替二进制的指令代码。相比于机器语言而言,汇编语言对于编程人员来说,可读性更强,更容易被人们记忆与理解,但是计算机却无法直接识别。因此经过汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为机器语言程序后,才能在计算机的硬件系统上执行;
  • 高级语言——高级语言是为了方便程序设计人员写出解决问题的处理方案与解题过程的的程序。对于编程人员而言,高级语言比汇编语言更加容易理解与记忆,但是对于计算机而言,由高级语言编写的程序则需要通过一定的方式转换成机器语言后,才能够被识别与运行。

在程序员的眼中,像机器语言与汇编语言属于低级的编程语言,其特点可以总结为语言的可读性不高,不容易被记忆与理解,而像C/C++/JAVA/Python这种编程语言都属于是高级语言,其特点是语言的可读性高,容易被记忆与理解。

在计算机眼中,越是高级的语言,就越难被计算机给识别,因此,为了保证由各种语言编译的程序能够在计算机中正常运行,所有的程序都需要通过一定的方式将其转换成机器语言程序。而能够进行这种转换的软件系统倍称为翻译程序。翻译程序由以下三类:

  • 汇编程序(汇编器)——将汇编语言程序翻译成机器语言程序。
  • 解释程序(解释器)——将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
  • 编译程序(编译器)——将高级语言程序翻译成汇编语言或机器语言程序。

对于C语言程序而言,它从完成编译到运行需要经过3个阶段:

  • 预处理阶段:源文件与头文件会被处理成.i未后缀的文件
  • 编译阶段:将预处理后的文件经过进一步处理后生成.o为后缀的汇编文件(Windows下生成的是.obj文件)
  • 链接阶段:多个目标文件和链接库一起经过链接器处理生成.exe为后缀的最终的可执行程序。

类似于C语言程序这种由高级语言编写的能够一次性被翻译成机器语言程序的源程序,我们就可以将其称为编译程序;

而由Python编写的程序在执行时,会直接通过解释器将每一条语句翻译成对应的机器指令后立即执行。并且每一次运行该程序时,都需要借助翻译器完成一次翻译。类似于Python程序这种由高级语言编写的程序,每一次运行都需要借助解释器来完成翻译的源程序,我们就可以将其称为解释程序。

如果将高级语言比喻成计算机王国所使用的语言的话,那么这些翻译程序就是这类语言的翻译官。

  • 对于编译程序这类翻译官而言,他们是选择在接收到翻译任务时,一次性将所有的内容完成翻译并记录在可执行程序中,当计算机每次需要读取这些信息时,只需要读取可执行程序中的内容即可;
  • 对于解释程序这类翻译官而言,他们则是选择的同声传译,计算机每读取到一条语句,翻译官则会同步翻译一条语句,因此,当计算机每一次需要读取这些信息时,解释程序都需要对所有的内容进行一次同步翻译。

从这两种实现方式上来看,很明显编译程序的执行效率要比解释程序的执行效率要高。

三、计算机系统的层次结构

计算机是一个由硬件与软件组成的综合体。由于面对的应用范围越来越广,必须有复杂的系统软件和硬件的支持。由于软/硬件的设计者与使用者从不同的角度、用不同的语言来对待同一个计算机系统,因此他们看到的计算机系统的属性对计算机系统提出的要求也就各不相同。

计算机系统的多级层次结构的作用,就是针对上述情况,根据从各种角度所看到的机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统。

关于计算机系统的层次分层方式,目前尚无统一的标准,这里我们介绍如下图所示的层次结构:

计算机层次结构
在该多级层次结构中,微程序机器层为第一级,而高级语言层则为第五级。那从第一级到第五级分别代表什么意思呢?下面我们就一起来探讨一下;

3.1 从计算机语言的角度来理解多级层次结构

我们知道对于一台计算机而言,它能够识别的计算机语言有且仅有机器语言这一种,而计算机在识别到二进制语言后,会将该语言的指令进行拆解,并由指定的硬件来执行拆解后的各个指令,如果我们将完整的二进制代码视作机器指令的话,那么经由计算机识别并拆解后的指令我们则可以将其认为是一条条的微指令;

因此由硬件直接识别并执行的微指令层为计算机系统的最底层,在其上层则是机器语言层,不管是微指令层还是机器语言层都是计算机系统的硬件层面;

在计算机系统的软件层面中,最上层的是通过高级语言程序来进行编程的高级语言层,像C语言程序这样的高级语言程序会借助编译程序被翻译成汇编语言程序,因此高级语言层的下一级则是汇编语言层,在由高级语言编写的程序中难免会涉及到一些系统调用的指令,因此在汇编语言层的下一级则是操作系统层。

在操作系统程序中,主要有机器指令与广义指令,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称为混合层。

3.2 计算机层次之间的关系

一台没有配备软件的存硬件计算机系统称为裸机,而第3层~第5层称为虚拟机,简单来说就是由软件实现的机器。

在虚拟机器中,观察者只能通过该层的语言来了解与使用计算机,而不必关心下一层是如何工作的,也就是说,对于高级语言层的使用者来说,他们能够直观的感受到的是计算机是能够识别他们所编写的高级语言程序的,但是他们并不会关心计算机从汇编到机器语言的整个识别过程;同理,对于汇编语言层的使用者来说,他们能够直观的感受到的是计算机是能够识别他们所编写的汇编语言程序的,但是他们并不关心计算机将其翻译成机器语言的过程。

在不同的层次之间,层次与层次的关系是紧密相连的,下层是上层的基础,而上层则是下层的扩展。

简单的理解就是,没有硬件能够直接识别与执行的微指令,就不存在计算机能识别的机器指令,而多条微指令结合则形成了机器指令,没有机器语言编写的机器指令,就不会存在操作系统,没有操作系统,就不会有后面的汇编语言甚至是高级语言。因此我们说,下层是上层的基础,上层是下层的扩展。

3.3 指令集体系结构(ISA)

软件与硬件之间的界面就是指令集体系结构(ISA),ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。可以看出,ISA是指软件能够感知的部分,也称为软件可见部分。

结语

在今天的内容中我们介绍了计算机软件与计算机层次结构的相关内容:

  • 计算机软件按其功能可分为系统软件与应用软件;
  • 计算机语言可分为三类:
    • 机器语言——计算机唯一能识别与执行的语言
    • 汇编语言——通过英文单词或其缩写代替二进制的指令代码
    • 高级语言——方便程序设计人员写出解决问题的处理发难与解题过程的程序
  • 能够将高级语言翻译成机器语言的翻译程序分为三类:
    • 汇编程序——将汇编语言翻译成机器语言的程序
    • 解释程序——将源程序中的语句按执行顺序逐条翻译成机器语言并有计算机立即执行的程序
    • 编译程序——将高级语言翻译成汇编语言或者机器语言的程序
  • 计算机系统的多级层次结构并未有统一的标准,在今天的内容中介绍的层次结构为:
    • 虚拟机器M4(高级语言机器)——由编译程序翻译成汇编语言程序
    • 虚拟机器M3(汇编语言机器)——由汇编程序翻译成机器语言程序
    • 虚拟机器M2(操作系统机器)——由机器语言直接解释操作系统
    • 传统机器M1(机器语言机器)——用微程序解释机器指令
    • 微程序机器M0(微指令系统)——由硬件直接执行微指令
  • 计算机系统的层次结构中,下层是上层的基础,上层是下层的扩展,因此层次之间的关系紧密。

今天的内容到这里就全部结束了,在下一篇内容中我们将介绍《计算机系统的工作原理》的相关内容,大家记得关注哦!如果大家喜欢博主的内容,可以点赞、收藏加评论支持一下博主,当然也可以将博主的内容转发给你身边需要的朋友。最后感谢各位朋友的支持,咱们下一篇再见!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/413884.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

市占率最高的显示器件,TFT_LCD的驱动系统设计--Part 1

目录 一、简介 二、TFT-LCD驱动系统概述 (一)系统概述 (二)设计要点 二、扫描驱动电路设计 (一)概述 扫描驱动电路的功能 扫描驱动电路的组成部分 设计挑战 驱动模式 (二&#xff09…

多目标应用:基于MOPSO的移动机器人路径规划研究(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

Ubuntu上qt使用SSH样式表

SSH样式表 如果学习过web的同学都知道,我们在学习HTML的时候会用到样式表,我们使用它来更改我们的颜色、大小、背景等等。上到后面,老师会说:我们如果在HTML文件中编辑太多的样式,就会让代码看起来非常的繁琐&#xf…

学习计算机网络

a类0~127,b类128~191,c类192~223 网络地址:看子网掩码,分网络位和主机位,后面是主机位,主机位全部为0,网络地址。 直接广播地址:看子网掩码,分网络位和主机位&#xff…

自建一款开源音乐服务-Navidrome

自建一款开源音乐服务-Navidrome Navidrome,一个开源的音乐服务器和播放器,提供了一个优雅且功能丰富的解决方案,让你的音乐库无论在何处都能触手可及。本文将带你一步步搭建自己的Navidrome音乐服务器,让你的音乐生活更加自由和…

【Qt】关于QMenuBar创建方式的讨论

关于QMenuBar创建方式的讨论 如果在创建项目的时候,没有勾选自动生成ui文件,此时上述代码是正确的;而如果勾选了自动生成ui文件,上述代码则会出现内存泄漏的问题。因为Qt已经生成了一个QMenuBar了 由于之前程序已经自己创建好了一…

STM32 系列MCU 开发利器 STM32CubeIDE

前言 由于自己接触较多的 ARM 系列芯片主要是 STM32 系列的,接触过 STM32 F1、F4、L4、H7 等几个系列,使用的 开发工具,主要是 Keil MDK5、IAR,所以也比较关注开发工具的使用。 Keil MDK5、IAR 属于商用收费的功能强大的IDE&…

【MATLAB】matlab生成的图像如何导出(三种方法教会你)

我们经常使用matlab生成各类的图,如何将其导出,导出为何种类型。 方法一:选择 matlab 生成的图形界面 " Figure 1 " 的菜单栏 " 编辑 " — " 复制图窗 " , 就可以将图像拷贝到 Word 文档中 打开 Word 文档 ,…

单片机编程魔法师-消息处理

消息机制 消息处理的编程思路是当某件事产生后只发送一条事件产生消息以通知相应执行机构执行的一种编程思路。 消息定义 什么是消息,消息是一个指示,可以是数字,字符串,字符或者是任何形式的其他标识符 消息定义的形式与消息…

简易的 Websocket + 心跳机制 + 尝试重连

文章目录 演示大纲基础 WebSocket前端: 添加心跳机制前端: 尝试重新连接历史代码 还没有写完,bug 是有的,我在想解决办法了… 演示 大纲 基础的 webSocket 连接前后端:添加心跳机制后端无心跳反应,前端尝试重新连接设置重新连接…

计算多图的等价无向图的邻接链表表示

计算多图的等价无向图的邻接链表表示 摘要:一、引言二、算法思路三、伪代码实现四、C代码实现五、算法分析六、结论摘要: 在图论中,多图(Multigraph)是一种允许边重复以及存在自循环边(即一个顶点到其自身的边)的图。给定一个多图的邻接链表表示,本文旨在探讨如何构造…

PHP软件下载-安装-环境配置

.1.下载 下载地址如下 windows.php.net - /downloads/releases/ 安装包如下. .2.安装 可以在D盘或者E盘的根目录创建一个自定义目录。注意文件夹目录中不能包含中文,不能包含空格等特殊字符。 版本说明: (1)ts表示非线程安全版本。这个安装包还指明了…

c++模拟实现数据结构之vector篇

那么本篇文章是带大家一起实现一下数据结构vector,那么我们现在就进入正题。 目录 接口介绍部分 增加 尾插 指定插入与头插 删除 尾删 指定位置删除 主要代码逻辑 增加 尾插 指定插入与头插 删除 尾删 指定位置删除 一些其他接口的代码逻辑 模拟实现…

django企业开发实战-学习小结

写在前面 初次阅读此书是三年前,当时没经历过完整的项目 觉得这书就是扯淡 后来经历过项目加班与毒打 今天再翻开此书 觉得实乃不可多得之物 花些时间啃下来吧 django版本 3.2 本博客开源项目地址 kimsmith/django企业实战 (gitee.com) 有的代码因为版本混乱报错…

Unity 3D学习资料集合

本文包含了unity3D 游戏开发相关的学习资料,包含了入门、进阶、性能优化、面试和书籍等学习资料,含金量非常高,在这里分享给大家,欢迎收藏。 学习社区 1.Unity3D开发者 Unity3D开发者论坛是一个专注于Unity引擎的开发者社区。在这…

VSCode设置复制 Ctrl+D想下复制

VSCode 默认向下复制当前行是 shift Alt ↓,但是我们习惯了IDE和webStrom的CtrlD的想下复制.下面是VSCode自定义快捷键. VSCode设置复制 CtrlD想下复制 1.文件->首选项->键盘快捷方式(ctrk 在案ctrs)2.输入 copy line down->右键->更改键绑定3.完成 1.文件->首…

探索《黑神话:悟空》背后的编程技术

《黑神话:悟空》作为一款备受期待的动作角色扮演游戏,以其卓越的视觉效果和流畅的游戏体验吸引了全球玩家的关注。这款游戏不仅在艺术设计和技术实现上展现了极高的水准,其背后的编程技术更是保证了游戏顺利运行和出色表现的关键因素。在这篇…

低代码技术新趋势——逆向工程

低代码的下一个趋势,应该是“逆向工程”,用户可以通过 可视化界面,逆向输出全栈工程代码。而标准的工程代码同样可以编译为支持可视化分析、编辑、调整的“无代码”程序。前一个是解释性语言向编译性语言的逆向工程。后者则是一个理论实践应用…

如何成为一个飞控算法工程师?

兄弟,这个问题问得好,但也别想着靠看几本书就能一步登天。飞控算法这玩意儿,真要干好了,不是简简单单几个公式几个库就能搞定的。你本科电子专业有点基础,玩过四轴飞行器也算是入门了,但要搞真算法&#xf…

ComfyUI:基于差分扩散的像素级图像修改

在几个月的沉寂之后,差分扩散(Differential Diffusion)被引入了。 玩了几天之后,我仍然对结果感到震惊。 这种新的先进方法允许以像素为基础进行更改,而不是以整个区域为基础进行更改。 另一种可能更通俗的说法&…