20145328《信息安全系统设计基础》课程总结

20145328《信息安全系统设计基础》课程总结

每周做业连接汇总

  • 第0周做业
  • 简要内容:翻阅课本内容,使用虚拟机安装linux系统,预习linux基础入门知识,关于学习资源的感想,提出问题。
  • 二维码:

  • 第1周做业
  • 简要内容:介绍Linux操做系统相关内容,包括一些核心的Linux命令:find/locate/cheat/grep/which/whereis,以及如何使用Linux中用户管理命令/系统相关命令/文件目录相关命令/打包压缩相关命令/比较合并相关命令/网络相关命令等
  • 二维码:

  • 第2周做业
  • 简要内容:介绍Linux系统下的开发环境,Vim的基本操做,gcc编译器的基本原理以及gcc编译器的经常使用选项,如何使用gdb进行调试,以及Makefile基本原理及语法规范,静态库和动态库的生成与调用方法,介绍连接的相关知识
  • 二维码:

  • 第3周做业
  • 简要内容:介绍二进制在计算机中的重要地位、布尔运算在C语言中的应用,介绍有符号整数、无符号整数、浮点数的表示,介绍补码的重要性、C语言中溢出、数据类型转换中的陷阱和可能会致使的漏洞,介绍“信息=位+上下文”。
  • 二维码:

  • 第5周做业
  • 简要内容:介绍X86汇编基础、ISA;介绍函数调用栈帧的概念、用GDB进行调试,总结教材第三章《程序的机器级表示》内容。
  • 二维码

  • 第6周做业
  • 简要内容:安装Y86处理器,了解ISA抽象,介绍流水线和实现方式,总结教材第四章《处理器体系结构》的内容。
  • 二维码:

  • 第7周做业
  • 简要内容:理解局部性原理和缓存思想在存储层次结构中的应用,介绍常见的存储技术(RAM、ROM、磁盘、固态硬盘等),介绍高速缓存的原理和应用,总结教材第六章《存储器层次结构》的内容。
  • 二维码:

  • 期中总结
  • 简要内容:复习Linux经常使用命令以及教材1-7章,总结本身新学到的知识点、本身的收获、本身的不足并提出课程建议和意见。
  • 二维码:

  • 第9周做业
  • 简要内容:介绍系统编程和系统调用的概念、系统编程错误处理的方式、Unix/Linux系统级I/O、RIO以及I/O重定向的方法,总结教材第10章《系统级I/O》和附录A的内容。
  • 二维码:

  • 第10周做业
  • 简要内容:实践经常使用指令的代码,加深对指令的理解
  • 二维码:

  • 第11周做业
  • 简要内容:介绍异常及其种类、进程和并发的概念、进程建立和控制的系统调用及函数,介绍数组指针、指针数组、函数指针、指针函数的区别,介绍信号机制、管道和I/O重定向,总结教材第八章《异常控制流》的内容,运行分析相关代码。
  • 二维码:

  • 第12周做业
  • 简要内容:复习前三周的知识,深刻理解老师给的代码
  • 二维码:

  • 第13周做业
  • 简要内容:介绍三种并发的方式:进程、线程、I/O多路复用,介绍线程控制及相关系统调用、线程同步互斥及相关系统调用,总结教材第十一章《网络编程》、教材第十二章《并发编程》的内容, 运行并分析相关代码。
  • 二维码:

  • 第14周做业
  • 简要内容:介绍虚拟存储器的概念和做用、地址翻译的概念、存储器映射、动态存储器分配的方法、垃圾收集以及C语言中与存储器有关的错误,总结教材第九章《虚拟存储器》的内容,运行并分析相关代码。
  • 二维码:

实验报告连接汇总

  • 实验一 开发环境的熟悉
  • 简要内容:介绍Linux开发环境的配置和使用,使用Linux的arm编译,使用基于NFS方式的下载调试,以及嵌入式开发的基本过程。
  • 二维码:

  • 实验二 固件开发
  • 简要内容:分析02_pthread及03_tty中的代码,介绍怎样使用linux的armv4l-unknown-linux-gcc编译、使用基于NFS方式的下载调试以及嵌入式开发的基本过程。
  • 二维码:

  • 实验三 实时系统的移植
  • 简要内容:介绍安装ADS、安装GIVEIO驱动、安装JTAG驱动的正确方法,并介绍如何测试基本安装是否正确。
  • 二维码:

  • 实验四 驱动程序设计
  • 简要内容:介绍在LINUX下进行驱动设计的原理以及使用模块方式进行驱动开发调试的过程。
  • 二维码:

  • 实验五 网络通讯
  • 简要内容:介绍在ARM开发板实现一个简单的WEB服务器的过程
  • 二维码:

