存储管理-存储管理的功能

存储管理-存储管理的功能存储管理存储管理的功能存储器为什么比较重要?存储器是计算机系统的重要资源之一。任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理直接影响系统性能。存储器的组成内存

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

存储管理-存储管理的功能

存储器为什么比较重要?

存储器是计算机系统的重要资源之一。任何程序和数据以及各种控制用的数据结构都必须占用一定的存储空间,因此,存储管理直接影响系统性能。

存储器的组成

  • 内存:存由顺序编址的块组成,每块包含相应的物理单元
  • 外存

内存外存的信息交换式谁控制的?

CPU控制相应的输入输出设备实现外存与内存信息的交换。

C语言.c源程序文件变成.exe可执行文件的过程

预编译->编译->汇编->链接

预编译

1.删除所有#define,展开所有宏定义;
2.处理所有条件预编译指令,如#if,#ifdef,#elif,#else,#endif;
3.处理#include预编译指令,将被包含的文件插入到该预编译指令的位置(该过程是递归进行的);
4.删除所有注释(实际上是被替换为一个空格);
5.添加行号和文件名标识;
6.保留所有#pragma编译器指令。

编译过程

(编译之后生成.s文件)将预处理完的文件进行一系列的词法分析,语法分析,语义分析以及优化产生相应的汇编代码文件。

汇编过程

汇编之后生成.o文件,可重定位目标文件)将汇编代码转化成机器可以识别的指令。

链接过程(重要的步骤,涉及地址和空间的分配)

(链接之后生成.exe文件,可执行目标文件)合并多个可重定位目标文件生成可执行目标文件,需要完成的工作包括:地址和空间的分配;符号决议;重定位。
存储管理-存储管理的功能

虚拟存储器

为什么要有虚拟存储器?

内存虽然访问速度快,但是太小了,而外存访问速度慢但是好处是空间大。引出问题,怎么相互弥补一下呢?不经常访问的数据和程序放到外存中去,只有在需要的时候才调入内存中。

虚拟存储器是干什么用的?

1.当物理内存不够用的时候,在硬盘上也就是外存开辟一块空间当内存用,但是这块内存不是内存条提供的,所以叫虚拟内存。
例子:玩游戏的时候,你电脑内存1G,如果没有虚拟内存的话是没办法玩的,但是有了虚拟内存就可以玩了

2.执行程序尽管向操作系统申请内存,而不管内存够不够用,好像有无限的内存一样

3.编译链接程序
什么是编译链接程序?源程序要由编译程序编译成CPU可以执行的代码,链接程序要把一个进程的不同程序段链接起来来让程序跑起来.
存储管理-存储管理的功能

4.为进程提供虚拟空间

虚拟存储器的定义

进程中的目标代码、数据等的虚拟地址组成的虚拟空间称为虚拟存储器(virtual store或virtual memory)。

虚拟存储器的特点

1.虚拟存储器不考虑物理存储器的大小和信息存放的实际位置,只规定每个进程中互相关连信息的相对位置
2.每个进程拥有自己的虚拟存储器,且虚拟存储器的容量由计算机的地址结构和寻址方式确定的,直接寻址时,如果CPU的有效地址长度为16位,则其寻址范围为0到64K
3.要实现虚拟存储器到物理存储器的变换,必须有相应的硬件支
4.每个进程都拥有自己的虚存,且每个虚存的大小不受实际物理存储器的限制
5.内存只能存放经常被访问的程序和数据段,访问或在某一段时间内不会被访问的信息。进程执行过程中需要这些信息时,从外存中自动调入主存

地址变换

虚拟地址映射到物理地址涉及两个问题一个是分区问题,一个是虚拟空间的划分,另外一个是地址映射

虚拟空间的分区

虚拟空间的划分与计算机系统结构有关。一般划分为系统空间和进程空间两个部分,进程空间分为程序区和控制区
存储管理-存储管理的功能

地址映射

把虚拟空间中已链接和划分好的内容装入内存,并将虚拟地址映射为内存地址

静态地址重定位

静态地址重定位在虚拟空间程序执行之前由装配程序完成地址映射工作

特点:

  • 对于虚拟空间内的指令或数据来说,静态地址重定位只完成一个首地址不同的连续地址变换
  • 所有待执行的程序必须在执行之前完成它们之间的链接

优点:不需要硬件支持。
缺点:无法实现虚拟存储器;必须占用连续的内存空间,并且难以做到程序和数据的共享。

动态地址重定位

动态地址重定位在程序执行过程中,在CPU访问内存之前,将要访问的程序或数据地址转换成内存地址。

特点:动态重定位依靠硬件地址变换机构完成

优点:

  • 可以对内存进行非连续分配
  • 动态重定位提供了实现虚拟存储器的基础
  • 有利于程序段的共享

地址重定位机构需要一个(或多个)基地址寄存器BR和一个(或多个)程序虚拟地址寄存器VR。指令或数据的内存地址MA与虚拟地址的关系为:MA=(BR)+(VR)
存储管理-存储管理的功能

内外存数据传输控制

目的

实现内存扩充

过程

内存和外存之间必须经常地交换数据,即将执行的程序和数据段调入内存,处于等待状态的程序和数据段调出内存

基本控制方法

用户自己控制:

覆盖:
1.要求用户清楚地了解程序的结构,并指定各程序段调入内存的先后次序
2.覆盖技术不能实现虚拟存储器

