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

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

每周作业链接汇总

  • 第0周学习总结

    • 简要内容:明确了学习中好的师生关系是“健身教练和健身学员”,提出了自己在学习这门课的过程中想要解决的问题。
    • 二维码:
  • 第1周学习总结

    • 简要内容:linux基本常用重要指令介绍。
    • 二维码:
  • 第2周学习总结

    • 简要内容:Vim的基本操作、gcc编译器的常用选项、gdb调试技术、git操作。
    • 二维码:
  • 第3周学习总结

    • 简要内容:了解二进制在计算机中的重要地位、布尔运算、整数表示和浮点数。
    • 二维码:
  • 第5周学习总结

    • 简要内容:程序的机器级表示,linux中的汇编介绍。
    • 二维码:
  • 第6周学习总结

    • 简要内容:处理器体系结构,详细介绍Y86指令体系结构,顺序实现与流水线实现。
    • 二维码:
  • 第7周学习总结

    • 简要内容:解局部性原理和缓存思想在存储层次结构中的应用。
    • 二维码:
  • 第8周学习总结

    • 简要内容:期中总结,对前七周的内容进行查缺补漏
    • 二维码:
  • 第9周学习总结

    • 简要内容:系统编程和系统调用、系统编程错误处理的方式、Unix/Linux系统级I/O、RIO、I/O重定向。
    • 二维码:
  • 第10周学习总结

    • 简要内容:实践常用指令的代码,加深对指令的理解。
    • 二维码:
  • 第11周学习总结

    • 简要内容:异常极其种类、进程和并发、数组指针、指针数组、函数指针、指针函数的区别、管道。
    • 二维码:
  • 第12周学习总结

    • 简要内容:复习前三周的知识,深入理解老师给的代码
    • 二维码:
  • 第13周学习总结

    • 简要内容:三种并发的方式:进程、线程、I/O多路复用;线程控制及相关系统调用、线程同步互斥及相关系统调用。
  • 第14周学习总结

    • 简要内容:虚拟存储器的概念和作用、地址翻译的概念、存储器映射、动态存储器分配的方法、垃圾收集以及C语言中与存储器有关的错误。
    • 二维码:

实验报告链接汇总

  • 实验一 《开发环境的熟悉》

  • 简要内容:熟悉 linux 开发环境,学会基于 S3C2410 的 linux 开发环境的配置和使用,使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程,正确使用连接线等实验仪器,并注意保护实验箱。实验结束之后将实验箱送回。

  • 二维码:

  • 实验二 《固件设计》

  • 简要内容:选择常见的分组算法或非对称算法实现,并在ARM开发环境中调试;读懂本实验程序源代码(pthread.c),学习终端I/O 函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中;进入/arm2410cl/exp/basic/02_pthread 目录,运行make 产生pthread 程序,使用NFS方式连接开发主机进行运行实验

  • 二维码:

  • 实验三 《实时系统的移植》

  • 简要内容:根据实验指导书进行实时软件的安装,尝试配置实验环境,并学会对软件进行测试。

  • 二维码:

  • 实验四 《驱动程序设计》

  • 简要内容:了解在 UP-TECH S2410/P270 DVP 平台上实现触摸屏 Linux 驱动程序的基本原理,了解 Linux 驱动开发的基本过程,以一个简单字符设备驱动程序为原型,剖析其基本结构。进行部分改写之后并编译实现其相应功能。

  • 二维码:

  • 实验五 《网络通信》

  • 简要内容:掌握在 ARM 开发板实现一个简单 WEB 服务器的过程 ,学习在 ARM 开发板上的 SOCKET 网络编程 ,学习 Linux 下的 signal()函数的使用。

  • 二维码:

代码托管链接和二维码:

代码驱动的学习做到没有?

  • 基本完成了要求。这学期开始的前几周还没有掌握Ubuntu的使用方法以及Linux下命令的使用,就没有按照老师的要求做,上传代码的格式也不规范。后来在老师的敦促下,按照老师发的博客代码驱动的程序设计学习中的要求学习正确的代码驱动的方法,并按照要求每周规范的git了代码。然后又学会了代码的编译与运行、使用gdb辅助学习、GDB代码调试、汇编代码调试多进程与多线程的学习。但是没有学会CGDB代码调试、DDD代码调试等内容,只是基本完成了要求,没有全部做到。

加点代码,改点代码是理解的最好方式,谈谈你的心得。

  • 刚开始学习时,很我只是敲了教材上的代码编译运行知道了这个代码运行的结果,而没有深如思考具体每一部分的代码的作用以及它是如何实现的。但是,要想要更好的理解代码就要改动代码或者加点代码运行来加深理解。举例来说,在第13周的学习代码hello_multi.chello_multi1.chello_single.c时,我先是比较了它们代码实现功能的差别,但是为了更好的理解具体每一部分的代码的作用,我在每个代码的基础上进行了模仿修改,得到了我心里预想的结果,印证了我的猜想,并帮助我更好的理解了多线程的并发模式。

实践上有什么经验教训?

  • 这学期实践内容很多,书上也有很多代码的学习,一开始我只是敲入代码,简单看看,结果在每周的考试时遇到代码的问题就抓耳挠腮。后来我在浏览了同级及学长学姐的博客后,开始尝试debug调试以及GDB反汇编调试,才发现自己之前很多没有理解透彻的地方。“纸上得来终觉浅,绝知此事要躬行”,实践产生真知,在今后的学习中,我要不怕麻烦多实践多总结。

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

  • 第一章 存储器中的寄存器、主存、高速缓存、二级存储是怎样运行的?
    答:在计算机系统中存储层次可分为高速缓冲存储器、主存储器、辅助存储器三级。高速缓冲存储器用来改善主存储器与中央处理器的速度匹配问题。辅助存储器用于扩大存储空间。主存储器工作时,首先由中央处理器将地址送至存储器的地址寄存器并译码,同时接收由中央处理器发出的"读"或"写"命令。于是,存储器就按照地址译码的输出确定相应的存储单元。如果是读命令,则将存储单元的代码读出并送往代码缓冲寄存器,如果是写命令,代码缓冲寄存器接收新代码,接着写入存储体。
  • 第二章 有符号数和无符号数之间在计算机中是怎么转化的?
    答:C语言允许在各种不同的数字数据类型之间做强制类型转换。将负数转换成无符号数可能会得到0。如果转换的无符号数太大以至于超出了补码能够表示的范围,可能会得到TMax。C语言允许有符号数与无符号数之间的转换,转换的原则是底层的位表示保持不变。
  • 第三章 程序机器级代码的格式及指令的规范
    - gcc -01 -o p p1.c
    - -01表示使用第一级优化。优化的级别与编译时间和最终产生代码的形式都有关系,一般认为第二级优化-02 是较好的选择。
    - -o 表示将p1.c编译后的可执行文件命名为p
  • 第四章 处理器的流水线原理是什么?
    答:
    - CPU将操作分成一个一个的阶段(stage)。每个stage都是由一个组合逻辑电路和一个流水线寄存器构成的。
    - CPU通过时钟周期来控制信号,如果遇到了时钟的上升沿,那么就会转移到下一个阶段。
    - 在CPU内部,形成了一套取指令-译码-执行-访存-写回的硬件设计。
    - 当有数据完成了取指令的操作的时候,就可以发下一个取指令的信号了,这样可以保证取指令的硬件逻辑不会闲着。
  • 第五章 最大化的程序优化是如何进行的?
    答:
    - 让最常见的情况运行的快。
    - 在每个循环内部缓存不命中数量最小。
    - 对局部变量的反复引用是好的,因为编译器能够将他们缓存在寄存器文件中。
    - 步长为1的引用模式是好的,因为存储器层次结构中所有层次上的缓存都是将数据存储为连续的块(空间局部性)。
  • 第六章 存储器的层次结构是怎样的
    答:
  • 第七章 静态链接和动态链接的区别?
    答:动态链接是指在生成可执行文件时不将所有程序用到的函数链接到一个文件,因为有许多函数在操作系统带的dll文件中,当程序运行时直接从操作系统中找。而静态链接就是把所有用到的函数全部链接到exe文件中。动态链接是只建立一个引用的接口,而真正的代码和数据存放在另外的可执行模块中,在运行时再装入;而静态链接是把所有的代码和数据都复制到本模块中,运行时就不再需要库了。
  • 第八章 应用程序是如何与操作系统交互的?
    答:进程的经典定义就是执行中程序的实例。它提供了一种假象使得我们以为自己在独占处理器和存储器。首先来看独占处理器的假象,在有n个进程的操作系统中,这n个进程轮流执行一个时间片,然后被抢占。其中每个进程中程序计数器(即PC)的值序列与别的进程中的序列是相互独立的,这样就为我们制造了一种处理器只运行自己程序的假象。再来看独占存储器的假象,在一个有n位地址的机器上,地址空间是1—2^n-1的集合,每个进程都有2^n大小的地址空间。其他进程不能访问,至于它的实现主要是虚拟存储器来实现的。
  • 第九章 虚拟存储器的功能
    答:虚拟存储器3个重要的能力:
    - 将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和主存之间来回传送数据
    - 为每个进程提供了一致的地址空间,从而简化了存储器管理
    - 保护了每个进程的地址空间不被其它进程破坏。
  • 第十章 Unix I/O是什么?
    答:Unix下共有五种I/O模型
    - 阻塞I/O
    - 非阻塞I/O
    - I/O复用(select和poll)
    - 信号驱动I/O(SIGIO)
    - 异步I/O(Posix.1的aio_系列函数)
  • 第十一章 网络编程实现过程
    答:
    客户端:
1、通过socket函数获取一个socket文件描述符。程序通过这个文件描述符与内核的tcp/ip架构通讯联系。
2、通过该描述符请求与服务器的连接(connect函数),此时需要事先知道服务器的ip和服务器上的应用程序的端口
3、当connect函数成功返回,则表示连接达成,则可通过该文件描述符或者recv,send该文件描述符,即可实现与某服务器端的通信

服务器端:

1、通过socket函数获取一个socket文件描述符。程序通过这个文件描述符与内核的tcp/ip架构通讯联系。
2、绑定端口(bind函数),端口人为设置,本机IP自动获取即可(端口和IP设置通过sockaddr_in结构体实现)。
3、监听socket函数返回文件描述符(listen函数)
4、当listen函数返回时,表示有请求,则使用accept获取请求,accept函数产生一个新的文件描述符,用于和该请求通信。
5、读写该文件描述符或者recv,send该文件描述符,即可实现与某客户端的通信
6、服务器端还可以继续监听socket文件描述符,接受其他端口的请求
  • 第十二章第十二章 进程的优劣是什么?
    答:进程有独立的地址空间,一个进程不可能不小心覆盖另一个进程的虚拟存储器独立的进程地址又让共享状态信息困难

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

课程收获与不足

自己的收获

  • 老师特殊的教学方式很神奇。从一开始对每周的任务对的抵触,到一学期过去习惯了这种每周都花固定时间来学习的生活。大学以来学习能力下降了很多,积极性主动性什么的更是几乎消磨殆尽,而这种“使自主”学习方式,让我每天都想着还要学习还要学习,这种态度的转变我觉得是最大的收获。

  • 在实际学习中,老师提供了很多新式的平台方式,实验楼自主实验、博客借鉴、小组论坛讨论、合作完成家庭作业等,除去学校网速限制以外我从中受益很多。以前学习遇到问题可能直接就放弃了,等老师课上讲或者问同学,甚至直接跳过。而现在,总是会先自己想想如何解决,然后发到论坛中,和老师同学分享自己的思路,不同的思维碰撞之后得到正确的解答,这样对问题的记忆极其深刻永远不会忘。好的学习方法对学习效果有太大的提升

自己需要改进的地方

  • 反思自己,我觉得我最大的问题还是自制力差,容易分心,遇到问题容易烦躁然后思维就转移了不专注了。现在跟着老师的新方式学习有些改观,加上自己的克制比如去学习不带手机,可以说比之前好很多。我觉得连续学习两小时中第二个小时要比第一个小时效率高很多,在以后的学习中要继续克制继续克制,多利用第二个小时。其次是遇到问题时没有耐心,经常轻易就放弃了思考,在这学期学习中已经有所改进,课程结束后更要坚持。

如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议

  • 本学期的实验我有结对的伙伴。在实验合作中,由于我的动手能力较强,所以由我来实际操作的较多;而结对伙伴比较细心细致,所以由她来进行细节地方的检查和纠错。通过这种方式,我们小组较快地完成了五次试验。我觉得不只在实验中可以结对学习,在平时的实践也可以结对完成。本学期有很多代码驱动实践,对于某些基础不好的同学来说,的确较难独立完成,那么结对合作的话就可以集中两个人的智慧攻克难关,还可以减少个人所耗费的时间,同时还可以互相督促,一举多得。我觉得这种方式很好,老师可以继续推广。

给学弟学妹们的学习建议

  • 首先心态要好,这门课需要潜下心来学,每周、每月、每天都有固定任务,一定不能浮躁,更不能以糊弄的态度来面对。其次要注意节奏,保证每一步都跟紧老师的步伐不要掉队,有没掌握好的地方一定要及时补上,不然会越掉越多。最重要的是坚持。坚持一学期,你会发现自己不可思议的收获。

如果重新学习这门课,怎么做才可以学的更好

问卷调查

你平均每周投入到本课程多长时间?

  • 10个小时

每周的学习效率有提高吗?

  • 有提高,随着学习的深入,有些章节和其他我们所学课程比如操作系统、网络编程等有关联,省去了学习概念等所耗费的时间,还从微观线程的角度帮助我更好的理解别的科目。学习效率有较明显的提高。

学习效果自己满意吗?

  • 不是很满意,觉得还没有学的很懂。为了完成每周的任务而学习,没有找到学习的源动力。

你觉得这门课老师应该继续做哪一件事情?

  • 我觉得老师应该坚持翻转课堂的教学方式,相比普通课堂,这种方式对学生高要求高压力,也让学生受益无穷。刚开始感觉很煎熬,但一旦习惯了才发现这样才是真正的事半功倍。如果不是这种每周任务制,大部分人到了期末都是恶补,不仅熬夜耗时间耗精力重点是还学不到东西。而现在这种方式大家的学习积极性都很高,主动抢题主动查实验,做的任务多得分就高,公平又高效。

你觉得这门课老师应该停止做哪一件事情?

  • 当前老师的教学方法都很好,我觉得所有的都可以继续应用下去。

你觉得这门课老师应该开始做什么新的事情?

  • 建议老师对于课堂笔记提高要求,课堂上说的内容相对零散但都是精华,稍不注意就会错过重点,要求记笔记会督促学生抓住每个知识点,也便于复习。
  • 增加对实验的讲解,帮助我们更好的理解实验教程。

给出本文链接和二维码

posted @ 2016-12-25 14:34  20145312袁心  阅读(227)  评论(2编辑  收藏  举报