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

学习总结

·第0周:
预习本学期学习内容,使用虚拟机VirtualBox安装Linux系统;阅读推荐博客并写感悟。
http://www.cnblogs.com/bestixyh/p/5865279.html

·第1周:
了解linux操作系统,掌握核心的linux命令:find/locate/cheat/grep/which/whereis等
http://www.cnblogs.com/bestixyh/p/5883584.html

·第2周:
熟悉Linux系统的开发环境,学会vi的基本操作,掌握gcc编译器及gdb调试技术,C程序中模块的概仿,模块分解的“高内聚,低耦合”的原则;了解了链接的概念。
http://www.cnblogs.com/bestixyh/p/5907612.html

·第3周:
“信息=位+上下文”;计算机中各种数的表示和运算,二进制在计算机中的重要地位、布尔运算在C语言中的应用
http://www.cnblogs.com/bestixyh/p/5927821.html

·第5周:
学习X86汇编基础,ISA
http://www.cnblogs.com/bestixyh/p/5966539.html

·第6周:
了解ISA抽象,安装Y86处理器,了解了流水线和实现方式
http://www.cnblogs.com/bestixyh/p/5991491.html

·第7周:
了解存储器系统:常见的存储技术(RAM、ROM、磁盘、固态硬盘等);了解了局部性原理和缓存思想缓存思想在存储层次结构中的应用以及高速缓存的原理和应用;
http://www.cnblogs.com/bestixyh/p/6012935.html

·期中总结:对前半学期进行总结
http://www.cnblogs.com/bestixyh/p/6030500.html

http://www.cnblogs.com/bestixyh/p/6036704.html

·第9周:
掌握Unix/Linux系统级I/O、RIO以及I/O重定向的方法
http://www.cnblogs.com/bestixyh/p/6060312.html

·第10周:
完成课后练习;运行分析常用指令代码
http://www.cnblogs.com/bestixyh/p/6083857.html

·第11周:
分辨数组指针、指针数组、函数指针、指针函数的区别,理解异常的种类、进程和并发的概念
http://www.cnblogs.com/bestixyh/p/6107937.html

·第12周:
复习第九周代码,第十周代码,第十一周代码,实践理解代码
http://www.cnblogs.com/bestixyh/p/6132148.html

·第13周:
掌握并发的三种方式(进程、线程、I/O多路复用),线程控制及相关系统调用、线程同步互斥及相关系统调用;学习教材第十一章、十二章
http://www.cnblogs.com/bestixyh/p/6159533.html

·第14周:
学习虚拟存储器的概念与作用地址,翻译的概念、存储器映射、动态存储器分配的方法、垃圾收集以及C语言中与存储器有关的错误;学习教材第九章
http://www.cnblogs.com/bestixyh/p/6189714.html

实验报告

实验一 开发环境的熟悉:
Linux开发环境的配置和使用,Linux的arm编译,基于NFS方式的下载调试,嵌入式开发。
http://www.cnblogs.com/20145210ysy/p/6034806.html

实验二 固件开发:
简要内容:02_pthread 03_tty代码;用linux的armv4l-unknown-linux-gcc编译、基于NFS方式的下载调试、嵌入式开发。
http://www.cnblogs.com/20145210ysy/p/6060156.html

实验三 内核驱动设计入门:
简要内容:安装ADS、安装GIVEIO驱动、安装JTAG驱动,测试基本安装正确。
http://www.cnblogs.com/20145210ysy/p/6123905.html

实验四 模块方式驱动实验:
简要内容:在Linux下进行驱动设计的原理以及使用模块方式进行驱动开发调试的过程。
http://www.cnblogs.com/20145210ysy/p/6083775.html

实验五 简单嵌入式WEB服务器实验:
在ARM开发板实现一个简单的WEB服务器;在宿主机和实验箱中实现了代码并分析。
http://www.cnblogs.com/20145210ysy/p/6083941.html

代码托管链接