操作系统控制

交换(swapping)方式

1.交换方式由操作系统把那些在内存中处于等待状态的进程换出内存,而把那些等待事件已经发生、处于就绪态的进程换入内存
2.交换方式一般不进行部分交换,每次交换除去常驻内存部分后的整个进程
3.交换方式能完成内存扩充任务,但不能实现进程大小不受内存容量限制的虚拟存储器

请求调入(on demand)方式和预调入(on prefetch)方式

请求调入方式是在程序执行时,如果所要访问的程序段或数据段不在内存中,则操作系统自动地从外存将有关的程序段和数据段调入内存

预调入由操作系统预测在不远的将来会访问到的程序段和数据段部分,并在它们被访问之前选择适当的时机调入内存

请求调入方式和预调入方式可以实现进程大小不受内存容量限制的虚拟存储器

内存的分配与回收

存储管理模块要为每一个并发执行的进程分配内存空间。另外,当进程执行结束之后,存储管理模块要及时回收该进程所占用的内存资源,以便给其他进程分配空间

策略:
(1) 分配结构:登记内存使用情况,供分配程序使用的表格与链表。例如内存空闲区表、空闲区队列等。
(2) 放置策略:确定调入内存的程序和数据在内存中的位置。这是一种选择内存空闲区的策略。
(3) 交换策略:在需要将某个程序段和数据调入内存时,如果内存中没有足够的空闲区,由交换策略确定内存中的哪些程序段和数据段调出内存,以便腾出足够的空间。
(4) 调入策略:外存中的程序段和数据段什么时间按什么样的控制方式进入内存。调入策略与内外存数据交换的控制方式有关。
(5) 回收策略:回收策略包括两点,一是回收的时机,二是调整回收空闲区和已存在空闲区。

内存信息的共享与保护

共享

在多道程序设计环境下,内存中的许多用户或系统程序和数据段可供不同的用户进程共享。这种资源共享将会提高内存的利用率

保护

内存信息保护方法有硬件法、软件法和软硬件结合三种:

上下界保护法是一种常用的硬件保护法

为每个进程设置一对上下界寄存器,分别放置被保护程序和数据段的起始地址和终止地址。
程序执行过程中,对内存进行访问操作时首先进行访址合法性检查,即检查重定位后的内存地址是否在上、下界寄存器规定的范围之内。
在规定的范围之内,访问是合法的;否则是非法的,并产生访址越界中断。

存储管理-存储管理的功能

保护键法也是一种常用的存储保护法
为每一个被保护存储块分配一个单独的保护键。在程序状态字中设置相应的保护键开关字段,不同进程赋予不同的开关代码与被保护的存储块中的保护键匹配。保护键可设置成对读写同时保护或只对读、写进行单项保护。

保护键0对2K到4K的存储区进行读写同时保护的,保护键2对4K到6K的存储区进行写保护。

如果开关字与保护键匹配或存储块未受到保护,则访问该存储块是允许的,否则将产生访问出错中断。

存储管理-存储管理的功能

界限寄存器与CPU的用户态或核心态工作方式相结合的保护方式

在这种保护模式下,用户态进程只能访问界限寄存器规定范围内的内存部分,核心态进程可以访问整个内存地址空间

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/166927.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • idea激活服务器 3月最新注册码

    idea激活服务器 3月最新注册码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 微商分销商城购物系统的优势

    微商分销商城购物系统的优势不论买方还是卖方都可以实时查看数据,这些线上的发展模式。微信分销商城是微信公众平台推出的商品营销模式,都是基于微信的一个总店,快速精准的管控微信的各级分店,可控制性强不管是什么类型的营销,传播力度广卖家能够在许多平台上进行推广自己的产品,专为微信而打造微信分销商的功能从前台的服务系统到后台的运营系统,都可以根据自己的需求进行实时查对核实分析,打开微信公众号开通微信分销商城即可,抖音等,若需系统的更好发展。这种多渠道分销可以帮助微商者快速发展下线,数据上有清晰的记录,从招募、运营、分销管理.

  • Linux抓包命令_怎么使用wireshark抓包

    Linux抓包命令_怎么使用wireshark抓包Wireshark是一款图形化的抓包软件,在LInux和Windows下都可以下载。用命令安装wireshark相关软件包命令:查看安装wireshark产生了哪些文件直接通过命令打开或者是图形化页面点开就好点击InterfaceList,就可以看到接口列表,选择需要抓哪个网卡的包这里我选择ens33网卡,点击start开始抓包我们ping我们的主机地址,看看抓包情况ping工具使用的就是协议,ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。它主要是

  • Swift 启动页动画(CAKeyframeAnimation)

    Swift 启动页动画(CAKeyframeAnimation)

  • python+opencv的图像学基础以及简单的人脸识别

    python+opencv的图像学基础以及简单的人脸识别

  • Java解析XML文件

    Java解析XML文件1.DOM方式解析XMLDom解析是将xml文件全部载入到内存,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件,与平台无关,java提供的一种基础的解析XML文件的API,理解较简单,但是由于整个文档都需要载入内存,不适用于文档较大时。2.SAX方式解析XML基于事件驱动,逐条解析,适用于只处理xml数据,不易编码,而且很难同时访问同一个文档中的多处不同数据3.JDOM方式解

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号