2017-2018-1 20155326 《信息安全系统设计基础》课程总结

每周作业链接汇总

第0周作业:对本书每章提一个问题

http://www.cnblogs.com/lmc1998/p/8011599.html

第一周作业:熟悉Linux系统下的开发环境及一些软件的使用,学习链接的知识。

http://www.cnblogs.com/lmc1998/p/7587541.html

第二周作业:复习C语言中关于二进制文件和文本文件读写的相关内容,模仿od完成myod。

http://www.cnblogs.com/lmc1998/p/7606215.html

第三周作业:学习第二章《信息的表示和处理》进一步理解“信息=位+上下文”。

http://www.cnblogs.com/lmc1998/p/7657916.html

第四周作业:完成myod改进版,学习第十章,掌握系统编程错误处理的方式。

http://www.cnblogs.com/lmc1998/p/7673924.html

第五周作业:掌握X86汇编基础,了解ISA(指令集体系结构),学习函数调用栈帧的概念,并用GDB进行调试。

http://www.cnblogs.com/lmc1998/p/7709305.html

第六周作业:学习教材第八章,了解异常及其种类,理解进程和并发的概念,掌握进程创建和控制的系统调用及函数使用。

http://www.cnblogs.com/lmc1998/p/7751335.html

第七周作业:学习第四章,了解并掌握ISA,举一反三学习其他体系结构。

http://www.cnblogs.com/lmc1998/p/7782962.html

第八周作业:学习第十一十二章内容,掌握三种并发的方式:进程、线程、I/O多路复用,线程控制及相关系统调用,线程同步互斥及相关系统调用

http://www.cnblogs.com/lmc1998/p/7821487.html

第九周作业:学习第六章《存储器层次结构》,掌握有关知识。

http://www.cnblogs.com/lmc1998/p/7859606.html

第十周作业:无

第十一周作业:学习第九章《虚拟存储器》的内容。

http://www.cnblogs.com/lmc1998/p/7967387.html

第十二周作业:无

第十三周作业:回顾一学期所学知识,我感觉网络编程和并发很重要,所以重新做了总结。

http://www.cnblogs.com/lmc1998/p/8051942.html

第十四周作业:我认为我学的最差的是存储器这一章,所以我重新学习了一遍。

http://www.cnblogs.com/lmc1998/p/8093181.html

第十五周作业:课程总结

补充博客连接汇总

第五周加分题--mybash的实现:使用fork,exec,wait实现mybash。

http://www.cnblogs.com/lmc1998/p/8011063.html

第六周课上作业:完成课上没完成的以及补充作业。

http://www.cnblogs.com/lmc1998/p/7750251.html

第六章课上考试题:课上没交上的作业的博客补交。

http://www.cnblogs.com/lmc1998/p/7897485.html

第八周课下总结:完成课上没完成的以及补充作业。

http://www.cnblogs.com/lmc1998/p/7821975.html

课下加分项mypwd实现:通过getcwd和readdir()来实现mypwd。
http://www.cnblogs.com/lmc1998/p/7859280.html

第十周课下作业-IPC:研究Linux下IPC机制:原理,优缺点。

http://www.cnblogs.com/lmc1998/p/8011521.html

实验报告链接汇总

实验一 开发环境的熟悉:学习了交叉编译,分清了宿主机与目标机,了解了NFC和超级终端的使用。

http://www.cnblogs.com/lmc1998/p/7690037.html

课下实验 缓冲区溢出漏洞:漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写,利用该漏洞进行攻击。

http://www.cnblogs.com/lmc1998/p/7749681.html

实验二 固件程序设计:学习使用并安装MDK,JLink驱动,完成LED实验。

http://www.cnblogs.com/ljq1997/p/7786639.html

实验三 实时系统:基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端,以及多线程的改进版。

http://www.cnblogs.com/lmc1998/p/7862586.html

实验四 外设驱动程序设计:学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章,并完成其中的test试验。

http://www.cnblogs.com/lmc1998/p/7967340.html

实验五 通讯协议设计:基于Socket实现TCP通信,研究OpenSSL算法,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD5。选用合适的算法,基于混合密码系统实现对TCP通信进行机密性、完整性保护。实现对实验二中的“wc服务器”通过混合密码系统进行防护。

http://www.cnblogs.com/lmc1998/p/8040473.html

代码托管链接和二维码:

https://gitee.com/lmc1998/lmc20155326/tree/master/src

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

代码量汇总提交statistics.sh的支持截图

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

很惭愧,没有完全做到。

  • 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得

多练习的确是提高的最有效的办法,勤于动手,知识才能学到手。

  • 实践上有什么经验教训

才开始时,没有进行有效的实践,只是运行了代码,没有思考代码的意义是什么,导致效率低下。

  • 整体评价一下第1周作业中自己提出的问题是不是抓住了学习重点

我觉得开学初提出的问题比较肤浅,只是抓住了表面。

  • 回答一下第1周作业中自己提出的问题

第一章、什么是计算机系统?

计算机系统由计算机硬件和软件两部分组成。硬件包括中央处理机、存储器和外部设备等;软件是计算机的运行程序和相应的文档。计算机系统具有接收和存储信息、按程序快速计算和判断并输出处理结果等功能。

第二章 浮点运算中IEEE标准的运算规则是什么样的?

