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

回答自己第零周提出的问题


  • 第一章:计算机操作系统中处理器、缓存器、以及内存等在运行中是如何配合运行的。
    处理器是执行存储在主存中的指令的引擎,为了减少系统花费在主存和处理器之间的信息转移的时间从而有了高速缓存。

  • 第二章:为什么计算机算数运算会引发计算机的安全漏洞。
    一个怀有恶意程序的计算溢出会破坏其他的数据结构,会导致程序崩溃或者行为异常

  • 第三章:溢出攻击是什么
    缓冲区溢出的数据会破坏程序数据,造成意外终止。但是如果精心构造溢出数据的内容,那么就有可能获得系统的控制权!

  • 第四章:流水线怎么利用
    SEQ(顺序的)处理器,SEQ在执行命令时需要6步:1、取指;2、译码;3、执行;4、访存;5、写回;6、更新PC。在这过程中,SEQ会花费大量的时间,为了提高处理器的执行效率,引入流水线化的Y86处理器。也就是说,SEQ处理器一条指令执行必须上一条指令的6步全部结束后才能开始,而在流水化的处理器中只需要指令执行的一个步骤结束后下一个指令就可以开始。

  • 第六章:如何判定一个存储器单元是是否在稳态状态
    提出来的这个问题是在没看书之前的,看过书后发现,静态RAM存储在一个双稳态的单元里,动态RAM对干扰比较敏感

  • 第七章:不同形式的链接的区别
    静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终的EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。

采用动态链接库的优点:(1)更加节省内存;(2)DLL文件与EXE文件独立,只要输出接口不变,更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性。

  • 第八章:当要捕获多个信号终止的程序是如何处理的
    待处理信号被阻塞,待处理信号不会排队等待,系统调用可以被中断。

  • 第九章:虚拟存储器是如何工作的
    为了给用户提供更大的随机存取空间而采用的一种存储技术。它将内存与外存结合使用,好像有一个容量极大的内存储器,工作速度接近于主存,每位成本又与辅存相近,在整机形成多层次存储系统。  

  • 第十章:在编写并发应用程序时如何保障信息安全

    并发的应用程序共享变量时,用信号量来调度

  • 第十一章:服务器如何将其他信息传递给子程序
    通过fork函数或者exec类型的函数,共享文件表。

  • 第十二章:使用线程编写程序时,如何保证安全

    这个问题当时提问的有点不知所云,果真只有你学习了,才能提出来比较有价值的问题

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


我觉得扇贝单词还是有很大帮助的,每一天不论你是认认真真背的,还是你扫一眼就直接按下一个单词,毫无疑问第一种方法会打打提高自己的词汇量,当然第二中方式也会让你不知不觉的记住一些单词,只要坚持不懈。四六级考试的基本不就是词汇量吗?所以对四六级还是有影响的,尤其是对于大二下有些不上英语课的人来说。

  • 本学期你与老师和同学交互最多的一篇博客是哪篇?
    与老师和同学交互最多的博客往往是能够明确提出个人理解和观点并且罗列知识点清晰明了的博客。罗列知识点的过程就是总结和提高的过程,如果能对课本的重点思考,自己根据所学知识试着解答,不论能不能出结果,都是更加深入理解的方法,写在博客中,和同学老师交流,会理解更深。

  • 现在评价一下第0周提出的问题的质量,抓住重点了吗?

    第零周的问题其实大多数都没有抓住重点,可能是因为对于书上的一些基本概念,基本理论不清晰的结果。在逐渐学习的过程中,会能提出一些与第零周截然不同的问题。所谓“温故而知新”,一本书从最开始的什么都不知道,到后来的感觉自己知道很多,知道最后学完之后有感觉什么都没有学到。在这个学习的过程中,我在不断成长。如果说在期末让我重新提问,我感觉可能问题比在一开始提的更多,也更有效。

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


无扣分项目。

课程收获与不足


  • 自己的收获(投入,效率,效果等)

    可能是上学期的java课已经习惯了老师的教学方式,所以这学期第一周我就端正了自己的学习态度。自习的顺序:1、看老师博客中的重点、难点以及考点;2、实践、读代码;3、看书、理解、做练习题。这样一个顺序做下来,自己的学习效率会越来越高的。

  • 自己需要改进的地方

    在实践和代码阅读方面应该多下功夫。

  • 给学弟学妹们的学习建议

  • 如果重新学习这门课,怎么做才可以学的更好
    1、一开始就做好要刻苦学习的准备,万事开头难,我们很容易在开始的时候就在心里定义这个很难,那么在后来的学习过程中你就会变得很浮躁,学会静下心来,脚踏实地的做事。
    2、动手实践。实践出真知,如果不动手实践,看的再动也不会编程序。学会独立思考问题。
    3、多看看别人的博客,从中吸取经验和教训

问卷调查


  • 你平均每周投入到本课程多长时间?

    20小时左右,平时就看书做实践,周末总结。

  • 每周的学习效率有提高吗?

    在不断提高,因为知识是互相关联的,一开始就认真做,到后面会相对轻松。

  • 学习效果自己满意吗?

    相比较上学期的java,这学期的学习效果我还是比较满意的。

  • 课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书)

    希望我可以坚持下来这个习惯

  • 你觉得这门课老师应该继续做哪一件事情?

    每周写博客,代码考试,扇贝打卡,,期末、期中总结。

  • 你觉得这门课老师应该停止做哪一件事情?

    闭卷考试,考一些动手操作的知识多一点,少一点概念、要背的东西。

  • 你觉得这门课老师应该开始做什么新的事情?

    目前还没有想到比较好的方法。上学期对于老师提出来的一些问题,老师在这学期都添加了上了。

