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

本文主要是介绍【计算机组成原理】计算机系统的层次结构——计算机软件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

计算机系统的层次结构

  • 导读
  • 一、计算机软件的分类
  • 二、计算机语言
  • 三、计算机系统的层次结构
    • 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.chinasem.cn/article/1127187

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们