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

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

每周作业链接汇总

•第0周作业:

•简要内容:学会了安装虚拟机VirtualBox和Linux系统,预习了Linux基础入门,对课程的内容有了一个大概的了解

•二维码:

- 第一周作业

•简要内容:学会了常用的几个linux快捷键,Linux系统的终端相当于windows的cmd,最重要的几个命令——man -k, cheat, grep -nr xxx /usr/include

•二维码:

- 第二周作业

•简要内容:学会了vi三种常用模式的切换和基本操作,GCC基本操作,GDB的调试方法,Makefile的使用

•二维码:

- 第三周作业

•简要内容:学会了数据在计算机中的表示,比如有符号整数、无符号整数、浮点数的表示,网络编程的基础——字节顺序(小端法:“高对高、低对低”),有关补码的概念,“信息=位+上下文"

•二维码:

- 第五周作业

•简要内容:Intel处理器(X86) 寻址方式,汇编和反汇编,汇编指令使用规则,逆向思维——将汇编代码转换为等效的C语言代码,

•二维码:

- 第六周作业

•简要内容:处理器体系结构——重点是Y86指令体系结构

•二维码:

- 第七周作业

•简要内容:存储器层次结构,两个重要的存储技术(RAM——随机访问存储器、ROM——非易失性存储器),磁盘存储,高速缓存结构(S,E,B,m):高速缓存组、高速缓存行、块,局部性原理

•二维码:

- 第八周期中总结

•简要内容:

•二维码:

- 第九周作业

•简要内容:系统级I/O,输入/输出(I/O)是在主存和外部设备(如磁盘驱动器、终端和网络)之间拷贝数据的过程,本周重点在于学会系统是如何调用函数对文件进行读和写操作

•二维码:

- 第十周作业

•简要内容:编译并运行qq群中的相关代码,并进行代码分析

•二维码:

- 第十一周作业

•简要内容:运行相关代码学习了异常及其种类、进程和并发的概念、进程创建和控制的系统调用及函数

•二维码:

- 第十二周作业

•简要内容:对前三周的内容进行一个总结,把没有理解透代码重新过了一遍,并且学会区分了指针数组、数组指针、指针函数、函数指针的概念

•二维码:

- 第十三周作业

•简要内容:网络编程中的客户端-服务端编程模型,IP地址,套接字接口,Web服务器,第十二章并发编程——三种基本的构造并发程序的方法:(1)进程。每个逻辑控制流都是一个进程,由内核来调度和维护。(2)I/O多路复用。(3)线程

•二维码:

实验报告链接汇总

- 实验一

实验名称:开发环境的熟悉

•简要内容:1、用LINUX系统下的VIM编程并将文件编译运行 2、使用 Redhat Linux 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新目录,并在其中编写hello.c 文件。学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。

•二维码:

- 实验二

•实验名称:固件开发

•简要内容:通过02_pthread 03_tty中的代码学习编译运行多线程程序,并通过查看代码进行程序分析

•二维码:

- 实验三

•实验名称:实时系统的移植

•简要内容:学会安装ADS、GIVEIO驱动、JTAG驱动进行实验

•二维码:

- 实验四

•实验名称:驱动程序设计

•简要内容:在pc机上运行虚拟硬件驱动程序,分析历届驱动与应用程序的交汇过程

•二维码:

- 实验五

•实验名称:网络通信

•简要内容:用编译器理解exp5\ws\07_httptd中代码,利用开发板实现一个web服务器

•二维码:

- •代码托管链接

•二维码:

•截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果



20145223 《信息安全系统设计基础》课程总结_第1张图片
20145223 《信息安全系统设计基础》课程总结_第2张图片

•代码量汇总:

20145223 《信息安全系统设计基础》课程总结_第3张图片

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

前面几周并没有按照要求来做,后面的几周基本上就照着代码驱动学习的这篇博客做了

•加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得

我觉得只有理解了代码究竟在干什么,知道其中每一行的作用才能对代码进行改动和运行,所以我觉得两者其实是相互关联的,只有理解了代码才可以在原本的代码基础上添加或改动,而添加或者改动反过来又能加深对代码的印象,帮助我们更好理解代码。

