大发黄金版网站Linux内核由系统内的所有进程共享

当前位置:大发黄金版客户端 > 大发黄金版网站 > 大发黄金版网站Linux内核由系统内的所有进程共享
作者: 大发黄金版客户端|来源: http://www.ouiouibebe.com|栏目:大发黄金版网站

文章关键词:大发黄金版客户端,内模式

  MS-DOS等操作系统在单一的CPU模式下运行,但是一些类Unix的操作系统则使用了双模式,可以有效地实现时间共享。在Linux机器上,CPU要么处于受信任的内核模式,要么处于受限制的用户模式。除了内核本身处于内核模式以外,大发黄金版网站所有的用户进程都运行在用户模式之中。

  内核模式的代码可以无限制地访问所有处理器指令集以及全部内存和I/O空间。如果用户模式的进程要享有此特权,它必须通过系统调用向设备驱动程序或其他内核模式的代码发出请求。大发黄金版网站另外,用户模式的代码允许发生缺页,而内核模式的代码则不允许。

  在2.4和更早的内核中,仅仅用户模式的进程可以被上下文切换出局,由其他进程抢占。除非发生以下两种情况,否则内核模式代码可以一直独占CPU:

  Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~ 4G.Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间.而将较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间)。因为每个进程可以通过系统调用进入内核,因此,Linux内核由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟空间。

  当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。

  用户空间的应用程序,通过系统调用,进入内核空间。这个时候用户空间的进程要传递很多变量、参数的值给内核,内核态运行的时候也要保存用户进程的一些寄存器值、变量等。所谓的进程上下文,可以看作是用户进程传递给内核的这些参数以及内核要保存的那一整套的变量和寄存器值和当时的环境等。

  硬件通过触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,大发黄金版网站内核通过这些参数进行中断处理。所谓的中断上下文,其实也可以看作就是硬件传递过来的这些参数和内核需要保存的一些其他环境(主要是当前被打断执行的进程环境)。

  Vishay携最新MOSFET、IC、无源器件和二极管技术亮相APEC 2019

  大联大友尚集团推出On Semiconductor的超低功耗蓝牙模组解决方案

  无线连接的交互式魔方可跟踪并记录用户的操作 从而实现在线“对战”和迷你游戏

  具备安全功能的16位通用微控制器“ML62Q1300/1500/1700系列” 覆盖家电和工业设备应用的强大产品阵容开始网售!

  Diodes 公司的双极晶体管采用 3.3mm x 3.3mm 封装并提供更高的功率密度

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!