20135234mqy-——信息安全系统设计基础第十一周学习总结
第八章 异常控制流
8.1异常
异常是异常控制流的一种形式,它一部分是由硬件实现的,一部分是由操作系统实现的。
异常就是控制流中的突变,用来响应处理器状态中的某些变化。
8.1.1异常处理
异常号是到异常表中的索引,异常表的起始地址放在一个叫做机异常表基址存储器的特殊CPU寄存器里
8.1.2异常类别
1.中断异常号是到
2.陷阱和系统调用
3.故障
4.终止
8.1.3Linux/IA32系统中的异常
1.Linux/IA32故障和终止
(1)除法错误
(2)一般保护故障
(3)缺页
(4)机器检查
2.Linux/IA32系统调用
8.2进程
异常是允许操作系统提供进程的概念所需要的基本构造块
进程的经典定义就是一个执行中的程序的实例
进程提供给应用程序的关键抽象:
(1)一个独立的逻辑控制流,它提供一个假象,好像我们的程序独占地使用处理器
(2)一个私有的地址空间,它提供他一个假象,好像我们的程序独占地使用存储器系统
8.2.1逻辑控制流
即使在系统中通常有许多其它程序在运行,进程也可以向每个程序提供一种假象,好像它在独占地使用处理器。如果想用调试器单步执行程序,我们会看到一系列的程序计数器(PC)的值,这些之唯一的对应于包含在程序的可执行目标文件中的指令,或是包含在运行时的动态链接到程序的共享对象中的指令。这个PC值的序列叫做逻辑控制流,或简称逻辑流。
8.2.2并发流
一个逻辑流的执行在时间上与另一个流重叠,称为并发流,这两个流被称为并发的运行。
8.2.3私有地址空间
一个进程为每个程序提供它自己的私有地址空间,和这个空间中某个地址相关联的那个存储器字节是不能被其他进程读或写的,从这方面的来说,这个私有地址空间是私有的。
8.2.4用户模式和内核模式
处理器通常是用某个控制寄存器中的一个模式位来提供这种功能的,该寄存器描述了进程当前享有的特权。当设置了模式位时,进程就运行在内核模式中。一个运行在内核模式的进程可以执行指令集的任何指令,并且可以访问系统中任何存储器位置。
8.2.5上下文切换
操作系统内核使用一种称为上下文切换的叫高层形式的异常控制流来实现多任务
内核为每个进程维持一个上下文。上下文就是内核重新启动一个被抢占的进程所需的状态。
8.3系统调用错误处理
当UNIX系统级函数遇到错误时,他们会典型的返回-1,并设置全局整数变量errno来表示什么错了。
通过使用错误处理包装函数,我们可以更进一步的简化我们的代码
8.4进程控制
8.4.1获取进程ID
每个进程都有一个唯一的正数进程ID。getpid函数返回调用的PID,getppid函数返回他的父进程的PID(创建调用进程的进程)
8.4.2创建和终止进程
从程序员角度,程序总是处于下面三种状态之一:
(1)运行
(2)停止
(3)终止
8.4.3收回子进程
当一个进程由于某种原因终止时,内核并不是立即把它从系统中清除。相反,进程被保持在一种已终止的状态中,直到被它的父进程回收。当父进程回收已终止的子进程时,内核将子进程的退出状态传递给父进程,然后抛弃已终止的进展,从此时开始,该进程就不存在了。一个终止了但还未被回收的进程称为僵死进程。
(1)判定等待集合的成员
(2)修改默认行为
(3)检查已回收子进程的退出状态
(4)错误条件
(5)wait函数
8.5信号
UNIX信号,他允许进程中断其他进程
一个信号就是一条小消息,他通知进程中发生了一个某种类型的事件。
每种信号类型都对应每种系统事件。
8.5.1信号术语
发送一个信号到目的进程是由两个不同步骤组成:
(1)发送信号
(2)接收信号
8.5.2发送信号
(1)进程组
(2)用/bin/kill程序发送信号
(3)从键盘发送信号
(4)用kill函数发送信号
(5)用alarm函数发送信号
8.5.4信号处理问题
(1)待处理信号被阻塞
(2)待处理信号不会排队等待
(3)系统调用可以被中断
总结:
异常控制流发生在计算机系统的各个层次,是计算机系统中提供并发的基本机制。
在硬件层,异常是由处理器中的事件出发的控制流中的突变。控制流传递递给一个软件处理程序,该处理程序进行一些处理,然后返回控制给被中断的控制流。
异常分为:中断、故障、终止、陷阱。
在操作系统层,内核用ECF提供进程的基本概念。进程提供给应用两个中澳的抽象:(1)逻辑控制流(2)私有地址空间
在操作系统和应用程序之间的接口处,应用程序可以创建子程序,等待他们的子进程停滞 或者终止,运行新的程序,以及不活来自其他进程的信号
在应用层,c程序可以使用非本地跳转来规避正常的调用/返回栈规则,并且直接从一个函数分支到另一个函数
主要参考资料《深入理解计算机系统》
心得:
通过本章的学习,基本了解了ECF在计算机各个层次的发生,同时,部分内容也对我学习操作系统课程有很大的帮助,例如8.2进程,操作系统课程主要学习的是进程的具体作用,如何运行,如何产生最终结果,而书中关于进程的内容,是关于什么是进程,进程具体是什么,给程序提供了什么样的抽象,并对操作系统课程中常常提到的wait和signal两个函数也有了进一步的理解,知道了函数具体是什么,为什么是这样的,这对于我深刻了解这方面的知识起到了很大的帮助,对于8.5章的信号,比较难理解,我会多花些时间学懂该部分知识。
20135234mqy-——信息安全系统设计基础第十一周学习总结的更多相关文章
- 20165223《信息安全系统设计基础》第九周学习总结 & 第八周课上测试
目录 [第九周学习总结] 教材内容总结 [第八周课上测试] (一)求命令行传入整数参数的和 (二)练习Y86-64模拟器汇编 (三)基于socket实现daytime(13)服务器和客户端 参考资料 ...
- 20155216 2017-2018-1 《信息安全系统设计基础》第二周课堂练习补交以及Myod的实现
20155216 2017-2018-1 <信息安全系统设计基础>第二周课堂练习补交 课堂测试3:行断点的设置 运行截图: 未完成原因:课前未安装 cgdb 具体步骤: 1.输入命令:gc ...
- 2017-2018-1 20155232 《信息安全系统设计基础》第四周学习总结以及课上myod练习补充博客
2017-2018-1 20155232 <信息安全系统设计基础>第四周学习总结以及课上myod练习补充博客 课上myod练习 1 参考教材第十章内容 2 用Linux IO相关系统调用编 ...
- 2017-2018-1 20155320 《信息安全系统设计基础》第四周学习总结(课堂实践补交+myhead与mytail加分项目)
2017-2018-1 20155320 <信息安全系统设计基础>第四周学习总结(课堂实践补交+myhead与mytail实现) 课堂实践内容 1 参考教材第十章内容 2 用Linux I ...
- 2017-2018-1 20155326 《信息安全系统设计基础》第四周学习总结及myod改进版的补交
2017-2018-1 20155326 <信息安全系统设计基础>第四周学习总结及myod改进版的补交 学习内容 补充完成课上没有完成的内容 学习教材附录A,第十章内容 参考别出心裁的Li ...
- 2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)
2017-2018-1 20155305 <信息安全系统设计基础>第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客) 课堂提交题目要求 编写MyOD.java 用java ...
- 2017-2018-1 20155318 《信息安全系统设计基础》第九周课下实践——实现mypwd
2017-2018-1 20155318 <信息安全系统设计基础>第九周课下实践--实现mypwd 相关知识 man -k 查找含有关键字的内容 与管道命令结合使用:man -k k1 | ...
- 2017-2018-3 20155337《信息安全系统设计基础》 pwd指令学习
2017-2018-3 20155337<信息安全系统设计基础> pwd指令学习 任务要求 学习pwd指令 研究pwd实现需要的系统调用(man -k:grep),写出伪代码 实现mypw ...
- # 20155337 2017-2018-1 《信息安全系统设计基础》第二周课堂实践+myod
20155337 2017-2018-1 <信息安全系统设计基础>第二周课堂实践+myod 因为在课上已经提交了四个实验,还欠缺最后一个实验,反省一下自己还是操作不熟练,平时在课下应该多多 ...
随机推荐
- Django模板变量的使用
在views.py中进行逻辑控制,编写向跳转页面传递内容的代码.可以看出,对类.字典.列表中的数据均可操作.views.py的内容如下: from django.shortcuts import re ...
- JSON.stringify() 格式化 输出log
调试程序的过程中,我们打印一个日志: console.log(object);,其中object是任意的一个json对象. 在控制台就会看到[object object],而看不到具体的内容. 我们可 ...
- iOS-CoreLocation地理编码(转载)
一.简单说明 CLGeocoder:地理编码器,其中Geo是地理的英文单词Geography的简写. 1.使用CLGeocoder可以完成“地理编码”和“反地理编码” 地理编码:根据给定的地名,获得具 ...
- 最大生成树——LCA
今天说是要练习LCA结果找了道题看着题解打完了,如此惭愧,Lca还得好好理解啊,感觉在最大生成树上做有点异样,可能还是不是很理解吧,在noip前一定要再把这道题再a一遍,好题啊. 这是2013noip ...
- HDU5033 building 单调栈+计算几何
正解:单调栈 解题报告: 哇生气辽QAQ本来打了半天feel good都快调出来了然后说换题了QAQ(所以可能那题的代码会过一阵子再放上来了QAQ 不过还是大爆手速打了一通拿到首杀了嘻嘻 美滋滋辽 然 ...
- java 8 学习资料
出处: 总览 http://www.importnew.com/24300.html stream api 详解 : https://www.ibm.com/developerworks/cn/jav ...
- javaScript高级教程(四) 复制对象
//返回新对象,双方互不影响 function clone(obj){ //alert('clone'); if(typeof(obj) != 'object') return obj; if(obj ...
- tcp3次握手,https加密,ca认证
参考: https://baijiahao.baidu.com/s?id=1570143475599137&wfr=spider&for=pc
- 理解SQL SERVER中的逻辑读,预读和物理读
转自:https://www.cnblogs.com/CareySon/archive/2011/12/23/2299127.html 在我的上一篇关于SQL SERVER索引的博文,有圆友问道关于逻 ...
- 跟我学Makefile(七)
定义模式规则 使用模式规则来定义一个隐含规则.一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有“%”字符.“%”的意思是表示一个或多个任意字符.在依赖目标中同样可以使用“%”,只是依赖 ...