2017-2018-1 20155319 《信息安全系统设计基础》第6周学习总结
教材学习内容总结
异常控制流概述
-
控制转移:从一条指令到下一条指令的过渡。
-
控制流:控制转移序列。
- 最简单的控制流:平滑的序列,每条指令在存储器中都是相邻的。 - 平滑流的突变:由于跳转、调用和返回等指令造成两条指令不相邻。
-
异常控制流(Exceptional Control Flow, ECF):现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流。
-
异常控制流发生在计算机系统的各个层次
- 硬件层:硬件检测到的事件会触发控制突然装移到异常处理程序 - 操作系统层:内核通过上下文转换将控制从一个用户进程转移到另一个用户进程。 - 应用层:一个进程可以发送信号到到另一个进程,而接收者将会控制突然转移到它的一个信号处理程序。 - 一个程序可以通过回避通常的栈规则,并执行到其它函数中任意位置的非本地跳转来对错误做出反应。
-
ECF是操作系统用来实现I/O、进程和虚拟存器的基本机制。
-
应用程序通过使用一个叫做陷阱或者系统调用的ECF形式,向操作系统请求服务。
-
操作系统为应用程序提供了强大的ECF机制,用来创建新进程、等待进程终止、通知其他进程中系统的异常事件、检测和相应这些事件。
-
ECF是计算机系统中实现并发的基本机制。
-
软件异常允许程序进行非本地跳转来响应错误情况。非本地跳转是一种应用层ECF,在C中通过setjump和longjmp提供。
系统级I/O
1.输入输出I/O
输入输出I/O是在主存和外部设备(如磁盘,网络和终端)之间拷贝数据的过程。
- 输入就是从I/O设备拷贝数据到贮存
- 输出就是从主存拷贝数据到I/O设备
2.Unix I/O
一个Unix文件就是一个m个字节的序列:B0,B1,...,Bk,...,B(m-1)
-
所有的I/O设备,如网络、磁盘、和终端,都被模型化为文件,而所有的输入和输出都被当做想对应的文件的读写来执行。这种将设备优雅的映射为文件的方式,允许Unix内核引出一个简单、低级的应用接口,称为UnixI/O,这使得所有的输入和输出都能以一种统一且一致的方式来执行。1.打开文件
-
一个应用程序通过要求内核来打开文件,内核返回一个小的非负整数(描述符),内核记录有关这个文件的所有的信息,应用程序只需要记住这个描述符。
Unix外壳创建的每个进程开始时都有三个打开的文件: - 标准输入(描述符为0) - 标准输出(描述符为1) - 标准错误(描述符为2)
-
头文件<unistd.h>
定义常量STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO 可以用来代替显式的描述符
输入输出I/O是在主存和外部设备(如磁盘,网络和终端)之间拷贝数据的过程。
- 输入就是从I/O设备拷贝数据到贮存
- 输出就是从主存拷贝数据到I/O设备
教材学习中的问题和解决过程
- 问题1:fork函数返回两次的值是什么?
- 问题1解决方案:,一次是在父进程中返回,另一次是在子进程中返回。
代码托管
)
其他(感悟、思考等,可选)
这次实践博客中存在很多的问题不会,做的十分缓慢课堂知识不牢固,希望老师讲一下课堂实践补交的内容。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |
-
计划学习时间:10小时
-
实际学习时间:16小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
- 《深入理解计算机系统V3》学习指导
- ...
- 其他