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

操作系统-02.中断与异常及系统调用

中断和异常

1. 中断的概念和作用

中断产生背景:解决串行执行程序,系统资源利用率低的问题。为解决该问题,发明了操作系统,发生中断意味着需要操作系统介入管理。
1,当中断发生时, CPU立即进入核心态
2,当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
3,对于不同的中断信号,会进行不同的处理
发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配/0设备等)需要使用特权指令,因此CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权,有了中断,才能实现多道程序并发执行。
4. 用户态、核心态之间的切换是怎么实现的?
答: “用户态 核心态”是通过中断实现的,并且中断是唯一途径。
“核心态 用户态”的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为"用户态”。

2. 中断的分类
广义中断
内中断也称-异常-例外-陷入
外中断狭义
自愿中断-指令中断
强迫中断
硬件故障
软件中断
外设请求
人工干预

内中断信号来源CPU内部,与当前指令有关
外中断来源CPU外部,与当前指令执行无关
指令中断:如系统调用时的访问指令,又叫陷入指令、trap指令
硬件故障:如缺页
软件故障:整数除0
外中断:IO完成发出的中断信号
人工干预:用户强行终止
王道操作系统

3. 外中断的处理过程

在这里插入图片描述

系统调用

  1. 什么是系统调用,有何作用?
    答:操作系统提供“系统调用”功能,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统发出请求。操作系统会对各个请求进行协调管理。应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、1/0操作、文件管理等) ,都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
  2. 系统调用与库函数的区别?
    在这里插入图片描述
1. 系统调用(按功能分类):

以下事务处理需要特权指令,在核心态执行

系统调用
设备管理
完成设备的请求/释放/启动等功能
文件管理
完成文件的读/写/创建/删除等功能
进程控制
完成进程的创建/撤销/阻塞/唤醒等功能
进程通信
完成进程之间的消息传递/信号传递等功能
内存管理
完成内存的分配/回收等功能
2.系统调用背后过程
传递系统调用参数
执行陷入指令-用户态
执行系统调用相应服务程序-核心态
返回用户程序

王道考研

相关文章:

  • 操作系统-03.进程的定义、组成、组织方式、特征
  • 操作系统-04.进程的状态与切换
  • 操作系统-05.进程控制
  • 操作系统-06.进程通信
  • 操作系统-06.线程概念、多线程模型
  • 操作系统-07.处理机调度概念、层次
  • 设计模式-01.面向对象七大设计原则
  • C++面向对象高级开发-01.C++ 类相关解析
  • C++面向对象高级开发-02.堆、栈与内存管理
  • C++面向对象高级开发-03.指针与引用
  • JAVA-IDEA-Tomcat 完美解决乱码
  • Servlet-jsp 依赖库pox.xml配置
  • C语言——指针之间的传递
  • MySQL学习笔记(一)
  • Django学习笔记(一)——Web应用程序
  • echarts花样作死的坑
  • PAT A1050
  • spring cloud gateway 源码解析(4)跨域问题处理
  • vuex 学习笔记 01
  • 当SetTimeout遇到了字符串
  • 目录与文件属性:编写ls
  • 前端面试题总结
  • 前端面试之闭包
  • 入门到放弃node系列之Hello Word篇
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • $$$$GB2312-80区位编码表$$$$
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (pojstep1.1.2)2654(直叙式模拟)
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (二)JAVA使用POI操作excel
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转) RFS+AutoItLibrary测试web对话框
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET实现之(自动更新)
  • .Net语言中的StringBuilder:入门到精通
  • @SuppressWarnings注解
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [android] 请求码和结果码的作用
  • [Angular] 笔记 20:NgContent
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [CSDN首发]鱿鱼游戏的具体玩法详细介绍
  • [DevOps云实践] 彻底删除AWS云资源
  • [Intel Edison开发板] 05、Edison开发基于MRAA实现IO控制,特别是UART通信
  • [IOI2007 D1T1]Miners 矿工配餐
  • [jQuery]使用jQuery.Validate进行客户端验证(中级篇-上)——不使用微软验证控件的理由...