0

0

虚拟内存是个啥

雪夜

雪夜

发布时间:2025-09-22 08:20:23

|

810人浏览过

|

来源于php中文网

原创

对于用户来说,内存就像是一个可以按地址访问的字节数组:

虚拟内存是个啥在很久之前,内存的使用非常简单。一台机器上通常只运行一个程序,操作系统仅作为一个函数库存在。内存中,除了操作系统占用的一些空间外,其余部分都分配给运行的程序,示意图如下:

虚拟内存是个啥随着需求的增长,人们开始希望在一台计算机上同时运行多个程序。然而,由于内存条只有一个,这些程序必须共享同一块内存,因此需要将内存划分为不同的部分分配给不同的程序,如图所示:

虚拟内存是个啥这种方法存在一些问题:

不同程序只能使用分配给它们的特定内存区域,程序员在编写代码时必须小心计算,避免侵占其他程序的内存空间。这对开发者来说非常不友好。此外,如果有恶意程序试图读取或修改其他程序的内存,这不仅会暴露信息,还可能导致严重的问题。另外,可用的内存空间有限,限制了程序的扩展性。

为了解决这些问题,操作系统引入了虚拟内存的概念。操作系统的设计者认为,如果用户直接操作内存,会面临无法确定其他程序使用了哪些内存的问题。为了避免这种复杂性,他们设计了让用户将内存视为一个超大字节数组的方案,称为

虚拟内存
。操作系统负责将虚拟地址映射到实际的物理内存地址,如下图所示:

虚拟内存是个啥然而,随着用户数量的增加,即使每个用户只使用少量内存,总需求可能会超过物理内存的容量。此外,一些程序可能本身就需要超过物理内存的空间。为了应对这一挑战,操作系统的设计者聪明地利用了硬盘

ARTi.PiCS
ARTi.PiCS

ARTi.PiCS是一款由AI驱动的虚拟头像生产器,可以生成200多个不同风格的酷炫虚拟头像

下载

虚拟内存是个啥操作系统负责将虚拟内存地址映射到物理内存地址或磁盘地址,从而提供了一个巨大的虚拟内存空间。那些长时间不使用的内存可以被操作系统移到磁盘上,需要时再加载回物理内存。这个过程完全由操作系统自动完成,程序员只需在编写代码时像操作一个巨大的字节数组一样,轻松地移动数据或进行CPU处理,而无需担心侵入其他程序的内存空间。

虚拟内存的结构对于程序员来说是一个超大的字节数组,但它也被划分为不同的部分,并非所有部分都可访问。一般的虚拟内存结构如下:

虚拟内存是个啥当用户调用函数时,会生成一个称为

栈帧
的结构,导致虚拟内存中的
栈空间
增长。

当用户需要申请额外的内存时,系统会从

堆空间
分配,从而导致虚拟内存中的
堆空间
增长。

需要特别指出的是,我们常说的操作系统

内核
并不是一个独立的进程,而是指操作系统的代码部分。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

392

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

572

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

392

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

572

2023.08.10

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

11

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

4

2026.01.21

无人机驾驶证报考 uom民用无人机综合管理平台官网
无人机驾驶证报考 uom民用无人机综合管理平台官网

无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

16

2026.01.21

Python多线程合集
Python多线程合集

本专题整合了Python多线程相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.21

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Excel 教程
Excel 教程

共162课时 | 12.7万人学习

PHP基础入门课程
PHP基础入门课程

共33课时 | 2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号