408 考研《操作系统》第三章第一节:内存

news2025/7/19 15:52:05

文章目录

  • 教程
  • 1. 内存的基础知识
    • 1.1什么是内存?有何作用?
    • 补充知识:几个常用的数量单位
  • 2. 进程的运行原理
    • 2.1 指令的工作原理
    • 2.2 逻辑地址vs物理地址
    • 2.3 从写程序到程序运行
    • 2.4 装入模块装入内存
    • 2.5 装入的三种方式
      • 2.5.1 ——绝对装入
      • 2.5.2 ——可重定位装入
      • 2.5.3 ——动态重定位
    • 2.6 链接的三种方式
    • 2.7 总结

教程

1.内存的基础知识 https://www.bilibili.com/video/BV1YE411D7nH/?p=33&share_source=copy_web&vd_source=d228985826b563972268952905224139

1. 内存的基础知识

在这里插入图片描述

1.1什么是内存?有何作用?

在这里插入图片描述
内存可存放数据。程序执行前需要先放到内存中才能被CPU处理——缓和CPU与硬盘之间的速度矛盾。
在这里插入图片描述

补充知识:几个常用的数量单位

在这里插入图片描述
补充知识:

在这里插入图片描述
注:有的题目会告诉我们内存的大小,让我们确定地址长度应该是多少(即要多少个二进制位才能表示相应数目的存储单元)

2. 进程的运行原理

2.1 指令的工作原理

指令的工作基于“地址”。每个地址对应一个数据的存储单元。

Tips:想深入了解可以学习汇编原理、计算机组成原理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可见,我们写的代码要翻译成CPU能识别的指令。这些指令会告诉CPU应该去内存的哪个地址读/写数据,这个数据应该做什么样的处理。在这个例子中,我们默认让这个进程的相关内容从地址#0开始连续存放,指令中的地址参数直接给出了变量 x 的实际存放地址(物理地址)。(在这个例子中,指令中直接给出了变量x的实际存放地址(物理地址)。但实际在生成机器指令的时候并不知道该进程的数据会被放到什么位置。所以编译生成的指令中一般是使用逻辑地址(相对地址)

思考:如果这个进程不是从地址#0 开始存放的,会影响指令的正常执行吗?

2.2 逻辑地址vs物理地址

宿舍四个人一起出去旅行,四个人的学号尾号分别是0、1、2、3。
住酒店时酒店给你们安排了4个房号相连的房间。四个人按学号递增次序入住房间。比如0、1、2、3号同学分别入住了5、6、7、8号房间。
四个人的编号0、1、2、3其实是一个“相对位置”,而各自入住的房间号是一个“绝对位置”。只要知道О号同学住的是房号为N的房间,那么M号同学的房号一定是N+M。
也就是说,只要知道各个同学的“相对位置”和“起始房号”,就一定可以算出所有同学的“绝对位置”。

在这里插入图片描述

2.3 从写程序到程序运行

在这里插入图片描述