http://git.oschina.net/xyh20145226/linux-besti-is-20145226/tree/master/src?dir=1&filepath=src&oid=9f5cf262407cf26547232119d353cc7c172e79f2&sha=59ee9b0434a9c24cb49f5a470e014843e6746098

问题

·代码驱动的学习做到没有?
可能在实践环节没有达到自己的预期,但是比以前有进步了。
在计算机领域,自动动手实践永远是最重要的,代码驱动的学习能更加牢靠的掌握,敲一敲代码,自己实践出来的永远要比别人讲授的记得深刻,不会还是一头雾水。
代码驱动的学习不只是运行代码,更重要的是对于代码的学习与理解,但是我前期落下的不少,加上本学期身体状况着实欠佳,总是有一种心有余而力不足的感觉。到后期为了追赶同学们的进度,补上了之前没有做好的部分。
·加点代码,改点代码是理解的最好方式,谈谈你的心得。
通过修改代码,可以很快的理解代码的运用。
很多时候,照着书上的代码敲一遍,编译运行后得到,要想要更好的理解代码就需要通过改动代码、加点代码来加深理解。
21世纪是一个信息经济时代,为适应时代的发展,作为一名当代大学生,所受的社会压力将比任何时候的大学生都要来得沉重,因此在校期间,我们必须尽可能的利用好学习时间,尽可能地学习更多的知识和能力,学会创新求变,以适应社会的需要。
毕竟,不管将来是要从事什么样的相关行业,都需要掌握较为全面的计算机知识,因为小到计算机的组装维修,大到服务器的维护与测试,知道的更多更全面,那么对于自己的工作帮助就越大。
毕竟,在知识经济时代,没有一个用人单位会傻到和知识作对。
系统学习编程,从改代码开始,逐步构建自己的知识体系,一步一步来。
·实践上有什么经验教训?
其实学习任何一门学科都不难,但是要掌握一门学科是不容易的。学习计算机最主要的还是靠自己多操作,多摸索,当然这些也是建立在老师教导的基础之上。只有不断地学习,才能掌握最新的知识,才能在以后把工作做得更好。我们也渴望能够多学关于计算机方面的知识。我相信在更多的学习机会中,我会学得越来越深入。

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

