20145316许心远《信息安全系统设计基础》课程总结
每周作业链接汇总
- 课程预览和提问、虚拟机ubuntu的安装
二维码
- linux的核心命令:man、find、cheat、grep、ls等
二维码
- vim、gcc、gdb、makefile、静态库、动态库的使用
二维码
- 计算机中各种数的表示和运算
二维码
- 汇编与反汇编
二维码
- Y86处理器、ISA抽象
二维码
- 局部性原理和缓存思想在存储器层次结构中的应用
二维码
- 前七周知识点总结
二维码
- 系统级I/O
二维码
- 系统调用、代码分析
二维码
- 异常及其种类、进程、信号、代码分析
二维码
- 前三周总结
二维码
- 网络编程、并发、线程控制、同步互斥、代码分析
二维码
- 虚拟存储器
二维码
实验报告链接汇总
- 熟悉linux开发环境,使用
armv4l-unknown-linux-gcc
指令进行编译 二维码
- 多线程程序设计,pthread库函数的使用
二维码
- 安装ADS,GIVEIO驱动以及JTAG驱动,在arm开发板上测试结果
二维码
- linux下进行驱动设计的原理,使用模块方式进行驱动开发调试
二维码
- 学习在arm开发板上的socket网络编程
二维码
代码托管链接和二维码
- 截图:老师,我的虚拟机上个周就崩掉了……
- 代码驱动的学习做到没有?
- 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
- 实践上有什么经验教训
- 整体评价一下第0周作业中自己提出的问题是不是抓住了学习重点
- 没有抓住重点,就是翻开书就着某句话给自己出了个题。
- 回答一下第0周作业中自己提出的问题
第一章 存储器中的寄存器、主存、高速缓存、二级存储是以何种方式运行及记录?
寄存器的基本单元是 ,按照其用途分为基本寄存器和移位寄存器。基本寄存器(见图)是由 D触发器组成,在 CP 脉冲作用下,每个 D触发器能够寄存一位二进制码。在 D=0 时,寄存器储存为 0,在 D=1 时,寄存器储存为 1。在低电平为 0、高电平为 1 时,需将信号源与 D 间连接一反相器,这样就可以完成对数据的储存。需要强调的是,目前大型数字系统都是基于时钟运作的,其中寄存器一般是在时钟的边缘被触发的,基于电平触发的已较少使用。(通常说的CPU的频率就是指数字集成电路的时钟频率)移位寄存器按照移位方向可以分为单向移位寄存器和双向移位寄存器单向移位寄存器是由多个 D 触发器串接而成(见图),在串口 Di 输入需要储存的数据,触发器 FF0 就能够储存当前需要储存数据,在 CP 发出一次时钟控制脉冲时,串口 Di 同时输入第二个需要储存是的数据,而第一个数据则储存到触发器 FF1 中。双向移位寄存器按图中方式排列,调换连接端顺序,可以控制寄存器向左移位,增加控制电路可以使寄存器右移,这样构成双向移位寄存器。
是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在中进行的,因此内存的性能对计算机的影响非常大。(Memory)也被称为,其作用是用于暂时存放CPU中的运算数据,以及与等交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由、电路板、等部分组成的。
高速缓冲存储器(Cache)其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,也有快取记忆体的名称。
高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。
存储器的很多,按其可分为和,主存储器又称(简称内存),辅助存储器又称外存储器(简称外存)。内存储器最突出的特点是存取速度快,但是容量小、价格贵;外存储器的特点是容量大、价格低,但是存取速度慢。内存储器用于存放那些立即要用的程序和数据;外存储器用于存放暂时不用的程序和数据。内存储器和外存储器之间常常频繁地交换信息。[1] 外存是磁性介质或,像,,,等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,与相比就显得慢的多。
第二章 浮点数不同的表达有何区别?
通常,我们可以用下面的格式来表示浮点数
其中S是符号位,P是阶码,M是尾数
对于IBM-PC而言,单精度浮点数是32位(即4字节)的,双精度浮点数是64位(即8字节)的。两者的S,P,M所占的位数以及表示方法由下表可知S P M 表示公式 偏移量 1 8 23 (-1)S2(P-127)1.M 127 1 11 52 (-1)S2(P-1023)1.M 1023 以单精度浮点数为例,可以得到其二进制的表示格式如下
其中S是符号位,只有0和1,分别表示正负;P是阶码,通常使用移码表示(移码和补码只有符号位相反,其余都一样。对于正数而言,原码,反码和补码都一样;对于负数而言,补码就是其绝对值的原码全部取反,然后加1.)
为了简单起见,本文都只讨论单精度浮点数,双精度浮点数也是用一样的方式存储和表示的。
第三章 一元操作与二元操作的关系?
- 二元操作符可以由一元操作符实现
第四章 用转发来避免数据冒险的意义何在?
- 为了充分利用数据转发技术,我们还可以将新计算出来的值从执行阶段传到译码阶段,以避免程序prog4所需要的暂停。在周期4中,译码阶段逻辑发现在访存阶段中有对寄存器%edX未进行的写,而且执行阶段中ALU正在计算的值稍后也会写入寄存器%eaX。它可以将访存阶段中的值作为操作数Va1A也可以将ALU的输出作为操作数~Va1B,注意,使用ALU的输出不会导致任何时序问题,译码阶段只要在时钟周期结束之前产生信号Va1A和Va1B,在时钟上升开始下一个周期时,流水线寄存器E就能装载来自译码阶段的值,而在此之前ALU的输出已经是合法的了。
第五章 程序并行性是如何实现的?
(1)时间重叠。相邻处理过程在时间上错开,轮流重叠使用同一套硬件的各部分。
(2)资源重复。重复设置硬件资源提高可靠性和性能。
(3)资源共享。让多个用户按照一定的时间顺序轮流使用同一套资源,提高资源利用率。
并发的实质是一个物理CPU(也可以多个物理CPU)在若干道程序之间多路复用,并发性是对有限物理资源强制行驶多用户共享以提高效率。
实现并发技术的关键之一是如何对系统内的多个活动(进程)进行切换。
第六章 代码成为高速缓存友好的代码的条件是什么?
基本准则:
1.将注意力放在内循环上,大部分计算和存储器访问都发生在这里。
2.按照数据对象在存储器中的存储顺序、以步长为1的来读取数据,从而使得程序的空间局部性最大。
3.当从存储器中读取一个数据对象时,就尽量使用它,从而使得程序的时间局部性最大。
第七章 如何从应用程序加载和链接共享库?
- 应用程序可能在它运行时要求动态连接器加载和连接任意共享库、而无需在编译时连接,动态连接是一项强大有用的技术,可以用于分发软件【就是软件的更新】,构建高性能Web服务【高性能Web服务器可以使用基于动态连接的更有效和完善的方法来更新内容】。 基于动态连接的思想是将生成的动态内容的每个函数打包在共享库中,这就是各种软件进行更新的方法,所以可以动态的更新已有函数以及增加新的库函数就是修改功能和增加新功能。 在windows生成动态连接库是.DLL文件,而在linux系列中生成的是.so文件,同样的,在任何软件开发中,动态连接库都是很重要的方面,比如JNI。
第八章 c语言所提供的用户级异常控制流是什么??
- c语言提供了一种用户级异常控制流形式,称为本地跳转。通过setjmp和longjmp函数来提供。
第九章 为什么要使用动态存储器分配?
- 任何程序被执行前, 操作系统会切一整块内存给它用. 程序结束後整块都会回收. 动态分配是位於切给程序用的那块内存之中. 若用malloc取得空间而未用free释放, 只会影响到运行中的自己这个程序.
第十章 I/O重定向的具体过程是什么?
a、I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9;
b、常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关; c、用 < 来改变读进的数据信道(stdin),使之从指定的档案读进; d、用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案; e、0 是 < 的默认值,因此 < 与 0<是一样的;同理,> 与 1> 是一样的; f、在IO重定向 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料; g、管道“|”(pipe line):上一个命令的 stdout 接到下一个命令的 stdin; h、tee 命令是在不影响原本 I/O 的情况下,将 stdout 复制一份到档案去; i、bash(ksh)执行命令的过程:分析命令-变量求值-命令替代(``和$( ))-重定向-通配符展开-确定路径-执行命令; j、( ) 将 command group 置于 sub-shell 去执行,也称 nested sub-shell,它有一点非常重要的特性是:继承父shell的Standard input, output, and error plus anyother open file descrīptors。
k、exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这一命令时任何现有环境都将会被清除,。exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。
第十一章 套接字接口具体的功能是什么?
- 套接字,是支持的的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。
第十二章 变量多线程共享是什么?
每个线程都有它自己的线程上下文.线程上下文包括:
线程ID,栈,栈指针,程序计数器,条件码和通用寄存器的值。
多个线程在进程中共享如下部分:
虚拟地址空间,只读代码块,读、写数据,堆,打开的文件集合。
- 你有什么项目被加分,谈谈你的经验
优秀作业
vim、gcc、gdb、makefile、静态库、动态库的使用
二维码
计算机中各种数的表示和运算
二维码
Y86处理器、ISA抽象
二维码
局部性原理和缓存思想在存储器层次结构中的应用
二维码
异常及其种类、进程、信号、代码分析
二维码
虚拟存储器
二维码
总结
前七周知识点总结
二维码
项目
扇贝背单词:扇贝打卡断断续续,所以没有加入娄老师的群,但必须承认这是一种很好的英语学习方式,要是能结合看英文原版名著或者英剧美剧就更好了。希望以后能看到一个电科院美剧分享群O(∩_∩)O。
经验:不要想着去加分,努力学习知识自然有加分。
课程收获与不足
- 收获:比起大二下学习java的浮躁,这学期沉静了很多。不再逆反着去被迫接收,而是自己主动地去接收知识,学习效率也跟着提高了。
不足:学习拖沓,每周博客总结几乎都周日下午或者晚上才交。
给开学初的你和学弟学妹们的学习建议
- 学习每一章之前可以看看学长学姐的博客,我们犯过的错误不要再犯,我们罗列的重点可以借鉴着重点看。
- 如果完成内容实在有压力可以适当少学点,老师会理解,但绝对不能抄袭。
每周一次的小测一定好好准备,加分项目都是浮云,踏踏实实做好每次小测才是最重要的,最后成绩基本也就是小测成绩的反映。
问卷调查
你平均每周投入到本课程多长时间?
6-30小时不等。投入30小时是几乎每天的课余时间都会看课本或者敲代码,这样的周数比较少;投入6小时是差不多只有周日接近ddl的时候才开始打开课本学习,代码挑着运行,这样的周数也比较少;其他的周数基本都介于这两种情况之间。
每周的学习效率有提高吗?
有一定的提高。具体体现在查找资料的效率(娄老师所说的“搜商”)、对自学知识迅速抓到重点的能力上。
学习效果自己满意吗?
一般。前半部分理解还是比较深入的,后半部分自己投入的时间还是少了点,有些知识点只是机械实践却没能深入理解。
课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)
虽然我很希望自己能坚持下去,毕竟把一件事情坚持做好是十分有成就感的事。但坦白说,我觉得我不会,我没有十足的热情和动力投入到计算机学习这件事情上。不过如果可以从大三下5、6月份开始坚持写“国考复习笔记”,听起来还是很有意思的。
你觉得这门课老师应该继续做哪一件事情?
- 每周上课的小测。我认为非常有意义,这种评分模式把一门知识点庞杂的课程化整为零,把知识点阶段化、模块化,不仅减轻了我们期末复习的压力,更督促同学们养成了平时就认真对待知识的习惯,而不是考前抱佛脚。
- 博客点评互动。在博客点评这件事情上娄老师非常辛苦,几乎每周都能对每位同学的博客进行点评。我认为这是师生沟通的一种非常好的方式。
- 匿名投票。这点很好,让大家说出平时碍于脸面和人际交往不敢说出的观点,不过我觉得除了匿名投票外加个
匿名悄悄话
环节应该也不错,有利于老师更好地了解学生的想法。 排行榜制度。有压力才有动力。
你觉得这门课老师应该停止做哪一件事情?
仔细思考之后,觉得没有。
你觉得这门课老师应该开始做什么新的事情?
对学生展开层次划分,不同层次执行不同要求。层次划分同时结合学生个人意愿和实际学习水平,至少划分为A、B、C三等。A类生最高可得100分,B类生最高可得90分,C类生最高只能拿80分。
给出你的总结的链接和二维码
二维码