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. Combo box的使用
  2. 【Oracle】Exadata虚拟机配置(一)
  3. node 16位 转24位_同时将24位和32位BMP图像顺时针旋转90度
  4. python实时数据存储与显示_利用python进行数据加载和存储
  5. selenium windows 下面环境搭建(安装JDK)
  6. mysql在文件里修改用户_mysql用户密码修改,用户添加、删除、设置权限及源文件恢复数据库...
  7. mongodb分页优化
  8. java过滤器流程_DRF filter 过滤器实现流程
  9. codeforces 446A DZY Loves Sequences
  10. 禁止华硕触摸板的纠结历程
  11. 利用openssl之 htps服务端和客户端编写
  12. array函数python_python中如何使用numpy.array函数创建数组?
  13. 请求参数为null问题
  14. Python进行拉勾网数据爬取框架与思路
  15. 【暴躁版】Java如何用IO流读取一个文本,按行输出到控制台?
  16. 【百度地图API】如何利用自己的数据制作社交地图?只显示可视区域内的标注
  17. Vue+JTopo(一)
  18. ipv6连接数据库oracle,oracle连接数据库方式大全
  19. shell 编程三剑客之三:awk 详解
  20. CSS3窗外闪电下雨动画js特效

热门文章

  1. 《go语言圣经》习题答案-第8章
  2. 将iPhone或手机作为电脑麦克风
  3. Python matplotlib入门级绘制图形(一)--利用plot()绘制简单图形
  4. python 获取alert信息并截取alert图片
  5. 电脑上如何开启多个微信,微信多开
  6. 技高一筹的9个让人受益终身的胜者思维,职场精英都在用!
  7. 一个真实的项目经历,很多东西大家可以借鉴下
  8. D3D中的网格(Mesh)
  9. 《Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network》论文学习笔记
  10. 牛逼了!90后小哥,只用了5年时间就成为了Python技术大牛