第四章 内存管理

计算机操作系统第四章内存管理 虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。   1.内存管理的概念 内存管理(Memory Management)是操作系统设计中最重要和最复杂的内容之一。虽然计算机硬件一直在飞速发展,内存容量也在不断增长,但是仍然不可能将所有用户进程和系统所需要的全部程序和数据放入主存中,所以操作系统必须将内存空间进行合理地划分和有效地动态分配。操作系统对内... 阅读详情

4.1 内存的基本知识

4.1.1 知识总览

4.1.2、内存的作用

内存可存放数据。程序执行前需要先放到内存中才能被CPU处理--->缓和CPU与硬盘之前的速度矛盾

4.1.3、内存的存放

内存的存放类似于酒店,给内存的每个存储单元都编号。(在多道程序环境下,系统中会有很多个程序并发执行,也就是说会有多个程序的数据需要同时放到内存中,所以要给内存的存储单元编址:如果每个计算机“按字节编址”,则每个存储单元大小为1字节,即1B,即8个二进制位;如果字长为16为16位的计算机“按字编址”,则每个存储单元大小为1个字,每个字的大小为16个二进制位)

补充1:计算机的字长

计算机字长就是计算机中CPU在一次操作中能处理的单位字的长度,即运算器能够并行处理和存储器每次读写操作时能包含的二进制码的位数。

计算机字长的介绍:

计算机字长是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干字长段,各段的编码表示不同的含义。

例如某台计算机字长为16位,即有16个二进制数合成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。

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

 G只是表示个数量而已,B有实际意义,是一个数据,指的是字节(Byte),小写的b是bit,是一个比特位,一个二进制位,1Byte = 8 bit。

补充3:

bit是位,在计算机中bit也就是比特,是最小的数据单位。

位:

位英语是bit,表示计算机内部最小数据存储单位,表示二进制。

字节:

字节也就是Byte,简称为B,是计算机处理数据的基本单位。

补充4:指令的工作原理

下面举C语言语句x = x + 1在计算机是怎么运作的例子:

计算机会先编译x = x + 1此语句,编译完成之后,生成一些指令,然后计算机依次执行这些指令

 当这个C语言程序运行的时候,系统会为它建立相应的进程,一个进程在内存当中占有一片区域,叫程序段(用于存放与进程相关的代码、指令),另外改进程还有一个部分,叫做数据段,用于放置该程序所要处理的一些变量之类的一些数据(例如x变量就存放在数据段里),下面介绍上边的三个指令:

CPU在执行这三个指令的时候,首先它取出了指令1(由这三个部分组成,第一个部分叫做操作码,指明了这条指令要干一件什么事情, 指令1是数据传送指令,后面两个码是干这个操作必要的参数

例如,指令1就是让CPU从内存地址01001111(对应十进制为79)内存单元中存放的数据取到00000011(对应十进制为3)编号为3的寄存器当中)

可以看出,我们写的代码要翻译成CPU能识别的指令。这些指令会告诉CPU应该去内存的哪个地址读/写数据,这个数据应该做什么样的处理。在这个例子中,我们默认这个进程的相关内容从地址#0开始连续存放,指令的地址参数直接给出了变量x的实际存放地址(物理地址)。

综上可以看出,指令的工作是基于“地址”的,每个地址对应一个数据的存储单元。

课程的引入:(引入装入的三种方式)

基址 + 偏移

4.1.4、装入的三种方式

(1)绝对装入(从根本上解决问题,暴力办法)

绝对装入:在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。

 (2)可重定位装入

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

(3)动态运行时装入

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

4、从写程序到程序运行

编译:由编译程序将用户源代码编译成若干个目标模块(编译就是把高级语言翻译为机器语言)
链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块
装入(装载):由装入程序将装入模块装入内存运行
5、链接的三种方式

4.2 内存管理的概念

4.2.1 知识总览

4.2.2 内存空间的分配与回收

4.2.3 内存空间的扩展

4.2.4 地址转换

        