第一章 存储器中的寄存器、主存、高速缓存、二级存储是怎样运行的?
·在计算机系统中存储层次可分为高速缓冲存储器、主存储器、辅助存储器三级。高速缓冲存储器用来改善主存储器与中央处理器的速度匹配问题。辅助存储器用于扩大存储空间。主存储器工作时,首先由中央处理器将地址送至存储器的地址寄存器并译码,同时接收由中央处理器发出的"读"或"写"命令。于是,存储器就按照地址译码的输出确定相应的存储单元。如果是读命令,则将存储单元的代码读出并送往代码缓冲寄存器,如果是写命令,代码缓冲寄存器接收新代码,接着写入存储体。
第二章 IEEE浮点是什么?
·IEEE定义了多种浮点格式,但最常见的是三种类型:单精度、双精度、扩展双精度。
第三章 过程调用与栈帧结构、转移控制的关系?
·大多数CPU上的程序实现使用栈来支持函数调用操作。栈被用来传递函数参数、存储返回信息、临时保存寄存器原有值以备恢复以及用来存储局部数据。
第四章 Y86如何顺序实现?
·Y86将处理组织成阶段包括取指、译码、执行、访问、写回、更新PC
第五章 并行性是什么?
·并行性是指计算机系统具有可以同时进行运算或操作的特性,在同一时间完成两种或两种以上工作。它包括同时性与并发性两种含义。同时性指两个或两个以上事件在同一时刻发生。并发性指两个或两个以上事件在同一时间间隔发生。
第六章 什么是储存器山?
·存储器山是一种综合研究存储器层次结构的工具。它反映了存储器层次结构中不同层次的带宽。也反映了具有不同的时间局部性与空间局部性的程序的性能。通过分析存储器山的数据,还可以看出存储器系统的部分硬件参数。
第七章 如何从应用程序加载和链接共享库?
· Linux中存在两种库类型,一种称之为静态库。以.a 后缀。这种库本身在编译成目标文件的时候是和应用程序链接在一起的,所以编译出来的应用程序相对较大。第二种称之为动态链接共享库。 以.so为后缀。虽然这种库形式只有一种,但是在使用中可以有两种形式:
·运行(runtime)时动态链接,共享库在编译器编译时被链接,但并没有包括在应用程序中(目标程序中),只在运行时链接。而且是必要的,如果没有共享库,程序将跑不起来。
·运行中使用动态链接装载器中的函数来进行动态的加载、卸载或者链接。
第八章 回收子进程的具体过程?
·一般的方式是父进程负责来回收子进程的资源,采用wait()和waitpid()函数,前者只能只能阻塞的方式等待子进程从其它状态变为僵尸态,后者可以以阻塞的方式或者轮询的方式来等待子进程的状态改变,还有一种方式,父进程显式的调用signal(SIGCHLD, SIG_IGN),将SIGCHLD 信号的处理动作设置为SIG_IGN,这样fock出来的子进程在终止时会自动清理掉,不会产生僵尸进程,也不会通知父进程
第九章 为什么要使用动态存储器分配?
·动态内存分配,可以自由的分配指定大小的内存空间。当程序运行时,程序员并不清楚某一数据需要的具体内存空间大小时,可以使用动态分配
第十章 I/O重定向是什么?
·I/O重定向是一个过程,这个过程捕捉一个文件、或命令、或程序、或脚本、甚至代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件、或命令、或程序、或脚本
第十一章 套接字接口具体的功能是什么?
·套接字接口利用下层的网络通信协议功能和系统调用实现实际的通信工作
第十二章 并发编程的作用是什么?
·使计算机能够同时处理多个事情,提高效率
关于回答自己的预习提问的感想
第0周我提的问题大多都是看着教材目录提出来的,当时看着目录觉得看不懂全都是问题,现在回答自己的这些问题觉得有一些问题实在是太简单太基础了,因为刚开始没有进行深入学习,对一些很基础的内容就已经感觉看不懂了,对于重点就更是碰不到了,还好在每周的学习任务中老师给出了学习重点,这才让我在本学期的学习过程中找到学习的主线,让自己的学习更有成效

课程收获与不足

·你有什么项目被扣分,谈谈你的教训
不动手实践
不验收代码
·待及格管理制度的优缺点
待及格期间多发的博客列表
http://www.cnblogs.com/bestixyh/p/5982137.html

http://www.cnblogs.com/bestixyh/p/6006179.html

http://www.cnblogs.com/bestixyh/p/6030500.html

http://www.cnblogs.com/bestixyh/p/6072195.html

http://www.cnblogs.com/bestixyh/p/6209541.html

