20145230 《信息安全系统设计基础》第十一周学习总结
20145230 《信息安全系统设计基础》第十一周学习总结
教材学习内容总结
异常及其种类
-
硬件层:硬件检测到的事件会触发控制突然转移到异常处理程序。
-
操作系统层:内核通过上下文转换将控制从一个用户进程转移到它的一个信号处理程序。
-
应用层:一个进程可以发送信号到另一个进程,而接收者会将控制突然转移到它的一个信号处理程序。
-
异常:就是控制流中的突变,用来响应处理器状态中的某些变化。
-
异常的类别:中断、陷阱、故障、终止。
-
中断:中断是异步的,是来自处理器外部的I/O设备的信号的结果。硬件中断的异常处理程序称为中断处理程序。
-
陷阱:陷阱是有意的异常,是执行一条指令的结果。就像中断处理程序一样,陷阱处理程序将控制返回到下一条指令。陷阱最重要的用途是在用户程序和内核之间提供一个像过程一样的接口,叫做系统调用。
-
故障:故障由错误情况引起,它可能能够被故障处理程序修正。当故障发生时,处理器将控制转移给故障处理程序。
-
终止:终止是不可恢复的致命错误造成的结果,通常是一些硬件错误,比如DRAM或者SRAM位被损坏时发生的奇偶错误。
进程和并发的概念
- 进程:进程的经典定义就是一个执行中的程序的实例。一个独立的逻辑控制流,它提供一个假象,好像我们的程序独占地使用处理器。一个私有的地址空间,它提供一个假象,好像我们的程序独占地使用存储器系统。
- 并发流:一个逻辑流的执行在时间上与另一个流重叠,称为并发流,这两个流被称为并发地运行。多个流并发地执行的一般现象称为并发。
进程的创建和控制的系统调用及函数的使用
- fork:调用一次,返回两次,父进程和子进程是并发运行的独立进程。拥有相同的但是独立的地址空间。
- waitpid:当options=0时,waitpid挂机调用进程的执行,直到它的等待集合中的一个子进程终止。如果等待集合中的一个进程在刚调用的时刻就已经终止了,那么waitpid就立即返回。
- wait:wait函数是waitpid函数的简单版本,调用wait(&status)等价于调用waitpid (-1,&status,0)。
- sleep:sleep函数将一个进程挂起一段指定的时间。
- getpid:getpid函数返回调用进程的PID。
- getppid:getppid函数返回它的父进程的PID。
- pause:pause函数让调用函数休眠,直到该进程收到一个信号。
- execve:execve函数在当前进程上下文中加载并运行一个新程序。execve函数加载并运行可执行目标文件filename,且带参数列表argv和环境变量列表envp。execve调用一次并从不返回。
- setpgid:setpgid函数将进程pid的进程组改为pgid。
运行代码
代码托管截图
20145230/IS-design-20145230 - 码云 - 开源中国 http://git.oschina.net/20145230/IS-design-20145230
心得体会
通过本周的学习,我学会了自己编译运行代码,也了解到了异常控制流的一些基本知识,理解了ECF可以帮助我更加了解操作系统和应用程序是如何交互的,也帮助我更好地理解了软件异常如何工作,也帮助了我理解并发。反正给自己的感觉就是代码越来越多,越需要我们花更多时间去实践,一直努力坚持就好!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 2000行 | 20篇 | 400小时 | |
第一周 | 2/2 | 20/20 | 初步了解Linux的一些基本命令 | |
第二周 | 1/3 | 15/35 | 了解vim编辑器 | |
第三周 | 86/86 | 1/4 | 25/60 | 了解了信息的表示和处理 |
第五周 | 79/79 | 1/5 | 30/90 | 了解了程序的机器级表示 |
第七周 | 84/305 | 1/7 | 20/140 | 了解存储器的层次结构 |
第八周 | 0/305 | 2/9 | 30/170 | 期中总结 |
第九周 | 133/438 | 2/11 | 30/200 | 了解了Linux操作系统提供的基本I/O服务 |
第十周 | 420/858 | 2/13 | 30/230 | 对常用指令的代码进行了分析调试 |
第十一周 | 507/1365 | 2/15 | 30/260 | 了解异常控制流 |