异常流控制
来源:互联网 发布:负载均衡来源软件 编辑:程序博客网 时间:2024/05/16 17:49
在硬件层,异常是由处理器中的事件触发的控制流中的突变。控制流传递给一个软件处理程序(异常处理程序),该处理程序进行一些处理,然后根据引起异常的事件的类型,返回控制给被中断的控制流或终止被中断的控制流。
在操作系统层,内核中ECF提供进行的基本概念。进程提供给应用程序两个重要的抽象:(1)逻辑控制流,它提供给每个程序一个假象,好像是在独占地使用处理器;(2)私有地址空间,它提供给每个程序一个假象,好像它是在独占地使用主存。
用户模式和内核模式
内核模式:一个运行在内核模式的进程可以执行指令集中的任何指令,并且可以访问系统中任何存储器位置。
用户模式:用户模式中的进程不允许执行特权指令,比如停止处理器、改变模式位(某个控制寄存器中的一个bit,用于控制进程在两种模式间的切换)或发起一个I/O操作,也不允许直接引用地址空间中内核区的代码和数据。
运行应用程序代码的进程初始时是在用户模式中的。进程从用户模式变为内核模式的唯一方法是通过诸如中断、故障或陷入系统调用这样的异常。当异常处理完成后,处理器就把模式从内核模式改回到用户模式。
普通的函数调用运行在用户模式中,系统调用运行在内核模式。
用户模式
内核模式
CPU特权模式
非特权模式
特权模式
可访问的CPU寄存器
非特权模式的寄存器
所有寄存器
可使用的CPU指令集
非特权模式指令
所有指令
可访问地址空间
用户态地址空间
用户态地址空间、内核系统地址空间
上下文:上下文就是内核重新启动一个被抢占的进程所需的状态。它由一些对象的值组成,这些对象包括通用目的寄存器、浮点寄存器、程序计数器、用户栈、状态寄存器、内核栈和各种内核数据结构。
上下文切换:(1)保存当前进程的上下文 ,(2)恢复某个先前被抢占的进程被保存的上下文 ,(3)将控制传递给这个新恢复的进程。
运行Linux的CPU在任何时候只会处于四种状态之一:
1.在处理一个硬中断
2.在处理一个软中断状态
3.运行在内核态,但有进程上下文,即与一个进程相关
4.运行在用户态进程
1、2和3运行于内核空间的,而4是在用户空间。其中除了4,其它状态只可以被在其上的状态抢占。
- 异常流控制
- 异常控制流
- 异常控制流
- 谈异常控制流
- 异常控制流
- 《CSAPP》异常控制流
- 异常控制流
- 异常控制流
- 异常控制流
- 异常控制流
- 异常控制流
- 异常控制流
- 计算机系统中的异常控制流
- 异常控制流·八
- Unix异常控制流(1)
- CSAPP 第八章:异常控制流 小结
- Linux系统学习笔记:异常控制流
- 《深入理解计算机系统》--异常控制流
- Image Process -- emboss, threshold/BlackWhite [Android]
- 利用ffmpeg来进行视频解码的完整示例代码
- java.lang.OutOfMemoryError: PermGen spac 异常
- C++ fstream文件流读写文件操作详解
- ffmpeg常用参数一览表
- 异常流控制
- Android http get/post传递参数
- 如何让一些安装软件等的disabled的按钮启用,
- 玩儿转ffmeg的7个技巧
- 是否将信息存储在云?
- OpenGL
- 双眼视差与立体视觉
- .WF4.0 基础篇 (七) 数据的传递 变量与参数的使用
- windows下mysql日志开启与查询