CSAPP 第八章:异常控制流 小结

异常控制流(ECF):为什么重要,主要是理解系统概念,应用程序和系统是如何交互的,理解并发,了解软件异常如何工作。

事件:状态变化:触发异常。

异常类别:

类别原因异步/同步返回行为
中断来自I/O的信号异步返回到下一条指令
陷阱有意的异常同步返回到下一条指令
故障潜在的可恢复的错误同步可能返回到当前指令
中值不可恢复的错误同步不返回

后面这三个是故障指令。第一个指令是正常指令,指的是计算机同时处理多任务的能力


陷阱(trap)最重要的用途就是在用户程序和内核之间提供一个想过程一样的接口,例如读、写、创建进程,加载程序等。此时通过系统调用实现时钟中断,时间片可以轮转。

故障:经典实例:缺页异常。当虚拟地址对应的物理页面不在存储器中需要加载,这时就出现了缺页异常。

终止:异常退出。


进程:进程是执行中程序的实例。系统的每个程序的都是运行在进程的上下文中(context)。


进程对应用程序的抽象:逻辑控制流:好像是独一无二的程序。私有的地址空间:好像程序独占存储器系统


逻辑控制流:挂起。上下文切换。高速缓存污染

并发流:并发与并行。


进程控制:父进程建立子进程,并且系统自动销毁,当父进程终止时。

进程状态:运行,挂起,终止。

子进程复制了全部父进程的堆栈、数据区和代码区内容,。

特性:

  • 调用一次,返回两次:子进程PID为0;父进程为...
  • 并发执行:父进程和子进程是两个独立进程,内核能够以任意的方式执行逻辑控制流的指令
  • 相同但是独立的地址空间
  • 共享文件(为什么能一起printf出来)
信号:个语言和系统都是类似的。还有框架,例如MFC。

并发错误:同步流,例子:如果先运行了子进程,内核注意到子进程,发出一个信号给父进程,然后运行了父进程的之前一部分指令,此时父进程处理了信号,此时子进程已经被删除了,但是父进程仍然运行addjob的代码,把不存在的子进程加入到任务列表中。

竞争的经典案例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值