计算机系统的层次结构

(了解) 操作系统的内核又可以分成大内核和微内核:

  微内核结构 —— 由于客户/服务器(Client/Server)模式,具有非常多的优点,故在单机微内核操作系统中几乎无一例外地都采用C/S模式,将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现。例如用于提供对进程(线程)进行管理的进程(线程)服务器,提供虚拟存储器管理功能的虚拟存储器服务器,提供I/O设备管理的I/O设备管理服务器等,它们都是被作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现信息交互的。

用户态和核心态

  CPU有两种状态,“内核态/核心态/管态” 和 “用户态/目态

  处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令

  处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令

  拓展:CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”

应用程序和内核程序

  我们普通程序员写的程序就是“应用程序

  微软、苹果有一帮人负责实现操作系统,他们写的是“内核程序

  由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)”。内核是操作系统最重要最核心的部分,也是最接近硬件的部分。甚至可以说,一个操作系统只要有内核就够了(如:Docker一>仅需Linux内核)

  操作系统的功能未必都在内核中,如图形化用户界面GUI

特权指令和非特权指令

  在CPU设计和生产的时候就划分了特权指令非特权指令,因此CPU执行一条指令前就能判断出其类型

  应用程序只能使用“非特权指令”,如:加法指令、减法指令等

  操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,如:内存清零指令。这些指令影响重大,只允许“管理者”即操作系统内核来使用

用户态和内核态的切换

  内核态转用户态:执行一条特权指令修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权

  用户态转内核态:由 “中断” 引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权

  中断是操作系统夺回CPU使用权的唯一方法、即CPU从用户态变为内核态的唯一方法


  

中断与异常

中断的分类

中断向量表

  不同的中断信号,需要用不同的中断处理程序来处理。 当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。

系统调用

操作系统向上层主要提供两种接口:

  • 命令接口:给用户用的
  • 程序接口(系统调用):给应用程序用的,可以理解为一种可供应用程序调用的制殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

系统调用和库函数的区别

什么功能要用系统调用实现

  应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、V/0操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

系统调用的过程

  传递系统调用参数→执行陷入(访管)指令(用户态)→执行系统调用相应服务程序(核心态)→返回用户程序

注意:

1.陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态
2.发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
3.陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令

用户态和内核态、中断与异常、系统调用相关推荐

  1. 操作系统~用户态进入内核态的方式(中断、异常、系统调用)

    中断与异常 中断的概念和作用 当中断发生时,CPU立即进入核心态 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理 对于不同的中断信号,会进行不同的处理 发生了中断,就意味着需要操 ...

  2. 操作系统 | 用户态和内核态的切换(中断、系统调用与过程(库函数)调用)

    文章目录 中断 过程调用 系统调用 过程调用和系统调用的区别 中断 用户态.内核态之间的切换是怎么实现的? 用户态→内核态 是通过中断实现的.并且 中断是唯一途径 . 核心态→用户态 的切换是通过执行 ...

  3. IO操作底层调用过程 | 用户态切换内核态原理 | 中断概念

    IO操作底层调用过程|内核|中断| 做后端的程序员都知道我们编写的程序主要分方法程序和IO操作程序. 有什么不一样呢? 方法程序就不多说了.IO程序有什么不同呢?IO操作指的是对硬件设备操作,比如键盘 ...

  4. java运行在用户态_理解Linux用户态和内核态

    Linux整体架构图 我们先来看一张Linux整体架构图. 系统调用 ​ 系统调用时操作系统的最小功能单位.根据不同的应用场景,不同的Linux发行版本提供的系统调用数量也不尽相同,大致在240-35 ...

  5. Linux用户态和内核态

    究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子: 1)例 ...

  6. 多线程之:用户态和内核态的区别

    一:大话版用户态和内核态 (1)用户态和内核态的概念? --->内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序 ---& ...

  7. 操作系统(概述、组成)、用户态、内核态

    1. 概述 1.1 基本特征 1.1.1 并发 并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令. 并行需要硬件支持,如多流水线或者多处理器. 操作系统通过引入进程和线程 ...

  8. 用户态和内核态的理解和区别

    1.linux进程有4GB地址空间,如图所示: 3G-4G大部分是共享的,是内核态的地址空间.这里存放整个内核的代码和所有的内核模块以及内核所维护的数据. 2.特权级的概念: 对于任何操作系统来说,创 ...

  9. JVM内存划分、Linux用户态、内核态简介

    JVM内存划分 1.在Java运行的时候 JVM虚拟机拿到自己能支配的内存 将内存进行分割2.本地方法栈存储是C++ native方法3.程序计数器指向程序当前运行的位置4.方法区存储元数据信息在jd ...

最新文章

  1. 清华唐杰团队造了个“中文AI设计师”,效果比Dall·E好,可在线试玩
  2. 深入探索C++对象模型学习笔记2
  3. 【机器学习入门到精通系列】异常检测
  4. VB中超长OLE数据库字段的操纵方法
  5. 代理服务器工作原理是什么?
  6. Andriod --- JetPack (七):Room + ViewModel + LiveData 增删改查实例
  7. 2PC AND 3PC
  8. 19n20c的参数_FQP19N20C电子元器件产品参数(BY 2021年)、Datasheet 文档资料和货源信息,FQP19N20C最新参考价格==www.ic37.com...
  9. 二分法查找是基于有序_【二分查找】May1th “First Bad Version (Python3)”
  10. mysql多值存储过程_mysql使用存储过程回来多个值
  11. 用python来开发webgame服务端系列
  12. IDA安卓动调 模拟器手机(详细)
  13. JavaScript高级编程设计(第三版)——第二章:在html中使用javaScript
  14. 中国人工智能大赛机器阅读理解任务冠军方案出炉~
  15. oracle 雪峰,讨论 - 廖雪峰的官方网站
  16. 直方图均衡化算法原理详解
  17. android有用的命令
  18. 共享单车之摩拜与ofo优缺大盘点
  19. Kotlin常见知识点和踩坑指南
  20. 1400软件 rslogix_Rslogix 500软件各版本之间的差异、差别或区别

热门文章

  1. 推荐一款小而美的屏幕截图工具(FastStone Capture)
  2. SVD奇异值分解(理论与C++实现)
  3. 庆科EWM3080 v2.1.3(默认固件)AT指令配置方法
  4. XUGUO-书呆子-搜索书箱
  5. 用计算机都会听错数字怎么回事,由web程序出现乱码开始挖掘(Bom头、字符集与乱码)...
  6. table标签的使用技巧
  7. 计算机屏幕录像技术,电脑录屏幕的方法有哪些,三种超好用的电脑屏幕录制技巧...
  8. JAVA版不祥之兆等级怎么看,Minecraft基岩版1.16下载-Minecraft基岩版1.16安卓版v1.16.220.52...
  9. 计算机程序设计员理论二
  10. Android判断当前手机连接网络