• 2017-2018-1 20155332 《信息安全系统设计基础》第六周学习总结


    2017-2018-1 20155332 《信息安全系统设计基础》第六周学习总结

    异常

    定义和场景

    现代系统通过使控制流发生突变来对这些情况做出反应。异常发生在计算机系统的各个层次,比如:

    硬件层,硬件检测到的事件会出发控制突然转移到异常处理程序。

    操作系统层,内核通过上下文转换将控制从一个用户进程转移到另一个用户进程。

    应用层,一个进程可以发送信号到另一个进程,信号接收者会将控制突然转移到它的一个信号处理程序。

    应用程序通过陷阱(trap)或者系统调用(system call)的ECF形式,向操作系统请求服务。
    异常的执行

    异常处理程序在执行结束后,会发生以下三种情况之一:

    1. 返回应用程序当前指令Icurr
    2. 返回应用程序的下一条指令Inext
    3. 异常处理程序终止被中断的应用程序

    异常的处理

    基本知识

    系统中的美中类型异常都分配了一个唯一的非负整数,作为异常号。系统启动时会初始化一张异常表,异常表的起始地址存在一个特殊的CPU寄存器里,异常表基址寄存器。

    异常处理程序运行在内核模式,这意味着它们对所有的系统资源都有完全的访问权限。
    异常分类:
    中断是异步的,不由任何一条指令造成。其他三种异常是同步的,是执行当前指令的结果。

    中断

    来自处理器外部I/O设备的信号的结果。硬件中断不是由任何一条专门的指令造成的。I/O设备通过向处理器芯片上的一个引脚发信号,并将异常号放到系统总线上,以触发中断,这个异常号标识了引起中断的设备。(也有软件中断?比如信号?)

    中断处理的重点:

    检测到引脚电压变高,当前的指令会继续执行结束
    返回下一条指令
    http://img.blog.csdn.net/20161128103354361

    陷阱和系统调用

    陷阱是有意的异常,是执行一条指令的结果。最重要的用途是在用户程序和内核之间提供一个接口,称为系统调用。

    从程序员角度,系统调用和普通函数调用是一样的,然而它们的实现不同。普通函数运行在用户模式,用户模式限制了函数可以执行的指令类型,而且它们只能访问与调用函数相同的栈。系统调用运行在内核模式,内核模式允许系统调用执行指令,并访问定义在内核中的栈。

    陷阱处理的重点:

    程序员主动调用,比如syscall指令。
    返回下一条指令,上一条指令就是syscall。

    故障

    故障时由于指令执行发生了错误。这个错误可能被修复,若处理程序修复了,则返回重新执行这条指令,否则返回到内核中的abort例程(当做内核对外提供的一个服务即可),abort例程会终止引起该故障的应用程序。

    一个经典的故障是缺页异常,当指令引用一个虚拟地址,而该虚拟地址相对应的物理页面不在存储器(包含缓存,主存等)中,因此必须从磁盘中取时,就会发生故障。当缺页处理程序加载好后,就将控制返回给应用程序。此时原指令再次执行,由于相应页面已经被加载到存储器中,因此此次执行不会引起故障。

    故障处理的重点

    指令执行的结果。
    故障恢复成功。返回当前指令,重新执行一次。(会不会出现死循环?)
    故障恢复失败。通过abort例程,终止程序。

    终止

    终止时由于不可恢复的致命错误造成的结果。通常是一些硬件错误。终止处理程序直接将控制返回给abort例程,abort例程去终止这个应用程序。

    终止处理的重点

    执行指令时,发生了不可恢复的致命错误。
    应用程序会直接终止。

  • 相关阅读:
    seriviceWorker 小结
    Number.prototype.toLocalString() js
    浏览器h5新建文件 保存到本地(相当于浏览器写文件)
    ios 当margin-left margin-right 超过设备宽度
    数组变char
    字符窜转数字
    stream 的方式遍历
    LinkedHashSet 去掉重复数据
    前端判断是否为空字符窜
    前端去掉空格的方法
  • 原文地址:https://www.cnblogs.com/besti2015/p/7751762.html
Copyright © 2020-2023  润新知