4.2.5 内存保护 

 

4.2.6 知识回顾与重要考点

4.3 覆盖与交换

4.3.1  知识总览

4.3.2 覆盖技术

4.3.3 交换技术

4.3.4 知识回顾与重要考点

4.4 连续分配管理方式

4.4.1 知识总览

4.4.2 单一连续分配

4.4.3 固定分区分配

4.4.4 动态分区分配

4.4.5 知识回顾与重要考点

4.5 动态分区分配算法

4.5.1 知识总览

4.5.2 首次适应算法

4.5.3 最佳适应算法

4.5.4 最坏适应算法

4.5.5 邻近适应算法

4.5.6 知识回顾与重要考点

4.6 基本分页存储管理的概念

4.6.1 知识总览

4.6.2 什么是“地址空间”

4.6.3 什么是分页存储

写在前面: 

内存中的块叫做页框,进程中的块叫做页面,内存中每个页面对应的物理块号叫做页表,页表由页表项组成。

4.6.4 重要的数据结构---页表

4.6.5 问题一:每一个页表项占多少字节?

4.6.6 问题二:如何实现地址的转换?

4.6.7 子问题:如何确定一个逻辑地址对应的页号、页内偏移量

 

4.6.8 子问题:为何页面大小要取2的整数次幂?

4.6.9 逻辑地址结构

4.6.10 知识回顾与重要考点

4.7 基本地址变换机构

4.8 具有快表的地址变换机构

4.8.1 知识总览

4.8.2 什么是快表(TLB)

4.8.3 引入快表后,地址的变换过程

4.8.4 思考:能否把整个页表都放在TLB中?

4.8.5 局部性原理

4.8.6 知识回顾与重要考点

4.9 两级页表

4.10 基本分段存储管理方式

4.11 段页式管理方式

4.12 请求分页管理方式

4.13 页面置换算法

4.14 页面分配策略、抖动、工作集

4.15 内存映射文件

操作系统第四章     第四章是内存管理,分为6节,下面就重点来总结一下! 程序的装入-可重定位装入方式      首先起始地址为0,物理地址=有效逻辑地址+程序在内存中的起始地址,这个一看就懂,不作介绍。 动态分区分配算法 1.首次适应算法      此算法总是先分配低地址部分的内存空间,直到分完此内存空间在分配下一个相对较低的内存空间。如例子(课本中)有p1和p2两个进程,如果为这两个进... 阅读详情

相关推荐

第四章内存管理

第四章主要是页面置换算法和地址转换过程

CS GO 203

自考02323《操作系统概论》第四章内存管理——思维导图

备战2020年4月自考科目02323《操作系统概论》第四章内存管理 思维导图如下: ==================================================== 以上便是本文的全部内容了,不知道对你有没有帮助呢。 我会认真写好每一篇文章,一直努力下去! ====================================================...

Java小白的进阶之路 1430

第四章:C/C++内存管理

针对自定义类型new和delete在自定义类型中才能发挥出它真正的作用。因为new和delete不止负责开辟和释放空间,而且还负责调用构造和析构函数,具体来说new的原理调用函数申请空间在申请的空间上执行构造函数,完成对象的构造delete的原理在空间上执行析构函数,完成对象的资源清理工作调用函数释放对象空间的原理调用函数,在中实际调用函数完成N个对象的空间的申请在申请的空间上执行N次构造函数delete[]的原理在需要释放的对象空间上执行N次析构函数,完成N个对象的资源的清理调用。

快乐江湖的博客 740

【探寻C++之旅】第四章:内存管理

今天,我们继续踏入追寻C++的冒险历程。上一章我们简单介绍并且了解了C++中的类和对象,那么本章将为大家讲解C++中另一重要的部分:内存管理。下面让我们一起来进入内存管理的学习。

2302_80243065的博客 1170

AGM Supra软件从零到一:国产CPLD工程创建全流程实战解析