•实践上有什么经验教训

有几周发在qq群里的代码虽然在自己的虚拟机里运行了,但是没有完全掌握和理解代码的相关内容,后来在周测中遇到了关于程序代码的问题,所以在这里给学弟学妹们一个提醒,代码一定要好好看,在自己的虚拟机里运行。

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

•第0周作业中自己提出的问题回答:

1:操作系统中的进程和线程分别指什么,区别在哪里?并发和并行又分别有什么含义?
线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
(4)二者均可并发执行.
·并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。
·并发是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行。

2:计算机中整数是如何表示的?整数运算又有哪几种?
整数在计算机中,都是以二进制比特位表示的。
无符号加法、补码加法、无符号乘法、有符号乘法、乘以常数……

3:程序在机器中是如何表示的?机器又是如何控制程序的运行?
计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节。
对于机器级编程来说,其中两种抽象尤为重要:
1、指令集体系结构(Instruction set architecture ISA)
它定义了处理器状态、指令的格式,以及每条指令对状态的影响。
IA32将程序的行为描述成好像每条指令时按顺序执行的,一条指令结束后,下一条再开始。(实际上处理器并发地执行许多指令,但是可以采取措施保证整体行为与ISA指定的顺序执行完全一致)

2、机器级程序使用的存储器地址是虚拟地址
提供的存储器模型看上去是一个非常大的字节数组。存储器系统的实际实现是将多个硬件存储器和操作系统软件组合起来。

程序存储器(program memory)包含:程序的可执行机器代码、操作系统需要的一些信息、栈、堆。程序存储器用虚拟地址来寻址(此虚拟地址不是机器级虚拟地址)。操作系统负责管理虚拟地址空间(程序级虚拟地址),将虚拟地址翻译成实际处理器存储器中的物理地址(机器级虚拟地址)

4:Y86处理器各个阶段分别是什么?
实现所有Y86指令所需要的计算分为6个基本阶段:取值、译码、执行、访存、写回和更新PC。
可以参考这篇博客- Y86处理器的各个阶段

5:程序性能的优化分别从哪些方面入手?是如何去完成的?
性能优化有三个层次:
1、系统层次

2、算法层次

3、代码层次

系统层次关注系统的控制流程和数据流程,优化主要考虑如何减少消息传递的个数;如何使系统的负载更加均衡;如何充分利用硬件的性能和设施;如何减少系统额外开销(比如上下文切换等)。

算法层次关注算法的选择(用更高效的算法替换现有算法,而不改变其接口);现有算法的优化(时间和空间的优化);并发和锁的优化(增加任务的并行性,减小锁的开销);数据结构的设计(比如lock-free的数据结构和算法)。

代码层次关注代码优化,主要是cache相关的优化(I-cache,D-cache相关的优化);代码执行顺序的调整;编译优化选项;语言相关的优化技巧等等。

6:计算机存储器结构层次是什么?
存储器层次结构的中心思想是,对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。数据总是以块大小作为传送单元在第k层和k+1层之间来回拷贝的。

7:连接器如何使用静态库来解析引用?

  • 答案在这篇博客上

8:计算机处理异常有哪几种方式?是怎么样进行进程控制的?
现代系统通过使控制流发生突变来对这些情况做出反应,这些突变被称为异常控制流。当处理器检测到有事件发生时,会通过一张叫做异常表的跳转表进行一个间接过程调用到一个专门设计用来处理这类事件的操作系统子程序(异常处理程序)

9:虚拟储存器是什么?它的作用有哪些?
虚拟存储器的概念

为解决内存小而作业大、作业多的矛盾, 以及执行过程中只是把当前运行需要的那部分程序和数据装入内存。 所以,操作系统把各级存储器统一管理起来。就是说, 应该把一个程序当前正在使用的部分放在内存, 而其余部分放在磁盘上,就启动执行它。操作系统根据程序执行时的要求和内存的实际使用情况, 随机地对每个程序进行换入/换出。

