首页 > 系统相关 >内存隔离-分段-分页

内存隔离-分段-分页

时间:2023-09-07 09:02:18浏览次数:32  
标签:分页 内存 分段 磁盘 虚拟内存 隔离

内存隔离

  • 程序是运行在内存中,不同程序之间需要做地址隔离,不然恶意程序会修改其他程序的数据,不好的程序会越界修改变量。
  • 因此,内存需要对进程进行隔离,让每个进程拥有独立的虚拟空间

分段

内存映射

  • 根据程序所需空间大小,在虚拟内存空间划分出一定的区域大小
  • 然后在实际物理内存中相应的划分同样的大小的内存空间
  • 最后通过地址映射,连接虚拟内存地址和实际物理地址

分页

分页

  • 但是分段并没有解决内存使用效率的问题
  • 如果存在大段程序,会造成频繁的磁盘访问操作,影响速度
  • 因此,考虑到程序运行的颗粒度和局部性,提出分页的思想

内容

  • 分页是把内存地址分成固定大小的页,大部分为4KB,是由硬件决定
  • 把进程数据安页划分后,将常用的数据和代码页加载到内存中,
  • 不常用的保存在磁盘中,等用到的时候再去加载出来

不同页的名字

  • 虚拟内存的页,叫做虚拟页
  • 实际物理内存的页,叫做物理页
  • 磁盘的页,叫做磁盘页
  • 以上,通过内存映射实现内存共享

MMU内存管理-页保护

  • 分页还有一个好处就是内存数据的保护,
  • 每个页都有其权限,当越界时,系统会发出警告
  • 每个系统都会有一个额MMU内存管理单元来进行页映射和管理

标签:分页,内存,分段,磁盘,虚拟内存,隔离
From: https://www.cnblogs.com/starcos/p/17683900.html

相关文章

  • python变量内存的管理
    python变量内存管理当定义一个变量时,内存就会开辟一个内存空间来存储这个变量height=180#定义变量print(180)#print会自动帮你创建一个变量180,打印完成后,马上就会释放180的内存空间引用计数(针对变量值)#引用计数(针对变量值)height=180#180引用计数为1x=height#180......
  • DRF----分页、路由、解析器
    1.5djangorestframework(下)drf内置了很多便捷的功能,在接下来的课程中会给大家依次讲解下面的内容:快速上手请求的封装版本管理认证权限限流序列化视图条件搜索分页路由解析器  10.分页在查看数据列表的API中,如果数据量比较大,肯定......
  • Android内存优化案例——不合适和高性能的写法(一)
    安卓内存优化是一个很重要的话题,有很多方面可以考虑,比如避免内存泄漏、减少内存抖动、优化图片加载、使用缓存和对象池等。下面我举一些代码案例,分别展示不合适的写法和高性能的写法。1.避免使用枚举类型。枚举类型会占用更多的内存,因为它是一个类对象,而不是一个基本类型。如果......
  • 王道408---CS---内存管理
    一、程序的链接与装入编译由编译程序将用户源代码编译成若干目标模块链接由链接程序将编译后形成的一组目标模块及它们所需的库函数链接在一起,形成一个完整的装入模块。逻辑地址形成的阶段1、静态链接在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的装配......
  • falsk分页详细描述
    Flask-SQLAlchemy也提供了一个paginate()查询方法,相关源码如下defpaginate(self,page=None,per_page=None,error_out=True,max_per_page=None):"""Returns``per_page``itemsfrompage``page``.If``page``or``per_page``are``None``,they......
  • 【原创】基于QT编写的支持IPv4/IPv6双协议栈,TCP/UDP双模式,DLL内存加载的模块化远控木
    本人已经本科毕业一年有余,在平常实习过程中,发现大佬都对我的本科毕设--双协议栈远控木马感兴趣。据我所知,目前流行的C2远控软件中,MSF支持IPv4和IPv6,但是MSF生成的单个木马只是支持其中的一种协议,而不是双协议栈。CobaltStrike目前尚无IPv6的使用案例。其他支持双协议栈的C2软件......
  • MySQL分页查询详解:优化大数据集的LIMIT和OFFSET
    最近在工作中,我们遇到了一个需求,甲方要求直接从数据库导出一个业务模块中所有使用中的工单信息。为了实现这一目标,我编写了一条SQL查询语句,并请求DBA协助导出数据。尽管工单数量并不多,只有3000多条,但每个工单都包含了大量的信息。DBA进行了多次导出操作,不幸的是,每次尝试导出都导致......
  • 分页查询
     //分页查询try{//第1步:获取第1页,每页5条数据intpageIndex=3;intpageSize=5;//第2步:获取总记录数,计算总页数longtotalNumber=db.Queryable<User>().Count();inttotalPa......
  • 内存函数,memcpy,memmove,memcmp,memset
    structs{ charname[20]; intage;};intmain(){ intarr1[]={1,2,3,4,5}; intarr2[5]={0}; structsarr3[]={{"张三",20},{"李四",18}}; structsarr4[3]; memcpy(arr4,arr3,sizeof(arr3)); //memcpy(arr2,arr1,sizeof(a......
  • 2.1 PE结构:文件映射进内存
    PE结构是Windows系统下最常用的可执行文件格式,理解PE文件格式不仅可以理解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,在任何一款操作系统中,可执行程序在被装入内存之前都是以文件的形式存放在磁盘中的,在早期DOS操作系统中,是以COM文件的格式存储的,该文......