本文详细解析了AGM Supra软件在国产CPLD开发中的全流程实战操作,从工程创建到代码开发、编译调试,再到高级技巧与疑难排解。特别对比了Supra与Quartus的差异,提供了工程路径管理、Quartus项目转换、HDL代码规范等实用技巧,帮助开发者高效完成CPLD项目开发。

weixin_29193259的博客 502

通讯软件019——分分钟学会Prosys OPC UA Server配置

本文介绍如何配置Prosys OPC UA Simulation Server,通过本文可以对OPC UA的基本概念有所了解,掌握OPC UA的本质。

zhouwl72的博客 4300

操作系统第四章内存管理

则每个存储单元大小为1字节,即1B,即8个二进制位:则每个存储单元大小为1个字,每个字的大小为16个二进制位一台手机有4GB内存,代表什么?如果按字节编址,则有2的32次方首先在内存中含有程序段和数据段,而变量x的存放地址为01001111(79),存放为10,而在指令1中,第一个8进制位包含一种操作(如00101100则为数据传送操作,即将地址为01001111的数据复制到00000011上),00000011对应某种寄存器。

qq_59163036的博客 894

基于SOEM的伺服电机控制实战:从配置到调试

本文详细介绍了基于SOEM的伺服电机控制实战,从硬件配置到软件调试的全过程。通过分享PDO映射、状态机控制、性能优化等核心技巧,帮助开发者快速掌握EtherCAT通信与伺服电机控制的关键技术,提升工控系统开发效率。

weixin_29165465的博客 520

第四章 内存管理(课后题)

文章目录选择与填空简单题1. 静态链接程序完成什么功能?2. 请说明分页存储管理的基本原理?3. 什么是抖动? 抖动产生的原理什么?(p150)4. 说明分段存储的原理 选择与填空 在基于分页的虚拟存储管理系统中, 页表项增加了修改位字段, 下列程序中, 需要使用这个字段是的: 选择换出页的程序 多道程序环境下, 操作系统分配 CPU资源的基本单位是:进程 采用二级分页的存储管理系统中, 若分页逻辑地址用32位表示, 其中高10位表示页目录号p1, 中间10位表示页号p2, 低12位表示页内偏移

诸葛老刘的博客 1522

Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?

当检测到TCP/UDP混合攻击时,应触发预设的熔断策略:优先保障游戏大厅服务的UDP 27015端口,临时限制匹配系统的TCP连接数。针对Steam游戏服务器特有的UDP 4380端口,需配置协议合规性检查规则:限制数据包长度不超过128字节,强制校验请求来源IP的真实性。Steam游戏服务器的防护需要平衡安全性与玩家体验,通过协议深度解析、智能流量调度和服务端加固的三维防御体系,可构建游戏行业专属的抗DDoS护城河。答:采用弹性防护方案,基础防护带宽保持50Gbps,遭遇攻击时自动扩展至T级清洗能力。

2501_91486804的博客 1455

Qt 侧边菜单栏+堆叠窗口stackedWidget

效果如下:环境:Qt 6.6.2 MSVC2019 64bit。

weixin_41033231的博客 1568

【C语言内存管理】第四章 全局/静态区内存管理

全局变量和静态变量是位于全局/静态存储区中的变量,它们在程序运行的整个过程中占用内存。总结起来,全局变量和静态变量在生命周期上都有较长的持续时间,它们占用程序运行过程中内存的全程,但它们的作用域和可见性需要根据我们希望在代码中实现的封装和模块化策略来精心设计。通过理解和正确使用全局变量和静态变量,可以使我们的C语言代码更高效、更清晰,但也需要小心避免命名冲突和无法预测的数据修改问题。关键字定义的变量具有内部链接,意味着它们只能在定义它们的文件内可见。关键字,变量则具有外部链接,可以在其他文件中通过。

578

第186篇 前馈控制——提升跟踪精度的补充手段

