2017-2018-1 20155312 《信息安全系统设计基础》第一周学习总结
2017-09-24 21:36
513 查看
2017-2018-1 20155312 《信息安全系统设计基础》第一周学习总结
教材学习内容总结
上周学习了计算机中信息的存储方式;了解了源程序如何被计算机一步步处理转化成目标文件,以及其对应的Linux指令(ESo iso);查看反馈的汇编码的指令objdump -d hello.o;了解编译系统如何工作的三大益处;了解系统的硬件组成;命令行下程序调试的方法;操作系统的功能、内涵;系统之间的通信;学习链接的意义;创建静态库;创建动态库。教材学习中的问题和解决过程
问题1:书中第6页图1-4中介绍了一个典型系统的硬件组成,I/O设备通过配适器或控制器与I/O总线相连,I/O总线又通过I/O桥与系统总线相连,那么这里I/O桥的作用是什么?I/O桥与I/O总线的关系?问题1解决方案:上网搜索了I/O桥的概念,发现没有明确的定义,学长说是“存储器结构”,知乎上的用户解释“有点像ARM 的AMBA”,但由于我对存储器和一些专业术语并不了解,所以还是没法理解I/O桥的概念。后来我在一篇博客里发现“系统总线是一组并行的导线,能携带地址、数据和控制信号。但是不同总线不能直接互通,这就用到了I/O桥”“一个计算机有多个不同类型的总线,这些总线由桥(bridge)链接起来。”,据此我分析I/O桥作用是联通系统总线与I/O总线。
问题2:主存和内存是同一个概念吗?
问题2解决方案:主存是主存储器的简称。“主存储器(Main memory),简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。”内存是内部存储器的简称,包括RAM(主存)和ROM(只读存储器)。存在主存中的数据一旦断电就丢失了,存在ROM中的数据不会丢失。
关系图如下:
问题3:什么是标准的ELF-64目标文件格式?
问题3解决方案:参考ELF文件格式分析
我了解到目标文件有三种类型:1.可重定位文件(.o)2.可执行文件(.exe)3.共享目标文件(.so)。如下图所示,ELF目标格式一般包含 ELF 头部、程序头部表、节区、节区头部表几个部分。
浏览教材并针对每章提出一个问题
第一章:数据和控制信息以不同的方式存储在栈上为什么会引发安全漏洞?第二章:无符号数和数的补码表示有哪些特性?
第三章:寄存器的使用惯例提出依据是什么?
第四章:组合和时序逻辑元素如何在数据通路中组合到一起?
第五章:如何减少程序需要做的工作的变换?
第六章:RAM、ROM、磁盘和固态硬盘是如何防止在层次结构中的?
第七章:位置无关代码主要应用于什么情况?
第八章:应用程序是如何与操作系统交互的?
第九章:应用程序如何使用和管理虚拟内存?
第十章:内核用什么数据结构来表示打开的文件?
第十一章:getaddrinfo函数和getnameinfo函数有什么区别或联系?
第十二章:如何理解互斥锁加锁顺序规则?
代码调试中的问题和解决过程
本周没有代码方面的问题代码托管
(statistics.sh脚本的运行结果截图包含克隆项目后的代码)上周考试错题总结
课下测试ch01
满分15分,得分15分课下测试ch07
满分18分,得分11分错题及解析:
1.main.c 调用了静态库libmath.a中的函数,编译main.c的命令是(AB)
A .
gcc -static main.c ./libmath.a -o main
B .
gcc -static main.c -L. -lmath -o main
C .
gcc -static main.c -L. -llibmath.a -o main
D .
gcc -static main.o ./libmath.a -o main
错因:误选了D,此处是将main.c文件编译为可执行文件main
知识延展:
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。
对比一下两者:
静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。
动态库而言:某个程序在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个拷贝;只有没有才链接载入。在程序运行的时候,被调用的动态链接库函数被安置在内存的某个地方,所有调用它的程序将指向这个代码段。因此,这些代码必须使用相对地址,而不是绝对地址。在编译的时候,我们需要告诉编译器,这些对象文件是用来做动态链接库的,所以要用地址不无关代码(Position Independent Code (PIC))。
注意:linux下进行连接的缺省操作是首先连接动态库,也就是说,如果同时存在静态和动态库,不特别指定的话,将与动态库相连接。
使用静态库链接、编译步骤:
编写.h文件和.c文件,注意.h文件的格式以及
#ifndef
#define
#endif的使用
将头文件中包含的相关函数对应的.c文件编译生成 .o文件
由 .o 文件创建静态库(.a 文件):
ar cr lib静态库名.a XXX.o XXX.o
在程序中使用静态库:
gcc -static main.c -L. -lmath -o main或
gcc -static main.c ./libmath.a -o main两种格式
结对及互评
点评模板:
博客中值得学习的或问题:xxx
xxx
...
代码中值得学习的或问题:
xxx
xxx
...
其他
本周结对学习情况
- [20155333]() - 结对照片 - 结对学习内容 - 第一章、第七章
其他(感悟、思考等,可选)
刚经历了大学两年里最忙碌的一周,总结起来其实是自己在有打把时间去做一些事的时候却选择了懈怠,结果现在事情都积压到了一起。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 19/0 | 1/0 | 15/0 | 了解计算机内部结构、程序执行过程中的具体过程、动态链接和静态链接 |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
参考:软件工程软件的估计为什么这么难,软件工程 估计方法
计划学习时间:20小时
实际学习时间:15小时
改进情况:将本周学习内容模块简化,重点放在问题及其解决上。
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
《深入理解计算机系统V3》学习指导CSAPP第六章-存储器的层次结构
彻底理解I/O架构
相关文章推荐
- 2017-2018-1 20155312 《信息安全系统设计基础》第七周学习总结
- 2017-2018-1 20155303 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155339 《信息安全系统设计基础》第一周学习总结
- 2017-2018-3 20155327 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155204 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155312 《信息安全系统设计基础》第八周学习总结
- 2017-2018-1 20155201 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 学号20155317 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155213陆忠民 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155235 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155312 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155312 《信息安全系统设计基础》第六周学习总结
- # 20155337 2017-2018-1 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155228 《信息安全系统设计基础》第一周学习总结
- 20155225 2017-2018-1 《信息安全系统设计基础》第一周学习总结
- 20155325 2017-2018-1 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155230 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155229 《信息安全系统设计基础》第一周学习总结
- 2017-2018-1 20155312 《信息安全系统设计基础》第十一周学习总结
- 2017-2018-1 20155227 《信息安全系统设计基础》第一周学习总结