这样, 就给用户提供一个比正式的内存空间大的多的地址空间, 这就是虚拟存储器。所谓虚拟存储器是用户能作为可编址内存对待的存储空间, 在这种计算机系统中虚地址被映射成实地址。简单地说,虚拟存储器:是由操作系统提供的一个假想的特大存储器。就是说, 虚拟存储器并不是实际的内存,它的大小比内存空间大的多; 用户感觉所能使用的“内存”非常大, 但这是操作系统对物理内存的扩充。

10:系统程序之间是如何进行通信的?
进程间的四种通讯方式:
1>管道,FIFO 2>信号 3> 消息队列 4> 共享内存

11:网络中的ip地址是什么?web服务器的功能是什么?
IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让网络用户浏览;可以放置数据文件,提供下载。

12:并发编程可以通过哪几种方式实现?
1、基于进程的并发编程

2、基于线程的并发编程

3、基于I/O多路复用的并发编程

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

•优秀作业:
  • 第一周作业:学会在网上查找资料进行学习
  • 第二周作业:动手实践发现问题并尝试着解决了问题
•教程:
  • GDB调试汇编堆栈过程分析

    •扇贝背单词:

    对四六级还是有很大帮助的,因为词汇量上去了,看文章做阅读的时候也就能知道作者到底在说什么,就算是遇到不会的单词也能猜个大概,总之一天一点,对自己的提升是在无形中慢慢积累起来的

•待及格管理制度的优缺点

优点在于检查代码能让待及格同学自己真正动手去做这件事,但是缺点也是很明显的,我感觉并没有让这些待及格同学真正提起他们的学习兴趣,反而一直很被动,越是这样越不想学,所以待及格名单一直总是那么几个人。

•课程收获与不足

•自己的收获:感觉自己学到的东西还是不少,在绝大多数人还不知道虚拟机或者linux是什么的时候,我已经能够自己在电脑上安装虚拟机,能够灵活地使用linux的系统命令,知道了计算机系统是如何运行程序的,知道了c语言和汇编语言的相互转换等等。同时扇贝打卡也帮助提高了词汇量,对于六级考试有很大帮助。

•自己需要改进的地方

应该是还没有完全能够克服拖延症这个问题,老师布置的每周任务,明明早做完做都一样,但是有时候就是一直推迟到最后才急急忙忙去做,没有时间上的规划。实验报告也是,明明做完实验的当天印象是最深刻的,可以当天就写完,但总是拖着不写,等到真正写的时候记忆里有些问题的解决过程变得很模糊,要费好大功夫才能想起来。所以以后还是早点完成学习任务把博客写好,这样发现问题还可以及时解决。

•给开学初的你和学弟学妹们的学习建议

学弟学妹们一定要好好运行理解老师发的代码,这些代码往往考试中会考到,如果自己没有真正理解是不会做这些题的。博客要早点发,如果迟发或者忘记了时会被扣分的。扇贝打卡一定要坚持,对四六级有帮助的同时还可以加分。

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

应该每个星期都认真对待老师所布置的任务,不是三天打鱼两天晒网一般的学习态度,想学就学不想学就拖的想法是不成熟的。

•问卷调查

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

15小时

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

越到后面越感觉自己能抓住重点,学习效率一点点提高

•学习效果自己满意吗?

总体而言还可以

•课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)

会尽量,有时候写博客并不是一种任务,而是确实是对自己有帮助的。

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

希望老师以后能继续在考完试后对考试题目进行讲解。

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

我觉得以后每周考试的卷子批改完之后可以发回来让同学们自己再看,而不是写完交上去就没有了。

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

可以让学生自己上台给同学们演示和讲解程序,不光是老是一个人在说。

•本学期你与老师和同学交互最多的一篇博客是哪篇?

第二周学习总结

•本学期被阅读最多的博客是哪一篇?有何经验?

第二周学习总结,因为这篇博客中有大量的实践过程和步骤,后来的同学遇到一些实际操作上的问题和解决步骤就在这篇博客中进行了借鉴和参考。

•现在评价一下第0周提出的问题的质量,抓住重点了吗?

第0周提出的问题质量自我感觉还算可以,不是非常难的问题但是基本上都是需要理解的要掌握的知识点。

•本文链接和二维码

http://www.cnblogs.com/20145223ymy/p/6218326.html

你可能感兴趣的:(20145223 《信息安全系统设计基础》课程总结)