Linux内存管理(重点)

本文深入解析内存管理核心概念,涵盖虚拟内存、物理内存、辅存的功能及作用,探讨进程隔离、自动分配管理、模板化程序设计等关键特性,以及段页式内存管理机制,为读者提供全面的内存管理知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 内存

1.(虚拟内存,非物理内存)

由处理器位数决定(eg:32位   2的32次方大的虚拟内存)

每一个进程都有2的32次方大的虚拟内存:其中包括1个G的内核空间,3个G的用户空间

用户空间运行用户启动的进程

用户空间内存放的包括:1.环境变量命令行参数  2. 栈  3.共享内存映射区   4.堆(malloc申请的空间) 5.数据段(存放全局变量) 6.代码段

数据段:

静态存储区(全局变量、静态变量(全局和局部)):

1.初始化区: 用“=”赋了初值的变量     2.未初始化区(bss):未赋初值的变量               

常量区:

2.(物理内存,数据实际存放的地方)

将虚拟地址转换为物理地址通过CPU中的MMU部件(内存管理单元);

为什么要通过虚拟内存来访问物理内存:为了保护系统安全;

3.辅存(交换内存)

临时存放物理内存不常使用的数据 ——换出(换入)(以页为单位)

在硬盘上临时开辟的内存;

4.虚拟内存寻址

处理器--虚拟地址--MMU--物理地址--物理内存-(辅存)

 

  • 进程隔离

保护独立的进程,防止互相干涉数据和存储空间

  • 自动分配和管理(利用malloc函数)

动态地分配,分配对程序员是透明的

  • 支持模板化的程序设计

能够定义程序模块,并且动态的创建、销毁模块、改变模块大小

  • 保护和访问控制

允许一部分内存可以由各种用户以各种方式进行访问

  • 长期存储

关机后长时间保存信息

 

段页式内存管理

  • 进程在虚拟内存中分为代码段、数据段和堆栈段
  • 进程在段中有许多固定大小的块组成,这些块成为页
  • 虚拟地址由段号、页号和页中偏移量构成
  • 虚拟地址和贮存中实地址(物理地址)的动态映射以页为单位(通常为4k)
  • 缺页

      消除了进程全部载入内存中

      按需调页(换页)--换入到辅存  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值