文章摘要: 本文介绍了前馈控制的原理及其在工程中的应用。与反馈控制不同,前馈控制通过提前预测目标值或扰动信息来生成控制量,避免误差出现后再纠正的延迟问题,适用于机器人、机械臂等高速运动场景。前馈控制通常与PID反馈配合使用,前者提供粗调,后者进行微调。文章详细讲解了前馈增益的调节方法(模型法、实验法、自适应法)及两种前馈类型(指令前馈和扰动前馈),并提供了代码示例和面试实战建议,强调前馈与反馈的协同设计是提升控制精度的关键。最后预告了下一篇将讨论串级PID控制架构。

郑伟强dev的专栏 398

02323 操作系统概论 第四章 内存管理

文章目录第一节 存储器的层次结构第二节程序的链接和装入一. 程序链接二. 程序的装入第三节. 连续分配存储管理方式一. 单一连续分配二. 固定分区分配三. 动态分区分配 第一节 存储器的层次结构 存储器系统是一个具有不同容量, 成本和访问时间的存储设备的层次结构 从高层到低屋(L0-L5), 数据越大, 层次越低, 存储设备速度越慢, 容量更大, 价格更便宜. CPU寄存器保存最常用的数据(L0层) 芯片内的L1高速缓存(SRAM) L1 芯片外的L2高速缓存(SRAM) L2 主存储器(DRAM) 也就

诸葛老刘的博客 1047

基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)_167

本系统主要由超市环境监测部分和商品管理部分组成。环境监测部分主控芯片采用STM32F103C8T6,主要包括温湿度传感器、烟雾传感器和空调制热开关、空调制冷开关,采集的数据通过ESP8266模块+MQTT协议上传至OneNet云平台,在OneNet云平台设计手机和电脑版本可视化页面,能够在页面上查看超市的环境信息,还能在页面上手动打开空调制热开关和空调制冷开关。商品管理部分主要由RC522-RFID读卡器、上位机组成,实现商品选购、结算、顾客的VIP会员卡注册管理等功能。

6069

8.9华为OD机试真题 新系统 - 灯带颜色变换 (Java/Py/C/C++/Js/Go)

8.9华为OD机试真题 新系统 - 灯带颜色变换 (Java/Py/C/C++/Js/Go)

算法大师! 670

第四章 内存管理4.1

内存:系统区   +    用户区 (内存管理的主要对象)                                                                                           实存管理+虚存管理     管理包括以下内容:    a.分配和回收    b.地址重定位    c.内存的共享和保护    d.虚

eguitar007的专栏 627

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[C编程入门] 第四章:C语言的指针和内存管理

指针是一种变量,它的值是另一个变量的内存地址。通过指针,我们可以间接访问和修改变量的值。

极客代码 1352

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

《JavaScript高级程序设计》——第四章:变量、作用域与内存管理

通过深入理解基本类型和引用类型的差异、作用域链的查找规则以及闭包的应用,你将能够处理更多复杂的场景,成为一名更强大的开发者。如果找不到,就表示没有这个变量,任务失败。但今天,小哆啦会带你们轻松过关,深入了解这些概念,并且保持足够的幽默感,让你既能笑着学习,又能深入掌握其中的技术。引用类型的变量存储的不是值,而是“指针”——指向堆内存中的一块地址,就像你点了一份大餐,把地址给了朋友,你俩一起吃这道菜。中,它们的特点是简单、高效,一旦离开作用域就会自动销毁,就像你吃完一份快餐,盘子一拿就消失,省时省力。

dorabighead的博客 768

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

PHP7内核剖析 学习笔记 第四章 内存管理(1)

PHP中的变量不需要手动释放,内核实现了变量的内存管理,包括内存的分配与回收。 4.1 变量的自动GC机制 C/C++语言中,如果想在堆上分配变量,需要手动进行内存的分配与释放,变量的内存管理是一件非常烦琐的事情,稍有不慎就可能导致不可预知的错误。现代高级语言普遍提供了变量的自动GC机制,由语言自己进行管理,这使得开发者不需要再去关心变量的分配与释放,PHP也实现了这种机制,PHP中可直接通过$声明一个变量,使用完也不需要手动销毁,内核自己清楚什么时间该进行释放。 我们先自己思考下如何实现自动GC,最简单的

