CSAPP 第八章:异常控制流

  • 异常
    异常是异常控制流的一种形式,一部分有硬件实现,一部分有软件实现。 系统中每一种可能的异常都分配了一个非负整数的异常号,异常号是异常表的索引,就像数字的下标那样,异常表是一个跳转表,包含异常号对应异常处理程序代码的地址

  • 异常的类型
    异常的类型有中断,陷阱,故障,终止。

    • 中断:来之I/O设备的信号,是异步发生的,中断总是返回到下一条指令。
    • 陷阱:是有意的异常,一般用于系统调用syscall,同步发生的,总是返回到下一条指令。
    • 故障:由错误情况引起,它可能能够被故障处理程序修正。
    • 终止:是不可恢复的错误,是不可返回的,直接退出程序。
  • 进程
    进程是代码程序执行的一个实例。

    • 进程提供给应用程序的抽象:

      • 独立的逻辑控制流,(好像是程序独占CPU)。
      • 私有地址空间,(好像是程序独占内存系统)。
    • 逻辑控制流(logical control flow )就是一个进程在逻辑上的执行过程,因为CPU并不是一直只在执行某个单独进程的指令,但是从某个单独的进程的角度来看,这个进程就像是(只是像而已,所以叫逻辑上)独占着CPU一样。

    • 由于CPU不断地在各个进程间切换执行,所以多个进程就像是在同时运行一样,这种现象我们称作并发(concurrency )。每次CPU在某个进程中执行其指令的这一小段时间我们称作一个时间片(time slice)。注意,即使只有一个CPU,也可以有并发,但为了区分,我们把多个逻辑控制流在不同的处理器(核)上同时运行的现象称作并行执行(parallel execution )。

    • 每个进程都有自己的私有地址空间(private address space),大小为2^n,n为机器的地址位数。私有是指不能被其他进程读写。

    • 处理器提供一种机制,使进程可能在用户模式或内核模式下运行。在内核模式下,进程拥有更高的权限,比如能执行更多的指令、发起一次I/O操作等等。一个进程最初都是用户进程,只有通过异常才能到内核模式。在私有地址空间中,有一部分专门为内核模式分配的空间,包括代码、数据、堆和栈。

    • 线程切换(context switch)必须在内核模式下发生。比如,当一个进程请求内核服务后,通过trap进入内核模式,这时候内核就可以进行线程切换;或者当一个定时器触发了一次中断后,内核也可以进行线程切换。

  • 信号:一个信号就是一小条消息,它通知进程系统中发生了一个某种类型的事件。传送一个信号到目的地的进程是由两个不同的步骤组成的:

    • 发送信号: 内核通过更新目的进程上下文中的某个状态,发送一个信号给目的进程
    • 接收信号: 当目的进程被内核强迫以某种方式对信号的发送作出响应时,它就接收了信号。进程可以忽略这个信号,终止或通过执行一个称为信号处理程序的用户层函数来捕获这个信号
  • 非本地跳转:C语言提供了一种用户级异常控制流形式,它将控制直接从一个函数转移到另一个当前正在执行的函数,而不需要经过正常的调用、返回序列,称作非本地跳转

  • Linux进程工具:
    STRACE: 打印一个正在运行的程序和它的子进程调用的每个系统调用的轨迹
    PS: 列出当前系统中的进程(包括僵死进程)
    TOP: 打印出关于当前进程资源使用的信息
    PMAP: 显示进程的内存映射
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357

推荐阅读更多精彩内容

  • 本章的重要性在于你将开始学习应用是如何与操作系统交互的。从异常开始,异常位于操作系统和硬件交界的部分。继续讨论系统...
    王加冰阅读 295评论 0 0
  • 1. 基础知识 1.1、 基本概念、 功能 冯诺伊曼体系结构1、计算机处理的数据和指令一律用二进制数表示2、顺序执...
    yunpiao阅读 5,319评论 1 22
  • 计算机系统漫游 代码从文本到可执行文件的过程(c语言示例):预处理阶段,处理 #inlcude , #defin...
    willdimagine阅读 3,586评论 0 5
  • 1.内存的页面置换算法 (1)最佳置换算法(OPT)(理想置换算法):从主存中移出永远不再需要的页面;如无这样的...
    杰伦哎呦哎呦阅读 3,257评论 1 9
  • 好讨厌啊!年终是一个成年人的世界……又要讲KPI,又要做来年规划,感觉特别不适合青春靓丽的表妹我! 所以今天,我要...
    Sir电影阅读 982评论 3 24