2017-2018-1 20155231 《信息安全系统设计基础》第8周学习总结
教材学习内容总结
第11章 网络编程
- 事务由四步组成
- 当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。例如,当Web览器需要一个文件时,它就发送一个请求给Web服务器
- 服务器收到请求后,解释它,并以适当的方式操作它的资源。例如,当Web服务器收到浏览器发出的请求后,它就读一个磁盘文件
- 服务器给客户端发送一响应,并等待下一个请求。例如,Web服务器将文件发送回客户端;
- 客户端收到响应并处理它。例如,当Web浏览器收到来自服务器的一页后,它就在屏幕上显示此页。
-
一个IP地址就是一个32位无符号整数。
-
listen函数将sockfd从一个主动套接字转化为一个监听套接字。该套接字可以接受来自客户端的连接请求。backlog参数暗示了内核在开始拒绝连接请求之前,该放入队列中等待的未完成连接请求的数量
-
HTTP是一个简单的协议。一个web客户端(即浏览器)打开一个到服务器的因特网连接。浏览器读取这些内容,并请求某些内容。服务器响应所请求的内容,然后关闭连接。浏览器读取并把它显示在屏幕内
-
Web服务器以两种不同的方式向客户端提供内容:
- 取一个磁盘文件,并将它的内容返回给客户端。
- 运行一个可执行文件,并将它的输出返回给客户端。
第12章 并发编程
- 在多核机器上进行并行计算 多核处理器,多核处理器中包含多个CPU。被划分成并发流的应用程序通常在多核机器上比在单处理器机器上运行理器中包含多个这些流会并行执行,而不是交错执行
- POSIX线程是在C程序中处理线程的一个标准接口。它最早出现在1995年,而且在大多数Unix系统上都可用。Pthreads定义了大约60个函数,允许程序创建、杀死和回收线程,与对等线程安全地共享数据,还可以通知对等线程系统状态的变化。
- 通过调用pthread_exit函数,线程会显它会等待所有其他对等线程终止,然后再终止式地终止。
- 某个对等线程调用Unix的e×it函数,该函数终止进程以及所有与该进程相关的线程
教材学习中的问题和解决过程
- 问题1:关于进程的优劣
- 问题1解决方案:关于进程的优劣,对于在父、子进程间共享状态信息,进程有一个非常清晰的模型:共享文件表,但是不共享用户地址空间。进程有独立的地址控件爱你既是优点又是缺点。由于独立的地址空间,所以进程不会覆盖另一个进程的虚拟存储器。但是另一方面进程间通信就比较麻烦,至少开销很高。
- 问题2:V(s)
- 问题2解决方案:V操作将s加1。如果有任何线程阻塞在P操作等待s变成非零,那么V操作会重启这些线程中的一个,然后该线程将s减1,完成它的P操作,P中的测试和减1操作是不可分割的,也就是说,一旦预测信号量s变为非零,就会将s减1,不能有中断。V中的加1操作也是不可分割的,也就是加载、加和存储信号量的过程中没有中断。注意,V的定义中没有定义等待线程被重新启动的顺序。唯—的要求是V必须只能重启一个正在等待的进程。
代码调试中的问题和解决过程
-
问题1:代码反汇编成X86-64汇编
-
解决问题:用 命令行编译,打开.s文件显示汇编代码
用objdump -d .o文件显示反汇编文件
-
问题2:翻译成Y86汇编
-
解决问题:上网查询。参考指导书博客
代码托管
上周考试错题总结
- 有关exec系列函数,下面说法正确的是:
- 进程调用了exec系列函数后,代码会改变。
- exec系列函数中带e的要传入环境变量参数
- 解析:不能用char[][] 来传递argv,结尾的0(null)无法处理;system=fork+exec+wait;
- 关于代码 int main(){} 说法正确的是:
- 返回值是0;
- 会调用exit(0);
- 上面代码运行完,在命令行中运行echo $? 的值是0
- 解析:main中不调用exit,会补上exit(0)
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
- [结对同学学号1](博客链接)
- 结对照片
- 结对学习内容
- XXXX
- XXXX
- ...
其他(感悟、思考等,可选)
本周学习东西很多。有些实验还没完成,还在学习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第8周 | 299/2400 | 1/5 | 11/1000 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:16小时
-
实际学习时间:11小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)