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
    • ...
  • 其他

本周结对学习情况

-  结对对象:

20155325

- 结对学习内容
    - 教材第八章
    - ...

其他(感悟、思考等,可选)

本周除课堂提交补充外,学习的第八章是老师上课时演示过的,所以学习时就比平时好一些。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 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小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料