2017-2018-1 20155223 《信息安全系统设计基础》第3周学习总结
教材学习内容总结
第一章
计算机系统由硬件和系统软件组成,两者共同运作以运行应用程序。内部信息被表示为一组组的位,位依据上下文有不同的解释方式。
程序被其他翻译程序翻译成不同形式,开始是被翻译成ASCII文本,然后被翻译成计算机可执行的二进制文本。如果是用Code::Blocks等编译软件编译,则在编译完成后自动生成可执行文本;若是用vim,则必须手动完成翻译工作。
处理器通过读取并解释二进制指令来运行程序。
第七章
链接可以在编译时依靠静态编译器完成,也可以在加载时靠动态链接器完成。链接器的目标文件只有二进制文件一种。
链接器主要任务有二:符号解析和重新定义。
GCC编译器在工作过程中调用得到的链接器为静态链接器,其他编译驱动程序亦是如此。
与编译位置无关的代码的共享库可以加载到任何地方,亦可以在运行中被多个进程共享。
每一章的问题
第一、第七章除外。
- 第二章
计算机有32位与64位之分,分别何在?两种计算机所存数据相互交换,会出现什么情况? - 第三章
条件控制来实现条件分支和条件传送来实现条件分支有何实质性区别? - 第四章
到底什么系统会用到Y86-64代码? - 第五章
怎么样的代码是不必要的引用内存? - 第六章
“高速缓存存储器”与“内存”有何相关? - 第八章
有何种异常种类可以是通过代码故意实现的? - 第九章
Linux虚拟机怎么调用我宿主机的i7核? - 第十章
Unix的I/O和Java的I/O有何区别? - 第十一章
客户端和服务器怎么相互连接? - 第十二章
目录所提及的三种并发模式,其优点和缺点有什么?
教材学习中的问题和解决过程
我看了课本第2页的对C语言起源的旁注,提出了一个问题:
- 问题1:C语言是一种面向过程语言,C++和Java是面向对象语言,而Unix是由C语言实现的,那么,面向对象语言的程序是怎么在面向过程语言的系统中运行的?
- 问题1解决方案:一点思考,将所有程序的文本全部翻译成机器语言,那么计算机就可以直接执行命令了。面向对象和面向过程只是相较于我们来分的,对于计算机其实并没有差别,因为不管什么样的高级编程语言到最后都会翻译成一连串的二进制码。
代码调试中的问题和解决过程
- 代码调试只在首次使用GCC、GDB编译过程中出现,属于熟练度不够问题,重复练习即可解决。
代码托管
上周考试错题总结
- 上周无考试
结对及互评
本周结对学习情况
- 暂无。要看是否继续上学期结对目标还是更换结对目标。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 20000行 | 15篇 | 400小时 | |
第一周 | 2501/2501 | 1/1 | 20/20 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:24小时
-
实际学习时间:<=20小时