程序的内存布局
1、User space 与 Kernel space 现代的应用程序都运行在一个内存空间里,在 32 位系统中,这个内存空间拥有 4GB (2 的 32 次方)的寻址能力。 尽管现在的内存空间都号称是平坦的,但实际上内存仍然在不同的地址区间有着不同的地位,例如,大多数操作系统都会将 4GB 的内存空间一部分挪给内核使用,应用程序无法直接访问这一段内存,这一部分内存地址被称为 内核空间。 Windows 在默认的情况下会将高地址的 2GB 空间分配给内核(也可以配置 1GB)。 Linux 默认情况下将高地址的 1GB 空间分配给内核。 用户使用的剩下的 2GB 或 3GB 的内存空间称为用户空间。 为什么要区分内核空间和用户空间? 大致有三点因素: 第一点:操作系统的数据都是存放于系统空间的,用户进程的数据是存放于用户空间的; 第二点:分开来存放,就让系统的数据和用户的数据互不干扰,保证系统的稳定性,并且管理上很方便; 第三点:也是重要的一点,将用户的数据和系统的数据隔离开,就可以对两部分的数据的访问进行控制。这样就可以确保用户程序不能随便操作系统的数据,这样防止用户程序误操作或者是恶意破坏系统。
下面这一张图,比较形象的解释了 User space 与 Kernel space 的区别 (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |