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

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

一、每周作业链接汇总

  • 第1周作业

    • 简要内容:终端的使用、生成与链接,以及Makefile文件的使用
    • 二维码:
  • 第3周作业

    • 简要内容:无符号整数、有符号整数和浮点数,信息=位+上下文
    • 二维码:
  • 第5周作业

    • 简要内容:栈帧的理解、gdb跟进汇编码
    • 二维码:
  • 第7周作业

    • 简要内容:Y86-64指令集体系结构
    • 二维码:
  • 第8周作业

    • 简要内容:课上测试的补充以及课后作业的完成
    • 二维码:
  • 第9周作业

    • 简要内容:存储技术、局部性原理、存储器层次结构
    • 二维码:
  • 第11周作业

    • 简要内容:虚拟地址、Linux虚拟存储器系统
    • 二维码:
  • 第13周作业

    • 简要内容:对存储器层次结构的重新学习
    • 二维码:
  • 第14周作业

    • 简要内容:系统级I/O的重新学习
    • 二维码:

二、实验报告链接汇总

三、代码托管链接和二维码:

  • git记录

  • 代码量汇总提交statistics.sh的支持截图

  • 对于代码方面,首先要避免的错误是语法错误,不要打错符号、括号之类的,其次是避免逻辑错误,在编程之前一定要脑子里想好按照什么样的顺序,这样编程效率又高错误又少。在代码的学习上,要学会参考别人成熟、高效的最优代码,学习一下别人是如何把程序写的这么漂亮的,之后要尝试自己独立编写,完成之后最好对比一下看看跟“大佬”的差距在哪里,相信勤能补拙(我自己就这样补了一点)。我自己都是这样做的,看了“大佬”们的代码先是很惊叹,之后一点一点理解,再把代码关掉,看看自己能不能写出来代码完成相同的任务,多坚持就会有收获。

四、整体评价一下第1周作业中自己提出的问题是不是抓住了学习重点

  • 一个C文件是如何变成一个可执行程序的?

    • GCC编译器驱动程序读取源程序文件main.c,并把它翻译成一个可执行目标文件,这个翻译的过程分四个阶段:预处理、编译、汇编和链接。
  • 整数运算在计算机中的溢出是怎么回事?

    • 每个整数的位数都是固定的,如果两数之间的运算结果超过了该位数所能表达的最大值,那么这个数将会以模2的位次幂的形式保留下来,这就叫运算的溢出。
  • 为什么要学习机器语言?机器语言和高级语言的关系是什么?

    • 当使用高级语言编程的时候,机器屏蔽了程序的细节,即机器级的实现。高级语言提供的抽象级别较高。当程序员以适当的命令选项调用编译器,编译器会产生汇编码,阅读这些汇编码,我们可以理解编译器的优化能力。
  • 怎样理解粗浅ISA指令(集体系结构)?

    • 一个处理器支持的指令和指令的字节级编码称为指令集体系结构,机器级指令都会被映射为字节级编码,类似这样:
    • 0x100:30f3fcffffff对应指令irmovl $-4,%ebx
  • 想要做到优化程序性能,应该保持怎样的思维结构或简单的思维定式?

    • 首先多关注程序内的循环,其次减少过程调用、消除不必要的引用,提高并行性。
  • 如何把程序的数据项存储在层次结构中较高的地方?

    • 把程序要访问的数据项存储在层次结构中较高的地方,在那里CPU能更快的访问到它们。
  • 所谓的“库”是什么?如何使用?

    • 库(library)可以理解为,一个可供使用的各种标准程序、子程序的容器。有动态库和静态库,也有头文件直接编译的。就是写了很多可用的函数或者类的集合供别人使用。使用的时候,比如gcc main.c -o main -L ./ -lcac-L后指明库的路径,-l后库的名称(省略lib)
  • ECF异常控制流与异常的关系?

    • 异常是异常控制流的一种形式,它一部分由硬件实现,一部分由操作系统实现。
  • 虚拟内存的作用?

    • 虚拟内存一般是用在内存不足的情况下,系统自动调用硬盘的空间,用来暂时替代不够的内存工作 。
  • I/O分为哪两种,这两种有什么关系?

    • 在学习中,分为Unix I/O标准I/O标准I/O库提供了Unix I/O的较高级别的替代。标准I/O库将一个打开的文件模型化为一个流。对于一个程序而言,一个流就是一个指向FILE类型的结构的指针。
  • 如何理解客户端服务器编程模型?

    客户端和服务器是进程,不是主机。
    客户端-服务器模型中的基本操作是事务。一个客户端-服务器事务由四步组成:
    1. 当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。例如,当Web浏览器需要一个文件时,它就发送一个请求给Web服务器。
    2. 服务器收到请求后,解释它,并以适当的方式操作它的资源。例如,当Web服务器收到浏览器发出的请求后,它就读一个磁盘文件。
    3. 服务器给客户端发送一个响应,并等待下一个请求。例如,Web服务器将文件发送回客户端。
    4. 客户端收到响应并处理它。例如,当Web浏览器收到来自服务器的一页后,它就在屏幕上显示此页。   
    
  • 并发在计算机系统的各个层有哪些情况?

    • 如果逻辑控制流在实际上重叠,那么它们就是并发的,这种常见的现象称为并发,出现在计算机系统的许多不同层面上。

