当前位置:  技术问答>linux和unix

关于进程的用户态和内核态

    来源: 互联网  发布时间:2017-03-08

    本文导语:  在操作系统中,一个进程从用户模式切换至内核模式,需要系统调用产生中断,但是我不明白的是既然切换到内核模式应该执行的是系统进程,因为用户的进程已被中断。那进程的这两个状态应该怎么理解呢?  刚...

在操作系统中,一个进程从用户模式切换至内核模式,需要系统调用产生中断,但是我不明白的是既然切换到内核模式应该执行的是系统进程,因为用户的进程已被中断。那进程的这两个状态应该怎么理解呢?  刚学操作系统,求大神赐教。

|
进程就是程序的执行过程,所谓内核态和用户态是指你现在执行的代码是在内核空间还是在用户空间,并不是所谓的进程切换。比如在用户进程A中调用了内核系统调用来获取当前的时钟滴答数,在执行用户进程A中的系统调用指令时,会保存当前用户进程的IP,CS等当前寄存器状态,然后再跳转到内核空间(即内核代码区域)去执行像应的系统调用函数,获取当前的时钟滴答数。执行完后再通过IRET指令返回到进程A中(就是将进入时保存的信息再复位到相应的寄存器中),再接着从CS:EIP地址开始执行A进程的指令。CPU只是执行指令,至于哪条置零就是相应寄存器的事了,如果选择性的执行某些地址的指令就是出现了多进程切换。呵呵,以上纯属个人见解,如有不当,请谅解。

|
进程本身就包含用户态和内核态 
进入内核态中还是在本进程上下文 除非时间片完了 或者自己放弃CPU 进行了进程切换
没有“进程进入内核态就切换到内核线程执行”的说法

|
通常操作系统把虚拟地址空间划分为用户空间和内核空间,例如x86平台的Linux系统虚拟地址空间是0x00000000~0xffffffff,前3GB(0x00000000~0xbfffffff)是用户空间,后1GB(0xc0000000~0xffffffff)是内核空间。用户程序加载到用户空间,在用户模式下执行,不能访问内核中的数据,也不能跳转到内核代码中执行。这样可以保护内核,如果一个进程访问了非法地址,顶多这一个进程崩溃,而不会影响到内核和整个系统的稳定性。CPU在产生中断或异常时不仅会跳转到中断或异常服务程序,还会自动切换模式,从用户模式切换到特权模式,因此从中断或异常服务程序可以跳转到内核代码中执行。事实上,整个内核就是由各种中断和异常处理程序组成的。总结一下:在正常情况下处理器在用户模式执行用户程序,在中断或异常情况下处理器切换到特权模式执行内核程序,处理完中断或异常之后再返回用户模式继续执行用户程序。


    
 
 

您可能感兴趣的文章:

  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 进程内核栈和操作系统内核栈的关系
  • 内核进程与用户进程间的通信
  • 请问linux进程的哪些信息保存在内核里?哪些信息又保存在进程空间里?谢谢
  • 内核进程间发送信号用哪个函数,如果没有这东西,那内核里异步通知用哪个东西
  • Linux内核进程与应用进程的通信方式有哪些?
  • linux 内核进程堆问题,大家指教
  • 关于内核进程和用户层命令不是很理解?
  • 如何利用Linux内核线程来保存用户进程
  • 【求助】多进程中 内核信号量无效?
  • 进程系统调用陷入内核的不解
  • 请教一个linux进程内核栈的问题
  • linux内核高手进!关于调用__fork()时0号进程的子进程才能与父进程共享PID的困惑
  • 内核进程线程问题,大家指教
  • 用户进程有自己独立的地址空间,内核线程没有自己的地址空间 该怎样理解: ?
  • “模块”在内核中运行与作为单独进程运行在机制上有什么区别与联系?
  • linux 可不可以编译成一个单进程的内核
  • linux内核缓冲区与进程缓冲区。
  • 请教一下,进程调度时在导入新进程的cr3之后,CPU是怎么区分当前正处于内核而不去使用新的页目录呢?
  • 中断上下文,进程上下文 ,内核抢占,用户抢占,中断
  • 求助: 进程调度内核分析
  • 我做了个精灵进程,为什么推出用户登录后这个进程就消失了???
  • (菜鸟提问)怎么区份linux系统进程和用户进程?
  • 请问fork子进程后,怎么修改子进程的所属用户。
  • 怎么只显示自己用户启动的进程,怎么只显示自己用户的目录。
  • Linux下root用户如何用其他用户身份启动进程?
  • 有关限制用户进程数的问题
  • linux 进程的用户空间使用?
  • linux 下监控用户或者进程的流量
  • 关于kernel和用户进程内存映射,进行读写问题
  • 准备做一个核心态下运行用户进程的研究了,哪位给点建议吧?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux僵尸(zombie)进程介绍及清除
  • 进程Afork进程B,进程Bfor进程C,如果进程C退出发出SIGCHLD,A进程是否可以收到
  • Ubuntu查看内存,进程相关命令介绍
  • 如果一个server进程要fork许多子进程,但不等待子进程终止,也不希望子进程结束后处于僵进程状态直到父进程终止。请问可采用什么方法实现
  • linux下进程占用内存空间详解
  • 在多进程中父进程frok子进程,怎样让子进程自举,脱离父进程,而且父进程不退出
  • android 4.0 托管进程介绍及优先级和回收机制
  • fock()开出的子进程的进程ID是否进程ID都大于父进程的?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 父进程等待子进程n秒,如果子进程正常退出,父进程立即继续向下执行,如果子出现进程故障一直不退出,父进程等待n秒后继续向下执行,请问
  • 多进程问题 子进程读取内容 读完挂起,父进程写 写入后唤醒子进程
  • 一个进程首先监听一个端口,等到有连接了就新开一个进程,让新进程来处理后面的通讯。请问母进程中已经打开了端口,子进程怎么来使用同一
  • 我在一个父进程中,生成了4个子进程,子进程的优先级是一样的。我现在想结束子进程。该如何做?
  • 子进程wait/waitpid//子进程不结束,父进程会等待子进程吗?
  • 在一个进程中我定义了几个全局变量,然后我又fork了几个子进程,子进程中是否可以各自对全局变量进行修改,如果各子进程都对其进行修改,
  • 怎样一次杀掉父进程创建的所有子进程?我在父进程中用kill(0,SIGKILL),结果父进程也给干掉了,参数0难道不是表示除自己外的所有同uid的进
  • 进程创建进程组后,然后创建该组中的进程,然后终止。这里的终止....?
  • 如何实现子进程根据父进程的信号来确定是否终止子进程???
  • 高手请教!linux怎样通过pid获取进程信息,如:进程名、进程状态等?
  • 如何通过进程号获得进程的一些信息,例如:进程运行的目录
  • 【如何彻底杀死子进程】Kill -9子进程后进程呈僵死状态


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3