代码托管连接

  • 代码托管连接→代码托管连接
  • git log格式化日志截图git log --pretty=format:"%h - %an, %ar : %s"

  • 代码量汇总

  • 代码托管二维码

  • 代码驱动的学习作到没有?
    • 算是作到了吧,从上个学期学java开始就是按照着代码驱动学习中的目录结构来进行代码的管理,只是在以前的学习中都是每周的代码一次性commit上去,慢慢地在学习中也发现这样的代码管理并无起到很好的做用,也学会了规范的commit使用方式,虽然很繁琐可是的确颇有用
  • 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
    • 在后面几周的学习当中代码量愈来愈大,比起最开始的也要复杂不少,有些地方光对着看是无法看懂的,须要本身去进行相应的改动才能更好地去理解。这个与使用的是什么编程语言无关,不管是在学习什么编程语言,最快的理解一段代码的方式就是对这段代码进行一些改动,而后去思考为何改过以后的结果是这样的。
  • 实践上有什么经验教训
    • 多敲多运行多改动代码来对代码进行理解,只要你可以掌握这一段代码讲的是什么,为何是这样,那么这段代码你就算是掌握了。

总体评价一下第0周做业中本身提出的问题是否是抓住了学习重点

总体来讲提出的问题就是在没事找事作的样子,有不少东西都没有问到点子上,感受就是对着目录来问,只看到了表面的东西,都是一些很大很宽泛的问题,不多有问到细节上面html

回答一下第0周做业中本身提出的问题

  • 计算机系统应该是如何运行一个“hello,world”程序的?
    • gcc编译驱动程序读取源程序文件hello.c,经过预处理、编译、汇编、连接这四个阶段将源程序文件翻译成一个可执行目标文件。
  • 在计算机系统中是如何处理二进制数据的,在算法溢出的时候应该如何进行对应的处理?
    • 计算机将信息按位编码,利用不一样的编码方式表示证书、实数和字符串,运算溢出能够改变数据定义的类型来解决,也可使用无符号数和补码运算来知足整数运算的许多其余属性,包括结合律、交换律和分配率。
  • 程序在机器上是如何表示的?为什么程序会出现缓冲区溢出等状况,如何减轻常见的代码安全所带来的威胁?
    • 程序在机器上是以汇编代码的形式进行表示的。一般在栈中分配某个字节数组来保存一个字符串,可是字符串的长度超出了为数组分配的空间。这就形成了缓冲区溢出,经过GCC中栈随机化、栈破坏检测、限制可执行代码区域等机制能够减轻常见的代码安全所带来的的威胁。
  • 处理器体系结构包含了什么?流水线化的思想将处理一条指令所须要的不一样步骤实现为独立的阶段的原理是什么?
    • 指令体系结构(ISA);流水线化经过让不一样的阶段并行操做,改进了系统的吞吐量性能。在任意一个给定的时刻,多条指令被不一样的阶段处理。
  • 如何经过一个简单的变换就使程序变得高效?
    • 首先须要选择合适的算法和数据结构,其次必须写出编译器可以有效优化以转换成高效可执行代码的源代码。这个展开答能够说好多。。。剩下的基本上都在第五章里面。
  • 存储器的层次结构是什么?存储器有什么层次结构?做用是什么?
    • 答案如图所示
  • 连接的做用是什么?
    • 做用是将各类代码和数据部分收集起来并组合成为一个单一文件。

你有什么项目被加分,谈谈你的经验

这个学期的加分基本都是靠的优秀做业,而这部分优秀做业都是经过大量的实践拿到的,其实不管是上个学期的java仍是这个学期的信息安全系统设计基础,都可以看出老师对于实践的重视,由于只有大量的实践你才能对一个知识掌握透彻,没有实践的话哪怕如今对于知识有所掌握,但并不深入,过段时间可能就会忘了。java

优秀做业

你有什么项目被扣分,谈谈你的教训

  • 第三周迟交做业,缘由在于当周周末是国庆节假期,明明要外出,可是并无提早完成做业内容,算是一个教训吧,之后尽可能都尽早完成做业,别拖到最后再来赶。

