linux系统为什么把进程的4G地址空…
来源:互联网 发布:网络歌手囚鸟的歌曲 编辑:程序博客网 时间:2024/06/05 16:51
我们知道现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操心系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核,保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。
针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间。
每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟空间。
需要注意的细节问题:
(1)内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。
(2) Linux使用两级保护机制:0级供内核使用,3级供用户程序使用。
内核态与用户态:
(1)当一个任务(进程)执行系统调用而陷入内核代码中执行时,称进程处于内核运行态(内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。
(2)当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。
- linux系统为什么把进程的4G地址空…
- 关于进程虚拟地址为什么是4G的讨论
- 为什么把进程的地址空间分为逻辑地址空间和物理地址空间?
- 进程的虚拟地址空间4G划分
- 用户进程共享3~4G内核地址空间---Linux内核笔记
- 为什么32位机跑linux的用户进程地址是从0x08048000开始呢?
- Linux 进程的地址空间
- Linux系统--进程地址空间之虚拟地址空间
- Linux系统编程基础知识-Linux进程地址空间和虚拟内存
- 为什么32位的win2003服务器系统支持超过4G甚至更多的内存
- 为什么32位系统支持的最大内存为4G?
- 为什么Linux系统最大进程号是32767
- Linux系统编译器GCC和g++的重要区…
- 清空Linux系统的缓存
- linux 进程地址空间的一步步探究
- linux 进程地址空间的一步步探究
- Linux进程地址空间的一步步探究
- linux 进程地址空间的一步步探究
- vector容器删除某些元素且释放内存
- git 常用命令
- linux文件设置权限命令umask
- d3.js中的选择元素
- 如何实现 C 语言的继承和多态
- linux系统为什么把进程的4G地址空…
- 括号序列(栈)
- Sublime Text 3 断点调试C
- c#局域网屏幕广播二三事(2)-拆包组包
- Matlab 中打开.bdf 文件
- 《自控力》读后感
- 三种编码方式
- Openjudge2729 Blah数集(单调队列)
- 对于linux下system()函数的深度理…