期末总结


  • 二维码

每周作业链接汇总


  • 第零周作业

    • 简要内容

    • 阅读老师关于学生和老师关系的博客并做一个总结。

    • 对教材的每一章提出一个问题。

    • 安装虚拟机

    • 二维码

  • 第一周作业

    • 简要内容

    • 简单的熟悉linux的命令

    • 二维码

  • 第二周作业

    • 简要内容

    • 教材第一章内容学习。

    • vi的基本操作,vim掌握以下搜索:man: man -k (等价于apropos) ; cheat;find locate;which whereis;apt-cache search.

    • gdb简要调试。

    • 生成静态库动态库。

    • 二维码

  • 第三周作业

    • 简要内容
    • 1.理解二进制在计算机中的重要地位
    • 2.掌握布尔运算在C语言中的应用
    • 3.理解有符号整数、无符号整数、浮点数的表示
    • 4.理解补码的重要性
    • 5.能避免C语言中溢出,数据类型转换中的陷阱和可能会导致的漏洞
    • 6.进一步理解“信息=位+上下文”
    • 二维码

  • 第五周作业

    • 简要内容
      1.理解逆向的概念
      2.掌握X86汇编基础,能够阅读(反)汇编代码
      3.了解ISA(指令集体系结构)
      4.理解函数调用栈帧的概念,并能用GDB进行调试

    • 二维码

  • 第六周作业

    • 简要内容
      1.了解ISA抽象的作用
      2.掌握ISA,并能举一反三学习其他体系结构
      3.了解流水线和实现方式

    • 二维码

  • 第七周作业

    • 简要内容

    1.了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
    2.理解局部性原理
    3.理解缓存思想
    4.理解局部性原理和缓存思想在存储层次结构中的应用
    5.高速缓存的原理和应用

    • 二维码

  • 期中总结

    • 简要内容

    1.复习 Linux常用命令
    2.复习 教材1-7章

    • 二维码

  • 第九周作业

    • 简要内容

    1.掌握系统编程和系统调用的概念
    2.掌握系统编程错误处理的方式
    3.掌握Unix/Linux系统级I/O:open close read write seek stat
    4.掌握RIO
    5.掌握I/O重定向的方法

    • 二维码

  • 第十周作业

    • 简要内容

    1.掌握系统编程和系统调用的概念
    2.掌握系统编程错误处理的方式
    3.掌握Unix/Linux系统级I/O:open close read write seek stat
    4.掌握RIO
    5.掌握I/O重定向的方法

    • 二维码

  • 第十一周作业

    • 简要内容

    1.了解异常及其种类
    2.理解进程和并发的概念
    3.掌握进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,
    4.理解数组指针、指针数组、函数指针、指针函数的区别
    5.理解信号机制:kill,alarm,signal,sigaction
    6.掌握管道和I/O重定向:pipe, dup, dup2

    • 二维码

  • 第十二周作业

    • 简要内容

    1.第九周代码检查
    2.第十周代码检查
    3.第十一周代码检查
    4.项目

    • 二维码

  • 第十三周作业

    • 简要内容

    1.掌握三种并发的方式:进程、线程、I/O多路复用
    2.掌握线程控制及相关系统调用
    3.掌握线程同步互斥及相关系统调用

    • 二维码

  • 第十四周作业

    • 简要内容

    1.理解虚拟存储器的概念和作用
    2.理解地址翻译的概念
    3.理解存储器映射
    4.掌握动态存储器分配的方法
    5.理解垃圾收集的概念
    6.了解C语言中与存储器有关的错误

    • 二维码

实验报告链接汇总


  • 实验一 开发环境的熟悉

    • 简要内容

    学会Linux开发环境的配置和使用,使用arm运行可执行文件,了解嵌入式开发的基本过程。

    • 二维码

  • 实验二 固件开发

    • 简要内容

    学习、读懂02_pthread、03_tty中的代码,配置实验环境完成实验指导书中的实验2、3。

    • 二维码

  • 实验三 实时系统的移植

    • 简要内容

    根据实验指导书进行实时软件的安装(ADS、GIVEIO驱动、JTAG驱动),配置实验环境并对软件进行测试,运行测试程序。

    • 二维码

  • 实验四 驱动程序设计

    • 简要内容

    掌握实时系统应用和驱动程序的编写。

    • 二维码

  • 实验五 网络通信

    • 简要内容

    在arm开发板上实现一个简单web服务器的过程。

    • 二维码

  • 实验总结

    • 二维码

代码托管


  • 链接:20145204张亚军代码托管项目

  • 二维码

  • 截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果

  • 代码统计

  • 代码驱动的学习做到没有?

    已做到。在没有看老师的《代码驱动的学习》博客之前,我一直对于git上传代码持有怀疑,每周代码仅仅上传一次,从来没有管理、分类,从里面找一个之前写过的时间都够重新敲一个代码了。后来老师要求我们对代码做分类,而且每个代码都要有一个单独的git,之后我才对git有了新的认识,他确实是一个好的存储文件方式。

  • 实践上有什么经验教训
    刚开始对于linux不熟悉的时候,要装软件,并且执行各种命令行,让初学者很烦躁,但是坚持下来,你会发现喜欢上终端的,任何事情都不要轻言放弃。多多利用百度等搜索工具搜索相关知识。

posted @ 2016-12-25 23:31  20145204张亚军  阅读(326)  评论(2编辑  收藏  举报