1. 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虚拟内存空间布局相关推荐

  1. 32位机4G虚拟内存 64位机128G虚拟内存计算误区

    1. 32位 我以为32bit(这里我没搞清地址总线的概念,总结来说:32位CPU每次可以处理32个bit 4个字节(B),每一个字节都有一个地址,32位操作系统又有32个地址总线,两个地址总线00 ...

  2. 进程4G虚拟内存空间的分配

    通常我们常说的4G/8G内存是指计算机硬件的内存条是4G/8G,而不是我们今天所谈论的进程4G虚拟的内存. 当一个程序运行时,系统会为每一个进程分配一个4G的虚拟内存空间,用来保存进程运行所需要的各种 ...

  3. 前端自动化工作流_当每项工作都自动化时

    前端自动化工作流 App developer. Social media manager. Personal trainer. No person on Earth could have predic ...

  4. 为什么有时我会用妻子的电话

    Yes, you heard me right. But don't get me wrong, it is not because I am spying on her, or reading he ...

  5. mysql 库比对_库比蒂诺日期时间选择器

    mysql 库比对 Easily pick a Date or a Time in your Flutter app 在Flutter应用中轻松选择日期或时间 I wrote a routine to ...

  6. linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?

    问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间是什么意思?linux系统的虚拟4G空间中,高位的1G是用于系统内核运行的,那 ...

  7. linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?进程虚拟地址4G指拥有4G的寻址能力,需要页表转换为实际物理地址,每个进程用到的内核是直接映射,地址的进程地址-3G的关系

    linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间 ...

  8. linux虚拟内存api,Linux虚拟内存空间分布-Go语言中文社区

    平常总说cpu的位数,其实说的是cpu一次能运算的最长整数的宽度,既ALU(算术逻辑单元)的宽度. cpu的位数也是数据总线的条数 数据总线:数据线的总和,数据线就是cpu与内存进行数据传递的通道,一 ...

  9. 一步一图带你深入理解 Linux 虚拟内存管理

    从本文开始我们就正式开启了 Linux 内核内存管理子系统源码解析系列,笔者还是会秉承之前系列文章的风格,采用一步一图的方式先是详细介绍相关原理,在保证大家清晰理解原理的基础上,我们再来一步一步的解析 ...

最新文章

  1. 基于Python的人工智能美颜系统
  2. spark-submit --files 动态加载外部资源文件
  3. 如何量化医学图像分割中的置信度?
  4. 树形dp ---- 2018年杭电多校第二场 H travel
  5. [摘录]优势谈判目录
  6. 【微信小程序】 自定义导航栏(navigationStyle=custom)
  7. python 二进制数 转字符串_Python二进制串转换为通用字符串的方法
  8. 操作系统(10)-虚拟内存
  9. 差分进化算法python_差分进化算法Python实现
  10. Web请求响应编码问题详解
  11. proto3与proto2的区别
  12. 【毕业设计】基于单片机的指纹识别考勤系统 - 物联网 stm32
  13. 三维地理信息系统空间的可视化分析
  14. 平缓的banner图片切换效果
  15. 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)
  16. java高级之JDBC的基本操作知识
  17. OSChina 周五乱弹 —— 学学于谦他爸爸王老爷子的一天
  18. 使用js打印时去除页眉页脚
  19. php替换字符串字符,PHP替换字符串()
  20. 企业电子招标采购系统源码Spring Cloud + Spring Boot 前后端分离 + 二次开发

热门文章

  1. 微信分支付免押租借_小程序版本
  2. 新手零基础学PR速成课福利
  3. 2017互联网女皇报告发布,AI相关要点都在这里(附报告全文)
  4. Python爬虫处理抓取数据中文乱码问题
  5. docker安装portainer中文版
  6. ESP32 sample code 编译报错: FAILED: esp-idf/mbedtls/x509_crt_bundle
  7. 目标检测 YOLOv5网络v6 0版本总结
  8. Windows 下查看显卡使用情况
  9. 常见的个人知识管理软件工具
  10. 英伟达账号为什么登录不了_英伟达无法登陆怎么办_nvidia登不进去的修复方法-系统城...