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

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

每周作业链接汇总

第零周 预习课程知识,安装环境

第一周 Linux 目录结构及一些基本的linux操作和命令

第二周 

学习内容

熟悉Linux系统下的开发环境

熟悉vi的基本操作

熟悉gcc编译器的基本原理

熟练使用gcc编译器的常用选项

熟练使用gdb调试技术

熟悉makefile基本原理及语法规范

掌握静态库和动态库的生成与调用方法

理解C程序中模块的概仿,模块分解的“高内聚,低耦合”的原则

了解链接的概念

 

第三周 

学习内容

理解二进制在计算机中的重要地位

掌握布尔运算在C语言中的应用

理解有符号整数、无符号整数、浮点数的表示

理解补码的重要性

能避免C语言中溢出,数据类型转换中的陷阱和可能会导致的漏洞

进一步理解“信息=位+上下文”

 

第五周

学习内容

理解逆向的概念

掌握X86汇编基础,能够阅读(反)汇编代码

了解ISA(指令集体系结构)

理解函数调用栈帧的概念,并能用GDB进行调试

 

 

第五周续

 

第六周

学习内容

了解ISA抽象的作用

掌握ISA,并能举一反三学习其他体系结构

了解流水线和实现方式

 

第六周续

 

第七周 

学习内容

了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)

理解局部性原理

理解缓存思想

理解局部性原理和缓存思想在存储层次结构中的应用

高速缓存的原理和应用

 

第七周续

 

第八周

学习内容

复习 Linux常用命令

复习 教材1-7章

 

期中总结

 

第九周

学习内容

掌握系统编程和系统调用的概念

掌握系统编程错误处理的方式

掌握Unix/Linux系统级I/O:open close read write seek stat

掌握RIO

掌握I/O重定向的方法

 

第九周续

 

第十周

学习内容

掌握系统编程和系统调用的概念

掌握系统编程错误处理的方式

掌握Unix/Linux系统级I/O:open close read write seek stat

掌握RIO

掌握I/O重定向的方法

 

第十一周

学习内容

了解异常及其种类

理解进程和并发的概念

掌握进程创建和控制的系统调用及函数使用

理解数组指针、指针数组、函数指针、指针函数的区别

理解信号机制:kill,alarm,signal,sigaction

掌握管道和I/O重定向:pipe, dup, dup2

 

第十二周

学习内容

第九周代码检查

第十周代码检查

第十一周代码检查

 

第十三周

学习内容

掌握三种并发的方式:进程、线程、I/O多路复用

掌握线程控制及相关系统调用

掌握线程同步互斥及相关系统调用

 

第十四周

学习内容

理解虚拟存储器的概念和作用

理解地址翻译的概念

理解存储器映射

掌握动态存储器分配的方法

理解垃圾收集的概念

了解C语言中与存储器有关的错误

 

实验报告链接汇总

实验一

 

实验二

 

实验三

 

实验四

 

实验五

 

 

代码托管链接和二维码

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

 

代码量汇总

 

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

按照老师的指导去完成了代码驱动的学习任务,但是一定要把自己的ubuntu。vmx文件保管好,不要误删了,不然全部git又得重新弄一遍,我就装了两次虚拟机。

加点代码,改点代码是理解的最好方式,谈谈你的心得

能够在原有的代码基础上加改代码并且能成功运行,这说明已经掌握了原有的代码。而且这样的学习方式对此代码更加印象深刻。

实践上有什么经验教训

当天任务当天完成,拖泥带水只会越拖越累,因为我们无法预知下一秒会遇到什么问题,之前的问题不解决只会成为后面的累赘。

回答一下第0周作业中自己提出的总题

第一章

什么原因促使我们必须了解编译系统是如何工作的?

1 优化程序性能

2 理解链接时出现的错误

3 避免安全漏洞

第二章

计算机算数运算怎么引发计算机的安全漏洞?

P53 函数getpeername的安全漏洞里讲到,还有例如有符号数转无符号数的隐式转换,也会导致漏洞。

第三章

机器级代码是如何转换的?

例如

汇编C语言的代码用:gcc -01 -S xxx.c

汇编并编译:gcc -01 -c xxx.c

第四章

处理器的体系结构

各种状态元素、指令集和它们的编码、一组编程规范和异常事件处理

 

第五章

怎样优化程序?需要注意哪些方面?

消除循环的低效率;减少过程调用和消除不必要的存储器引用,在第五章里有详细说明。

第六章

存储器的结构

第七章

静态链接和动态链接有何区别?

静态链接

在生成可执行文件的时候,把所有需要的函数的二进制代码都包含到可执行文件中去。链接器需要知道参与链接的目标文件需要哪些函数,同时也要知道每个目标文件都能提供什么函数,这样链接器才能知道是不是每个目标文件所需要的函数都能正确地链接。

动态链接

 在编译的时候不直接拷贝可执行代码,而是通过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中,然后程序在运行到指定的代码时,去共享执行内存中已经加载的动态库可执行代码,最终达到运行时连接的目的。

第八章

如何回避并处理异常?

通过异常表,进行间接过程调用,到达异常处理程序。

第九章

虚拟存储器的作用

虚拟存储器中运用了虚拟内存技术,拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑会自动调用硬盘来充当内存。

第十章

系统级的I\O是什么意思?

在主存和外部设备之间拷贝数据的过程。

第十一章

十一:如何编写一个Web服务器

Web服务器使用HTTP协议和它们的客户端彼此通信的。浏览器向服务器请求静态或者动态的内容。对静态内容的请求是通过从服务器磁盘取得文件并把它返回给客户端来服务的。

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

GDB调试堆栈过程分析

 

优缺点

优点就是能把我们学习任务分的很清楚,我们不会混淆,跟着老师的进度走很顺利的学习。没有缺点,老是这么负责认而且效率这么高,我认为没有缺点。

课程收获与不足

这门课我学到最重要的一点是在每周的开始把自己一门科目的学习任务定好了,然后在本周内必须学完,这样既能提前计划好学习进度又不能落下,是个很好的学习方法。对于写博客这块,我感觉书上的学习内容写在博客园上,一方面复习了自己学习的知识,另一方面还可以在周一的考试中忘了那一块知识点的时候能迅速找到答案。不足就是自己在开学的时候没好好学,欠下了学习的债,后面还的很辛苦,并且学习状态不稳定,还是得调整学习心态,在学习的时候屏蔽掉无关紧要的事情,专心学习。

给学弟学妹的学习建议

真的真的不要欠债,欠自己学习的债,不但不能让自己轻松,反而更累,大家都是学生,来上学,欠下的总要还的,所以一定要紧跟老师的指导步骤,甚至提前预习。

多动手,多思考。尤其多动手,加改代码,可以让自己更加深刻地理解代码。

作息一定要规律,不然哪能每次都集中注意力学习,要不然就会学的时间特别多完了还学不到多少知识,就是学不进去的意思(深有体会)

问卷调查

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

20个小时

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

端正学习态度之后效率高了

学习效果自己满意吗?

不满意,很多时候精力不集中

课程结束后会继续一周至少一篇博客吗?

写的话一定是自己觉得必须用博客记录。

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

每周博客总结以及测试,还有扇贝打卡!

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

没有

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

对我们要求做您推荐的书的笔记,可加分

 

本文链接

posted @ 2016-12-25 21:12  20145322何志威  阅读(183)  评论(1编辑  收藏  举报