zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155314 《信息安全系统设计基础》第11周学习总结

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

    教材学习内容总结

    学习目标

    • 理解虚拟存储器的概念和作用
    • 理解地址翻译的概念
    • 理解存储器映射
    • 掌握动态存储器分配的方法
    • 理解垃圾收集的概念
    • 了解C语言中与存储器有关的错误

    教材内容提炼

    第2章 信息的表示和处理

    • 三种最重要的数字表示
      • 无符号编码:表示大于或等于零的数字
      • 补码编码:表示有符号整数的最常见方式
      • 浮点数编码:表示实数的科学记数法的以2为基数的版本
    • 信息存储
      • 虚拟内存:机器级程序将内存视为一个非常大的字节数组,称为虚拟内存
      • 十六进制表示法
      • 字数据大小
        • 一个字长为w位的机器,虚拟地址的范围为0~2w-1,程序最多访问2w个字节
        • 向后兼容:大多数64位机器也可以运行为32位机器编译的程序
        • ISO C99引入一类数据类型,其数据大小是固定的,不随编译器和机器设置而变化
          • int32_t:4字节
          • int64_t:8字节
        • 对关键字的顺序以及包括还是省略可选关键字来说,C语言允许存在多种形式:如 unsigned longunsigned long intlong unsignedlong unsigned int均等价
      • 寻址和字节顺序
        • 小端法:最低有效字节在最前面
        • 大端法:最高有效字节在最前面
      • 表示字符串
      • 表示代码
      • 布尔代数简介
        • 布尔环中加法运算是,每个元素的加法逆元都是它自己本身,即对于任何值a,**aa=0**
      • C语言中的位级运算(按位布尔运算)
        • |
        • &
        • ~
        • ^
      • C语言中的逻辑运算(逻辑运算认为所有非零的参数都表示TRUE(返回1),而参数0表示FALSE(返回0))
        • ||
        • &&
        • !
      • C语言中的移位运算
        • 左移
        • 右移
          • 逻辑右移:在左端补k个0
          • 算术右移:在左端补k个最高有效位的值
    • 整数表示
      • 整型数据类型
      • 无符号数的编码
      • 补码编码
      • 有符号数和无符号数之间的转换
      • C语言中的有符号数与无符号数
      • 扩展一个数字的位表示
      • 截断数字
      • 关于有符号数与无符号数的建议
    • 整数运算
      • 无符号加法
      • 补码加法
      • 补码的非
      • 无符号乘法
      • 补码乘法
      • 乘以常数
      • 除以2的幂
      • 关于整数运算的最后思考
    • 浮点数
      • 二进制小数
      • IEEE浮点表示
      • 数字示例
      • 舍入
      • 浮点运算
      • C语言中的浮点数
        • int转成float:数字不会溢出,但可能被舍入
        • intfloat转成double:能保留精确的数值
        • double转成float:值可能溢出成+∞或-∞,还可能被舍入
        • floatdouble转成int:值将会向零舍入

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

    无法打开Y86-64模拟器界面

    gxffK.png

    解决方法

    这是Y86-64模拟器的Makefile中配置GUI相关路径错误导致的,解决方法是将两个GUI路径分别设置为TKLIBS=-L/usr/lib -ltk8.5 -ltcl8.5TKINC=-I/usr/include/tcl8.5即可,如下图:
    gxWY6.png
    成功打开Y86-64模拟器:
    gxRFx.png

    代码托管

    N6kAx.png

    上周考试错题总结

    CH03

    1. 假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是()

      A. 若t==0 ,则ZF=1

      B. 若t<0, 则CF=1

      C. 若t<0, 则SF=1

      D. 若(a<0==b<0)&&(t<0 != a<0), 则OF=1

      E. 若(a<0==b<0)&&(t<0 != a<0), 则CF=1

      F. leaq指令不影响条件码寄存器

      G. cmp指令不影响条件码寄存器

      【错选】A B D G

      【答案】A D F

      【解析】参考课本p135

    2. 以下代码是将void decode1(long *xp, long *yp, long *zp)反汇编的结果,下面说法正确的是()

      gv0rd.png

      A. 从汇编代码看出,decode1的参数先入栈的是zp

      B. 从汇编代码看出,decode1的参数先入栈的是xp

      C. 函数功能等价于 t=x; x=y; y=z; z=t;

      D. 函数功能等价于 x=y; y=z; z=x;

      【错选】B C

      【答案】C

    3. 对于图中内存地址和寄存器的值,下面说法正确的是()

      gvwKH.png

      A. %rax的值是0x100

      B. (%rax)的值是0x100

      C. (%rax)的值是0x104

      D. (%rax)的值是0xFF

      E. 4(%rax)的值是0xAB

      F. (%rax,%rcx,4)的值是0xAB

      G. (%rax,%rcx,4)的值是0x104

      【错选】A D E

      【答案】A D E F

      【解析】参考课本p121

    CH08

    1. 有关exec系列函数,下面说法正确的是()

      A. 可以用char[][] 来传递argv

      B. 进程调用了exec系列函数后,pid会变

      C. 进程调用了exec系列函数后,代码会改变

      D. system()和exec系列等价

      E. exec系列函数中带e的要传入环境变量参数

      F. exec系列函数中带v的要传入环境变量参数

      【错选】A C E

      【答案】C E

      【解析】不能用char[][] 来传递argv,结尾的0(null)无法处理;system=fork+exec+wait;

    2. 有关wait类系统调用,说法正确的是()

      A. wait(&status) 等价于waitpid(-1, &status, 0)

      B. 父进程中执行waitpid, 等待集合中的所有子进程结束了才返回

      C. 父进程中执行waitpid, 等待集合中的任一子进程结束了才返回

      D. 子进程中的退出状态在wait的status参数返回

      【错选】A B D

      【答案】A C D

      【解析】参考课本p516 517 518

    3. 有关fork(),下面说法正确的是()

      A. 一次调用,两次返回

      B. 子进程中,fork()返回子进程PID

      C. 子进程可以读写父进程中打开的文件

      D. 子进程和父进程的用户级虚拟地址空间相同但独立

      【错选】A D

      【答案】A C D

      【解析】参考课本p514

    4. 关于代码 int main(){} 说法正确的是()

      A. 返回值是0

      B. 返回值不确定

      C. 会调用exit(0)

      D. 返回值大于0

      E. 上面代码运行完,在命令行中运行echo $? 的值是0

      【错选】A E

      【答案】A C E

      【解析】main中不调用exit,会补上exit(0)

    5. 用户进程可以通过()访问内核代码和数据

      A. 特权指令

      B. 系统调用

      C. 模式位

      D. 程序计数器

      【错选】C

      【答案】B

      【解析】参考课本p510

    6. 进程上下文包括程序的( )

      A. 代码和数据

      B. 栈

      C. 通用寄存器中的内容

      D. 程序计数器

      E. 环境变量

      F. 打开的文件描述符的集合

      【错选】B C D F

      【答案】A B C D E F

      【解析】参考课本p508

    7. Linux中,信号(Signal)是一种()异常控制流。

      A. 硬件层

      B. 操作系统层

      C. 用户层

      D. 网络层

      【错选】B

      【答案】C

      【解析】参考课本p501

    结对及互评

    本周结对学习情况

    • 20155323
    • 结对学习内容
      • 教材第1章 计算机系统漫游

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:5小时

    • 实际学习时间:2小时

    参考资料

  • 相关阅读:
    【学习笔记】斯特林数(未完成)
    【题解/学习笔记】点分树
    【题解】[国家集训队] Crash 的文明世界
    【题解】SP34096 DIVCNTK
    【题解】Loj6053 简单的函数
    【题解】[ZJOI2012]网络
    【题解】bzoj3252 攻略
    【题解】[POI2014]HOT-Hotels 加强版
    IDEA文件夹变红,轻松删除SVN版本控制关联
    配置dataguard broker并主从切换
  • 原文地址:https://www.cnblogs.com/crazymosquito/p/7967495.html
Copyright © 2011-2022 走看看