20145214 《信息安全系统设计基础》课程总结
每周作业链接汇总
-
第0周作业:课本预习问题及虚拟机安装
-
第1周作业:掌握核心的linux命令,了解linux操作系统
-
第2周作业:熟悉vi操作,gcc编译器及gdb调试技术
-
第3周作业:计算机中各种数的表示和运算
-
第5周作业:学习汇编,了解逆向的思想应用
-
第6周作业:安装Y86处理器,了解ISA抽象
-
第7周作业:理解局部性原理和缓存思想在存储层次结构中的应用
-
期中总结:对前七周的内容进行查缺补漏
-
第9周作业:学习Unix I/O并且了解Unix I/O的使用情况
-
第10周作业:实践常用指令的代码,加深对指令的理解
-
第11周作业:理解进程和并发,了解异常及其种类
-
第12周作业:复习前三周的知识,深入理解老师给的代码
-
第13周作业:掌握并发的方式,线程控制及相关系统调用
-
第14周作业:虚拟存储器的概念及其作用
实验报告链接汇总
代码托管链接
-
git log格式化日志截图
-
代码量汇总
-
代码托管二维码
-
做到了代码驱动的学习,在后面几周的学习中一开始就面对看起来毫无头绪的代码,先读懂每一句代码的大致的含义,猜猜运行的结果会是什么,再去尝试着运行是我觉得比较好的学代码的步骤。因为有些代码并不是单纯的只要
gcc
编译一下,再./a.out
执行就可以得到正确的运行结果。如果不知道代码的大概含义,就有可能会出现运行结果完全错误但自己并不自知的情况 -
在实践了代码的基础上,再对代码进行一些修改就更能让自己深入的理解代码了。比如在学习线程的时候,我刻意地加上一些线程或者减少一些线程就会发现程序运行的速率是不同的。修改代码也会让学代码变成一件有趣的事情。
关于git托管代码的感想
-
在学期开始的时候只是按照上个学期的模式,每周建立一个文件夹放代码,并在这个文件夹中编译、运行,后来开始慢慢学着按老师说的重新管理自己的代码,建立src、bin、include等等文件夹用于专门放置一类,再在这些文件夹下建立week01、week02这样的文件夹,把
.c
放在src文件夹里对应的周数下,这样做的一个好处是让代码变得有条理,在写这篇博客时最大的感受就是进行代码量汇总的时候不用一个一个在混乱的文件夹中把自己的.c
挑出来进行统计了,省去了很多麻烦。 -
每敲完一个代码并且学习理解后就
git add .
一下,再根据自己的理解为代码附上注释git commit -m
,这个过程虽然繁琐,但是能够让自己学习过的代码变得有迹可循,而不是“一次性”的学习过而已,在最后看代码托管的日志是也会有一种巨大的成就感
关于第0周作业中预习课本提出的问题
问1:计算机各个组件之间怎样配合
- 答:运算器、控制器、存储器、输入设备、输出设备。CPU是中央处理器,是控制和运算器,是一台计算机的运算核心和控制核心。存储器的主要功能是存储程序和各种。输入输出设备我们一般统称I/O,用于连接计算机内外部。而这些组件的连接则需要总线和主板来完成。
问2:怎样对信息进行表示和处理
- 答:计算机系统中的所有信息都是以二进制形式存储的,计算机系统规定了三种重要的编码方式:无符号编码、补码编码、浮点数编码。
问3:流水线化的思想是怎么进行实际运用的
- 利用了基于生产者/消费者的流水线处理方法,实现服务器与客户端的流水并行
问4:优化程序时应该注意什么
- 寄存器溢出
- 分支预测和预测错误处罚
问5:存储设备如何放置在层次结构中
- 存储器层次结构的中心思想是,对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。数据总是以块大小作为传送单元在第k层和k+1层之间来回拷贝的
问6:静态和动态链接有什么区别
- 静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件
- 动态链接就是在编译的时候不直接拷贝可执行代码,而是通过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中,然后程序在运行到指定的代码时,去共享执行内存中已经加载的动态库可执行代码,最终达到运行时连接的目的
问7:异常控制流怎样工作
-
当处理器检测到有事件发生时,它就会通过一张叫做“异常表”的跳转表,进行一个间接过程调用,到一个专门设计用来处理这类事件的操作系统自程序(异常处理程序)。当异常处理程序完成之后,会发生以下三种情况的一种:
1) 处理程序将控制返回给当前指令 2) 返回给如果没有发生异常将会执行的下一条指令 3) 处理程序终止中断的程序。
-
异常分为四类:中断、陷阱、故障和终止
问8:局部性在虚拟存储器中有何意义
- 从具有良好局部性的意义上来说,好的程序员总是应该试着去编写高速缓存友好的代码
问9:I/O与上学期学习的I/O有何区别
- 上学期学习的是高级别I/O,这学期学习的是Unix I/O
问10:怎样编写Web服务器
- 大致思路:server会listen在某个端口,调用accept等待客户的connect,等客户连接上时会返回一个fd(file descriptor),从fd里read,之后write同样的数据到这个fd,然后重新accept
问11:并发编程对服务有什么影响
- 提高服务的效率
关于回答自己的预习提问的感想
- 学习完整个学期的内容后,再次回头看第0周作业提出的问题,会发现很多问题提得很无知,甚至有点无理取闹的感觉。自己在回答的时候会感觉到哭笑不得...
- 再回顾自己提问题的时候,是看着课本的目录,一章一章看下来的,当时感觉这些问题应该有一部分会成为学习的时候的重点的。现在看来并不是这样,还是说明了事物不应该只看表面吧,深入了解后的感悟和一无所知的时候是完全不同的。
关于加分项目的经验
- 我的加分项目应该大部分都是优秀作业,还有一部分的扇贝单词。
- 因为没有系统的统计是哪一周的博客加分了,下面只能大概给出部分的链接和二维码了。但是于我个人而言,我认为每一周点击提交作业时的博客都是我自己心里的优秀博客了。在自己力所能及的范围内把该做的事情做好,掌握了应该掌握的知识,拿出最端正的态度,我觉得就足够了。剩下的评判的事情就交给老师,事实也证明了,老师的判断是公正的。
- 这个学期我没有做关于总结、项目和教程的相关加分项目,单靠优秀作业差不多就把10分加满了。这个过程里,开学初几乎每个星期的优秀博客给了我很大的动力,老师的点评也让我在后面的每周博客作业里知道了记录自己实践经验的重要性,拿到自己完全不懂得代码时先一行一行读,一句一句理解再贯穿起来尝试运行,之后再结合课本的内容更深入地理解代码,这样的学习方法又为自己赢得了一些加分。
- 总的来说,最重要的经验就是态度吧,态度决定一切。
- 第5周作业
- 第7周作业
- 期中总结
- 第10周作业
- 第11周作业
- 第13周作业
课程收获与不足
自己的收获
- 对比上个学期,我每周投入在课程学习上的时间多了许多,每周一老师发布学习任务之后就先开始大概地看一下学习内容是什么,思考应该用什么样的顺序开始学习(如期中考试后,就是先实践老师给的代码,后学习课本内容),确定了学习方向后,之后每天都学一点,不再把学习内容都堆积到周末去完成。一开始这样的学习方式会有不习惯,但是到后来学习任务多了之后,发现同学们周末在抓狂的时候我已经差不多完成了博客作业,才会发觉这样分隔式的学习模式其实是更轻松的。
- “一分耕耘一分收获”的老话果然没错,付出的多了,收获自然也更多。最明显的改变是上课拿到老师的小测题后不会再一脸懵逼了,虽然无法做到闭卷能够作答,但是至少我知道这道题老师在考查我们对哪一个知识点的掌握,也知道应该从哪里寻找答案了,这应该是对付出最“实惠”的回报了吧。
- 在这篇博客的最开始,贴出每周博客链接之外老师还要求要有博客的简要内容,这是和上学期相比不一样的地方。在写简要内容的时候,我暗暗感谢了自己还好每周都按着老师的要求在学习进度条里记录了重要成长,只需要将每周的重要成长复制粘贴、稍加修改即可,否则一篇一篇打开博客看下来再进行总结将是多么大的工作量!
- 在一整个学期的学习中,最大的收获应该是自己的学习方法。不会再像以前,有了问题第一个想到的是求助身边的同学,偶尔遇到同学也无法解决的问题就不了了之了。在整个课程的学习中,我学会了遇到问题先上网搜索,看看是否别人也和我遇到了同样的问题,是否这些问题已经有了解决的办法。其实在搜索的过程中,即使没有明确的解决问题的办法,网上有的关于知识点的元知识也能为我们解决问题提供很多的思路,我想这应该也是老师一直强调
man -k
和grep
指令的使用和掌握的深意吧。 - 这学期还学了操作系统和网络编程基础,上这两门课的时候深深感觉到课程之间都有内在的联系,学习的时候不能把每门课程割裂开。
自己需要改进的地方
- 上周的学习任务中老师没有额外给实践代码,紧绷了一学期的神经突然就松下来了,在博客中仅仅记录了课本的学习内容但没有进行实践,没有做到一贯而终。“虎头蛇尾”的毛病又犯了。
- 没有认真实践带来的最直接的恶果就是考试的时候有大量的题无法真正的理解。自己最需要改进的地方应该是对学习态度和学习方法从一而终。
给学弟学妹们的学习建议
- 首先应该是态度。端正自己的态度,让自己从心底里是真正的想学到一些知识,而不是每周末不得不写一篇博客应付了事。
- 其次是学习时间的分配,每天学一点,不要把每周的学习任务堆积到周末才开始着手,当学习任务多的时候可能会无法完成所有的内容。
- 最后就是跟着老师的要求做。用老师的话说,现在偷的懒,以后都是要“还债"的。
问卷调查
你平均每周投入到本课程多长时间?
- 平均30小时
每周的学习效率有提高吗?
- 有了学习的大致方向后,学习效率会大大提高
学习效果自己满意吗?
- 满意。虽然付出很多,但收获更多
课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书)
- 今天刚刚想到要是把放假回家做蛋糕烤面包写在博客里会不会成为博客园的一股泥石流...
- 如果可以的话我想试试,看看坚持写博客会有什么样的化学反应出现
你觉得这门课老师应该继续做哪一件事情?
- 继续期中考试。期中考试让我有时间回顾之前学习的内容并且把每一章都联系起来
你觉得这门课老师应该停止做哪一件事情?
- 家庭作业的考试。
- 在接近期末的时候进行家庭作业的考试感觉没有很大的意义。考试的时候只是翻出答案照抄而已。
你觉得这门课老师应该开始做什么新的事情?
- 在实验里多加一些和教材每一章知识有关的内容。做完五次实验后,感觉和课本的内容没有很大的关联,不能深入的理解实验内容的内在需要掌握的点。