tus00000的博客 1134

操作系统第四章: 内存管理习题

第四章 存储器管理 作业 为什么要配置层次式存储器? 这是因为:   a.设置多个存储器可以使存储器两端的硬件能并行工作。   b.采用多级存储系统,特别是Cache技术,这是一种减轻存储器带宽对系统性能影响的最佳结构方案。   c.在微处理机内部设置各种缓冲存储器,以减轻对存储器存取的压力。增加CPU中寄存器的数量,也可大大缓解对存储器的压力。 使用多级存储系统, 主要是为了解决CPU速度与存储器速度不匹配的问题, 就CPU与内存而言, 内存的速度是远慢于CPU的, 在CPU与内存间利用Cache

Janus 1791

ORACLE 内存管理--《深入浅出ORACLE第四章》

Oracle 9i动态SGA管理在Oracle 9i中,可以设置SGA_MAX_SIZE,该参数用以控制各缓冲池使用的内存总和,本质上是在进程中预先分配一段虚拟地址备用而不分配物理内存,目的是防止和进城私有地址段的冲突。只要总的SGA内存设置不超过SGA_MAX_SIZE的设置,更改都可以立即生效。需要注意的是,在Oracle 9iR1中,动态减小内存设置会触发一些Bug。当在

朝着梦想 渐行前进 3069

第四章、内存管理(iOS学习笔记,从零开始。)

iPhone/Mac Objective-C内存管理教程和原理剖析 前言 初学objectice-C的朋友都有一个困惑,总觉得对objective-C的内存管理机制琢磨不透,程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对objective-C内存管理机制的研究成果和经验,写了这么一个由浅入深的教程。希望对大家有所帮助,也欢迎大家一起探讨。   此文涉及的内存

郭晓东的专栏 1341

《Oracle编程艺术》第四章-内存管理,4.1.1手动PGA内存管理

采用手动PGA内存管理,除了你的会话为PL/SQL中的表和其他变量分配的内存以外,以下参数对PGA大小的影响最大。 SORT_AREA_SIZE:在排序信息被交换到磁盘之前,所使用的内存总量(磁盘是指用户指定的磁盘上的临时表空间) SORT_AGRE_RETAINED_SIZE:排序完成后用于保存已排序数据的内存总量。就是说,如果SORT_AREA_SIZE是512KB且SORE_AREA_R...

shafatudou的博客 332

第四章 Go内存管理(一):内存分配原理

数组中每个元素代表了一种class类型的span列表,每种class类型都有两组span列表,第一组列表中所表示的对象中包含了指针,第二组列表中所表示的对象不含有指针,这么做是为了提高GC扫描性能,对于不包含指针的span列表,没必要去扫描。有了管理内存的基本单位span,还要有个数据结构来管理span,这个数据结构叫mcentral,各线程需要内存时从mcentral管理的span中申请内存,为了避免多线程申请内存时不断的加锁,Golang为每个线程分配了span的缓存,这个缓存即是cache。

qq_39980953的博客 165

计算机操作系统(第四版)第四章-内存管理

一 存储器的层次结构1 存储器的设计目标设计目标可以归结成三个问题:容量、速度和成本。容量:需求无止境。速度:能匹配处理器的速度。(CPU的速度肯定是比内存快的,不然为什么要引入cache。成本:成本和其他部件相比应该在合适的范围之内。三个问题之间相互制约,不可能同时达到最优:存取速度越快,每一个位的bit就越高。追求大容量就要降低存取速度。追求速度就要降低容量。二 内存管理的目的1 有效利用空间帕金森:“内存有多大,程序就有多大”2 考虑管理的开销:时间和空间。

USTB_XU的博客 422
上一篇: 第3章 处理机调度与死锁
下一篇: 2023 Shandong Provincial Collegiate Programming Contest
21RGHLY
博客等级 码龄5年 44粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

21RGHLY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值