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

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

每周作业链接汇总

第一周作业

  • 简要内容:课本第一章《计算机系统漫游》、第七章《链接》,简要的Linux下的编程,了解了程序翻译的步骤,gcc、vim等的学习。

  • 二维码

第三周作业

  • 简要内容:学习信息的表示和处理。
  • 二维码

第四周作业

  • 简要内容:教材第十章,学习head和tail的使用,实现myod.c。
  • 二维码

第五周作业

  • 简要内容:掌握程序的机器级表示,练习获得代码的汇编表示。
  • 二维码

第六周作业

  • 简要内容:了解异常及其种类,理解进程和并发的概念,学习fork、wait、waitpid、exec、pipe等函数。
  • 二维码

第七周作业

  • 简要内容:学习处理器体系结构,在实验楼构建YIS,Y86模拟器安装和学习。
  • 二维码

第八周作业

  • 简要内容:学习网络编程以及并发编程,实践daytime服务器分别用多进程和多线程实现成并发服务器并测试。
  • 二维码

第九周作业

  • 简要内容:学习存储器层次结构。
  • 二维码

第十一周作业

  • 简要内容:学习虚拟存储器。
  • 二维码

第十三周作业

  • 简要内容:回顾这一学期所学内容,深入学习了自己觉得比较重要的并发编程,完成了课后习题。
  • 二维码

第十四周作业

  • 简要内容:对自己薄弱的系统级I/O进行了再次深入的学习,完成了课后习题。
  • 二维码

第十五周作业

  • 简要内容:课程总结。
  • 二维码

实验报告链接汇总

实验一 开发环境的熟悉

  • 简要内容:学习了交叉编译,file命令,目标机与宿主机的区分。
  • 二维码

实验二 固件程序设计

  • 简要内容:安装MDK,JLink驱动,破解MDK,完成LED实验,完成UART发送与中断接收实验,学习国密算法,完成SM1加密实验。
  • 二维码

实验三 实时系统

  • 简要内容:单线程和多线程实现wc功能。
  • 二维码

实验四 外设驱动程序设计

  • 简要内容:学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章,完成了其中的test测试。
  • 二维码

实验五 通讯协议设计

  • 简要内容:基于Socket实现TCP通信,研究OpenSSL算法,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD5,对实验三中的“wc服务器”通过混合密码系统进行防护。
  • 二维码

课下补交以及加分作业的链接

第四周课堂测试、Makefile以及myod

  • 简要内容:vi测试、gcc测试、gdb测试,静态库的测试,共享库的测试,Makefile的学习,myod的实现。
  • 二维码:

《信息安全系统设计基础》第六周课堂实践博客

  • 简要内容:未完成课堂实践,缓冲区溢出漏洞实验,教材p97的家庭作业。
  • 二维码

第八周课下作业

  • 简要内容:实现daytime(13)服务器,多进程实现daytime。
  • 二维码

第十一周加分项Linux下Mypwd的实现

  • 简要内容:学习pwd命令,实现并测试mypwd。
  • 二维码

课堂测试(ch06)

  • 简要内容:对第六章课堂测试进行了分析。
  • 二维码

第七周加分项目 mybash的实现

  • 简要内容:学习fork,exec,wait等函数,实现mybash
    完成了伪代码,产品代码和测试代码的编写。
  • 二维码

第十周课下作业-IPC

  • 简要内容:学习了共享内存,管道,FIFO,信号,消息队列。
  • 二维码

代码托管

截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果
代码量汇总提交statistics.sh的支持截图

  • 代码驱动的学习做到没有?
  • 刚开始是有的,但是有几周虚拟机坏了,代码没有git上去,一直尝试各种方法,想将原来虚拟机里的东西弄出来,一直不成功。
  • 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得。
  • 的确,尤其对于刚刚接触到的一些新的知识点,说实话,想要一接触就能够自己编出点什么对我来说是难了些,所以加点代码,改点代码这个学习方法还是很不错的,之前从学习c语言开始就尝试了这种方法,当真正的自己思考的去改点代码,加点代码,还是很有用的。
  • 实践上有什么经验教训。
  • 实践之后有些东西还是很容易忘却的,所以多多动手,非常重要。

