CPU执行指令的过程

通过前面两篇文章的介绍,我们已经认识到了:可执行程序通过作业调度装入内存,操作系统为进程创建虚拟地址空间,分配物理内存,建立页表(映射关系),申请并初始化PCB,开始调度进程。

大概结构如图:

当CUP调度此进程时,将PCB内的硬件上下文数据拷贝到CPU内部的寄存器上,开始逐句执行进程的指令代码。

依次介绍CPU中几种重要的寄存器:

  1. PC:程序计数器,存放进程当前要执行指令的地址。
  2. IR:指令寄存器,存放进程从内存中取回来,要被执行的指令。
  3. SP:堆栈指针寄存器,用于存放进程的栈顶地址。
  4. MAR:用于存放将要被访问的内存单元的地址。
  5. MDR:用于存放最近从内存中读取的内容。
  6. 条件码寄存器:CPU根据最近的运算结果设置的硬件位。

指令的格式:

下面描述指令的执行过程(指令周期):

取指周期:将内存中的指令取回来至IR

  1. CPU调度该进程,将PCB内的硬件上下文数据拷贝给CPU内的寄存器。
  2. PC寄存器存放着待执行指令的地址。
  3. 通过硬件线路将地址传送给MAR。
  4. 控制单元CU通过总线向主存发送读命令。
  5. 将MAR所指向的内存单元的数据通过总线读取到MDR中。
  6. 将MDR的数据送入IR。

间址周期:

如果地址码不是有效地址,而是一个间接地址(这个地址指向的内存单元中存放着有效地址),则会存在间址周期(负责将有效地址取回CPU中)。

  1. 将IR中的地址码部分送至MAR
  2. 控制单元CU通过总线向主存发送读命令。
  3. 将MAR所指向的内存单元的有效地址通过总线读取到MDR中。
  4. 将MDR中的有效地址送至IR。

执行周期:执行取回来的指令

将IR中的操作码部分送至指令译码器,产生特定指令的控制电位,将其送至微操作控制线路上,在时序部件定时信号的作用下,产生具体的操作控制信号。

请注意:以上所谈到的指令中的地址码,以及指令本身的地址,均是进程的虚拟地址空间中的地址,在CPU视角只需要对这些虚拟地址进行操作即可,具体物理内存地址在CPU和内存之间有MMU来进行虚拟地址和物理地址的转换(通过PCB内的页表)。

进程虚拟地址空间:

操作系统为每个进程提供的一种抽象的内存管理方式,它允许每个进程拥有自己的地址空间,这个地址空间对进程来说是连续的,但实际上可能分散在物理内存中。

优点如下:

  1. 隔离性:每个进程的虚拟地址空间是独立的,一个进程不能直接访问另一个进程的虚拟内存,这提供了进程间的隔离,增强了系统的稳定性和安全性。

  2. 保护:操作系统可以通过虚拟地址空间来保护进程,防止进程间相互干扰。例如,一个进程不能访问或修改另一个进程的代码或数据。

  3. 简化内存管理:虚拟地址空间允许操作系统使用分页技术,将虚拟地址映射到物理地址,这样可以有效地管理内存资源,提高内存利用率。

  4. 动态内存分配:进程可以根据需要动态地申请和释放虚拟内存,操作系统负责将这些虚拟内存映射到物理内存中。

  5. 内存共享:操作系统可以通过映射相同的物理内存到不同进程的虚拟地址空间来实现内存共享。

  6. 内存保护:操作系统可以设置虚拟地址空间的不同区域为可读、可写或不可执行,以防止程序错误地访问或修改内存。

  7. 内存访问的局部性:操作系统可以根据程序访问虚拟内存的局部性原理,优化内存的分配和访问,提高性能。

  8. 支持多任务:虚拟地址空间使得操作系统可以在同一物理内存上同时运行多个进程,每个进程都认为自己拥有整个内存空间。

  9. 灵活性:虚拟地址空间允许操作系统实现多种内存管理策略,如分页、分段等,以适应不同的应用需求。

虚拟地址空间为进程提供了一个抽象的、易于管理的内存模型,同时也为操作系统提供了强大的内存管理能力。

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

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

相关文章

【MySQL】InnoDB内存结构

目录 InnoDB内存结构 主要组成 缓冲池 缓冲池的作用 缓冲池的结构 缓冲池中页与页之间连接方式分析 缓冲池如何组织数据 控制块初始化 页面初始化 缓冲池中页的管理 缓冲区淘汰策略 查看缓冲池信息 总结 变更缓冲区-Chang Buffer 变更缓冲区的作用 主要配置选项…

论文笔记 SuDORMRF:EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION

SUDORMRF: EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION 人的精神寄托可以是音乐,可以是书籍,可以是运动,可以是工作,可以是山川湖海,唯独不可以是人。 Depthwise Separable Convolution 深度分离卷积&a…

SpringBoot+React养老院管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.入住合同文件上传2.添加和修改套餐的代码3.查看入住记录代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootReact框架开发的养老院管理系统。首先…

w039基于Web足球青训俱乐部管理后台系统开发

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…

Go 语言已立足主流,编程语言排行榜24 年 11 月

Go语言概述 Go语言,简称Golang,是由Google的Robert Griesemer、Rob Pike和Ken Thompson在2007年设计,并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标,…

【java】链表:判断链表是否成环

