2017-2018-1 20155328《信息安全系统设计基础》第6周学习总结
教材学习内容总结
-
异常有四种:中断(来自I/O设备的信号)、陷阱(有意的异常)、故障(潜在可恢复的错误)和终止(不可恢复的错误)。其中中断是唯一一个异步的,因硬件中断与当前指令无关,而是来自处理器外部I/O设备的信号的结果。
-
调度:在进程执行的某些时刻,内核可以决定抢占当前进程,并重新开始一个先前被抢占了的进程。
-
每个进程都有一个唯一的正数ID(PID),使用getpid函数可返回调用进程的PID,getppid函数可返回其父进程的PID。
-
父进程通过调用fork()函数创建子进程,父进程与子进程之间最大的区别就是有不同的PID。fork()函数只被调用一次,却会返回两次:一次在父进程中,另一次在新创建的子进程中。
-
wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态值。子进程的结束状态值会由参数status 返回,而子进程的进程识别码也会一起返回。如果不在意结束状态值,则status可以设成NULL。
-
/bin/kill程序可以向另外的进程发送任意的信号;进程可以通过调用kill函数向其他进程发送信号(包括它自己);进程也可以通过调用alarm函数向自己发送SIGALARM信号。
教材学习中的问题和解决过程
- 问题1:exit函数的具体形式是exit(int status),此函数没有返回值,其中的参数status代表的是什么含义呢?
- 问题1解决方案:查询资料得知,当status为0时表示程序运行结束,属正常退出;非0则表示有错误情况发生。
然后去搜了一下exit参数相关,参见知乎问答:C/C++中exit()函数的参数到底有什么意义?
- 问题2:fork函数的返回
- 问题2解决方案:按照课本514页程序运行:
编译后提示Fork未定义:
修改为fork之后的运行结果为:
调用fork后,父进程和子进程的pid都为1,父进程和子进程是并发的独立进程,父进程先完成它的输出语句,然后是子进程。
代码调试中的问题和解决过程
暂未遇到
代码托管
statistics脚本截图:
上周考试错题总结
- 7.大多数计算机使用同样的机器指令来执行无符号和有符号加法。
A.正确
B.错误
C.不确定
正确答案:A
17.int x; x的二进制为[10010101], x>>4的值为()
A .
[10010101]
B .
[00001001]
C .
[11111001]
D .
[01010000]
正确答案:C
x为有符号数,有符号数进行算术右移,在左端补4个最高位。
23.下面和代码可移植性相关的C语言属性有()
A .
define
B .
typedef
C .
sizeof()
D .
union
正确答案:ABC
漏选了C,#define可以定义宏使得变量可移植,typedef可以使得类型可移植,sizeof()使得不同类型长度可移植。
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
- 结对对象:
- 结对学习内容
- 教材第八章
- ...
其他(感悟、思考等,可选)
本周除课堂提交补充外,学习的第八章是老师上课时演示过的,所以学习时就比平时好一些。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 40/40 | 1/1 | 20/20 | |
第二周 | 40/40 | 1/2 | 18/38 | |
第四周 | 154/194 | 2/4 | 20/58 | |
第五周 | 48/242 | 2/6 | 20/78 | |
第六周 | 59/ 301 | 2/8 | 19/97 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:19小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)