关于第一周提出的为问题的评价和解答

  • 整体评价一下第1周作业中自己提出的问题是不是抓住了学习重点。
  • 有些可能把握住了写重点,有些就只是没有思考的产物。
  • 回答一下第1周作业中自己提出的问题
    1.计算机系统由那些主要的组件,各个组件之间有什么关系。
    答:计算机系统由计算机硬件和软件两部分组成。硬件包括中央处理机、存储器和外部设备等;软件是计算机的运行程序和相应的文档。硬件和软件互相依存,无严格界线,协同发展。
    2.有符号数和无符号数转化的意义是什么。
    答:因为计算机使用补码来存放数据,计算时,需要进行转化。
    3.编程时怎样有效预防缓冲区溢出攻击。
    答:编写严格的代码,禁止执行堆栈数据段,利用程序编译器的边界检查,进行指针完整性检查。
    4.Y86-64和X86-64有什么区别。
    答:与x86-64相比,Y86-64指令集的数据类型、指令和寻址方式都要少一些。它的字节级编码也比较简单,机器代码没有相应的x86-64代码紧凑。
    5.怎样优化程序。
    答:消除不必要的内容,利用处理器提供的指令级并行能力,可同时执行多条指令,使代码高效。
    6.存储器的结构如何。
    答:存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。
    7.静态和动态链接各有什么优劣。
    答:在静态链接程序中,所有的程序代码包好在一个可执行模块中。因为库程序静态连接到应用程序中,库的引用效率更高。静态连接增加应用程序文件的大小,如果系统同时还运行其他的应用程序时,静态连接也会增加内存中代码的大小。动态链接减少程序大小,但通常会影响程序的性能,动态链接还可以减少加载时间,减少了缺页故障的发生,在应用程序装载后,库中的程序是动态而不是静态地连接到应用程序中。但是从性能的角度看,可执行程序访问共享存储段需要“粘联代码”,当应用程序有限引用库中的过程时,包含引用程序的库中的每一个页面必须分别到入内存中。
    8.异常控制流的作用是什么呢。
    答:响应处理器状态中的某些变化,当有异常发生时,处理器会通过异常表,进入异常处理程序。
    9.虚拟内存有什么特性?
    答:虚拟内存将用户逻辑内存和物理内存分开,基于局部性原理,将程序一部分装入就开始运行,需要某部分时就将它调入内存,不需要时再调出内存。
    10.系统级I/O的局限性有哪些?
    答:系统i/o不带缓冲区,操作不方便。
    11.如何编写一个简单的客户端和服务器?
    答:学习了socket编程之后,现在可以编写一些单进程多进程的客户端和服务器了。
    12.进程线程有何区别?
    答:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间; (2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
    (3)线程是处理器调度的基本单位,但进程不是.
    (4)二者均可并发执行.

加分项

  • 你有什么项目被加分,谈谈你的经验
    优秀作业

课程收获与不足

  • 自己的收获(投入,效率,效果等)
    • 虽然学习了c语言,但比起上学期新学的一门java语言来比较,投入的时间并没有变少,反而更多,这个学期学到的东西还是比较深入的,但是效率上可能还是有待提高。
  • 自己需要改进的地方
    • 需要更进一步对一些知识点进行思考学习。
  • 如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议。
    • 本学期的结对最主要在实验的时候提高了效率,互相讨论,完成实验,平时对于教材和代码上的问题也有与结对对象进行讨论。
  • 给开学初的你和学弟学妹们的学习建议,如果重新学习这门课,怎么做才可以学的更好?
    • 无论是什么学习实践还是尤为重要的,尤其在学习一门语言,并且想把一门语言学好,那么实践就非常重要了。除此之外对于一周的学习千万不能放到临近deadline才开始着手,吸取了上个学期学习java每周手忙脚乱的教训,这个学期在这上面做了改进,总的来说算是略微得心应手了。

问卷调查

  • 你平均每周投入到本课程多长时间?
    20小时以上。
  • 每周的学习效率有提高吗?
    相比较刚开始这种自学式的学习期间,有所提高。
  • 学习效果自己满意吗?
    一般。
  • 你觉得这门课老师应该继续做哪一件事情?
    蓝墨云班课。感觉还是比较方便获取老师发布的资源的。
  • 你觉得这门课老师应该停止做哪一件事情?
    觉得现在做的都比较有意义。
  • 你觉得这门课老师应该开始做什么新的事情?
    都很棒了。
posted @ 2017-12-29 16:19  20155339平措卓玛  阅读(164)  评论(0编辑  收藏  举报