1.操作系统需要两种CPU状态:

  • 内核态(Kernel Mode):运行操作系统程序
  • 用户态(User Mode):运行用户程序

2.指令划分:

  • 特权指令:只能由操作系统使用、用户程序不能使用的指令。  举例:启动I/O   内存清零  修改程序状态字  设置时钟    允许/禁止终端   停机
  • 非特权指令:用户程序可以使用的指令。  举例:控制转移  算数运算  取数指令   访管指令(使用户程序从用户态陷入内核态)

3.特权级别:

特权环:R0、R1、R2和R3

R0相当于内核态,R3相当于用户态;

不同级别能够运行不同的指令集合;

4.CPU状态之间的转换:

  • 用户态--->内核态:唯一途径是通过中断、异常、陷入机制(访管指令)
  • 内核态--->用户态:设置程序状态字PSW

5.内核态与用户态的区别:

1)内核态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时,就可以称之为运行在用户态。因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;

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

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

4)这两种状态的主要差别是

  • 处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理机是可被抢占的 ;
  • 而处于核心态执行中的进程,则能访问所有的内存空间和对象,且所占有的处理机是不允许被抢占的。

6. 通常来说,以下三种情况会导致用户态到内核态的切换:

1)系统调用

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

而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。

2)异常

当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。

3)外围设备的中断

当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,

如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。

用户态和核心态的区别相关推荐

  1. 用户态与核心态的区别

    文章目录 1. 用户态与核心态的区别 1.1 定义上的区别 1.2 用户态和内核态的切换 1.3 用户态和核心态各有优势 1.4 哪些功能需要用核心态 1. 用户态与核心态的区别 1.1 定义上的区别 ...

  2. 操作系统:用户态和核心态的区别

    1.操作系统需要两种CPU状态: 内核态(Kernel Mode):运行操作系统程序 用户态(User Mode):运行用户程序 2.指令划分: 特权指令:只能由操作系统使用.用户程序不能使用的指令. ...

  3. 用户态和核心态(内核态)的概念、区别和转换

    这里写自定义目录标题 一.用户态和核心态的概念 用户态 核心态 二.用户态和核心态的区别 三.为啥要区别 四.二者之间如何切换 系统调用 中断 中断 一.用户态和核心态的概念 用户态 用户态和核心态是 ...

  4. 用户态和核心态的转换

    用户态和内核态的转换 1)用户态切换到内核态的3种方式 a. 系统调用 这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如前例中fork( ...

  5. 处理器的用户态和核心态

  6. 内存区划分;内存分配;堆、栈概念分析;动态内存管理数据结构及程序样例;核心态与用户态...

    一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初 ...

  7. 操作系统之核心态和用户态

    在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态之间如何切换. 操作系统内核工作在核心态,而用户程序工作在用户态.系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能.因此 ...

  8. OS-用户态和核心态

    文章目录 什么是OS? 用户态和核心态 为什么划分用户态和核心态? 为什么要限制进程的访问能力? 核心态和用户态的区别 用户态如何切换至内核态 系统调用 系统调用带来的好处 系统调用的分类 中断 中断 ...

  9. 用户态和内核态、中断与异常、系统调用

    计算机系统的层次结构 (了解) 操作系统的内核又可以分成大内核和微内核:   微内核结构 -- 由于客户/服务器(Client/Server)模式,具有非常多的优点,故在单机微内核操作系统中几乎无一例 ...

最新文章

  1. android Tabhost部件
  2. php函数多个参数_php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...
  3. python培训深圳-深圳靠谱的Python培训
  4. c语言中lookup函数功能,Lookup函数详解
  5. 树莓派VNC server设置开机自启动
  6. activity中指定一页面动态设置软键盘弹出属性
  7. 和后台如何对接_业务系统如何对接第三方服务?
  8. 20170124L07-03-01老男孩linux运维实战培训-生产环境大于254台机器网段划分及路由解决方案案例...
  9. Rank Math Pro v2.17.1 SEO插件
  10. 可以伪装mysql子节点框架是啥_kingbus 架构设计之如何伪装成 MySQL Master 角色
  11. Promise 最完整介绍与实现解密
  12. 前台提交数据到后台为乱码问题解决方式
  13. WEB标准学习路程之CSS:7.表格,滚动条,打印
  14. CMake 学习笔记 02 - 更复杂的项目
  15. 压缩下载到浏览器的工具类
  16. 精进:如何成为一个很厉害的人--作者:采铜
  17. 怎么卸载apowerrec_怎么禁用或卸载自带应用
  18. 64位linux nvidia 32位,NVIDIA英伟达显卡驱动下载
  19. 请和我一起学习机器学习算法(高斯混合聚类)
  20. 徒手撸平台——基于Springboot+layui实现接口自动化平台

热门文章

  1. 第十二届蓝桥杯C++B组国赛
  2. 项目管理---敏捷开发--结对编程
  3. Java中double类型比较大小或相等的方法
  4. FM4057S单节锂电池线性充电芯片的学习
  5. ubuntu 迅飞语音识别报错20006
  6. 【Plaxis2D学习笔记:土体参数意义及设置】
  7. 扒开python,看透python的内在,python的应用领域
  8. python俄罗斯方块代码turtle_Python:游戏:300行代码实现俄罗斯方块
  9. 店盈通:电子商务赖以发展的根基——快递业却仿佛进入了困局
  10. 计算机课和信息技术课,第1课 信息和信息技术”教学设计