20145334《信息安全系统设计基础》课程总结
第0周作业
阅读老师给出的博客,并回答相关问题
快速翻阅一下课本,对每章内容提出一个问题
安装虚拟机,并解决安装过程中出现的问题
第1周作业
了解linux操作系统,掌握核心的linux命令
第2周作业
Linux系统下的开发环境
vi的基本操作
gcc编译器的基本原理、gcc编译器的常用选项
gdb调试技术
makefile基本原理及语法规范静态库和动态库的生成与调用方法C程序中模块的概念,模块分解的“高内聚,低耦合”的原则
第3周作业
学习教材第二章《信息的表示和处理》,理解二进制在计算机中的重要地位,掌握布尔运算在C语言中的应用,理解有符号整数、无符号整数、浮点数的表示,理解补码的重要性,及课后习题详解
第5周作业
理解逆向的概念、掌握X86汇编基础,能够阅读(反)汇编代码、了解ISA(指令集体系结构)、理解函数调用栈帧的概念,并能用GDB进行调试
第6周作业
了解ISA抽象的作用、掌握ISA,并能举一反三学习其他体系结构、了解流水线和实现方式
第7周作业
了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)、理解局部性原理、理解缓存思想、理解局部性原理和缓存思想在存储层次结构中的应用、高速缓存的原理和应用
第8周作业
Linux常用命令,特别是man -k, cheat, grep -nr xxx /usr/include
复习vi, gcc, gdb,make的使用
第9周作业
掌握Unix/Linux系统级I/O、RIO以及I/O重定向的方法
第10周作业
掌握系统编程和系统调用的概念、掌握系统编程错误处理的方式、掌握Unix/Linux系统级I/O:open close read write seek stat、掌握RIO、掌握I/O重定向的方法
第11周作业
分辨数组指针、指针数组、函数指针、指针函数的区别,理解异常的种类、进程和并发的概念
第12周作业
复习9、10、11周代码
数组指针、指针数组、函数指针、指针函数的区别
信号:查看、生命周期、产生、处理
第13周作业
握三种并发的方式:进程、线程、I/O多路复用,掌握线程控制及相关系统调用,掌握线程同步互斥及相关系统调用。
第14周作业
课本第九章《虚拟存储器》
虚拟存储器的概念和作用、地址翻译、存储器映射、动态存储器分配的方法、垃圾收集、C语言中与存储器有关的错误
实验报告链接汇总
实验一
开发环境的熟悉
实验二
固件开发
实验三
实时系统的移植
实验四
驱动程序设计
掌握实时系统应用和驱动程序的编写、选择某个接口电路
实验五
网络通信
在arm开发板上实现一个简单web服务器的过程,在arm开发板上进行socket网络编程
你有什么项目被加分,谈谈你的经验
我做了一个学习问题总结和GDB调试汇编过程分析,博客链接如下
关于加分和扣分项目老师会在课程的开始就和同学们说的很清楚
加分项目还是很多的,但是每个人也有加分限制
就我个人的经验来看我认为最好的得分方式就是考试
20145334赵文豪 《信息安全系统设计基础》第4周学习总结(关于第三周问题总结)
GDB调试汇编堆栈过程分析
关于第0周作业中预习课本提出的问题
1.计算机的组件
计算机五大组件包括控制器、运算器、储存设备、输入设备、输出设备五个部分。
2.不同编码的区别
整数运算只能编码相对较小的范围,但是是精确的;
浮点运算可以编码一个较大的范围,但是是近似的;浮点运算不可结合。
3.C程序与机器代码如何转换的
C预处理器——扩展源代码-生成.i文件
编译器——产生两个源代码的汇编代码-——生成.s文件
汇编器——将汇编代码转化成二进制目标代码——生成.o文件
链接器——产生可执行代码文件
4.是如何设计处理器的
重点是Y86指令集体系结构
5.如何进行最大化的程序优化
这个就从多个方面了,具体在课本第五章有讲。
6.存储器的层次结构是怎样的?
存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。
CPU寄存器、高速缓存存储器、主存储器、磁盘。
7.链接器的功能
链接器主要有两个工作要做――符号解析和重定位:
符号解析:当一个模块使用了在该模块中没有定义过的函数或全局变量时,编译器生成的符号表会标记出所有这样的函数或全局变量,而链接器的责任就是要到别的模块中去查找它们的定义,如果没有找到合适的定义或者找到的合适的定义不唯一,符号解析都无法正常完成。
重定位:编译器在编译生成目标文件时,通常都使用从零开始的相对地址。然而,在链接过程中,链接器将从一个指定的地址开始,根据输入的目标文件的顺序以段为单位将它们一个接一个的拼装起来。除了目标文件的拼装之外,在重定位的过程中还完成了两个任务:一是生成最终的符号表;二是对代码段中的某些位置进行修改,所有需要修改的位置都由编译器生成的重定位表指出。
8.系统如何对突变情况作出反应
1.处理器检测到有异常发生
2.通过异常表,进行间接过程调用,到达异常处理程序
3.完成处理后:①返回给当前指令②返回给下一条指令③终止
9.如何有效管理存储器
操作系统为每个进程提供了一个独立的页表,也就是一个独立的虚拟地址空间。
抖个虚拟页面可以映射到同一个共享物理页面上。
存储器映射:将一组连续的虚拟页映射到任意一个文件中的任意位置的表示法。
10.Unix I/O是什么
输入/输出(I/O)是在主存和外部设备之间拷贝数据的过程。
11.如何编写使用互联网的客户端-服务器程序
当客户端需要服务时,向服务器发送请求,发起一个事务。
服务器收到请求后,解释它,并以适当的方式操作它的资源。
服务器给客户端发送一个响应,并等待下一个请求。
客户端收到响应并处理它。
12.三种不同的并发编程技术的区别
进程
每个逻辑控制流是一个进程,由内核进行调度,进程有独立的虚拟地址空间
I/O多路复用
逻辑流被模型化为状态机,所有流共享同一个地址空间
线程
运行在单一进程上下文中的逻辑流,由内核进行调度,共享同一个虚拟地址空间
期末课程收获
在以前的课程中,我所面临的就是课程的考试和平时的测验,压力并没有特别大,反而到了最后几天为了顺利通过考试进行的突击复习会让人很累。但是娄老师的课程却和其他老师的课程不一样,只有平时的点点滴滴积累到了最后才能达到标准和要求,只要你踏踏实实的跟着老师的步伐走,到了最后就不会太难过,这是一种新的学习模式,一种新的学习方法。
另外关于每周记录博客,分享自己的学习经历也让同学们有了交流和互动的空间,这样的模式我们可以更快的得到学习资料和学习经验,对于学生也是一种全新的体验。
我记得上课的时候老师说过一个自己的亲身事情,说您当年为了考英语四级,听力全部选C,然后留足够多的时间去做阅读,拿更多的分,然后笑着告诉我们这就是应试教育。这个例子其实对我有很大的触动。当学生当了十几年了,我们从小就面临着各种教育和学习,但是有多少是为了应付考试为了及格,反而有的课程是自己正真想学和感兴趣的却因为能拿到更高的分数而选择了其他的课程。这个应试教育和兴趣学习之间也一直都困扰着我。
从刚进校的时候,就有学长学姐还有一些有“先见之明”的同学会告诉我们,你应该选这个课,不应该选那个课,因为这个课的老师比较“水”,好及格,比较轻松,平时也不怎么点名,课程想去就去,不想去就不去。我自己也没有判断力,会因为及格得到学分而放弃一些东西。我当时就特别喜欢马原这个课程,上课也会认真的听讲,到了考试的时候,我没有怎么刻意的复习和背诵老师给的复习资料,每一道题我都是按照自己的理解和兴趣作答,但是结果却不太如意,考试只有五十多分,幸亏平时成绩还不错才能及格。
这也让我深刻的明白考试就是考试,应试教育最终还是以分数和标准答案作为硬性要求,只有先达到最低的及格标准才能考虑其他的东西。对于必修课我们只有在保证及格的状态下,才有资格和机会去学习和体验自己感兴趣的内容,但是对于选修课和限选课程,我现在认为一定要选择自己感兴趣和喜欢的课程,万万不能因为及格两个字而让自己留有遗憾。
换个角度,对于喜欢和感兴趣的内容,难道及格还能成为我们的绊脚石吗?
作为信息安全专业的学生,我所掌握的专业知识技能还远远不够,在接下来的日子里我们还要掌握更多的技术,更多的知识,算不上顶尖的技术人才,好歹也要达到专业的标准。要在以后的工作中有过硬的政治素质,过硬的技术能力,做一个优秀的电科院学子!
在以后的学习和生活中,我们会遇到各种各样的问题,成年人的生活就是理性的分析每一个遇到的问题然后合理并且合适的解决它。
转眼之间已经跟着老师学习了一年时间,这一年也发生了太多。无论是学习还是生活,老师都给了我极大的帮助和关心,谢谢老师!也希望老师能够继续坚持锻炼身体,只有在健康的前提下我们才能更好的生活和学习。一日为师终身为父,希望老师不仅在学习课程中指导我们,在生活中也可以做我们的精神导师!
自己还需改进的地方
静下心来,提高自己的专注度,努力学习各个方面的知识,历史,哲学,社会学,经济学,等等。
给学弟学妹的建议
娄老师是很认真负责的老师,希望学弟学妹用一种积极主动地心态来学习,而不是为了完成学业而学习,加油,老师不会让你们失望,老师也不会放弃任何一个学生,只有自己才会放弃自己。
问卷调查
1.你平均每周投入到本课程多长时间?
每天一两个小时
2.每周的学习效率有提高吗?
刚开始学习这门课的时候,由于假期准备不充分,所以前两周效率比较低,当别人已经在实验楼和虚拟机上风生水起的时候,我还在学习这比较基本的东西。有一段时间我的电脑配置问题我没有处理好,不能安装乌邦图64位,这两天时间搞得我很头疼,我也很无助,虚拟机总是一开机就爆炸,vim操作也不是太会。但是看了老师每周给的学习重点之后学习效率有很大提高,再通过自己的学习,效率逐渐高了起来。做任何事情都要讲究效率,把时间花在值得的地方,利用好自己的每一分钟。一个学期学一本书,不能说是完全理解,但起码做到了解、记忆书中内容,通过实践习得一些基本操作,比如vim,gdb等的基本用法,以后不管做什么事情都要记住老师现在交给我们的学习方法,做中学,在实践中感受在实践中理解。学习是一辈子的事情,而不是一阵子!
3.学习效果自己满意吗?
学习效果越来越满意,因为刚开始在陌生的虚拟机中,运行比较慢,自己对一个新的操作系统也并不是很熟悉,所以学习效果并不是很满意,但是当一切都顺利以后效率马上提高了不少。
4.课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
希望自己可以坚持下来,量的积累最后带来质的改变!
5.你觉得这门课老师应该继续做哪一件事情?
老师应该在和学生面对面的交流多一些,同学们都说老师很可爱
6.你觉得这门课老师应该停止做哪一件事情?
我觉得老师很负责任,目前没有什么需要停止做的事情
7.你觉得这门课老师应该开始做什么新的事情?
继续严格要求学生,在实验方面可以在做实验之前多讲解一下,因为在实验的过程中我们好多人只是机械性的照着教程做,并没有太多的理解实验中代码的精髓,好多机械性的东西做了四五次可能就有些无趣了。其实实验的次数本来就是五次,老师在做实验之前没必要告诉大家两三次就可以做完,两三次确实可以做完,但是在追求速度的时候我们却也失去了很多学习的机会。所以应该静下心来,自己搞懂代码,慢慢研究实验,然后做出实验,这种成功的结果比为了得到实验的分而机械性的照教程做实验要有趣得多。
本文链接
http://www.cnblogs.com/bestizwh/p/6218699.html
二维码如下