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

news2024/11/13 22:07:11

计算机系统的层次结构

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis(13)| 主从复制

关键词:主从复制,主从数据一致性,同步 带着问题阅读 主从复制解决了什么问题?主从复制的原理(过程)是什么?主从切换时是如何减少数据丢失的 前言 我在前已经给大家图解了 AOF 和 RDB&#x…

创新之光闪耀,点赋科技在第十三届创新创业大赛中绽放光彩

近日,第十三届创新创业大赛决赛落下帷幕,这场充满激情与挑战的赛事吸引了众多优秀企业参与角逐。在激烈的竞争中,点赋科技脱颖而出,荣获第三名的佳绩。 创新创业大赛一直是企业展示实力、交流创新理念的重要平台。本次大赛中&…

p2p、分布式,区块链笔记: Merkle-DAG和Merkle-Tree的区别与联系

Merkle-DAG和Merkle-Tree的区别与联系 结构: Merkle-Tree 是一种二叉树结构,每个非叶子节点是其子节点哈希的哈希。它具有层次结构,通常用于验证数据的完整性。Merkle-DAG(有向无环图)是一种更通用的图结构,其一个节点…

142. Go操作Kafka(confluent-kafka-go库)

文章目录 Apache kafka简介开始使用Apache Kafka构建生产者构建消费者 总结 之前已经有两篇文章介绍过 Go如何操作 kafka 28.windows安装kafka,Go操作kafka示例(sarama库) 51.Go操作kafka示例(kafka-go库) Apache ka…

django外键表查询

Django外键(ForeignKey)操作以及related_name的作用-CSDN博客 django模型中外键操作_django的model的contain外键-CSDN博客 通过基本表可以查外键表 删基本表可以删外键表

【Redis】Redis 持久化 AOF、RDB—(七)

目录 一、AOF 日志二、RDB 内存快照 Redis 一旦服务器宕机,内存中的数据将全部丢失,从后端数据库恢复这些数据,对数据库压力很大,且性能肯定比不上从 Redis 中读取,会拖慢应用程序。所以,对 Redis 来说&…

临时性解决斐讯K3 路由器端口转发限制

几年前,原来买的斐讯路由器被我折腾坏掉了。然后那时候刚好K3出来。差不多2000块,因为之前的一个路由器顺利下车,然后就傻傻的上了K3的车。结局,你懂的。 最近因为需要,在折腾远程办公,大概目的就是方便连…

Python | Leetcode Python题解之第386题字典序排数

题目&#xff1a; 题解&#xff1a; class Solution:def lexicalOrder(self, n: int) -> List[int]:ans [0] * nnum 1for i in range(n):ans[i] numif num * 10 < n:num * 10else:while num % 10 9 or num 1 > n:num // 10num 1return ans

pycharm破解教程

下载pycharm https://www.jetbrains.com/pycharm/download/other.html 破解网站 https://hardbin.com/ipfs/bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i/ 点击下载破解程序 安装pycharm 自己选择安装路径 安装完成后运行破解程序 等到Done图标出现 选择Ac…

数据安全法实施三周年 | 天空卫士引领关键技术突破

2024.09.01星期日 三年前的今天数据安全法正式实施&#xff0c;标志着我国数据安全防护体系迈入了一个崭新的发展阶段。 《数据安全法》提出&#xff1a;国家建立数据分类分级保护制度&#xff0c;对数据实行分类分级保护。建立健全全流程数据安全管理制度&#xff0c;组织开展…

NumPy实现线性回归