五、加分&扣分

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

  • 项目

  • 课程收获与不足

    • 感觉云班课的存在确实对我有约束,出去玩的时候不会玩过头,再者说想要完成任务并加到分,就势必要付出精力学习相关内容,因为学习的深入所以也加到了分,相互促进;我对于学习高中课程的理解就是,除了为以后的课程打下基础,更重要的是形成了系统性的学习方法和思维,这种思维不仅用在学习中,在生活中也会受益,对于这门课程的学习也是如此,学习过程中形成的良好思维能够在其他科目的学习和生活中起到帮助作用。
    • 这学期很多时候我都觉得自己效率太低了,有时候一篇博客写好几个小时,二三十页书可能看一下午一晚上,希望之后效率能高一点,节省下来的时间可以多复习、预习。
  • 结对学习的建议
    结对学习是一个比较新的概念,也是一个比较好的模式,很多时候1+1>2就是这么来的。有的实验,自己完成比较耗费时间,结对伙伴搞清楚实验过程如何操作之后,我们一起完成就特别快;在学习的时候,有些知识自己理解的时候有点“转不过弯来”,可能伙伴的一句话就能让自己绕过来,能够get这个知识点。当然,你的伙伴一定是要和你一起学习一起进步,最好不要两个人在学习时间相约玩游戏-。-……。多学习伙伴的长处,弥补自己的短处,两个人合作可以更好的完成一切任务。

  • 给开学初的你和学弟学妹们的学习建议
    我觉得首先,要尽快适应这门课的学习模式,学会使用工具,比如云班课、博客园、开源中国、git等,可能最开始有点不习惯,但习惯了之后就会发现工具的组合使用其实是非常方便的;而且也不要觉得平时成绩替代最后一次考试的成绩这样的模式不好,这样的模式过了两个学期,我感觉挺好的,第一考试周的时候可能好几门课程都需要复习,少一门课程少一门压力;第二,在成绩来源平时课堂考核的模式下,可以督促平时对课程的复习、预习,我比较懒,很多时候也许自己不愿意去复习课程,这样的模式就让我习惯了去复习和预习课程,习惯了复习预习之后就会感觉对课程的学习更加顺遂,不那么吃力,更不会感觉很抵触。都是自己的心里话,打到字面上可能不太流畅,学弟学妹如果有什么问题可以来问我,我尽力解决。

六、问卷调查

  • 你平均每周投入到本课程多长时间?
    • 大约15小时。
  • 每周的学习效率有提高吗?
    • 有。最开始学一章花的时间真的很多,越往后虽然知识变难,但是学习时间有慢慢缩短,关键是要找到适合自己的学习模式,好的学习模式对效率提升有很大的帮助。
  • 学习效果自己满意吗?
    • 80%满意吧,感觉自己还能做得更好。
  • 课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
    • 尽量做到,有想记录的学习过程的时候会选择博客园。
  • 你觉得这门课老师应该继续做哪一件事情?
    • 将一次或两次的期中、期末考试变为平时成绩的量化考核,感觉这样好处挺多,而且感觉老师给出的任务其实都是希望我们加分的,按照老师要求做得分不是难事。
  • 你觉得这门课老师应该停止做哪一件事情?
    • 讲点我自己的感受。从高中到大学,我学很多理科科目都依赖于题目,可能书本上的概念、公式晦涩难懂,给我几道例题,我明白题目应该如何处理后,再回头去看概念和公式就很好理解。在程序语言上的学习也类似,以前的C语言老师的平时成绩来源于题库的“刷题”,我感觉我也是通过“刷”才明白了c语言代码都怎么写,我比较希望老师在上课讲到某一部分内容的时候可以展示出对应的代码运行结果,并对代码展开进行讲解,比如没有这一行代码结果是xxxx,再加一行代码结果就会是xxxx,感觉这样我会比较收益,但每个人的情况都不一样。
  • 你觉得这门课老师应该开始做什么新的事情?
    • 希望老师可以跟学弟学妹们多一些双向交流,能够及时了解学生的学习情况并对教学计划及时作出改动。

原文地址:https://www.cnblogs.com/zhuohua/p/8128200.html