4G虚拟内存空间布局
- ALU算术逻辑单元
32位处理机 32 指计算机最多一次处理的比特位
进程地址空间需要隔离,防止恶意的程序修改其他程序的内存数据,因此计算机中引入虚拟地址空间。
4GB虚拟地址空间布局如下图所示
每个程序运行起来以后,它将拥有自己独立的虚拟地址空间。所有的进程都拥有自己的用户空间,但却共享一个内核空间。
用户空间:
1、128M大小的不可访问区域(保留区)不可读、不可写
我们通常将申请的临时变量指针初始化时置为NULL,可以防止后续无意使用这个指针时出错,NULL=0X00,而保留区的数据不能访问。
2、.text代码段
存储代码中的指令。一份代码是由数据和指令构成的,局部变量也属于指令,但是局部变量存储在栈上,代码运行时才在栈中预留好的区域中开辟
3、.data段
这个区域存储代码中的各种数据,包括全局变量,静态局部变量。且必须为已经初始化且初始化不为0的数据
4、.bss段
这个区域存储的也是代码中的各种数据,和.data不同的是,存储的是未初始化或者初始化了但为0 的数据(这个段在可执行文件中不占用空间)
5、堆
当我们需要申请一块连续且指定大小的内存块的动态内存时,需要在 堆中申请。并且需要手动申请,手动释放。不释放会造成内存泄漏
6、栈
所有的局部变量存储在这里,函数的运行也需要栈的开辟,释放空间由系统完成
7、命令行参数
main()函数原型:int main(int argc,char *argv[],char *envp[]){}
argc是命令行参数的个数,不指定时默认为1,是当前文件名。 char *argv[]也可以写成char**argv,其中argv[0]默认存放程序名称,argc的值最小为1.char *envp[]是环境变量。 命令行参数就是argv,里面存放程序名,以及参数。
内核空间:
1、内存直接访问区(ZONE_DMA 大约16M)
ZONE_DirectMemoryAccess(直接内存访问)可以加快磁盘和内存之间的数据交换,不需要经过CPU的寄存器,这是CPU可以去干别的事,大大增加了效率。
2、ZONE_NORMAL(大约892M)
内核中最重要最常用的部分,用于直接映射,PCB就在这里。
3、ZONE_HIGHMEM(128M)
高端内存,用于在内核中映射高于1GB的物理内存时使用,64位操作系统没有该段
4G虚拟内存空间布局相关推荐
- 32位机4G虚拟内存 64位机128G虚拟内存计算误区
1. 32位 我以为32bit(这里我没搞清地址总线的概念,总结来说:32位CPU每次可以处理32个bit 4个字节(B),每一个字节都有一个地址,32位操作系统又有32个地址总线,两个地址总线00 ...
- 进程4G虚拟内存空间的分配
通常我们常说的4G/8G内存是指计算机硬件的内存条是4G/8G,而不是我们今天所谈论的进程4G虚拟的内存. 当一个程序运行时,系统会为每一个进程分配一个4G的虚拟内存空间,用来保存进程运行所需要的各种 ...
- 前端自动化工作流_当每项工作都自动化时
前端自动化工作流 App developer. Social media manager. Personal trainer. No person on Earth could have predic ...
- 为什么有时我会用妻子的电话
Yes, you heard me right. But don't get me wrong, it is not because I am spying on her, or reading he ...
- mysql 库比对_库比蒂诺日期时间选择器
mysql 库比对 Easily pick a Date or a Time in your Flutter app 在Flutter应用中轻松选择日期或时间 I wrote a routine to ...
- linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?
问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间是什么意思?linux系统的虚拟4G空间中,高位的1G是用于系统内核运行的,那 ...
- linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?进程虚拟地址4G指拥有4G的寻址能力,需要页表转换为实际物理地址,每个进程用到的内核是直接映射,地址的进程地址-3G的关系
linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间 ...
- linux虚拟内存api,Linux虚拟内存空间分布-Go语言中文社区
平常总说cpu的位数,其实说的是cpu一次能运算的最长整数的宽度,既ALU(算术逻辑单元)的宽度. cpu的位数也是数据总线的条数 数据总线:数据线的总和,数据线就是cpu与内存进行数据传递的通道,一 ...
- 一步一图带你深入理解 Linux 虚拟内存管理
从本文开始我们就正式开启了 Linux 内核内存管理子系统源码解析系列,笔者还是会秉承之前系列文章的风格,采用一步一图的方式先是详细介绍相关原理,在保证大家清晰理解原理的基础上,我们再来一步一步的解析 ...
最新文章
- 基于Python的人工智能美颜系统
- spark-submit --files 动态加载外部资源文件
- 如何量化医学图像分割中的置信度?
- 树形dp ---- 2018年杭电多校第二场 H travel
- [摘录]优势谈判目录
- 【微信小程序】 自定义导航栏(navigationStyle=custom)
- python 二进制数 转字符串_Python二进制串转换为通用字符串的方法
- 操作系统(10)-虚拟内存
- 差分进化算法python_差分进化算法Python实现
- Web请求响应编码问题详解
- proto3与proto2的区别
- 【毕业设计】基于单片机的指纹识别考勤系统 - 物联网 stm32
- 三维地理信息系统空间的可视化分析
- 平缓的banner图片切换效果
- 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)
- java高级之JDBC的基本操作知识
- OSChina 周五乱弹 —— 学学于谦他爸爸王老爷子的一天
- 使用js打印时去除页眉页脚
- php替换字符串字符,PHP替换字符串()
- 企业电子招标采购系统源码Spring Cloud + Spring Boot 前后端分离 + 二次开发
热门文章
- 微信分支付免押租借_小程序版本
- 新手零基础学PR速成课福利
- 2017互联网女皇报告发布,AI相关要点都在这里(附报告全文)
- Python爬虫处理抓取数据中文乱码问题
- docker安装portainer中文版
- ESP32 sample code 编译报错: FAILED: esp-idf/mbedtls/x509_crt_bundle
- 目标检测 YOLOv5网络v6 0版本总结
- Windows 下查看显卡使用情况
- 常见的个人知识管理软件工具
- 英伟达账号为什么登录不了_英伟达无法登陆怎么办_nvidia登不进去的修复方法-系统城...