优缺点:优点是会迫使加倍努力学习,缺点是精神压力真的太大了。。我可能从小到大都属于成绩好脸皮比较薄的,又是女生,每周在群里看到成绩真的觉得很绝望感觉整个人都崩溃了,觉得自己无论怎么学都赶不上别人。
建议:可以单独拉一个待及格同学的微信群,或者私聊分数信息。
·自己的收获
这门课内容真的非常丰富,有很多前期的关联课程,同时牵涉到本学期另外两门课:操作系统和网络安全编程基础。
其实学习的过程就是不断的类比的过程,运用已有的方法解决未知的问题,想象力和创新的前提,是足够多的知识储备。之后你把各种知识储备模仿、转移、嫁接、衔接、扭曲、组合、切割,即有可能就是一种创新。
学习之中回顾是一个必不可少的过程,不光是为了解决初学时没有掌握的知识,更重要的是在学完一遍之后,回顾可以自己梳理出体系,建立知识体系绝对要比碎片化的知识牢靠。
深切地感受到好好学习一定没错,机会总是留给有准备的人。
·自己需要改进的地方
之前觉得因为基础不牢学起来很吃力,但是慢慢看进去了之后还觉得上手了就越来越简单了。
娄老师说的我印象非常深刻的一句话就是,困难的事情越做越容易,容易的事越做越简单。
在实践中我真正地领悟了这句话的含义。这学期也接近尾声了,以往不可悔,但未来犹可追,在之后的学习中,我也会吸取这学期的经验教训,本身学习就应该这样,不要背账,一旦背着账了,首先内心就有一种恐慌感,总是有压力(这种压力不是正面的),其次,每周都有新任务,要是以前的没有搞明白,之后的也做不下去,所以就会形成恶性循环。谁都喜欢打碾压局,翻盘局不是谁都能接盘的,所以,我这次是真切地明白了这个道理,自己一来有什么不懂的,就赶紧问,拼命干上,等自己走到了前面,就算打会儿小盹儿,也有这个资本!
·如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
本学期的实验全部都是我和队友结对完成的,我也很感谢我的队友。
通过结对做实验,我深刻地明白了团队合作的重要性,两个人能够明确分工,合作的编写出程序,而且能培养大家的默契,让我们能够在实际操作过程中更好的编写代码。。在很多情况下,单靠个人能力很难完全处理各种错综复杂的问题并采取切实高效的行动。在实际工作中我们每一个人的潜力是无限的,我们自己只要能充分发挥自己的优势和克服自身的缺点,转变思维方式,换位思考,开拓创新,用所掌握的理论来指导自己的实践,更好地学习。
·给学弟学妹们的学习建议
老师的很多方法其实是在培养我们的互联网精神,在学校里的学习时光一晃而过,多学一点知识真的非常重要。
·如果重新学习这门课,怎么做才可以学的更好
如果重新学习这门课的话,我一定会好好地从头打好基础。因为上学期没有选JAVA的原因,我真的非常不适应这样的学习模式和方法,一开始非常吃力,甚至可以用懵逼来形容。。。在大家都已经进入“起飞”的状态的时候,我可能才刚刚注册了git账号,刚刚学会使用Markdown,一来二去压力就非常地大,感觉怎么都跟不上节奏。每周都有新任务,之前的没有搞明白,之后的也做不下去,所以就会形成恶性循环。在新任务的堆积下,又在去补前面的内容,这个过程真的是极其痛苦的。

问卷调查

·你平均每周投入到本课程多长时间?
10-20小时。
·每周的学习效率有提高吗?
有提高。
·学习效果自己满意吗?
并不满意。这门课真的很有用,准备寒假回去再慢慢深入地学习一遍。
·课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
博客可以是一种和大家分享学习心得成果的途径,但是就我个人而言,我更喜欢纸质版的笔记本,隔一段时间有想写下来的东西就记上,或者是反思自己近段时间来的学习工作和生活表现。如果想写完整文章,有时候也会使用印象笔记,但只是自己想写一些东西,不太想发成博客。现代移动app发达程度远超PC,所以博客可能不再是我习惯使用的了。
·你觉得这门课老师应该继续做哪一件事情?
微信群通知各项学习任务。
·你觉得这门课老师应该停止做哪一件事情?
我觉得老师目前的教学方式可以制定基本标准和较高标准,对不同基础的同学有不同的要求,因材施教;每周的排名和考试,稍有一周生病或者其他事情有耽误的话,一旦落下一点学习内容就容易造成精神压力,可以减少频次。
·你觉得这门课老师应该开始做什么新的事情?
希望老师增加学习方式的自由度,每个人的学习习惯不同,可能有些同学习惯纸质笔记,有的同学习惯教材批注勾画,有的同学觉得博客方式比较好,每人每周有相应的学习记录即可。

posted @ 2016-12-25 21:17  夏艺华20145226  阅读(191)  评论(2编辑  收藏  举报