20155336《信息安全系统设计基础》课程总结
每周作业链接汇总
-
第一周:http://www.cnblogs.com/hxl681207/p/7988760.html
在Linux环境下C语言程序的gcc编译运行汇编方法,使用gdb进行调试、设置断点等方法。
-
第三周:http://www.cnblogs.com/hxl681207/p/7988768.html
教材内容第二章《信息的表示和处理》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
-
第四周:http://www.cnblogs.com/hxl681207/p/7988771.html
课上未提交题目命令行传入文件实现myod,第十章教材内容学习以及两个重要命令 man -k key1 | grep key2| grep 2和grep -nr XXX /usr/include的掌握。
-
第五周:http://www.cnblogs.com/hxl681207/p/7988784.html
教材内容第三章《程序的机器级表示》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
-
第六周:http://www.cnblogs.com/hxl681207/p/7988791.html
教材内容第八章《异常控制流》,第十章《系统级I/O》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
-
第七周:http://www.cnblogs.com/hxl681207/p/7988797.html
教材内容第四章《处理器体系结构》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
-
第八周:http://www.cnblogs.com/hxl681207/p/7988805.html
教材内容第十一章《网络编程》简单过一下,教材第十二章《并发编程》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
-
第九周:http://www.cnblogs.com/hxl681207/p/7988809.html
教材内容第六章《存储器层次结构》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
-
第十一周:http://www.cnblogs.com/hxl681207/p/7966813.html
教材内容第九章《虚拟存储器》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
-
第十三周:http://www.cnblogs.com/hxl681207/p/8051767.html
重新精学第八章,自认非常重要的一章,对课本内容反复学习,并且全部家庭作业的编写制作,以及蓝墨云中的试题总结,结对学习,给同伴讲解收获和疑惑,共同学习,共同进步。
-
第十四周:http://www.cnblogs.com/hxl681207/p/8082268.html
本周老师让我们学习自己认为学的最差的一章,我学习的是第十二章。一方面,并发进场出现在计算机系统许多不同的层面上,使用非常广泛;另一方面,这个知识背景的硬件异常处理程序,Linux信号处理程序非常常见。所以为了更好的深入理解计算机系统,必须要掌握好这一章的知识,所以借此机会重新学习这一章的内容。
实验链接总结
-
实验(1):http://www.cnblogs.com/hxl681207/p/7988843.html
实验一 开发环境的熟悉:交叉编译环境,目标机与宿主机的联通,目标机运行程序以及最后的清理工作,实验一为小组共同完成。
-
实验(2):http://www.cnblogs.com/hxl681207/p/7988850.html
实验二 固件程序设计:要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM),KEIL-MDK 中添加 Z32 SC-000 芯片库,打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。网上找一下国密算法标准的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译,并回答四个算法的用途。小组共同完成。
-
实验(3):http://www.cnblogs.com/hxl681207/p/7988855.html
实验三 实时系统:基于Linux Socket程序设计实现wc(1),使用多线程实现wc服务器并使用同步互斥机制保证计数正确。个人完成。
-
实验(4):http://www.cnblogs.com/hxl681207/p/7967178.html
实验四 外设驱动程序设计:学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章,在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验。个人完成。
-
实验 (5) :http://www.cnblogs.com/hxl681207/p/8046524.html
实验五 通信协议设计:了解学习Linux下openssl,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD5,在Ubuntu中实现对实验二中的“wc服务器”通过混合密码系统进行防护。个人完成。
课堂实践
-
(1)2017-9-27课堂实践:http://www.cnblogs.com/hxl681207/p/7988764.html
在Linux环境下C语言程序的gcc编译运行汇编方法,使用gdb进行调试、设置断点等方法。 有关设置gdb断点,建立静动态库等课上未提交的题目补充,以及自主编程制作MYOD的实现。
-
(2)2017-10-25课堂实践:http://www.cnblogs.com/hxl681207/p/7988816.html
课上有关汇编代码的转换和删除的未提交题目的补充,以及教材 p97 2.96 2.97,完备的测试。 课上相关未提交题目的补充,在自己的电脑中完成https://www.shiyanlou.com/courses/231缓冲区溢出漏洞实验的详细实验过程。
- 缓冲区溢出漏洞实验
-
(3)第八周课堂测试:http://www.cnblogs.com/hxl681207/p/7988824.html
课上有关X86转Y86和代码反汇编的相关未提交题目的补充,以及课下实践书后习题的实践测试和多线程并发服务器的制作与测试。
-
(4)第十周课堂实践:http://www.cnblogs.com/hxl681207/p/7988830.html
心里很难受,课上以为是自动提交,就没有自己去点提交作业,结果谁知道又多了这样一次的学习机会
-
(5)IPC: http://www.cnblogs.com/hxl681207/p/7988836.html
课上未提交题目有关stat(1)指令的学习及编写的提交以及课下自主学习IPC相关知识。
代码托管链接和二维码:
-
截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果
-
代码驱动的学习做到没有?
答案是肯定的!最开始对于娄老师的给出的代码托管,需要区分出`src`文件和`bin`文件,在使用开源中国git上传的时候是如何做到可以分开传的,在学期的开始还是存在问题的,后来通过仔细阅读娄老师的[《代码驱动的程序设计学习》](http://www.cnblogs.com/rocedu/p/5927306.html),得到了问题是如何解决的,就比如原来使用gcc的命令只知道使用`gcc a.c -o a`编译`a.c`文件,后来学习了《代码驱动程序设计学习》知道gcc命令还可以使用成`gcc /src 13/a.c -o /bin 13/a`这样就可以将`src 13`文件夹中的`a.c`文件编译到`bin 13`中,这样就可以区分出`src`和`bin`文件,此时在使用git上传条理性就会清楚许多。 还有通过学习《代码驱动的程序设计学习》也会使用`tree`命令来查看上传的代码是否有条理性。
-
加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
我们在进行代码学习时,运行完代码后可以删改一些代码的内容来查看代码的运行结果有何改变,这样可以更好的理解代码的含义。
-
实践上有什么经验教训
我们在进行代码实践时,一定要先了解代码再运行,因为比如线程代码运用到了库的知识,我们不能用简单的gcc格式直接编译,否则是不能成功的。
整体评价一下第1周作业中自己提出的问题是不是抓住了学习重点
其实自己提出的问题,大多都是应付式的问题,有一些是学习的重点但大多都是显而易见的基础知识。但是总的来说自己还是学到了东西,知道了
回答一下第1周作业中自己提出的问题
- 1.答:操作系统提供三个基本的抽象:1)文件是对I/O设备的抽象;2)虚拟存储器是对主存和磁盘的抽象;3)进程是对处理器、主存和I/O设备的抽象。
- 2.答:无符号数编码是基于传统的二进制表示法,表示大于或者等于零的数字。
- 3.答:IA32程序用程序栈来支持过程调用。为单个进程分配的那部分称为栈帧,栈用来传递参数、存储返回信息、保存寄存器以及本地存储。
- 4.答:与IA32相比,Y86指令集的数据类型、指令和寻址方式都要少一些,Y86的字节级编码也比较简单。
- 5.答:1)优化编译器的能力和局限性;2)编程时消除循环的低效率;3)消除不必要的存储器引用;4)进行程序变换:循环展开,即通过增加每次迭代计算的元素的数量,减少循环的迭代次数;5)提高程序并行性。
-
- 答:L0:寄存器;L1:告诉缓存;L2:告诉缓存;L3:高速缓存;L4:主存;L5:本地二级存储(本地磁盘);L6:远程二级存储(分布式文件系统、Web服务器);
- 7.答:链接器是将个中国代码和数据收集起来并组合成一个单一文件的过程。
- 8.答:通过控制异常控制流来处理遇到的突发状况。
- 9.答:现代操作系统对主存提供了一个抽象概念,叫做虚拟存储器。
- 10.答:系统及I/O是指所有计算机操作系统中文件的输入与输出。而java中的I/O是指数据信息通过程序的写入和写出
- 11.答:通过常用的socket()、linsten()、connection()函数来编写程序。
- 12.答:使用进程并发必须使用某种显式的进程间通信机制;使用I/O多路复用,所有的流都会共享一个地址空间。;使用线程,像进程流一样由内核进行调度,而像I/O多路复用流一样共享一个虚拟地址空间。
你有什么项目被加分,谈谈你的经验
你有什么项目被扣分,谈谈你的教训
- 无
课程的收获与不足
-
自己收获的地方
这门课程是《深入理解计算机操作系统》目的是系统的理解计算机中硬件和操作系统是具体如何实现应用的,存储器、处理器、还有机器语言都是如何使用的。已经是第6个学期了,虽然原来不论是《计算机导论的课程》还是《c语言程序设计基础》、《Java程序设计基础》都会多多少少了解部分计算机硬件知识。但是通过这一学期的学习对于就计算机这些知识有了更加深入的理解和感悟。
同样觉得最大的收获是会使用Linux操作系统,会使用各种各样的命令来操作计算机包括虚拟机,当在虚拟机下完成一些简单的操作,打开文件,编译运行文件,查看帮助手册,用git托管代码,查看托管日志,都是通过熟练的掌握命令时候就发现成就感满满。
-
自己不足的地方
不足的地方还是在于学习上。在第一节课上老师对于这门课程做出了学习计划。首先,对于每周代码的编译数量存在不足,没有严格的按照计划实行。有些老师给的带代码仅仅只是编译了运行了结果,掌握了代码功能,但是并不清楚具体使用的函数是如何实现这些功能的。
有时候惰性太大,博客作业总是想拖到周末去完成。偶尔加上其它课程总是完成的不够好。
给开学初的你和学弟学妹们的学习建议
-
如果重新学习,怎么做才可以学的更好:
如果重新学习《深入理解计算机操作》这门课程,我觉得首先需要按照每周的学习计划完成,不论是代码还是课本知识的学习,可能知识量会很大,但是还是需要坚持去做。就如同《java程序设计基础》一样,一部跟不上步步跟不上,所以一定要坚持去做
其次是多编译程序,已经学习过c语言和java语言,可能掌握的不是很扎实,但还是需要多编程多训练。尤其是虚拟机的使用,用常用的Linux命令去完成一些打开文件,编译运行文件,查看帮助手册,用git托管代码,查看托管日志等简单操作。也不需要 强行去记忆命令,多多使用,孰能生巧,长时间去练习就可以掌握。
问卷调查
- 你平均每周投入到本课程多长时间?
- 十小时
- 每周的学习效率有提高吗?
- 有,因为可以写课堂实践,所以每次课堂不会的都会在课下弄懂。
- 学习效果自己满意吗?
- 满意
- 课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
- 如果没有人督促的话,我可能做不到。
- 你觉得这门课老师应该继续做哪一件事情?
- 我觉得老师应该坚持让同学学会使用git来管理代码,不仅方便老师的坚持,对于自己的查看也会十分方便。
- 你觉得这门课老师应该停止做哪一件事情?
- 我觉得老师可以减少组队的次数,有些人会因为其他客观或者主观或者懒惰等原因没有很好的完成内容导致影响队友的成绩。
- 你觉得这门课老师应该开始做什么新的事情?
- 我觉得这门课是一门计算机的课程,老师应该在一些重点的知识点方面讲解一下,或者对于测试题目难度大的进行讲解,毕竟每个人的接受能力不一样,并不是完全的自学都可以得到好的成绩。