用户态和核心态

作者: NetCedar | 来源:发表于2018-10-27 15:17 被阅读0次
image.png

当程序运行在3级特权级上时,就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;

反之,当程序运行在级特权级上时,就可以称之为运行在内核态。

虽然用户态下和内核态下工作的程序有很多差别, 但最重要的差别就在于特权级的不同,即权力的不同。 运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。

当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成某些它没有权力和能力完成的工作时就会切换到内核态。

用户态切换到内核态的3种方式

  1. 系统调用:这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。
  2. 异常:当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
  3. 外围设备的中断:当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

相关文章

  • 用户态和核心态

    当程序运行在3级特权级上时,就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户...

  • 中断和系统调用

    中断和异常 中断本质 需要操作系统介入 ,开展管理工作 CPU状态从用户态转换为核心态核心态到用户态程序状态子(P...

  • 用户栈和内核栈

    为了区分程序的运行级别,有用户态和核心态之分,也叫目态和管态。硬件驱动、CPU和内存管理等底层操作和进程管理、诊断...

  • Linux/UNIX 系统编程手册 - 要点记录

    第2章 基本概念1、内核态和用户态现代处理器架构一般允许CPU至少在两种不同状态下运行,即:用户态和核心态。执行硬...

  • 用户态和核心态的区别

    转自 https://www.cnblogs.com/Allen-rg/p/7171105.html 1.操作系统...

  • Linux0.11源码学习--系统调用

    系统调用介绍 系统调用原理系统中的程序类型及状态操作系统中的状态分为管态(核心态)和目态(用户态)。特权指令:一类...

  • 内核态和用户态、

    内核态和用户态的区别 内核态切换用户态耗时的原因

  • 用户态和内核态

    操作系统会将内存分配为内核空间和用户空间 内核空间是由所有进程共享,每个进程通过系统调用进入内核用户空间中各个进程...

  • 内核态和用户态

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

  • 内核态和用户态

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

网友评论

    本文标题:用户态和核心态

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