20155227 《信息安全系统设计基础》课程总结
每周作业链接汇总
-
- 简要内容:学习第一章和第七章。初步了解各种指令来通过原始文件得到二进制文件、文本文件、以及可执行文件。
- 二维码:
-
- 简要内容:学习第二章。了解到三种数字:无符号数、有符号数、浮点数
- 二维码:
-
- 简要内容:学习第三章。复习了汇编相关知识。
- 二维码:
-
- 简要内容:学习第四章。理解了Y86指令集体系结构
- 二维码:
-
- 简要内容:学习第十一章,第十二章。socket编程和并发编程
- 二维码:
-
- 简要内容:学习第六章。了解了常见的存储技术。
- 二维码:
-
- 简要内容:学习第九章。学习了虚拟存储器。
- 二维码:
-
- 简要内容:深入学习第九章。
- 二维码:
-
- 简要内容:重新学习了第八章。
- 二维码:
实验报告链接汇总
-
- 二维码:
- 二维码:
-
实验二 固件程序设计
- 二维码:
-
实验三 实时系统
- 二维码:
-
- 二维码:
- 二维码:
-
- 二维码:
- 二维码:
课堂补充实践链接
代码托管链接和二维码
-
截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果
-
代码量汇总提交statistics.sh的支持截图
-
代码驱动的学习做到没有?
- 学到了一点,这学期刚开始时还是像以前一样只是简单地敲上代码,运行,
git
上去。后来随着学习深入之后开始使用gdb
调试程序,并且开始用man -k
和grep -nr xxx /usr/include
命令进行简单搜素,虽然文档都是英文看不太懂,但是还是能大致理解文档的意思,对代码的学习帮助很大。这也是这学期的一点点收获。
- 学到了一点,这学期刚开始时还是像以前一样只是简单地敲上代码,运行,
-
加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
- 我自己本身编码水平很弱,看到书上的代码就想着能看懂就行了,但是这学期的课堂实践有很多是需要我们对已有的代码进行修改的。课堂上虽然不一定能完成,但是课下还是会尝试着继续完成,特别是狄维佳等同学会经常写详细的博客来进行讲解,不懂的时候就看着他们的博客一点一点摸索,学期末了,觉得自己还是有了一点进步吧,至少需要自己改代码或者写代码的时候不再像以前一样不知道从哪下手了。
-
实践上有什么经验教训
- 教训就是因为自己实践不足,上课考试的时候很少能在规定时间内完成。课下往往需要花更多时间来完成。我们不能因为自己不会就不去做,要敢于直面困难。
整体评价一下第1周作业中自己提出的问题是不是抓住了学习重点
抓住了部分重点。
回答一下第1周作业中自己提出的问题
-
一、什么是计算机系统?Unix是什么,和Linux有什么区别?
Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。这应该是他们最大的不同,这种 不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应;这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一 个黑箱之中,只有相关的开发人员才能够接触的产品的原型。
-
二、计算机不同类型的数据之间的不同?计算机数据又和普通数据有什么差异?
计算机不同数据之间的不同在之前第三周的博客里有详细写到。计算机数据具有三个特点:双重性、多媒体性和隐蔽性。
-
三、汇编语言能带来哪些方便?
汇编语言能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。
-
五、如何进行程序优化?
1)高级设计。选择恰当的数据结构和算法;
2)基本编码原则:消除连续的函数调用;消除不必要的存储器引用;
3)低级优化。循环展开;提高并行性,如多个累积变量,重新结合技术,条件传送代替条件选择。
-
六、存储器的层次结构?
存储器层次结构的中心思想是,对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。数据总是以块大小作为传送单元在第k层和k+1层之间来回拷贝的。存储器层次结构示例如下图所示:
-
七、链接是如何进行的?
第一周博客里有详细写到。
链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(拷贝)到存储器中并执行。链接可以执行于编译时,也就是源代码翻译成机器码时,也可以执行于加载时,也就是程序被加载到存储器并执行时,甚至执行于运行时,由应用程序来执行。链接是由叫做链接器的程序自动执行的。 链接器的出现,使得分离编译成为可能,我们不用将一个大型的应用程序组织为一个巨大的源文件,而是把它分解成更小、更好管理的模块,可以独立的修改和编译这些模块。当我们改变这些模块中的一个时,我们只要单独地编译它,并将它重新链接到应用上,而不用编译其他文件。
-
八、怎么处理常见的异常?
第14周博客里有详细写。
异常表:当处理器检测到有事件发生时,它会通过跳转表,进行一个间接过程调用(异常),到异常处理程序。 异常号:系统中可能的某种类型的异常都分配了一个唯一的非负整数的异常号。异常号是到异常表中的索引。
-
九、如何使用以及管理虚拟存储器?
第十三周博客有详细写。
-
十、Unix I/O是什么?
CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。存储器通常在CPU的同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应的接口电路也各不相同,因此,习惯上说到接口只是指I/O接口。
-
十一、网络编程的步骤?
-
客户端的编程主要由三个步骤实现:
1、 建立网络连接
客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。
2、 交换数据
连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。
根据逻辑需要,可以多次交换数据,但是还是必须遵循请求响应模型。
3、 关闭网络连接
在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。
-
服务器端的编程步骤和客户端不同,是由四个步骤实现,依次是:
1、 监听端口
服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。
这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。
2、 获得连接
当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。
一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。
3、 交换数据
服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。
其实,服务器端获得的连接和客户端连接是一样的,只是数据交换的步骤不同。
当然,服务器端的数据交换也是可以多次进行的。
在数据交换完成以后,关闭和客户端的连接。
4、 关闭连接
当服务器程序关闭时,需要关闭服务器端,通过关闭服务器端使得服务器监听的端口以及占用的内存可以释放出来,实现了连接的关闭。
-
-
十二、并发编程是什么?
所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。
你有什么项目被加分,谈谈你的经验
- 优秀作业(给出链接和二维码)
- 第二周课堂实践
- 二维码:
- 二维码:
- 第二周课堂实践
课程收获与不足
-
自己的收获(投入,效率,效果等)
收获就是态度决定一切。能力固然重要,但是能力不足不是我们放弃学习的借口。很多时候我花了时间但是并不能达到老师的要求,会有挫败感。但是只要不直接放弃,一点点钻研,总会有进步。效率不算高,但是效果还算让我满意。
这学期老师反复强调
man-k
和grep
两个命令,自己也试着在学习过程中多使用。越来越体会到搜索资料的重要性。 -
自己需要改进的地方
需要改进的地方主要是投入的时间不够。我的学习效率不高,投入的时间也并没有比大多数同学多,所以得到的效果并不太好。
-
如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
结对学习已经有两学期了,从一开始不习惯这种形式,到现在已经体会到这种形式的好处。在平时的学习中有什么不懂的地方,学习伙伴总会给我提供很好的见解和一些建议。在实验过程中两个人一起思考讨论,最终解决问题的过程对我来说是很珍贵的回忆。
给开学初的你和学弟学妹们的学习建议
态度很重要。当跟不上老师的节奏的时候可以自己调节,按照自己的进度来学习。平时要多实践。
问卷调查
-
你平均每周投入到本课程多长时间?
基本在20小时左右。
-
每周的学习效率有提高吗?
有稳步上升。
-
学习效果自己满意吗?
基本满意。
-
课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
如果有什么我觉得值得记录的收获会选择博客的形式,但应该做不到一周一篇。
-
你觉得这门课老师应该继续做哪一件事情?
每周详细的作业要求为我们的学习指明了方向。
上课的康奈尔笔记也应该保留。这种方式让我们注意力更集中了。
-
你觉得这门课老师应该停止做哪一件事情?
考试希望时间能减短一些,不要两节课的时间完全用来考试。
-
你觉得这门课老师应该开始做什么新的事情?
希望老师每次上课时能讲一些勾画的重点习题,不需要太多,一两道就行。