IEEE定义了多种浮点格式,但最常见的是三种类型:单精度、双精度、扩展双精度,分别适用于不同的计算要求。一般而言,单精度适合一般计算,双精度适合科学计算,扩展双精度适合高精度计算。一个遵循IEEE 754标准的系统必须支持单精度类型(强制类型)、最好也支持双精度类型(推荐类型),至于扩展双精度类型可以随意。

第三章 为什么要懂汇编语言,汇编语言能带来哪些方便?

汇编语言能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等,使用汇编语言,可以访问所有能够被访问的软、硬件资源。

第四章 处理器的流水线原理是什么?

CPU将操作分成一个一个的阶段(stage)。每个stage都是由一个组合逻辑电路和一个流水线寄存器构成的。它通过时钟周期来控制信号,如果遇到了时钟的上升沿,那么就会转移到下一个阶段。在CPU内部,形成了一套取指令-译码-执行-访存-写回的硬件设计。当有数据完成了取指令的操作的时候,就可以发下一个取指令的信号了,这样可以保证取指令的硬件逻辑不会闲着。

第五章 如何进行程序优化?具体在哪些方面

1)高级设计。选择恰当的数据结构和算法;

2)基本编码原则:消除连续的函数调用;消除不必要的存储器引用;

3)低级优化。循环展开;提高并行性,如多个累积变量,重新结合技术,条件传送代替条件选择。

第六章 存储器的层次结构有哪些?

存储器层次结构示例如下图所示:

存储器层次结构的中心思想是,对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。数据总是以块大小作为传送单元在第k层和k+1层之间来回拷贝的。

第七章 动态链接静态链接有什么不同分别怎样进行呢?

链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(拷贝)到存储器中并执行。链接可以执行于编译时,也就是源代码翻译成机器码时,也可以执行于加载时,也就是程序被加载到存储器并执行时,甚至执行于运行时,由应用程序来执行。

动态链接是指在生成可执行文件时不将所有程序用到的函数链接到一个文件,因为有许多函数在操作系统带的dll文件中,当程序运行时直接从操作系统中找。而静态链接就是把所有用到的函数全部链接到exe文件中。动态链接是只建立一个引用的接口,而真正的代码和数据存放在另外的可执行模块中,在运行时再装入;而静态链接是把所有的代码和数据都复制到本模块中,运行时就不再需要库了。

第八章 怎么处理异常,如何有效避免异常?

当处理器检测到有事件发生时,它会通过跳转表,进行一个间接过程调用(异常),到异常处理程序。
系统中可能的某种类型的异常都分配了一个唯一的非负整数的异常号。异常号是到异常表中的索引。

第九章 虚拟存储器的功能

将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和主存之间来回传送数据;为每个进程提供了一致的地址空间,从而简化了存储器管理;
保护了每个进程的地址空间不被其它进程破坏。

第十章 I/O函数常见的有哪些?

CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。存储器通常在CPU的同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应的接口电路也各不相同,因此,习惯上说到接口只是指I/O接口。

第十一章 网络编程是什么具体怎样实现?

客户端的编程主要由三个步骤实现:

1、 建立网络连接

2、 交换数据

3、 关闭网络连接

服务器端的编程步骤和客户端不同,是由四个步骤实现,依次是:

1、 监听端口

2、 获得连接

3、 交换数据

4、关闭和客户端的连接。

第十二章 并发编程是什么为什么要学习它?

所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。

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

由于不知道所有的加分博客,只列出了已知的加分博客:

第1次学习及课堂总结myod

第四周学习总结及myod改进版的补交

我认为当你深入学习,讲你的学习历程一一展现时,就会是优秀博客了。

  • 总结(给出链接和二维码)

http://www.cnblogs.com/lmc1998/p/8128633.html

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

不动手实践,导致课上作业完不成

没交上作业

课程收获与不足

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

这学期其实比起上学期的java,我认真了不少,可能是习惯了这种方法吧,但是我内心还是对这种偏自学的模式不太感冒。

  • 自己需要改进的地方

我觉得我应该需要提高我的学习积极性和效率。

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

我的结对对象是20155320,在结对过程中我们一起对学习过程中遇到的问题进行了讨论,便于两方的学习。

  • 给开学初的你和学弟学妹们的学习建议

加油吧~

  • 如果重新学习这门课,怎么做才可以学的更好

加大学习热情和效率。

问卷调查

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

平均花了三十五小时的样子,花在了学习书上内容以及课上没完成的作业和补充作业上。

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

感觉和上学期学习java相比提高了不少。

  • 学习效果自己满意吗?

说实话,跟上学期的java课程比起来是满意的,但是和其他类似于c语言这样的学习效果差了一点。

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

课程结束后,估计是不能保持一周一篇博客了。

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

我认为应该继续讲课,这学期不光光自学感到很好。

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

停止使用不能自动提交的蓝墨云,有时候明明做了(虽然可能没做完)但是却因为时间截止一分都没有很难过。

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

多与学生交流吧。

  • 其他任意发挥

感觉这学期比起之前,改变了部分教学模式,老师也开始讲课了,才开始讲的第一节课我真的是有流泪的冲动,终于不是完全自学了。

  • 给出你的总结的链接和二维码

http://www.cnblogs.com/lmc1998/p/8128633.html