• 2017-2018-1 20155203 《信息安全系统设计基础》第七周学习总结


    2017-2018-1 20155203 《信息安全系统设计基础》第7周学习总结

    教材学习内容总结

    Y86模拟器的安装和使用

    • 安装基本参照实验楼中实验五内容
    • 参照YIS手册使用

    运行asum.yo:

    参数用途:

    安装图形界面参照Y86模拟器安装

    Y86指令集体系结构

    包括定义各种状态元素、指令集和它们的编码、一组编程规范和异常事件处理。Y86指令和IA32代码的主要区别在于,它可能需要多条指令来执行一条IA32指令能完成的所有功能。

    • Y86指令集:

    • Y86异常:
      对Y86来说,程序员可见的状态中就有stat状态码,它标志了程序执行的状态.Y86需要有能力根据stat去做一些处理.捕获为了简单起见,这里除了正常执行之外,都将停止指令的执行.真实当中,会有专门的异常处理程序.

    Y86有四种不同的状态码:AOK(正常),HTL(执行halt指令),ADR(非法地址)和INS(非法指令).

    逻辑设计和硬件控制语言HCL

    • 逻辑门是数字电路的基本计算元素,它们产生的输出,等于它们输入位值的某个布尔函数。

    • 高级逻辑设计——组合电路:将很多逻辑门组合成一个网所构建的计算块称为组合电路。构建这个网有两个限制:
      ①、两个或多个逻辑门的输出不能连在一起。否则它们可能会导致线上的信号矛盾,可能会导致一个不合法的电压或电路故障。 ②、这个网必须是无环的,也就是在网中不能有路径经过一系列的门而形成一个回路,这样的回路会导致该网络计算的函数有歧义。

    • HCL表达式 和 C 语言逻辑表达式的区别

    区别有以下三点:

    ①、逻辑门是持续输出的,如果电路的输入变化了,在一定的延迟之后,输出也会相应的变化,而C表达式是在执行到的时候才会求值。
    
    ②、两者操作的值不同,逻辑门只对值 0 和值 1 进行操作,而C 逻辑表达式允许参数是任意整数,0表示false,其它任意值都表示true。
    
    ③、C 逻辑表达式存在短路,比如对于a && b这个符号来说,C语言中的规定是如果前者为假,则后者不会再计算。而HCL当中没有这种说法。
    

    Y86的顺序实现

    取指:取指阶段从存储器读取指令字节,地址为程序计数器(PC)的值。
    译码:译码阶段从寄存器文件读入最多两个操作数,得到val A/val B.
    执行:执行阶段,算术/逻辑单元要么执行指令明确的操作(根据ifun的值),计算存储器引用的有效地址,要么增加或减少栈指针。得到的值称为valE
    访存:访存阶段可将数据写入存储器或从存储器读出数据
    写回:最多可写两个结果到存储器。
    更新PC:将PC设置成下一指令的地址。
    
    
    • 程序计数器放在寄存器中,位于左下角PC。
    • 信息随着线流动,方向是先向上再向右
    • 反馈先祖在右边向下
    • 所有硬件单元的处理都在一个时钟周期内完成。
    • 浅灰色方块表示硬件单元
    • 控制逻辑块是用灰色圆角矩形表示的
    • 线路的名字在白色椭圆中说明
    • 宽度为字长或更窄的数据连接用细线
    • 单个位的连接用虚线。

    代码调试中的问题和解决过程

    • 问题1:在安装Y86模拟器时会出现tcl.h tk.h文件路径找不到的问题。

    • 可以参考实验楼的步骤,也可以自己找这两个文件的路径,一般是在/usr/include下,具体方法是将makefile中的一部分内容进行修改:

    GUIMODE=-DHAS_GUI                   (本来是#GUIMODE=-DHAS_GUI 的,也就是把凝视去掉)
    
    TKLIBS=-L/usr/lib/ -ltk8.5 -ltcl8.5
    
    TKINC=-I/usr/include/tcl8.5     
    
    • 问题2:在调试.yo文件编译问题时出现了同学们之前漏洞攻击时出现的Ubuntu图形界面消失只剩下命令行

    • 问题2解决方案:参考ubuntu无法进入图形界面的一种解决方案

    • 问题3:安装图形界面出现问题

    To run in GUI mode, you must recompile with the HAS_GUI constant defined.
    
    
    • 未解决,指导手册的英文实在只能看个半懂,在网上找到的又有很多偏颇,后续继续解决。

    代码托管

    上周考试错题总结

    我们用一个十六进制的数表示长度w=4的位模式,把数字解释为补码,关于其加法逆元的论述正确的是()
    A .
    0x8的加法逆元是-8
    B .
    0x8的加法逆元是0x8
    C .
    0x8的加法逆元是8
    D .
    0xD的加法逆元是3
    E .
    0xD的加法逆元是0x3
    
    正确答案: A B D E
    

    大多数计算机使用同样的机器指令来执行无符号和有符号加法。
    A .
    正确
    B .
    错误
    C .
    不确定
    
    正确答案: A
    

    我们用一个十六进制的数表示长度w=4的位模式,对于数字的无符号加法逆元的位的表示正确的是()
    A .
    0x8的无符号加法逆元是0x8
    B .
    0xD的无符号加法逆元是0xD
    C .
    0xF的无符号加法逆元是0x1
    D .
    0xF的无符号加法逆元是1
    
    正确答案: A C D
    

    short int v=-12345;
    unsigned short uv=(unsigned short) v;
    那么
    A .
    v=-12345, uv=53191
    B .
    v=uv=0xcfc7
    C .
    v,uv的底层的位模式不一样
    D .
    v,uv的值在内存中是不一样的
    
    正确答案: A B
    

    下面和代码可移植性相关的C语言属性有()
    A .
     #define
    B .
    typedef
    C .
    sizeof()
    D .
    union
    
    正确答案: A B C
    

    根据c89国际标准编译程序prog.c,下面正确的是()
    A .
    gcc prog.c
    B .
    gcc -ansi prog.c
    C .
    gcc -std=c89 prog.c
    D .
    gcc -std=gnull prog.c
    
    正确答案: B C
    

    总结:主要是对于不同进制数在不同系统下的具体内涵不了解。

    本周结对学习情况

    - [20155204](http://www.cnblogs.com/20155204wh/)
    - 结对学习内容
        互相学习吧,大家在编程的时候各有长短
    

    其他(感悟、思考等,可选)

    这周的学习和之前又有很大的差别,因此对于我们来说确实是很大的挑战。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 1/1 6/6
    第三周 156/388 2/3 15/21 这周除课堂实践外,大多数都是知识性的学习内容,代码量确实太少从下周起就要抓紧了
    第四周 156/388 3/6 15/36 每天100行好难啊,不过感觉找到了学习的一些动力。在调试代码上花的时间太多,都要没时间看书了,还要继续改进
    第五周 284/ 745 1/7 15/51
    第七周 1812/ 2557 2/9 10/61
    • 计划学习时间:10小时

    • 实际学习时间:10小时

    • 改进情况:比之前时间要短了看书的效率也高,谢谢老师给指出的重点!

    参考资料

  • 相关阅读:
    准备 LVM Volume Provider
    掌握 cinder-scheduler 调度逻辑
    Cinder 组件详解
    掌握 Cinder 的设计思想
    理解 Cinder 架构
    1 张图秒懂 Nova 16 种操作
    计算节点宕机了怎么办?- 每天5分钟玩转 OpenStack(43)
    Live Migrate 操作
    Resize Instance 操作详解
    关于Linux的10个核心面试问题与答案
  • 原文地址:https://www.cnblogs.com/xhwh/p/7788714.html
Copyright © 2020-2023  润新知