问题: 分析: 这里我们还是定义快慢双指针 。 如果有环,快慢指针一定会相遇。 // 构建成环链表public void makeCircle(){Node node1new Node(1);Node node2new Node(2);Node node3new Node(5);Node node4new Node(6);Node node5new …

基于视觉智能的时间序列基础模型

GitHub链接:ViTime: A Visual Intelligence-Based Foundation Model for Time Series Forecasting 论文链接:https://github.com/IkeYang/ViTime 前言 作者是来自西安理工大学,西北工业大学,以色列理工大学以及香港城市大学的研…

006.精读《Apache Paimon Docs - Concepts》

文章目录 1. 引言2. 基本概念2.1 基本构成2.2 Schema2.3 Snapshot2.4 Manifest2.5 Data File2.6 Table2.7 File index 3.并发控制3.1 基本概念3.2 快照冲突3.3 文件冲突 4. 总结 1. 引言 在本期的技术深度解析中,我们将学习并且了解Apache Paimon 的基本概念&#…

RedHat7—Linux中kickstart自动安装脚本制作

本实验使用虚拟机版本为rhel7,从rhel7后的版本kickstart工具进行收费使用。 1.在VMware关闭dhcp自动获取ip地址功能 2.安装并启动httpd [rootlocalhost ~]# yum install httpd [rootlocalhost ~]# systemctl start httpd [rootlocalhost ~]#systemctl stop firewal…

数据集的重要性:如何构建AIGC训练集

文章目录 一、为什么数据集对AIGC如此重要?1. 数据决定模型的知识边界2. 数据质量直接影响生成效果3. 数据集多样性提升模型鲁棒性 二、构建AIGC训练集的关键步骤1. 明确目标任务和生成需求2. 数据源的选择3. 数据清洗与预处理4. 数据标注5. 数据增强 三、针对不同类…

结构化需求分析与设计

前言: 感觉书本上和线上课程, 讲的太抽象, 不好理解, 但软件开发不就是为了开发应用程序吗?! 干嘛搞这么抽象,对吧, 下面是个人对于软件开发的看法, 结合我的一些看法, 主打简单易懂, 当然,我一IT界小菜鸟, 对软件开发的认识也很浅显, 这个思维导图也仅仅是现阶段我的看…

docker-hub 无法访问,使用windows魔法拉取docker images再上传到linux docker环境中

云机的服务器是可以docker拉取镜像的,但是本地的虚拟机、物理服务器等网络环境不好的情况,是无法访问docker-hub的,即使更换了docker镜像源国内源也无法使用。 本文章使用 在魔法网络环境下的windows,下载docker images后&#xf…

LlamaIndex+本地部署InternLM实践

1.环境配置 1.1 配置基础环境 这里以在 Intern Studio 服务器上部署 LlamaIndex 为例。 首先,打开 Intern Studio 界面,点击 创建开发机 配置开发机系统 填写 开发机名称 后,点击 选择镜像 使用 Cuda11.7-conda 镜像,然后在资源…

MySql 日期周处理方式

MySql 日期周处理方式 最近在做数仓相关工作,最近遇到 几个问题, 1、计算指定日期是一年中的第几周,周一为周的第一天 2、计算周的开始时间,结束时间 3、计算周对应的年 比如 2023-01-01 WEEKOFYEAR(2023-01-01) 是2022年的52周&…

AI驱动的桌面笔记应用Reor

网友 竹林风 说,已经成功的用 mxbai-embed-large 映射到 text-embedding-ada-002,并测试成功了。不愧是爱折腾的人,老苏还没时间试,因为又找到了另一个支持 AI 的桌面版笔记 Reor Reor 简介 什么是 Reor ? Reor 是一款由人工智…

每日一博 - Java的Shallow Copy和Deep Copy

文章目录 概述创建对象的5种方式1. 通过new关键字2. 通过Class类的newInstance()方法3. 通过Constructor类的newInstance方法4. 利用Clone方法5. 反序列化 Clone方法基本类型和引用类型浅拷贝深拷贝如何实现深拷贝1. 让每个引用类型属性内部都重写clone()方法2. 利用序列化 概述…

Rewar Model的输出(不包含训练)

这里写自定义目录标题 介绍模型推理的输出过程方案原始Token输出RM输出(回归任务) 介绍 奖励函数模型 (Reward Model) 是人工智能 (AI) 中的一种方法,模型因其对给定提示的响应而获得奖励或分数。现在的文章清一色的讲解RM的训练&#xff0c…

【操作系统实验课】Makefile与编译

1. 创建项目结构 my_project 使用mkdir命令在根目录下创建项目my_project sudo mkdir /my_project 进入my_project目录 cd my_project src 在my_project目录下创建src子目录 sudo mkdir src 进入src目录 cd src root(根用户) 切换用户身份为root(根用户) root用户…

【H3C华三 】VRRP与BFD、Track联动配置案例

原创 厦门微思网络 组网需求 如图1所示,区域A和区域B用户所在网络的出口处部署了两台汇聚层设备(Device A和Device B)。 现要求使用VRRP与BFD、Track联动功能,实现以下需求: • 在Device A和Device B上分别配置两个…

LeetCode --- 143周赛

题目列表 3345. 最小可整除数位乘积 I 3346. 执行操作后元素的最高频率 I 3347. 执行操作后元素的最高频率 II 3348. 最小可整除数位乘积 II 一、最小可整除数位成绩I 由于本题的数据范围比较小,我们直接暴力枚举即可,代码如下 class Solution { p…