美文网首页
Linux系统中用户态如何切换到内核态?

Linux系统中用户态如何切换到内核态?

作者: 老男孩IT教育 | 来源:发表于2022-09-01 11:27 被阅读0次

 在Linux技术大佬口中,我们经常会时不时听到内核态、用户态等,内核主要是和硬件打交道,管理最核心的内容,如硬盘、内存、CPU等,那你知道在Linux系统中,内核态具体是什么吗?请看下文:

  Linux系统中的内核态本质是内核,一种特殊的软件程序,用于控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行。0-4G范围的虚拟空间地址都可以操作,尤其是对3-4G范围的高位虚拟空间地址必须由内核态去操作。

  用户态提供应用程序运行的空间,为了使应用程序访问到内核管理的资源,例如CPU,内存,I/O等。用户态只能受限的访问内存,且不允许访问外设

(硬盘、网卡等);内核态CPU可以访问内存所有数据,包括外设,且可以将自己从一个程序切换到另一个程序。

  从用户态切换到内核态有以下三种方式:

  系统调用:是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。例如上面的例子、还比如fork()实际上就是执行了一个创建新进程的系统调用。(其实系统调用本身就是中断,是软件中断)

  异常:如果当前进程运行在用户态,如果这个时候发生了异常事件,就会触发切换。例如:缺页异常。

  外设中端:当外设完成用户的请求时,会向 CPU 发送中断信号,此时 CPU

会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。例:如硬盘读写操作完成后,系统会切换到硬盘读写的中断处理程序中执行后续操作。

相关文章

  • 内核态和用户态

    内核态和用户态是操作系统的两种运行级别,内核态权限高,用户态权限低。 用户程序从用户态切换到内核态:系统调用(软中...

  • Linux用户态如何切换到内核态?

    在Linux技术大佬口中,我们经常会时不时听到内核态、用户态等,内核主要是和硬件打交道,管理最核心的内容,如硬盘、...

  • 浅谈linux系统调用

    linux系统调用时用于用户态和内核态的通信模块

  • Linux系统中用户态如何切换到内核态?

    在Linux技术大佬口中,我们经常会时不时听到内核态、用户态等,内核主要是和硬件打交道,管理最核心的内容,如硬盘、...

  • 同步 IO 和异步 IO

    在 linux 中对 io 操作就是把内核态准备就绪的数据拷贝到用户态。 啥是内核态呢,内核态就是 linux 内...

  • 系统服务监控指标 -- CPU Utilization

    在Linux/Unix下,CPU利用率分为用户态、系统态和空闲态, 分别表示CPU处于用户态执行的时间,系统内核执...

  • 面试内容梳理之Linux操作系统

    问熟悉Linux操作系统么?答: linux 操作系统按照层次可以分为用户态和内核态两层。用户态主要运行着用户的应...

  • Android进程间通信

    Linux进程间通信 基础概念 内核态/用户态 如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和...

  • 内核态和用户态

    linux用户态和内核态的转换 当一个进程执行系统调用而执行内核代码时,称进程处于内核 内核态,此时处理器处于特权...

  • 用户态与内核态

    如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。 内核从本质上看是...

网友评论

      本文标题:Linux系统中用户态如何切换到内核态?

      本文链接:https://www.haomeiwen.com/subject/wbtsnrtx.html