编译:由编译程序将用户源代码编译成若干个目标模块(编译就是把高级语言翻译为机器语言

链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块

装入(装载):由装入程序将装入模块装入内存运行

2.4 装入模块装入内存

在这里插入图片描述


在这里插入图片描述
装入模块中的指令地址指的是“相对地址”,即:相对于开始地址而言的地址。相对地址又称逻辑地址。


在这里插入图片描述

2.5 装入的三种方式

2.5.1 ——绝对装入

绝对装入:在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。
装入程序按照装入模块中的地址,将程序和数据装入内存。
Eg:如果知道装入模块要从地址为 100 的地方开始存放…
在这里插入图片描述

2.5.2 ——可重定位装入

静态重定位:又称可重定位装入。编译、链接后的装入模块的地址都是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对地址进行“重定位”,将逻辑地址变换为物理地址(地址变换是在装入时一次完成的)。

在这里插入图片描述

2.5.3 ——动态重定位

动态重定位:又称动态运行时装入。编译、链接后的装入模块的地址都是从0开始的。装入程序把装入模块装入内存后,并不会立即把逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行时才进行。因此装入内存后所有的地址依然是逻辑地址。这种方式需要一个重定位寄存器的支持。
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

2.6 链接的三种方式

在这里插入图片描述

链接的三种方式:

  1. 静态链接:在程序运行之前,先将各目标模块及它们所需
    的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开。
    在这里插入图片描述
  2. 装入时动态链接:将各目标模块装入内存时,边装入边链接的链接方式。


3. 运行时动态链接:在程序执行中需要该目标模块时,才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享。

2.7 总结

在这里插入图片描述

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

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

相关文章

VR的内容荒漠,字节救不了

文|智能相对论 作者|Kinki 去年以来,“元宇宙”概念大火,掀起了新一轮的产业布局和科技博弈,脸书Facebook更直接改名Meta,展示其看好元宇宙未来的决心,国内大厂如腾讯、字节、阿里等,也在游戏、社交、硬件…

Macos安装和卸载第三方软件的正确方法

Mac第三方软件通常指的是非MacApp Store渠道下载安装的应用程序。在Mac电脑中有很多Mac系统内置的软件,但有些用户也喜欢安装一些第三方的软件来提高工作效率,那么我们如何正确的安装和卸载第三方软件呢?教程都在下面哦~ mac第三方软件安装方…

Fabric.js 使用图片遮盖画布(前景图)

本文简介 点赞 关注 收藏 学会了 在 《Fabric.js 使用纯色遮挡画布》 中讲到使用纯色的方式遮盖画布。如果你的常见需要使用图片来遮盖的话,fabric.js 也提供了相应的属性来配置。 相比起使用纯色遮盖画布,使用图片会更复杂。 因为图片本身是有尺寸…

【科研工具】一款好用的科研插件-easyScholar

0.概述1.安装2.功能显示SCI分区:定位优质的文献【看分区排名靠前的1-2区】选中英文按下t翻译,按下y隐藏翻译点击文献网址的图标跳转sci-hub下载0.概述 easyScholar是一款很好用的科研插件,可以显示会议期刊登记,支持轻量翻译&…

SAP OData 服务关于本地文件作为附件上传的一些错误消息

错误消息: {"error": {"code": "005056A509B11EE3AEB5819C07C69E2F","message": {"lang": "en","value": "The server is refusing to process the request because the entity has a…

单机模拟主从复制(一主三从)

引言 操作系统环境:Ubuntu 20.04 Redis版本:6.2.8 准备工作 官网下载 当前最新版本是7.0,我这里用的是6.0,下载 redis-6.2.8.tar.gz,拷贝到自己的虚拟机或者云服务器。 tar -zxvf redis-6.2.8.tar.gz 解压 cd redi…

【HAL库】STM32CubeMX开发----STM32F407----SPI实验

前言 本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。 SPI 通信引脚 与 MCU引脚 对应关系如下: SPI接口GPIO端口CS(片选)PA4SCLK(时钟)PA5MISO(数据输入)PA6MOSI(数据输出)PA7 一、使用STM32CubeMX ---- 新建SPI实验工程 步骤1&#xff…

crypto-music is frequency(INS‘hAck CTF 2018)

比较有趣的一题,记录下来。 Music is frequency Passionated by the sound of a nursery rhyme, we decided to build a new way to send private messages. Find a way to decrypt our rsa private key to get your reward. Because we are pretty bad musicians, …

postgres 源码解析46 可见性映射表VM

简介 Postgres 为实现多版本并发控制技术,当事务删除或者更新元组时,并非从物理上进行删除,而是将其进行逻辑删除[具体实现通过设置元组头信息xmax/infomask等标志位信息],随着业务的累增,表会越来越膨胀,对于执行计划…

【QScrollBar | QSlider | QDial | QProgressBar | QLCDNumber】

【QScrollBar | QSlider | QDial | QProgressBar | QLCDNumber】【1】UI设计界面【QScrollBar | QSlider 函数学习】【2】setMinimum | setMaximum【3】setSingleStep【4】setPageStep【5】setValue【6】setSliderPosition【7】setTracking【8】setOrientation【9】setInverted…

C++ :类和对象:文件操作

前言&#xff1a; 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束&#xff0c;数据都会被释放。通过文件可以 将数据持久化&#xff0c;C 中对文件操作需要包含头文件 <fstream>。 文件类型分为两种&#xff1a; 1&#xff1a;文本文件&#xff1a;文件…

历时9个月重构iNeuOS工业互联网操作系统,打造工业领域的“Office”

目 录 1. 概述... 1 2. 整体介绍... 2 3. 主要功能简介... 5 1. 概述 历时9个月的时间&#xff0c;对iNeuOS工业互联网操作系统进行全面重构&#xff0c;发布内部测试版本。重构的主要目的&#xff1a;工程化的框架优化&#xff0c;更好的聚焦工业领…

35.前端笔记-CSS3-3D转换

1、3D的特点 进大远小物体后面遮挡不可见 x:右为正 y:下为正 z:屏幕外是正&#xff0c;往里是负 3D移动之translate transform:translateX(100px);//仅仅是x轴移动。px或百分比 transform:translateY(100px);//仅仅是y轴移动&#xff0c;px或百分比 transform:translateZ(1…

33页企业内容管理与应用建设整体解决方案

当前企业在采购管理上面临的主要问题总体应对思路利用数字化技术&#xff0c;推动企业采购管理效能与职能升级 基于互联网技术架构推出数字化采购管理平台&#xff0c;帮助企业构建采购过程与供应商管理的两大流程闭环&#xff0c;实现采购过程的在线化协同&#xff0c;进而提升…

华为云大数据BI解决方案,助力企业实现数字化转型

2022年1月12日&#xff0c;国务院印发了《“十四五”数字经济发展规划》&#xff0c;规划明确提出到2025年&#xff0c;数字经济核心产业增加值占国内生产总值比重达到10%。这一规划的出台&#xff0c;充分释放出加快发展数字经济的明确信号&#xff0c;为各行业进行数字化转型…

使用FCN实现语义分割

来源&#xff1a;投稿 作者&#xff1a;王浩 编辑&#xff1a;学姐 这篇文章的核心内容是讲解如何使用FCN实现图像的语义分割。 在文章的开始&#xff0c;我们讲了一些FCN的结构和优缺点。然后&#xff0c;讲解了如何读取数据集。接下来&#xff0c;告诉大家如何实现训练。最后…

Redis跳跃表(SkipList)

什么是跳跃表 跳跃表&#xff08;skiplist&#xff09;是一种有序且随机化的数据结构&#xff0c;它通过在每个节点中维持多个指向其他节点的指针&#xff0c;从而达到快速访问节点的目的。 跳跃表的用处 有序集合(zset)的底层可以采用数组、链表、平衡树等结果来实现, 但是他…

仪表盘读数识别检测 Python+yolov5

仪表读数识别检测利用Pythonyolov5深度学习对仪表盘刻度数进行实时识别检测读取。Python是一种由Guido van Rossum开发的通用编程语言&#xff0c;它很快就变得非常流行&#xff0c;主要是因为它的简单性和代码可读性。它使程序员能够用更少的代码行表达思想&#xff0c;而不会…

艾美捷硫代巴比妥酸反应物质 (TBARS)检测试剂盒试剂准备

艾美捷TBARS&#xff08;TCA法&#xff09;测定试剂盒提供了一种简单、可重复和标准化的工具&#xff0c;用于测定血浆、血清、尿液、组织匀浆和细胞裂解物中的脂质过氧化。在高温&#xff08;90-100C&#xff09;和酸性条件下&#xff0c;通过MDA和TBA反应形成的MDA-TBA加合物…

kali渗透测试系列---信息收集

kali 渗透测试系列 文章目录kali 渗透测试系列信息收集信息收集 信息收集阶段可以说是在整个渗透测试或者攻击很重要的阶段&#xff0c;毕竟知己知彼才能百战百胜&#xff0c;否则从目标主机使用的平台到数据库的使用再到 web 应用开发的语言等等的种类多如繁星我们一个个的尝…