首页
学习
活动
专区
圈层
工具
发布

【Linux系统】初探虚拟地址空间

在Linux下,看到的是虚拟地址,而物理地址由操作系统统一管理! 2. 虚拟地址空间与页表 注意,我们下面谈的程序地址空间、进程地址空间、虚拟地址空间,其实指的都是一个东西。...每个程序运行时,操作系统会给它分配一个虚拟地址空间,这个空间是逻辑上的、抽象的,不是真实的物理内存。在进程的task_struct中,描述虚拟地址空间的结构是mm_struct。...程序使用虚拟地址,当然无法访问真实的内存,所以操作系统需要把虚拟地址翻译成物理地址,才能真正访问到物理内存 —— 这个翻译的核心就是页表。 页表之中,记录着虚拟地址到物理地址的映射。...因为有地址空间的存在和页表的映射的存在,我们的物理内存中可以对未来的数据进行任意位置的加载!物理内存的分配和进程的管理就可以区别,进程管理模块和内存管理模块就完成了解耦合。...而当你真正进行对物理地址空间访问的时候,才执行内存的相关管理算法,帮你申请内存,构建页表映射关系(延迟分配),这是由操作系统自动完成,用户包括进程完全0感知。这就是缺页中断引起的二次内存申请。

38910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux 内核 内存管理】虚拟地址空间布局架构 ① ( 虚拟地址空间布局架构 | 用户虚拟地址空间划分 )

    文章目录 一、虚拟地址空间布局架构 二、用户虚拟地址空间划分 一、虚拟地址空间布局架构 ---- 在 64 位的 Linux 操作系统中 , " ARM64 架构 " 并 不支持 64 位的虚拟地址..., 最大只支持 48 位的虚拟地址 , 64 位地址太大 , 并不需要那么大的内存空间 ; " ARM64 架构 " 中 , Linux 系统的 " 内核虚拟地址 “ 与 ” 用户虚拟地址 "...0000 0000 ~ 0x FFFF FFFF FFFF FFFF , 48 位有效地址 ; 二、用户虚拟地址空间划分 ---- Linux 操作系统 进程 的 " 用户虚拟空间 " 起始地址...为 0 ; " 用户虚拟空间 " 的大小为 TASK_SIZE , 该值与 处理器 架构 有关 , 不同的处理器 , 定义的 TASK_SIZE 宏不同 ; 32 位处理器 定义的 TASK_SIZE...4.12\arch\arm64\include\asm\memory.h#86 中 , 定义了 TASK_SIZE 与 TASK_SIZE_64 宏 ; VA_BITS 是编译内核时 , 选择的 " 虚拟地址空间

    8.5K20

    Linux系统 —— 进程系列 - 程序地址空间:虚拟地址空间

    这里的大富翁就是我们的操作系统OS,100个亿就是物理内存,私生子就是进程,画饼就是虚拟地址空间 这个是我们就有一个问题了:OS要把进程管理起来,那么要不要把饼也管理起来呢?...答案就是:先描述,再组织 我们的虚拟地址空间(画饼)本质上其实就是一个数据结构,叫做:mm_struct 总结:虚拟地址空间其实就是一个在内核当中,在操作系统内部给进程创建结构体对象...物理地址,⽤⼾⼀概看不到,由OS统⼀管理 OS必须负责将 虚拟地址 转化成 物理地址 1.2 虚拟地址空间的结构体里有哪些属性(如何实现) 我们有一个问题:什么叫做区域划分呢?...物理内存的分配 和 进程的管理就可以做到没有关系,进程管理模块和内存管理模块就完成了解耦合 因为有地址空间的存在,所以我们在C、C++语⾔上new, malloc空间的时候,其实是在地址 空间上申请的...⽽当你真正进⾏对物理地址空间访问 的时候,才执⾏内存的相关管理算法,帮你申请内存,构建⻚表映射关系(延迟分配),这 是由操作系统⾃动完成,⽤⼾包括进程完全0感知 3.

    1.7K10

    完全剖析 - Linux虚拟内存空间管理

    所以,Linux 根据功能上的差异,来对虚拟内存空间进行管理。 今天,我们来介绍一下 Linux 对虚拟内存空间管理的细节。...段 之前我们说过,在 32 位的操作系统中,每个进程都拥有 4GB 的虚拟内存空间。Linux 根据功能上的差异,把整个虚拟内存空间划分为多个不同区间,称为 段。...我们先来看看 Linux 进程虚拟内存空间的布局图,如图 1 所示: ? 上图展示了 Linux 进程的虚拟内存空间布局情况,我们只关注 用户空间 的布局。...虚拟内存区 从上面的介绍可知,Linux 按照功能上的差异,把虚拟内存空间划分为多个 段。那么在内核中,是通过什么结构来管理这些段的呢? 答案就是:vm_area_struct。...,每个进程都有一个类型为 mm_struct 的内存管理对象,用于管理进程的虚拟内存空间和内存映射等。

    4.2K12

    Liunux内核内存管理之虚拟地址空间

    虚拟地址空间的大小也由操作系统决定,32位的操作系统虚拟地址空间的大小为 2^32 字节,也就是 4G,64 系统的操作系统虚拟地址空间大小为 2^64 字节,这是一个非常大的数,感兴趣的可以自己计算一下...关于虚拟4G内存的描述和解析: 一个进程用到的虚拟地址是由内存区域表来管理的,实际用不了4G。而用到的内存区域,会通过页表映射到物理内存。...进程的虚拟地址空间分为用户区(03G)和内核区(34G), 其中内核区是受保护的, 用户是不能够对其进行读写操作的; 内核区对于所有进程是共享的;系统中所有进程对应的虚拟地址空间的内核区都会映射到同一块物理内存上...用户空间与内核通信方式有哪些? 1)系统调用。用户空间进程通过系统调用进入内核空间,访问指定的内核空间数据; 2)共享映射区mmap。...用户空间进程可以使用封装后的系统调用接口访问驱动设备节点,以和运行在内核空间的驱动程序通信; 4)copy_to_user()、copy_from_user(),是在驱动程序中调用接口,实现用户空间与内核空间的数据拷贝操作

    1.8K20

    Linux 内核内存管理:虚拟地址空间、伙伴系统和块分配器

    一、Linux内核架构图Linux内核是一个单内核操作系统,这意味着它是一个运行在计算机硬件之上的单一程序。内核负责管理计算机的硬件资源,例如CPU、内存和I/O设备,并为用户空间程序提供服务。...内存管理单元(MMU):负责管理虚拟内存,允许进程使用比物理内存更多的内存。虚拟文件系统(VFS):提供了一个统一的接口来访问不同的文件系统。网络堆栈:负责处理网络通信。...2.2、内核空间内核空间的基本功能:虚拟内存管理负责从进程的虚拟地址空间分配虚拟页,sys_brk用来扩大或收缩堆,sys_mmap用来在内存映射区域分配虚拟页,sys_munmap用来释放虚拟页。...,它负责管理计算机的物理内存并为进程提供虚拟地址空间。...本文介绍了Linux内核内存管理的三个关键组件:虚拟地址空间、伙伴系统和块分配器。虚拟地址空间允许每个进程拥有自己的私有地址空间,其中包含代码、数据和堆栈。这提供了内存隔离,防止进程相互干扰。

    1.5K00

    MyEMS能源管理系统后台配置-空间管理

    本文介绍MyEMS能源管理系统后台配置-空间管理13.空间管理本系统可满足企业对能源管理系统的需求,通过对主要能耗设备、用能单位的能源利用现状进行监测分析,采用统计分析方法,能源审计方法和能量平衡方法等定期对企业能耗状况及其费用进行分析...13.1空间 查看空间: 1.点击菜单“系统管理” 2.点击菜单“空间管理” 3.点击标签页“空间”添加空间: 1.点击菜单“系统管理” 2.点击菜单“空间管理” 3...” 2.点击菜单“空间管理” 3.点击标签页“绑定设备” 4.在“请选择空间”模块中点击想要查看的空间名绑定设备: 1.点击菜单“系统管理” 2.点击菜单“空间管理”...” 2.点击菜单“空间管理” 3.点击标签页“绑定租户” 4.在“请选择空间”模块中点击想要查看的空间名 绑定租户: 1.点击菜单“系统管理” 2.点击菜单“空间管理” 3...” 2.点击菜单“空间管理” 3.点击标签页“绑定工作日历” 4.在“请选择空间”模块中点击想要查看的空间名绑定工作日历: 1.点击菜单“系统管理” 2.点击菜单“空间管理

    35910

    虚拟地址空间与物理内存(Linux系统)

    当然页表的作用不止于此,它还起到权限管理的作用,即每个地址都用自己的rwx权限,对野指针、空指针等进行访问,就是在页表这里被拦截的。 有了虚拟内存的认识我们就可以解释问题引入了。...二、虚拟内存的描述与组织 进程有自己的虚拟内存,那么就需要对它进行管理,既然要管理就需要对它进行描述与组织,所以在Linux中就有了mm_struct结构体对虚拟内存进行描述。...而使用页表做一个映射关系则可以把这些空间在虚拟地址上变得有序,方便管理。 保护物理内存。页表除了有一个映射的作用,它还控制了每个地址空间的rwx这些权限,从而达到保护物理内存的目的。 解耦合。...那么同理,我们就可以理解挂起操作了,操作系统在执行过程中发现内存不足,能够实现把阻塞状态或优先级低的进程的代码数据从内存中释放,留出更多的内存给其它进程。...虚拟空间的组织⽅式有两种: 当虚拟区较少时采取单链表,由mmap指针指向这个链表。 当虚拟区间多时采取红⿊树进⾏管理,由mm_rb指向这棵树。

    71410

    Linux操作系统:再谈虚拟地址空间

    所以,虚拟地址不仅仅是你在操作系统内形成进程形成的,而是在编译器编译时就已经形成的。 所以虚拟地址与编译器也有关系!!!!! 这句话就是我们想告诉大家的事情。 你的mm_struct怎么来的?...(cr3是操作系统自己用的寄存器不会暴露给你 ) :物理地址 随后MMU硬件加cr3就可以进行查表了。 我们最后可以得出结论:虚拟地址,是操作系统,CPU,编译器共同协作下的产物。...四、动态库的加载 在Linux内核中,每个进程的虚拟地址空间都由一个关键的数据结构mm_struct来管理。...这个结构体远比我们最初想象的复杂,它不仅保存了地址空间的边界信息,还通过精巧的链式结构实现了高效的内存管理。...其他字段(如反向映射、操作函数集等) }; 所以,我们的虚拟地址空间,哪些被用到了,实际上都会形成个链表,按照一定顺序串连起来进行管理,所有 VMA 按 虚拟地址升序 通过 vm_next 指针串联,

    44410

    空闲空间管理(文件系统)

    Hi~朋友,关注置顶防止错过消息 摘要 空闲空间管理 文件系统结构 目录存储 软链接和硬链接 空闲空间管理 为了提高为文件分配空闲空间的效率,我们需要通过空闲空间管理来维护好现有的空闲空间,避免每次为文件分配空间时去扫描整个磁盘...常见的空闲空间管理方式有以下几种: 空闲表法 空闲链表法 位图法 空闲表法 空闲表法的实现? 空闲表法就是为所有的空闲空间建立一张表,表中的内容包括空闲区的第一个块号和该空闲区的个数。...当用户删除一个文件时,系统也需要回收空间,也需要扫描空闲表,寻找一个空闲表条目并将第一个物理块号和它占用的块数填到这个条目中。...Linux操作系统中就采用了位图的方式来管理空闲空间,不仅用于数据空闲块的管理,还用于inode空闲块的管理,因为inode也是存储在磁盘的。...: 如果系统崩溃损坏了超级块或块组描述符,通过冗余的备份也可恢复 通过使文件和管理数据尽可能的近,减少了磁头的寻道和旋转,提高文件系统的性能。

    1.7K20

    11个免费开源后台管理系统模板

    当你写项目的时候,如何快速的完成一个项目的搭建,这个时候就需要借助到一些模板了,前端开发的一个好处就是,各类UI模板都是相当的齐全的,直接拿来用就可以了,脱离了一行又一行垒代码的繁琐的工作,以下的开源后台管理系统模板是我在逛...panjiachen.github.io/vue-element-admin/#/dashboard 一个基于 vue2.0 和 Eelement 的控制面板 UI 框架,这是使用vue技术栈开发的前端程序员的首选管理系统模板...UI 框架,这是一个非常老牌的后台管理系统模板,每个页面都是单独的html网页,适合前端入门新手来做项目。...,挺喜欢这个界面的UI,简约清晰不累赘,多功能的后台框架模板,适用于绝大部分的后台管理系统开发。...,基于 vue.js 和 ElementUI 的管理系统前端解决方案 ,小于 60kb 的本地首屏 js 加载,已经做好大部分项目前期准备工作 11:vuestic-admin 推荐指数:star:7.1k

    9.5K11

    开源免费定时任务管理系统 Gocron

    概览 Gocron是一个开源免费的定时任务管理系统。...它使用Go语言开发,是一个轻量级定时任务集中调度和管理系统,用于替代Linux-crontab,旨在为开发者及运维人员提供一个高效、轻量级且用户友好的任务调度解决方案。...作为Linux-crontab的现代化替代品,Gocron不仅继承了传统定时任务管理的灵活性,还融入了强大的Web界面管理功能,使得任务配置、监控与维护变得前所未有的直观与便捷。...Gocron配备了一套完善的Web管理界面,允许用户在任何时间、任何地点通过浏览器轻松添加、编辑、删除定时任务,并实时查看任务执行状态和日志,无需直接登录服务器操作。...项目地址:https://github.com/ouqiang/gocron 功能特性 Web界面管理定时任务 crontab时间表达式, 精确到秒 任务执行失败可重试 任务执行超时, 强制结束 任务依赖配置

    2.2K10

    11个免费开源后台管理系统模板

    当你写项目的时候,如何快速的完成一个项目的搭建,这个时候就需要借助到一些模板了,前端开发的一个好处就是,各类UI模板都是相当的齐全的,直接拿来用就可以了,脱离了一行又一行垒代码的繁琐的工作,以下的开源后台管理系统模板是我在逛...panjiachen.github.io/vue-element-admin/#/dashboard 一个基于 vue2.0 和 Eelement 的控制面板 UI 框架,这是使用vue技术栈开发的前端程序员的首选管理系统模板...UI 框架,这是一个非常老牌的后台管理系统模板,每个页面都是单独的html网页,适合前端入门新手来做项目。...,挺喜欢这个界面的UI,简约清晰不累赘,多功能的后台框架模板,适用于绝大部分的后台管理系统开发。...,基于 vue.js 和 ElementUI 的管理系统前端解决方案 ,小于 60kb 的本地首屏 js 加载,已经做好大部分项目前期准备工作 ?

    59.2K1010

    MyEMS 开源能源管理系统后台配置 —— 空间管理详解

    一、系统概述与空间管理价值MyEMS 开源能源管理系统聚焦建筑、工厂、商场、医院、园区等场景,可实现电、水、气等能源数据的全链路采集、智能分析与可视化报表输出。...查看空间操作路径:点击菜单「系统管理」→「空间管理」;在标签页「空间」中查看列表。2....权限管理:新增 / 删除空间需管理员权限,普通用户仅可查看绑定关系;异常处理:若出现「无效 ID」提示,需检查空间是否被逻辑删除或权限失效;重复绑定设备时系统自动拦截,确保数据唯一性。...用户可能是系统管理员、企业能源管理负责人,或者是技术实施人员,他们需要不仅了解操作步骤,还希望知道如何优化配置、解决常见问题,以及系统如何与其他能源设施集成。...MyEMS 开源能源管理系统空间管理深度解析:从基础操作到能源生态构建一、系统架构与空间管理的核心定位MyEMS 基于微服务架构设计,空间管理模块作为能源数据建模的基础层,通过以下链路实现能源可视化:物理空间数字化

    51010

    虚拟地址空间:从概念到内存管理的底层逻辑

    本文将沿着 “概念引入→核心定义→管理机制→存在价值” 的脉络,系统解析虚拟地址空间的底层逻辑:从 “为什么需要虚拟地址” 这一根本问题出发,逐步揭开 “虚拟地址” 与 “虚拟地址空间” 的本质区别,以及操作系统如何通过虚拟内存管理技术...本质是操作系统的抽象:通过页表和 MMU(内存管理单元),将虚拟地址空间中的地址映射到实际的物理内存地址,实现 “虚拟地址→物理地址” 的转换。...结束语​ 虚拟地址空间的设计,是操作系统对 “复杂问题简单化” 的经典实践:通过引入 “虚拟地址” 这一抽象概念,屏蔽了物理内存的硬件细节,让进程无需关心实际内存布局;借助 “虚拟地址空间” 的结构化管理...从 “为什么需要虚拟地址空间” 的本质追问,到 “虚拟地址如何映射物理内存” 的技术细节,我们看到的不仅是一套内存管理机制,更是操作系统 “以软件定义硬件逻辑” 的设计哲学。...虚拟地址空间的故事远未结束 —— 随着 64 位系统的普及和内存需求的增长,其管理机制仍在不断优化,但核心思想始终未变:用逻辑抽象解决物理限制,让技术的复杂性服务于用户的简单性。

    67710

    VMware虚拟机 扩展Ubuntu系统磁盘空间方法

    VMware虚拟机扩展Ubuntu系统磁盘空间方法 问题描述 为了确保工具、驱动等的通用性,我们通常需要在多种环境上进行验证,但由于资源有限,并不能保证每个环境都有对应的主机供我们使用,所以我们通常使用虚拟机来完成验证...一般我们在安装虚拟机时都会选择默认的20G磁盘空间,但是一旦需要搭建一两个交叉编译环境后,20G的空间就无法满足了,如果需要在虚拟机上搭建比较复杂的环境的话,一般给虚拟机50G的内存空间较合适。...解决方法 磁盘扩容 选中需要扩容的虚拟机,按照如图步骤进行配置: 设置完成会弹出如下界面,点击确认即可 重新划分磁盘 我们对Windows磁盘进行分区等操作时一般会借助于一些软件进行磁盘分区的合并会拆分等...,同样,我们本次在Ubuntu下也借助于该类型的软件帮助我们更好的实现磁盘的重新分区以及扩展文件系统,我们使用的软件是gparted 打开虚拟机 ,终端中输入sudo apt-get install gparted...选中未分配的区域点击右键,选中新建,增加扩展分区 , 大小默认即可,选择好后点击Add保存退出 选中未分配的区域点击右键,选中新建,增加逻辑分区 , 也就是交换分区 , 大小默认即可 , 类型选择逻辑分区 ,文件系统选择

    4K10

    虚拟主机、虚拟空间、VPS、云服务器等云计算资源进行深度分析与对比

    本文将对虚拟主机、虚拟空间、VPS、云服务器等云计算资源进行深度分析与对比,特别关注其弹性计算能力、实例类型覆盖、镜像支持、存储选项以及网络能力。...技术实现:通过虚拟化技术,腾讯云能够在物理服务器上创建多个独立的虚拟服务器实例。 其他功能:腾讯云还提供了预付费和后付费两种计费模式,用户可以根据实际需求灵活选择。...腾讯云提供了公有镜像(如Windows、Linux)、自定义镜像及共享镜像。 功能亮点:腾讯云的镜像市场提供了丰富的操作系统和应用镜像,用户可以一键部署。...技术实现:云硬盘基于分布式存储系统,提供数据冗余和高可用性。 其他功能:本地盘则适用于对性能要求极高的场景,如数据库存储。 网络能力 网络能力决定了云计算资源的可用性和灵活性。...undefined• 安全防护:免费基础DDoS防护、安全组、网络ACL,多层防护守护资源安全。 成本优化与便捷管理undefined• 灵活计费:按量计费(小时级结算)或包年包月,轻松控制成本。

    59510

    【Linux 内核】进程管理 ( 进程与操作系统 | 进程与程序 | 进程与线程 | 虚拟地址空间 )

    文章目录 一、进程与操作系统 二、进程与程序 三、进程与线程 四、虚拟地址空间 一、进程与操作系统 ---- 操作系统与硬件的关系 : 操作系统 使用 硬件 提供的资源 , 如 CPU , 内存 , 磁盘..., 网卡 等硬件资源 ; 进程与操作系统之间的关系 : 进程 使用 操作系统 提供的资源 , 如 VFS 虚拟文件系统 , 进程调度模块 , 内存管理模块 , 网络驱动 等资源 , 这些都是 操作系统...; 四、虚拟地址空间 ---- 进程 与 内存管理 : 进程 是 内存管理 的基本单元 , 每个进程都是 独立的内存管理单元 ; 在 Linux 内核中 , 进程 又被称为 任务 ; 虚拟地址空间概念...: 每个 进程 作为 独立的内存管理单元 , 其内存单元 称为 虚拟地址空间 , 进程 的 虚拟地址空间 分为 用户虚拟地址空间 ( 每个进程独立拥有 ) 内核虚拟地址空间 ( 所有进程共享 ) 操作系统...中 运行的 所有进程 共享 内核虚拟地址空间 , 每个 进程 都 拥有 独立的 用户虚拟地址空间 ;

    1.1K10
    领券