2017-2018-1 20155204 《信息安全系统设计基础》第六周学习总结
2017-2018-1 20155204 《信息安全系统设计基础》第六周学习总结
教材学习内容总结
- 异常的类别:
(1)中断:中断是异步发生的,是来自处理器外部的I/O设备的信号的结果。
(2)陷阱和系统调用:陷阱是有意的异常,是执行一条指令的结果。
(3)故障:故障由错误情况引起,它可能能够被故障处理程序修正。 - 进程:系统中的每个程序都运行在某个进程的上下文中。上下文是由程序正确运行所需的状态组成的。 并发:多个流并发的执行、
- fork:函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事
- exec:用被执行的程序完全替换调用它的程序的影像。fork创建一个新的进程就产生了一个新的PID,exec启动一个新程序,替换原有的进程,因此这个新的被exec执行的进程的PID不会改变,和调用exec函数的进程一样。
- wait、waitpid:wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或该进程接收到一个指定的信号为止。如果该父进程没有子进程或它的子进程已经结束,则wait()就会立即返回。waitpid()的作用和wait()一样,但它并不一定要等待一个终止的子进程,它还有若干选项,如可提供一个非阻塞版本的wait()功能,也能支持作用控制。实际上,wait()函数只是waitpid()函数的一个特例,在Linux内部实现wait()函数时直接调用的就是waitpid()函数。
- exit:在调用处强行退出程序,运行一次程序就结束。
- getpid:功能是取得进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。
- sleep:执行挂起一段时间
- setenv:用来改变或增加环境变量的内容。参数name为环境变量名称字符串。
- unsetenv:删除name的定义。即使name没有定义也不返回错误。
- pipe:管道是Linux 支持的最初Unix IPC形式之一,具有以下特点:
管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系 统,并且只存在与内存中。 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。 - dup、dup2:复制旧的文件描述符oldfd,新的文件描述符和旧的文件描述符指向“打开文件描述表”的相同入口,所以他们拥有相同的offset和status。但新文件描述符和旧文件描述符的flags不相同。close-on-exec这个标记在新文件描述符上被关闭。dup使用“未使用的数值最小的”文件描述符作为新的文件描述符。dup2使用参数newfd作为新的文件描述符。
教材学习中的问题和解决过程
- 问题1:exec1.c中为什么不输出最后printf的那一句?
- 问题1解决方案:因为在系统处理器中,在执行
execvp( "ls" , arglist );
语句时,已经将最后的打印语句覆盖掉了,处理器中并没有这句打印语句。
代码托管
做实验的时候ubuntu出了问题,现在一直停留在这个命令行,文件也几乎找不到了,老师我会尽快安好然后补上代码。
本周结对学习情况
- [20155203](http://www.cnblogs.com/xhwh/p/7750261.html)
- 结对学习内容
课下练习、一起读书。
另附本周课下练习博客链接:缓冲区溢出漏洞实验
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 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 | |
第五周 | 200/1500 | 2/11 | 10/100 | |
第六周 | 200/1700 | 2/13 | 10/110 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:10小时
-
实际学习时间:10小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)