课程收获与不足

本身的收获

  • 最大的收获在于可以熟练的掌握Linux环境下的Shell开发,比起上个学期对于git的认识也有所加深,对于实践的意义也有了更深的理解,更主要的在于,信息安全系统设计基础这门课像一根线同样将之前所学过的不少知识都串联在了一块儿,造成了一个良好的知识网络,并且也与这个学期所学的操做系统,信息安全技术有所关联,几门课相互对照之下,掌握的东西比单独学习要更加具体。

本身须要改进的地方

  • 对于学习的时间要进行更加细致的规划,不能再把不少东西都堆到要交以前再作,所有堆在一块儿又没有效率又影响学习效果,怎么算都是得不偿失。勉强交了个东西上去但实际上连本身内心的标准都没有达到,这样一来就很不划算。

若是有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议

  • 实验上面是经过结对来完成的,结对最大的意义在于不用所有的事情都积压在一我的身上来作,这样一来在学习的过程当中就会比一我的要轻松一些,我在结对过程当中主要负责的是硬件以及实验环境的搭建还有排查错误缘由,在实验报告上面获得队友的帮助比较多,在结对的时候选择一个好的队友真的很重要,学会分工合做也很重要。

给学弟学妹们的学习建议

  • 关于每周一篇博客,长久以来,在各届学长学姐口口相传中已经被妖魔化了,可是实际上真的没有大家想象中的那么恐怖,更况且你再惧怕也没有用,这门课你要想过每周一篇的博客确定是必不可少的,与其抱着敷衍了事的心态去完成还不如认认真真的每周抽出一点时间来好好的把书看了,把博客写了。这样一来每周有了一个固定的学习时间,对于纠正进大学以后并不良好的学习习惯有一种很好的促进做用。
  • 关于学习时间,不管是大二下仍是大三上,周一到周五的课余时间仍是比较多的,将学习时间分配在这些时间上要比把每一周的任务都堆积在周末一块儿完成要好得多,老师要求的东西尽可能达到,毕竟确定不会坑大家,有些东西看上去短时间内用不上,但实际上掌握以后的好处远远大于你能想到的。
  • 在学习的过程当中多实践绝对不会吃亏。

若是从新学习这门课,怎么作才能够学的更好

  • 每周提早预习,由于下一周的任务是早就列出来的,把学习时间安排在周一到周五的课余时间提升学习效率,对于所学习的代码要多加改动,理解每段代码的含义以及具体用法,不要嫌麻烦。

问卷调查

  • 你平均每周投入到本课程多长时间?
    • 平均每周在23小时左右
  • 每周的学习效率有提升吗?
    • 在掌握了正确的学习方法以及方向后对于学习效率有很大的提升
  • 学习效果本身满意吗?
    • 整体来讲比较满意,但最后几周并非很满意,由于学习时间上没有调整好,致使最后几周的实践不够
  • 课程结束后会继续一周至少一篇博客吗?
    • java结束的时候也说过相似要继续一周一篇博客的话,可是并无坚持下来,这个算是比较遗憾的事情,能够的话想尝试一下,这个学期的时候已经开始将本身学习一些知识的内容随手记在了印象笔记里面,而后整理以后编辑成博客,实际上我感受在以前的过程当中由于博客是做为做业提交的,因此写博客都是给人一种完成任务的感受,在这个过程当中感觉不到写做带来的快乐,并且文笔也受到了很大的约束,我想若是是写一些本身想写的东西,那么或许会看到不少不一样的东西。
  • 你以为这门课老师应该继续作哪一件事情?
    • 提交博客,项目加分,期中考试,期中和期末的总结,这些事情都是比较有意义的,能够把不少学到的知识串联起来
  • 你以为这门课老师应该中止作哪一件事情?
    • 暂时没有想到,由于老师所提出的要求都是有它的意义的,区别只在于对于现阶段的学习的帮助有多少,在我看来有些东西虽然在现阶段的学习中用处并不大,可是对于养成一个好的编程习惯是有很大帮助的,因此暂时尚未想到有些什么事情应该中止
  • 你以为这门课老师应该开始作什么新的事情?
    • 将实验的内容与课程内容进行一个过渡,在缺乏这个过渡的状况下对于实验内容的理解感受有很大的缺失

给出你的总结的连接和二维码

相关文章
相关标签/搜索