1 单变量线性回归 1.1 sklearn实现(最小二乘法) import osimport pandas as pd import matplotlib.pyplot as plt import syscurrent_diros.getcwd() pathcurrent_dir\\"Salary Data.csv"def plot_data(path):tablepd.read_csv(path)experience table["Exper…

六、Selenium操作指南(三)

文章目录 七、模拟鼠标操作&#xff08;一&#xff09;左键 click()&#xff08;二&#xff09;右键 context_click()&#xff08;三&#xff09;双击 double_click()&#xff08;四&#xff09;拖拽 drag_and_drop(source,target)&#xff08;五&#xff09;悬停 move_to_elem…

python-禁止抽烟

题目描述 小理的朋友有 n 根烟&#xff0c;他每吸完一根烟就把烟蒂保存起来&#xff0c;k&#xff08; k>1&#xff09;个烟蒂可以换一个新的烟&#xff0c;那么小理的朋友最终能吸到多少根烟呢&#xff1f; 与某些脑筋急转弯不同的是&#xff0c;小理的朋友并不能从异次元借…

AI 通过python脚本自动化导出交易软件某一天的分笔成交明细

一.背景需求 打开交易软件,我们想要导出非今日的日线股票成交分笔明细,其实,很麻烦的。你得在日线图上点击某一天的柱状图,然后双击,就会出现当日的成交明细,然后导出。如果你想到导出30天或者1年的数据呢?你难道盯着电脑一步一步的操作?不,我不允许你还不知道用pytho…

应急响应-爆破漏洞应急响应流程(以SSH爆破为例)

目录 概述研判分析登录成功登录失败历史命令authorized_keys 定损止损攻击链路还原清理恢复总结复盘参考 概述 爆破漏洞是比较常见漏洞&#xff0c;端口开放&#xff0c;管理后台没有做登录频率限制等情况都可能遭受到爆破攻击&#xff0c;本文以SSH爆破为例&#xff0c;介绍下…

【SpringCloud Alibaba】(十二)学习 Sleuth + ZipKin

目录 1、ZipKin 核心架构1.1、ZipKin 概述1.2、ZipKin 核心架构 2、集成 ZipKin2.1、下载安装 ZipKin 服务端2.2、集成 ZipKin 客户端 3、ZipKin 数据持久化3.1、ZipKin 数据持久化到 MySQL 在前面整合 Sleuth 实现链路追踪时&#xff0c;我们是通过查看日志的情况来了解系统调…

【书生大模型实战营】进阶岛 第2关 Lagent 自定义你的 Agent 智能体

文章目录 【书生大模型实战营】进阶岛 第2关 Lagent 自定义你的 Agent 智能体学习任务Lagent 介绍环境配置Lagent Web Demo 使用基于 Lagent 自定义智能体 【书生大模型实战营】进阶岛 第2关 Lagent 自定义你的 Agent 智能体 学习任务 使用 Lagent 自定义一个智能体&#xff…

Nginx: 负载均衡基础配置, 加权轮序, hash算法, ip_hash算法, least_conn算法

负载均衡 在真正的反向代理场景中&#xff0c;必然涉及到的一个概念&#xff0c;就是负载均衡所谓负载均衡&#xff0c;也就是将Nginx的请求发送给后端的多台应用程序服务器通常的应用程序服务器&#xff0c;后面的每台服务器都是一个同等的角色&#xff0c;提供相同的功能 用…

阿里巴巴发布 Qwen2-VL 人工智能模型,具备先进的视频分析和推理能力

中国阿里巴巴集团的云计算部门阿里云周四宣布推出一款名为 Qwen2-VL 的新型人工智能模型&#xff0c;该模型具有高级视觉理解能力和多语言对话能力。 该公司在 Qwen-VL 人工智能模型的基础上&#xff0c;历时一年研发出了新模型&#xff0c;并表示它可以实现对长度超过 20 分钟…

easy_spring_boot Java 后端开发框架

Easy SpringBoot 基于 Java 17、SpringBoot 3.3.2 开发的后端框架&#xff0c;集成 MyBits-Plus、SpringDoc、SpringSecurity 等插件&#xff0c;旨在提供一个高效、易用的后端开发环境。该框架通过清晰的目录结构和模块化设计&#xff0c;帮助开发者快速构建和部署后端服务。…