2017-2018-1 20155321 《信息安全系统设计基础》第1周学习总结
教材学习内容总结
-
第一章主要学习了:信息是什么、源代码到目标程序所需要经过的4个过程、系统如何执行目标程序、执行过程中发现存在不断复制搬移程序的问题、为了解决问题出现了高速缓存器、完善过程,出现了存储器分层的结构 、操作系统如何管理硬件、三个抽象概念,进程(线程),虚拟内存,文件(网络也是一种文件)、并发和并行。
-
第七章主要学习了链接的基本概念,也了解了三类目标文件、符号、符号表等重要概念。
-
每章问题提出
- 第一章:虚拟内存的意义是什么,为什么通过进程、虚拟内存、文件三个抽象概念可以实现操作系统的两个基本功能
- 第二章:了解计算机的编码等规则对编程有什么益处?
- 第三章:程序的机器级表示是什么意思?
- 第四章:处理器的体系结构是什么?
- 第五章:如何优化程序的性能?
- 第六章:存储器这种层次结构有什么好处?
- 第七章:什么时候用到静态库和动态库?我们日常的编程中常用吗?
- 第八章:异常控制流是什么意思?C语言里是怎么处置异常的?
- 第九章:为什么存在虚拟内存的概念?它和内存有什么区别?
- 第十章:系统级I/O是什么意思?
- 第十一章:如何用C语言进行网络编程?与Java语言相比有什么优势与劣势?
- 第十二章:如何用C语言进行并发编程?与Java语言相比有什么优势与劣势?
教材学习中的问题和解决过程
-
问题1:使用
gcc -c hello.s -o hello.o
把.s文本文件转为.o二进制文件中不知道为什么出现了问题,但是若gcc -c hello.i -o hello.o
却没有问题,然后程序也可以正常运行
-
问题1解决方案:尚未知道原因,目前使用第二种方法能正常运行。个人认为是.s文件出现了问题,.s文件按照书上解释应该是文本文件,且应是汇编代码构成的,但是当我打开.s文件后发现.s文件却是乱码?!
-
问题2:自己独自练习gcc编译时,在输入完
gcc -c sum.i -o sum.o
后运行发现运行不了
-
问题2解决方案:因为sum.o文件属于可重定位目标文件,缺少链接部分,因此还要输入
gcc sum.o -o sum
后,生成可执行文件即可,且通过打开sum.o文件和sum文件也可发现这两个文件是有差别的。个人感觉,在平日正常编程中,编译环节还是使用gcc -c sum.i -o sum
比较方便
-
问题3:使用AR工具创建函数的静态库时,书上写着命令
ar rcs libvector.a addvec.o multvec.o
,其中参数rcs
是什么意思? -
问题3解决方案:通过网上的资料显示,参数r:在库中插入模块(替换);参数c:创建一个库。不管库是否存在,都将创建;参数s:创建目标文件索引。
代码调试中的问题和解决过程
- 问题1:在使用gdb进行调试的时候,第一步是先把代码调出来,即要输入命令
l
即可,但是在真正调试的时候,如果只是想调试中间某一部分而跳过某些暂不需要的代码时,这样输入命令就会很麻烦
- 问题1解决方案:
通过网上资料显示,命令l
一次显示10行代码,可以在命令l
后加入想调出来的代码的行数,则可显示此行数上下的部分代码,比较方便
代码托管
上周考试错题总结
无
结对及互评
暂无
本周结对学习情况
- 20155330
- 结对学习内容
- 第一章
- 第七章
- 结对学习内容
其他(感悟、思考等,可选)
-
本周我主要学习在虚拟机的Linux系统下学习C语言编程,学会使用vim的三种基本模式,初步掌握gcc编译器的常用选项以及相关的命令参数,初步学会使用gdb进行调试,
-
下周主要任务是认真学习教材第七章的内容,学习并学会使用静态库和动态库。
-
总而言之,本周的学习收获主要是初步掌握后续学习要使用的基本工具,熟悉Linux环境,为后续学习奠定基础,下周的学习主要是对本周学习进行修补和完善。此外,本周对Makefile以及断点的调试的学习和练习仍较生疏,下周还需多加学习。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 20篇 | 400小时 | |
第一周 | 48/48 | 1/1 | 15/15 |
-
计划学习时间:10小时
-
实际学习时间:15小时
-
改进情况:在动手实践编程方面要提高效率
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)