当前位置: 首页 > news >正文

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

特权指令:具有特殊权限的指令,比如清内存,重置时钟,分配系统资源,修改用户的访问权限

由于这类指令的权限最大,所以使用不当会导致整个系统崩溃

系统调用:是操作系统提供给应用程序的接口(供应用程序调用的特殊函数),应用程序使用系统调用来获得操作系统的服务

运行的用户程序,想要操控内核态级别的资源(比如文件管理,进程控制,内存管理),需要通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成,要记住的是用户程序执行系统调用

用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取

内核态:可以访问内存所有数据,而且可以访问外围设备(硬盘,网卡),cpu也可以将自己从一个程序切换到另一个程序

内核态和用户态的区别就是权限不同,内核态处于权限0,权限较高,用户态处于权限3,权限较低

从用户态切换到内核态的方法:

(1)系统调用:   

进程调用:exit,fork()

文件系统访问:chmod,chown

设备调用:read,write

信息读取:读取设备信息

通信:mmap,pipe

(2)中断:外围设备的终端,硬盘读写操作完成后,会向cpu发出中断信号,这时cpu会暂停执行下一条将要执行的指令,转而去执行与中断信号对应的处理程序,这个程序时内核态程序,所以也会由用户态转为内核态

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

http://www.lryc.cn/news/30540.html

相关文章:

  • Java 包装类
  • Raspberry Pi GPIO入门指南
  • 汇编语言程序设计(三)之汇编程序
  • 用二极管和电容过滤电源波动,实现简单的稳压 - 小水泵升压改装方案
  • 【数据结构与算法】数据结构有哪些?算法有哪些?
  • 使用Element-UI展示数据(动态查询)
  • lamda 表达式例子全集
  • 计算机网络第八版——第一章课后题答案(超详细)
  • 嵌入式和Python(二):python初识及其基本使用规则
  • C语言详解双向链表的基本操作
  • 面试必须要知道的常见排序算法
  • Kubernetes之服务发布
  • 【第二章】谭浩强C语言课后习题答案
  • PostgreSQL和PostGISWGS84和CGCS2000与GCJ02和BD09坐标系与之间互转
  • 数据结构——链表讲解(2)
  • Elasticsearch:图片相似度搜索的 5 个技术组成部分
  • 【CVPR2022】Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation
  • PMP项目管理项目运行环境
  • Vue 3.0 渲染函数 【Vue3 从零开始】
  • 西电软件体系结构核心考点汇总(期末真题+核心考点)
  • SRS源码分析-SDP内容解析
  • HTML 颜色
  • MySQL高可用架构之InnoDB Cluster部署
  • Linux安装minio单机版
  • 网络总结知识点(网络工程师必备)四
  • 数据结构——第三章 栈与队列(5)
  • CSDN竞赛第33期题解
  • 农产品销售系统的设计与实现
  • C语言-基础了解-08-C判断
  • 用数组名作函数参数的详解,以及形参实参采用数组名,形参实参采用指针变量的几种情况解析