我是靠谱客的博主 神勇大叔,最近开发中收集的这篇文章主要介绍进程--用户地址空间和内核地址空间,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

用户态地址空间

  • text:代码段可执行代码、字符串字面值、只读变量

  • data:数据段,映射程序中已经初始化的全局变量

  • bss:存放程序中未初始化的全局变量

  • heap:运行时的堆,在程序运行中使用 malloc 申请的内存区域

  • mmap:共享库及匿名文件的映射区域

  • stack:用户进程栈

内核态地址空间

  • 直接映射区:线性空间中从 3G 开始最大 896M 的区间,为直接内存映射区

  • 动态内存映射区:该区域由内核函数 vmalloc 来分配

  • 永久内存映射区:该区域可访问高端内存

  • 固定映射区:该区域和 4G 的顶端只有 4k 的隔离带,其每个地址项都服务于特定的用途,如:ACPI_BASE 等

进程内存空间

用户进程通常情况只能访问用户空间的虚拟地址,不能访问内核空间虚拟地址
内核空间是由内核负责映射,不会跟着进程变化;内核空间地址有自己对应的页表,用户进程各自有不同额页表

最后

以上就是神勇大叔为你收集整理的进程--用户地址空间和内核地址空间的全部内容,希望文章能够帮你解决进程--用户地址空间和内核地址空间所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部