操作系统笔记一:中断、异常和陷入机制

  中断/异常/陷入机制是操作系统由用户态转为内核态的唯一途径,是操作系统的驱动力。

  中断、异常机制有以下特征:

  1. 随机发生
  2. 自动处理(硬件完成)
  3. 可恢复

  中断、异常的区别:

  • 中断属外部事件,是正在运行的程序所不期望的
  • 异常由正在执行的指令引发

  在中断、异常过程中,软件和硬件分别担任什么角色:

  • 硬件--中断/异常响应
  • 软件--中断/异常处理程序

  中断/异常的引入目的:

  • 中断的引入是为了CPU与设备之间的并行操作
  • 异常的引入是为了表示CPU执行指令时本身出现的问题

  一个故事:小明在看书,突然来了个电话,接完电话继续看书,这是中断;小明在看书,感觉口渴了,喝了水接着看书,这是异常。

  类别 原因 同步/异步 返回行为
中断 中断(interrupt) 来自I/O设备或其他硬件部件 异步 总是返回到下一条指令
异常
陷入(trap)

有意识安排的 同步 返回到下一条指令
故障(fault) 可恢复的错误 同步 返回到当前指令
终止(abort) 不可恢复的错误 同步 不会返回

  故障与陷入:

  • 缺页异常(page fault),由于是fault,所以当缺页异常处理完成之后,还会去尝试重新执行那条触发异常的指令(那时多半情况是不再缺页)
  • 断点处理,用于调试中,遇到断点会停下来等待你的处理,等到你让其重新执行了,就直接执行下一条指令

  完、

时间: 2024-10-09 22:03:50

操作系统笔记一:中断、异常和陷入机制的相关文章

现代操作系统笔记

总结<现代操作系统>的一些概念知识. 1.进程上下文环境: 对进程执行活动全过程的静态描述 由进程的用户地址空间内容.硬件寄存器内容及与该进程相关的核心数据结构组成 用户级上下文:进程的用户地址空间(包括用户栈各层次),包括用户正文段.用户数据段和用户栈 寄存器级上下文:程序计数器.程序状态寄存器.栈指针.通用寄存器的值 系统级上下文:  静态部分(PCB和资源表格)   动态部分:核心栈(核心过程的栈结构,不同进程在调用相同核心过程时有不同核心栈) 2.构造服务器的三种方法: 进程中的线程是

[CSAPP笔记][第八章异常控制流]

异常控制流 控制转移 控制流 系统必须能对系统状态的变化做出反应,这些系统状态不是被内部程序变量捕获,也不一定和程序的执行相关. 现代系统通过使控制流 发生突变对这些情况做出反应.我们称这种突变为异常控制流( Exceptional Control Flow,ECF) 异常控制流发生在系统的各个层次. 理解ECF很重要 理解ECF将帮助你理解重要的系统概念. 理解ECF将帮助你理解应用程序如何与操作系统交互 通过陷阱(trap)或者系统调用(system call)的ECF形式,向操作系统请求服

Python之异常抛出机制

异常抛出机制 : 常见的Python异常:

深入解析Windows操作系统笔记——CH1概念和术语

1.概念和工具 本章主要介绍Windows操作系统的关键概念和术语 1.概念和工具... 1 1.1操作系统版本... 1 1.2基础概念和术语... 2 1.2.1Windows API2 1.2.2 服务.函数和例程... 3 1.2.3 进程.线程和作业... 4 1.2.3.1 进程... 4 1.2.3.2 线程... 4 1.2.3.3 虚拟地址描述符... 4 1.2.3.4 作业... 4 1.2.4 虚拟内存... 5 1.2.5 内核模式和用户模式... 5 1.2.6 终端

MapReduce剖析笔记之四:TaskTracker通过心跳机制获取任务的流程

上一节分析到了JobTracker把任务从队列里取出来并进行了初始化,所谓的初始化,主要是获取了Map.Reduce任务的数量,并统计了哪些DataNode所在的服务器可以处理哪些Split等等,将这些信息缓存起来,但还没有进行实质的分配.等待TaskTracker跟自己通信. TaskTracker一般运行于DataNode之上,下面是他的声明,可见,是一个线程类: /******************************************************* * TaskT

《python源码剖析》笔记 python虚拟机中的函数机制

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.Python虚拟机在执行函数调用时会动态地创建新的 PyFrameObject对象, 这些PyFrameObject对象之间会形成PyFrameObject对象链,模拟x86平台上运行时栈 2.PyFuctionObject对象 typedef struct { PyObject_HEAD PyObject *func_code: //对应函数编译后的PyCodeObject对象 Py

iOS学习笔记(4) — UITableView的 重用机制

iOS学习笔记(4) — UITableView的 重用机制 UITableView中的cell是动态的,在使用过程中,系统会根据屏幕的高度(480)和每个cell的高度计算屏幕中需要显示的cell的个数.比如,cell高度为90.那么480 / 90 = 5 + 1,也就是说最多有6个cell能显示在屏幕中. 系统会创建1个cel池,无论tableview有多少行都只创建6个cell放在池中.当某行移出屏幕的时候,将这个cell放回在池中:当某行需要显示在屏幕中时,从池中取出一个cell. 重

完成这个例子,说出java中针对异常的处理机制。

有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常.在客户端有一个类为TestC,有一个方法为c ,请在这个方法中捕捉异常的信息.完成这个例子,请说出java中针对异常的处理机制. [java] view plaincopy package com.itheima; import java.io.IOException; /** *第6题:有一个类为ClassA,有一个类为ClassB,

python基础教程_学习笔记10:异常

异常 什么是异常 Python用异常对象来表示异常情况.遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行: >>> 1/0 Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> 1/0 ZeroDivisionError: integer division or modulo by