郑州春蕾网站建设仿站小工具下载

news/2025/10/5 12:49:50/文章来源:
郑州春蕾网站建设,仿站小工具下载,php做购物网站系统,泰安中推网络科技有限公司虚拟内存是一种对主存的抽象概念。 #xff08;1#xff09;将主存看作一个存储在磁盘上的地址空间的高速缓存#xff0c;在主存中只保存活动区域#xff0c;并根据需要在磁盘和主存之间来回传送数据#xff0c;通过这种方式高效地使用内存 #xff08;2#xff09;为每…虚拟内存是一种对主存的抽象概念。 1将主存看作一个存储在磁盘上的地址空间的高速缓存在主存中只保存活动区域并根据需要在磁盘和主存之间来回传送数据通过这种方式高效地使用内存 2为每个进程提供一致的地址空间从而简化内存管理。 3保护每个进程的地址空间不被其它进程破坏。 1、物理寻址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址。第一个字节的地址为0接下来的字节地址为1再下一个为2依此类推CPU访问内存的最自然的方式就是使用物理地址。这种方式称为物理寻址。 早期的PC使用物理寻址而且诸如数字信号处理器、嵌人式微控制器以及Cray超级计算机这样的系统仍然继续使用这种寻址方式。然而现代处理器使用的是一种称为虚拟寻址virtual addressing的寻址形式。 2、虚拟寻址 虚拟内存地址是指令用到的内存地址物理内存地址是实际在内存硬件中的空间地址。 CPU通过生成一个虚拟地址来访问主存这个虚拟地址在被送到内存之前先转换成适当的物理地址。将一个虚拟地址转换为物理地址的任务叫做地址翻译。就像异常处理一样地址翻译需要CPU硬件和操作系统之间的紧密合作。CPU芯片上叫做内存管理单元Memory Management UnitMMU的专用硬件利用**存放在主存中的查询表页表**来动态翻译虚拟地址该表的内容由操作系统管理。 3、虚拟页和物理页 虚拟内存被组织成一个由存放在磁盘上的N个连续的字节大小的单元组成的数组。每字节都有一个唯一的虚拟地址作为数组索引。磁盘上数组的内容被缓存在主存中。 虚拟内存被分割为虚拟页VP物理内存被分割为物理页PP。 在任意时刻虚拟页面的集合都分为三个不相交的子集 未分配的系统还未分配或者创建的页。未分配的块没有任何数据和它们相关联因此也就不占用任何磁盘空间。已分配但缓存的当前已缓存在物理内存中的已分配页在主存中。已分配但未缓存的未缓存在物理内存中的已分配页在磁盘中。 4、页表 同任何缓存一样虚拟内存系统必须有某种方法来判定一个虚拟页是否缓存在DRAM中的某个地方。如果是系统还必须确定这个虚拟页存放在哪个物理页中。如果不命中系统必须判断这个虚拟页存放在磁盘的哪个位置在物理内存中选择一个牺牲页并将虚拟页从磁盘复制到DRAM中替换这个牺牲页。 这些功能是由软硬件联合提供的包括操作系统软件、MMU内存管理单元中的地址翻译硬件和一个存放在物理内存中叫做页表page table的数据结构页表将虚拟页映射到物理页。每次地址翻译硬件将一个虚拟地址转换为物理地址时都会读取页表。操作系统负责维护页表的内容以及在磁盘与DRAM之间来回传送页。 页表就是一个页表条目Page Table EntryPTE的数组。虚拟地址空间中的每个页在页表中一个固定偏移量处都有一个PTE。 PTE中的有效位为0表示未分配地址字段为null或者已经分配了但是没有缓存到物理内存中地址字段指向磁盘地址为1时表示已经缓存到物理内存中地址字段指向物理页号。 页命中 CPU读取包含在虚拟内存中某虚拟页的一个字该虚拟页已经缓存在主存中使用PTE中的物理内存地址构造出这个字的物理地址。 缺页 物理内存不命中即缺页。地址翻译硬件从内存中读取PTE从有效位推断出该虚拟页未被缓存未分配的PTE没有联系任何数据不会被读取并且触发一个缺页异常。缺页异常调用内核中的处理程序该程序 1判断虚拟地址是否合法是否是某个区域结构定义的区域访问空白区域会触发段错误。 2内存访问是否合法是否有读取该地址空间的权限。 3对合法的虚拟地址进行合法的操作选择物理内存中的一个物理页作为牺牲页从磁盘上用虚拟页的副本取代该牺牲页。程序返回之后CPU重新启动导致缺页的指令正常读取不会产生异常。 页面分配 调用malloc的结果就是在磁盘上创建空间创建新的虚拟页并更新某个未分配的页表条目PTE使它指向磁盘上这个新创建的页面。 5、内存映射 linux将一个虚拟内存区域和一个磁盘上的对象关联起来初始化这个虚拟内存区域的内容这个过程称为内存映射映射为文件系统中的普通文件或者内核创建的匿名文件。 一个区域可以映射到一个普通磁盘文件的连续部分例如一个可执行目标文件。文件区被分为页大小的片每一片包含一个虚拟页面的初始内容。 共享对象和私有对象 一个对象可以被映射到虚拟内存的一个区域要么作为共享对象要么作为私有对象。 共享对象如果一个进程将一个共享对象映射到它的虚拟地址空间的一个区域内那么这个进程对这个区域的任何写操作对于那些也把这个共享对象映射到它们虚拟内存的其他进程而言也是可见的。而且这些变化也会反映在磁盘上的原始对象中。 私有对象另一方面对于一个映射到私有对象的区域做的改变对于其他进程来说是不可见的并且进程对这个区域所做的任何写操作都不会反映在磁盘上的对象中。 一个映射到共享对象的虚拟内存区域叫做共享区城。类似地也有私有区城。 写时复制 私有对象使用写时复制的技术映射到虚拟内存中。一个私有对象开始生命周期的方式和共享对象一样在物理内存中只保存私有对象的一份副本。当一个进程试图写私有区域的某个界面这个写操作会触发一个保护故障。处理程序会在物理内存中创建这个页面的一个新副本并更新页表条目。程序返回时CPU重新执行写操作即正常执行。 fork函数 用于创建一个进程所创建的进程复制父进程的代码段/数据段/BSS段/堆/栈等所有用户空间信息在内核中操作系统重新为其申请了一个PCB并使用父进程的PCB进行初始化 当fork函数被当前进程调用时内核为新进程创建各种数据结构并分配给它一个唯一的PID。为了给这个新进程创建虚拟内存它创建了当前进程的mmstruct、区域结构和页表的原样副本。它将两个进程中的每个页面都标记为只读并将两个进程中的每个区域结构都标记为私有的写时复制。 当 fork在新进程中返回时新进程现在的虚拟内存刚好和调用fork时存在的虚拟内存相同。当这两个进程中的任一个后来进行写操作时写时复制机制就会创建新页面因此也就为每个进程保持了私有地址空间的抽象概念。 execve函数 在当前进程中加载并运行包含在可执行目标文件中的程序用该程序替代当前程序。 1删除已存在的用户区域 2映射私有区域 3映射共享区域 4设置程序计数器 mmap函数 要求内核创建一个新的虚拟内存区域并将指定对象的一个连续的片映射到这个新的区域。munmap用来删除虚拟内存区域。 6、动态内存分配 运行时需要额外虚拟内存时用动态内存分配器更加方便移植性更好。动态内存分配器维护堆将堆视为一组不同大小的块的集合来维护。每个块就是一个连续的虚拟内存片要么是已分配的要么是空闲的。 C标准库提供一个称为malloc程序包的显式分配器程序通过调用malloc函数来从堆中分配块。 动态内存分配器如malloc可以通过使用mmap和munmap函数显式地分配和释放堆内存。 内存碎片 造成堆利用率很低的主要原因是一种称为碎片fragmentation的现象当虽然有未使用的内存但不能用来满足分配请求时就发生这种现象。有两种形式的碎片内部碎片internal fragmentation和外部碎片external fragmentation。 内部碎片是在一个已分配块比有效载荷大时发生的。很多原因都可能造成这个问题。例如一个分配器的实现可能对已分配块强加一个最小的大小值而这个大小要比某个请求的有效载荷大。或者分配器可能增加块大小以满足对齐约束条件。 内部碎片的量化是简单明了的。它就是已分配块大小和它们的有效载荷大小之差的和。因此在任意时刻内部碎片的数量只取决于以前请求的模式和分配器的实现方式。 外部碎片是当空闲内存合计起来足够满足一个分配请求但是没有一个单独的空闲块足够大可以来处理这个请求时发生的。那么如果不向内核请求额外的虚拟内存就无法满足这个请求即使在堆中仍然有足够多空闲的字。问题的产生是由于这些空闲字是分在多个空闲块中的。

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

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

