20155323刘威良 《信息安全系统设计基础》课程总结
每周作业链接汇总
- 简要内容:课本第一章和第七章
- 简要内容:课堂测试补充,编写Linux中的文件并编译和调试。
- 简要内容:课本第二章,信息的表示和处理。
- 简要内容:实现Myod。
- 简要内容:机器级代码,掌握X86汇编基础。
- 简要内容:课本第八章,异常控制流。
- 简要内容:处理器体系结构。
- 简要内容:实现Socket和并发编程的学习。
- 简要内容:存储器层次结构。
- 简要内容:课堂测试CH06总结。
- 简要内容:虚拟存储器。
- 简要内容:对并发编程的重新学习
- 简要内容:对异常控制流的重新学习。
实验报告链接汇总
- 简要内容:熟悉linux的开发环境。
- 简要内容:
1-MDK
2-LED
3-UART
4-国密算法
- 简要内容:
基于Linux Socket程序设计实现wc
- 简要内容:
学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”
- 简要内容:
openssl的安装和使用
代码托管链接和二维码
- 代码托管二维码:
- 截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果:
- 代码量汇总提交statistics.sh的支持截图:
- 代码驱动的学习做到没有?
对部分简单的代码进行了代码驱动的学习。
- 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
在原代码的基础上进行更改的确是一种好的方式,但是刚接触这门课就让我们对课本上较为深奥的代码进行增删我觉得并不现实。
- 实践上有什么经验教训
提前预习才能事半功倍。
整体评价一下第1周作业中自己提出的问题是不是抓住了学习重点
部分抓住了重点。
回答一下第1周作业中自己提出的问题
- 1.计算机系统的核心概念是什么?
计算机系统是能按照人的要求接受和存储信息,自动进行数据处理和计算,并输出结果信息的机器系统。计算机系统由两大部分组成:硬件(子)系统和软件(子)系统,其中硬件子系统是系统赖以工作的实体,它是有关的各种物理部件的有机的结合。软件子系统由各种程序以及程序所处理的数据组成,这些程序的主要作用是协调各个硬件部件,使整个计算机系统能够按照指定的要求进行工作。
硬件子系统包括中央处理器、主存存储器、输人输出控制系统和各种外围设备。
软件子系统包括 系统软件 、支援软件 、应用软件 三个部分。
- 2.计算机如何进行算术运算?
当运算结果没有产生溢出时,运算结果等于逻辑结果(即应该得到的正确的结果),此时SF表示的是逻辑结果的正负,当运算结果产生溢出时,运算结果不等于逻辑结果,此时的SF值所表示的正负情况与逻辑结果相反,即:SF0时,逻辑结果为负,SF1时,逻辑结果为非负。
- 3.机器级代码是如何表示的?
编译器将C语言提供的相对比较抽象的执行模型表示的程序转换成处理器执行的基本指令。
- 4.ISA如何实现在处理器之间提供一层抽象?
ISA提供了程序执行器行为的一种顺序说明,也就是一条指令执行完了,下一条指令才会开始。从IA32指令开始,大大简化数据类型、地址模式和指令编码,我们定义了Y86指令集。得到的ISA既有RISC指令集的属性,也有CISC指令集的属性。然后,将不同指令组织放到五个阶段中处理,在此,根据被执行指令的不同,每个阶段中的操作也不相同。据此,我们构造了SEQ处理器,其中每个时钟周期执行一条指令,它会通过所有五个阶段。
- 5.怎样优化程序?需要注意哪些方面?
不光是缩减软件不必要的三维和使软件运行速度。考虑完这些问题的话想在同类软件中更为突出的话就尽量做到人性化、简单化和智能化。
- 6.基本存储技术都包括哪些?
基本存储技术包括随机存储器(RAM)、非易失性存储器(即OM)和磁盘
- 7.静态链接和动态链接有何区别?
静态链接在程序发布的时候就不需要的依赖库,也就是不再需要带着库一块发布,程序可以独立执行,但是程序体积会相对大一些。而且如果静态库有更新的话,所有可执行文件都得重新链接才能用上新的静态库。
动态链接多个程序可以共享同一段代码,而不需要在磁盘上存储多个拷贝。但由于是运行时加载,可能会影响程序的前期执行性能。
- 8.异常控制流在计算机的各个层次都有怎样的作用?
根据不同的异常值采取不同的处理措施。
- 9.虚拟存储器的作用?
虚拟内存的作用 内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Window 虚拟存储器s中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。举一个例子来说,如果电脑只有128MB物理内存的话,当读取一个容量为200MB的文件时,就必须要用到比较大的虚拟内存,文件被内存读取之后就会先储存到虚拟内存,等待内存把文件全部储存到虚拟内存之后,跟着就会把虚拟内存里储存的文件释放到原来的安装目录里了。
- 10.Unix I/O是什么?
输入是从I/O设备拷贝数据到主存,输出是从主存拷贝数据到I/O设备。
- 11.协议软件需要的基本能力有哪些?
网络协议的本质是规则,即各种硬件和软件必须遵循的共同守则。网络协议并不是一套单独的软件,它融合于其他所有的软件系统中,因此可以说,协议在网络中无所不在。网络协议遍及OSI通信模型的各个层次,从我们非常熟悉的TCP/IP、HTTP、FTP协议,到OSPF、IGP等协议,有上千种之多。对于普通用户而言,不需要关心太多的底层通信协议,只需要了解其通信原理即可。在实际管理中,底层通信协议一般会自动工作,不需要人工干预。但是对于第三层以上的协议,就经常需要人工干预了,比如TCP/IP协议就需要人工配置它才能正常工作。
- 12.三种不同的并发编程技术的区别?
一、并发
同时干多件事情,这就是并发的作用。
web服务器可以利用并发同时处理大量用户的请求。
只要我们需要程序同时干多件事情,我们就需要并发。
二、多线程
并发编程的一种形式,其采用多个线程执行程序。
线程是一个独立的运行单元,每个进程内部有多个线程,每个线程可以各自同时执行指令。
每个线程有自己独立的栈,但是与进程内的其他线程共享内存。
线程池是线程更广泛的一种应用形式,其维护着一定数量的工作线程,这些线程等待着执行分配下来的任务。线程池可以随时监测线程的数量
线程池催生了另外一种重要的并发形式:并行处理。
多线程并不是并发编程的唯一形式,虽然.NET和Java等语言框架都对底层线程类型提供了支持,但是对开发人员并不友好,最新的.NET和Java
都提供了更高级别的抽象,让我们开发并发程序更加方便高效。
三、并行处理
将大块的任务分割成相互独立的小块,并分配给多个同时运行的线程处理。
并行处理采用多线程,提高了处理器的利用效率。
并行编程通常不适合服务器系统,服务器本身都具有并发处理能力。
数据并行可以处理大量的彼此独立的数据,比如Hadoop等大数据处理框架。
任务并行可以将彼此独立的拆分任务同时执行。
下边看下.NET中提供的并行编程
你有什么项目被加分,谈谈你的经验
项目:实现mypwd
课程收获与不足
- 自己的收获(投入,效率,效果等)
这学期学到了很多新知识,对于linux系统可以说是从零到入门。
- 自己需要改进的地方
学习时间相比上学期JAVA少了很多,代码量也没有上学期练的多
- 如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
我的结对对象20155314刘子健同学在学习上给了我很多帮助,我遇到不会的地方都是去向他请教。
给开学初的你和学弟学妹们的学习建议
放假有时间先进行预习,开学能节约很多时间,也不会学的太过仓促。
问卷调查
- 你平均每周投入到本课程多长时间?
除去课上时间课下大概每周四五个小时。
- 每周的学习效率有提高吗?
还行
- 学习效果自己满意吗?
不太满意,觉得还可以做得更好
- 课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
不会
- 你觉得这门课老师应该继续做哪一件事情?
多讲课
- 你觉得这门课老师应该停止做哪一件事情?
课上没有按时提交的同学课下还要提交深入学习的博客,这给同学们带来的压力,尤其是对于本来基础就差的同学来说这种行为不亚于赶鸭子上架。
- 你觉得这门课老师应该开始做什么新的事情?
不清楚