中易网

进程操作是内核空间还是用户空间

答案:2  悬赏:10  
解决时间 2021-11-08 19:06
  • 提问者网友:绿海猖狂
  • 2021-11-08 03:05
进程操作是内核空间还是用户空间
最佳答案
  • 二级知识专家网友:无字情书
  • 2021-11-08 03:41
Linux将4G的地址划分为用户空间和内核空间两部分。在Linux内核的低版本中(2.0.X),通常0-3G为用户空间,3G-4G为内核空间。这个分界点是可以可以改动的。 正是这个分界点的存在,限制了Linux可用的最大内存为2G.而且要通过重编内核,调整这个分界点才能达到。实际上还可以有更好的方法来解决这个问题。由于内核空间与用户空间互不重合,所以可以用段机制提供的保护功能来保护内核级代码。 2.2.X版的内核对此进行了改动。这样内核空间扩张到了4G。从表面上看内核的基地址变为了0,但实际上,内核通常仍在虚址3G以上。 用户空间在2.2.X中从直观上变为0-4G,让人迷惑,不是可以直接访问内核了? 其实不然,同过使用页机制提供的保护,阻止了用户程序访问内核空间。
全部回答
  • 1楼网友:哥在撩妹请勿打扰
  • 2021-11-08 04:00
我们知道现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4g(2的32次方)。操心系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核,保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系统而言,将最高的1g字节(从虚拟地址0xc0000000到0xffffffff),供内核使用,称为内核空间,而将较低的3g字节(从虚拟地址0x00000000到0xbfffffff),供各个进程使用,称为用户空间。每个进程可以通过系统调用进入内核,因此,linux内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4g字节的虚拟空间 需要注意的细节问题: (1) 内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。 (2) linux使用两级保护机制:0级供内核使用,3级供用户程序使用。 内核态与用户态: (1)当一个任务(进程)执行系统调用而陷入内核代码中执行时,称进程处于内核运行态(内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。 (2)当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息