zoukankan      html  css  js  c++  java
  • 用户态-内核态

    前戏

    我们知道计算机主要分为三部分,硬件,操作系统和应用程序,然后硬件的头脑cpu才是控制内核态和用户态的大佬

    操作系统

    操作系统是直接和硬件打交道的,操作系统在内核态下运行,从而可以访问整个硬件

    应用程序

    应用程序直接和用户交互,但是应用程序不能直接操作硬件,应用程序在用户态下运行,但是有时候应用程序也需要操作硬件,这个时候,就涉及到用户态和内核态的切换

    内核态-用户态概念

    内核态(所有指令都给操作系统使用)

    当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能

    用户态(操作硬件部分的指令禁用)

    用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。

    内核态-用户态的切换

    CPU执行切换

    由于内核态和用户态是非常频繁的,所以把状态切换和记录放在cpu的寄存器,最合适不过

    程序状态寄存器-(系统调用-中断-异常)

    用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。

    注意

    用户态内核态相当于cpu的一个执行状态,cpu在不同状态下能使用的指令不同

    查看liunx全部系统调用

    man syscalls
    

    参考链接

    https://www.cnblogs.com/zx125/p/11524709.html

    https://www.cnblogs.com/linhaifeng/p/6523843.html

  • 相关阅读:
    HTTP状态码详解
    phpcms v9调用多个栏目下文章的方法
    纯CSS3制作学生入学档案表单样式代码
    phpcmsv9 标题颜色显示问题
    Excel中利用IF和TIME函数计算出上下班状态!
    excel if判断时间段早晚班
    PHPCMS列表页伪静态
    EXCEL IF 函数 模糊查询
    如何用js实现截取一个字符串中的数字
    Elasticsearch学习之基本核心概念
  • 原文地址:https://www.cnblogs.com/zx125/p/12064385.html
Copyright © 2011-2022 走看看