首页 > 其他分享 >用户态和内核态

用户态和内核态

时间:2022-10-28 13:05:03浏览次数:92  
标签:调用 态下 用户 内核 执行 CPU


那用户态和内核态又是啥呢?

Linux系统的体系结构大家大学应该都接触过了,分为用户空间(应用程序的活动空间)和内核。

我们所有的程序都在用户空间运行,进入用户运行状态也就是(用户态),但是很多操作可能涉及内核运行,比我I/O,我们就会进入内核运行状态(内核态)。

这个过程是很复杂的,也涉及很多值的传递,我简单概括下流程:

  • 用户态把一些数据放到寄存器,或者创建对应的堆栈,表明需要操作系统提供的服务。
  • 用户态执行系统调用(系统调用是操作系统的最小功能单位)。
  • CPU切换到内核态,跳到对应的内存指定的位置执行指令。
  • 系统调用处理器去读取我们先前放到内存的数据参数,执行程序的请求。
  • 调用完成,操作系统重置CPU为用户态返回结果,并执行下个指令。

用户态和内核态_系统调用

用户态切换到内核态的方式如下:

  • 系统调用:程序的执行一般是在用户态下执行的,但当程序需要使用操作系统提供的服务时,比如说打开某一设备、创建文件、读写文件(这些均属于系统调用)等,就需要向操作系统发出调用服务的请求,这就是系统调用。
  • 异常:当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
  • **外围设备的中断:**当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

用户态和核心态(内核态)之间的区别是什么呢?

权限不一样。

  • 用户态的进程能存取它们自己的指令和数据,但不能存取内核指令和数据(或其他进程的指令和数据)
  • **核心态下的进程能够存取内核和用户地址某些机器指令是特权指令,在用户态下执行特权指令会引起错误。**在系统中内核并不是作为一个与用户进程平行的估计的进程的集合。


标签:调用,态下,用户,内核,执行,CPU
From: https://blog.51cto.com/u_15850876/5804530

相关文章

  • SpringBoot中整合Shiro+Mybatis+Thymeleaf框架实现用户登录以及权限的验证(超级详细过
    1、建立springboot项目目录结构2、项目的jar包依赖在pom文件中加入jar包依赖<dependencies><!--整合shirosubject:用户security......
  • Linux用户和组管理(二)
    passwd命令:密码管理1、passwd:修改用户自己的密码;2、passwd用户名:修改指定用户密码,但仅root有此权限;管理员修改用户密码不需要知道用户旧密码;-l:锁定用户-u:解锁用户;-d:......
  • 驱动开发:内核监控FileObject文件回调
    本篇文章与上一篇文章《驱动开发:内核注册并监控对象回调》所使用的方式是一样的都是使用ObRegisterCallbacks注册回调事件,只不过上一篇博文中LyShark将回调结构体OB_OPERAT......
  • 前后端分离项目(七):实现"添加用户"功能(前端视图)
    好家伙, 我们要实现"注册添加用户"功能老样子我们先来理清一下思路,现在,我是一个用户,我来到了注册页面,然后,我要把老样子,我们先去饿了么偷点东西   拿个......
  • 用户组
    一、介绍linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先相系统管理员申请一个账号,然后以这个账号的身份进入系统linux的用户需要至少属......
  • 循环判断用户输入的年份是闰年还是平年
    1、需求:判断用户输入的年份是闰年还是平年2、实现:/**〈循环判断用户输入的年份是闰年还是平年〉*@paramyear:年份choose:是否继续*@return0*goto语句可以使程......
  • 驱动开发:内核监控Register注册表回调
    在笔者前一篇文章《驱动开发:内核枚举Registry注册表回调》中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专......
  • rabbitmq 添加用户和权限分配
      添加账号密码,注意tags是权限角色,有五个角色选择,admin是权限最大的管理员,none是不能访问,建议练习赋予admin权限然后添加一个新的虚拟主机,设置权限: ......
  • 浅谈OpenHarmony LiteOS-A内核之基础硬件——中断控制器GIC400
     一、前言OpenAtomOpenHarmony(以下简称“OpenHarmony”)采用多内核架构,支持Linux内核的标准系统、LiteOS-A的小型系统、LiteOS-M的轻量系统。其中LiteOS-A要求设备具......
  • centos 升级内核 和版本
    #uname-sr查看当前的kernel版本Linux3.10.0-693.el7.x86_64 我使用的操作系统是Centos7,默认的内核版本是3.10.0,当前最新的内核版本是5.12以上。升级内核的方法有多......