相关文章

高性能网站建设进阶...在线网站建设询问报价

摘要:偶然机会接触到python语音,感觉语法简单、功能强大,刚好朋友分享了一个网课《python 爬虫与数据可视化》,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个部分(1.pyth…

已备案网站新增接入wordpress 文章空白页

本周重点 ①Linux系统提权 ②Linux权限维持 ③Windows 提权 ④Windows权限维持 ⑤SSRF利用 ⑥内网环境 ⑦内网扫描 ⑧漏洞利用 ⑨内网代理 ⑩获取主机控制权其他方案 ⑩①vuln靶场 ⑩②CS代理与ICMP隧道 本周主要内容 ①Linux系统提权 系统提权是成功入侵系统之…

Alexa进入自主时代:AI技术新突破

文章探讨了Alexa语音助手在人工智能领域的技术演进,重点介绍了自我感知、自主学习和自助服务三大技术方向,包括常识推理、多轮对话状态跟踪、少样本学习等核心技术突破,展示了AI系统向更自主化发展的技术路径。Alex…

淮北市住房和城乡建设局网站html5韩国网站模板

当在 Java 项目中使用 Redis 时,特别是在 Spring Boot 项目中使用 Redis,下面是一个详细的教程,涵盖了 Redis 的配置和使用。 在 Spring Boot 项目中配置和使用 Redis 步骤 1:添加 Redis 依赖 在你的 Spring Boot 项目的 pom.x…

铜仁市网站建设情况南京微网站开发

功能描述:开发一个类似于 Windows 命令行提示符或 Linux 命令行终端的应用程序 一、最终演示效果 QtCmd 不是因为它是 Qt 的组件,而是采用 Qt 开发了一个类似 Windows 命令提示符或者 Linux 命令行终端的应用程序,故取名为 QtCmd。 上述演示…

入门AJAX——XMLHttpRequest(Get) - 教程

入门AJAX——XMLHttpRequest(Get) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

知识付费网站搭建微信营销的功能

前段时间,写程序时,出了错误,竟然没有想到是自己属性命名的问题,哎~~~真是一定要注意规范呀,在这里我从网上找了些,规范作为参考 Sun 推荐的命名规范 1 ,类名要首字母大写,后面的单词…

公司网站php天河网站建设哪家好

文章目录 1. TSP案例引入2. 考虑惰性约束的求解效率对比2.1 求解基础TSP模型2.2 基于SCIP的Conshdlr添加惰性约束1. TSP案例引入 在运筹学建模和求解过程中,“lazy constraints”(惰性约束)是一种动态添加约束的策略,松弛部分约束后求解得到的“可行解”,不断地进行可行性…

ROM和RAM

1.1计算机中有两种存储器 (1)内存:内存与CPU接轨比较紧密,内存可以被CPU直接访问,内存可按照字节单位来随机访问,程序运行时离不开内存,程序中的变量都是定义在内存中,内存受限于物理技术和成本,容量比较小而…

深入解析:C#学习26天:内存优化的几种方法

深入解析:C#学习26天:内存优化的几种方法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

电子商务网站建设 代码学校诗歌网站建设

在存在缓存的情况下,删除较前的slide,会出现当前slide与后一个slide重复出现的情况 假设当前存在5个slide,且这5个slide已缓存,则删除slide2后,仍为5个slide,且slide2的内容变为slide3的内容,此…

老板合作网站开发网销怎么做

日常工作中经常需要确定各个指标的权重,利用熵值法确定权重属于客观赋权法,从数据出发,避免过强的主观性,但是也同时带来了一些问题。在某个论坛的帖子中,作者提出了这样的一个问题:“熵值法用于确定权重是…

整理数据制作 直方图,箱须图,概率密度估计(KDE)图

1.导入库和设置 import math import numpy as np import matplotlib.mlab as mlab import matplotlib.pyplot as plt plt.rcParams[font.sans-serif]=[SimHei] # 设置中文字体,作用设置 matplotlib 使用中文字体显示…

云原生应用架构设计原则与落地实践:从理念到便捷的方法论

云原生应用架构设计原则与落地实践:从理念到便捷的方法论pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

做装饰公司网站6wordpress添加直达链接

问题描述:边缘计算设备是什么意思。 问题解答: 边缘计算(Edge Computing)是一种计算模型,其主要思想是在距离数据产生源头更近的地方进行数据处理和计算,而不是将所有数据传输到远程云服务器进行处理。边…

基于本地模型+多级校验设计的高效缓存,有效节省token数量(有点鸡肋doge) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

UCosIII 在 Tang Nano 20K 的 SparrowRV 软核移植

一直想完整的完成从FPGA到RTOS再到基础APP完成整个流程的理解,于是,尝试在开源的小麻雀操作系统上移植最简单的UCos-III移植,但由于不懂Verilog,所以磕磕碰碰,以下是其记录: 准备工作 由于使用的是一块小小的 Ta…

学做网站培训班要多少钱家电网站源码

2019独角兽企业重金招聘Python工程师标准>>> 1.安装oracle客户端 2.配置文件 加增一个数据库的方式,是编辑 tnsnames.ora文件,在C:\Oracle\Ora81\NETWORK\ADMIN 目录下. 增加类似下面的信息 SVR236 (DESCRIPTION (ADDRESS_LIST (ADDRESS (PROTOCOL …

深入解析:Elasticsearch的集群管理介绍

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …