Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3037080
  • 博文数量: 167
  • 博客积分: 613
  • 博客等级: 中士
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-13 21:35
个人简介

人, 既无虎狼之爪牙,亦无狮象之力量,却能擒狼缚虎,驯狮猎象,无他,唯智慧耳。

文章分类
文章存档

2015年(19)

2014年(70)

2013年(54)

2012年(14)

2011年(10)

分类: C/C++

2011-10-25 23:46:20

Chapter 8 异常控制流

异常控制流(ECF)发生在计算机系统的各个层次,是计算机中提供并发的基本机制。CPU执行一系列指令,如果因为某种原因而打乱了原本的执行顺序,转而优先执行其他处的指令,就称为异常。其实异常(excpetion)就是突发的控制转移。Events促使暂时中断原先的Instruction序列,先执行异常处理程序,而后再返回原先的Instruction序列。系统中每一个异常都有自己的异常号,用来在系统启动时初始化一个异常表,以此作为该表的索引,后面链接的事对应的异常处理程序。

异常通常分为四类:
中断(interrupt)——唯一的异步中断,一般由I/O触发,先执行完正在执行的指令,然后跳转至异常处理程序,处理完成后再返回至正常指令的下一条指令
陷阱(trap)——同步异常,由执行的指令直接触发,最常用来实现系统调用
故障(fault)——同步异常,由执行的指令结果错误造成。根据异常处理结果的不同,可能返回正常的下一条指令,或者直接终止程序
终止(abort)——直接终止程序运行

一般来说,系统中友默认的异常列表,0-31为硬件商提供的,32-255为操作系统规定的。其中128(0x80)是系统调用的异常号。Linux下,系统调用参数不存在栈中,而是存在寄存器中,用%eax来存储异常号,%ebx-%edx,%edi,%esi,%ebp来存储调用的诸多参数。

进程就是一个正在执行的程序的实例。进程提供了两个重要的抽象:1)逻辑控制流,这使我们感觉我们的程序独占了整个处理器2)私有地址空间,这使我们感觉我们的程序独占了整个存储器。其实处理器同时运行多个程序,这称之为并发。并发是指多个程序在同一时间段内运行,与是否由同一个核或者机器运行无关;并行是并发的真子集,指的那些在不同的机器或核上同时运行的进程。并发机制主要依靠交替轮流运行来实现。

由内核来实现并发时,需要同时启用上下文,即恢复已被占用进程所需的状态信息。因而需要进程在用户模式和内核模式间相互转换。

硬件的资源是由操作系统来管理的,而核心就是其中的内核;我们运行的应用程序处于用户模式,不能直接访问内核代码和数据,必须经过系统调用进入内核模式;用户模式下可以访问的资源,可以执行的指令都是有限的,而内核模式(超级用户模式)下,可以执行一切指令,访问一切系统资源。
阅读(3028) | 评论(0) | 转发(0) |
0

上一篇:20111021链接

下一篇:20111029虚拟存储器

给主人留下些什么吧!~~