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

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

    教材学习内容总结

    上周学习了计算机中信息的存储方式;了解了源程序如何被计算机一步步处理转化成目标文件,以及其对应的Linux指令(ESo iso);查看反馈的汇编码的指令objdump -d hello.o;了解编译系统如何工作的三大益处;了解系统的硬件组成;命令行下程序调试的方法;操作系统的功能、内涵;系统之间的通信;学习链接的意义;创建静态库;创建动态库。

    教材学习中的问题和解决过程

    • 问题1:书中第6页图1-4中介绍了一个典型系统的硬件组成,I/O设备通过配适器或控制器与I/O总线相连,I/O总线又通过I/O桥与系统总线相连,那么这里I/O桥的作用是什么?I/O桥与I/O总线的关系?

    • 问题1解决方案:上网搜索了I/O桥的概念,发现没有明确的定义,学长说是“存储器结构”,知乎上的用户解释“有点像ARM 的AMBA”,但由于我对存储器和一些专业术语并不了解,所以还是没法理解I/O桥的概念。后来我在一篇博客里发现“系统总线是一组并行的导线,能携带地址、数据和控制信号。但是不同总线不能直接互通,这就用到了I/O桥”“一个计算机有多个不同类型的总线,这些总线由桥(bridge)链接起来。”,据此我分析I/O桥作用是联通系统总线与I/O总线。

    • 问题2:主存和内存是同一个概念吗?

    • 问题2解决方案:主存是主存储器的简称。“主存储器(Main memory),简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。”内存是内部存储器的简称,包括RAM(主存)和ROM(只读存储器)。存在主存中的数据一旦断电就丢失了,存在ROM中的数据不会丢失。

    • 关系图如下:

    • 问题3:什么是标准的ELF-64目标文件格式?

    • 问题3解决方案:参考ELF文件格式分析
      我了解到目标文件有三种类型:1.可重定位文件(.o)2.可执行文件(.exe)3.共享目标文件(.so)。如下图所示,ELF目标格式一般包含 ELF 头部、程序头部表、节区、节区头部表几个部分。

    浏览教材并针对每章提出一个问题

    • 第一章:数据和控制信息以不同的方式存储在栈上为什么会引发安全漏洞?
    • 第二章:无符号数和数的补码表示有哪些特性?
    • 第三章:寄存器的使用惯例提出依据是什么?
    • 第四章:组合和时序逻辑元素如何在数据通路中组合到一起?
    • 第五章:如何减少程序需要做的工作的变换?
    • 第六章:RAM、ROM、磁盘和固态硬盘是如何防止在层次结构中的?
    • 第七章:位置无关代码主要应用于什么情况?
    • 第八章:应用程序是如何与操作系统交互的?
    • 第九章:应用程序如何使用和管理虚拟内存?
    • 第十章:内核用什么数据结构来表示打开的文件?
    • 第十一章:getaddrinfo函数和getnameinfo函数有什么区别或联系?
    • 第十二章:如何理解互斥锁加锁顺序规则?

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

    • 本周没有代码方面的问题

    代码托管

    (statistics.sh脚本的运行结果截图包含克隆项目后的代码)

    上周考试错题总结

    课下测试ch01

    满分15分,得分15分

    课下测试ch07

    满分18分,得分11分

    错题及解析:

    1.main.c 调用了静态库libmath.a中的函数,编译main.c的命令是(AB)

    A .
    gcc -static main.c ./libmath.a -o main

    B .
    gcc -static main.c -L. -lmath -o main

    C .
    gcc -static main.c -L. -llibmath.a -o main

    D .
    gcc -static main.o ./libmath.a -o main

    • 错因:误选了D,此处是将main.c文件编译为可执行文件main
    • 知识延展:

    库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。

    对比一下两者:

    • 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。
    • 动态库而言:某个程序在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个拷贝;只有没有才链接载入。在程序运行的时候,被调用的动态链接库函数被安置在内存的某个地方,所有调用它的程序将指向这个代码段。因此,这些代码必须使用相对地址,而不是绝对地址。在编译的时候,我们需要告诉编译器,这些对象文件是用来做动态链接库的,所以要用地址不无关代码(Position Independent Code (PIC))。
      • 注意:linux下进行连接的缺省操作是首先连接动态库,也就是说,如果同时存在静态和动态库,不特别指定的话,将与动态库相连接。
    • 使用静态库链接、编译步骤:
      • 编写.h文件和.c文件,注意.h文件的格式以及 #ifndef #define #endif的使用
      • 将头文件中包含的相关函数对应的.c文件编译生成 .o文件
      • 由 .o 文件创建静态库(.a 文件):ar cr lib静态库名.a XXX.o XXX.o
      • 在程序中使用静态库:gcc -static main.c -L. -lmath -o maingcc -static main.c ./libmath.a -o main两种格式

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:
      • xxx
      • xxx
      • ...
    • 代码中值得学习的或问题:
      • xxx
      • xxx
      • ...
    • 其他

    本周结对学习情况

    -  [20155333]()
    -  结对照片
    -  结对学习内容
        -  第一章、第七章
    

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

    刚经历了大学两年里最忙碌的一周,总结起来其实是自己在有打把时间去做一些事的时候却选择了懈怠,结果现在事情都积压到了一起。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 19/0 1/0 15/0 了解计算机内部结构、程序执行过程中的具体过程、动态链接和静态链接
    第二周 300/500 2/4 18/38
    第三周 500/1000 3/7 22/60
    第四周 300/1300 2/9 30/90

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

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

    • 计划学习时间:20小时

    • 实际学习时间:15小时

    • 改进情况:将本周学习内容模块简化,重点放在问题及其解决上。

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    HTTP是什么?,GET与POST区别?
    python3学习笔记二(注释、缩进)
    python3学习笔记一(标识符、关键字)
    python之冒泡排序(一)
    Jenkins 持续集成配置,代码库Perforce
    新增模块的测试用例设计
    Perforce 常用操作(转)
    Python 异常处理——处理默认错误类型以外错误
    测试如何与开发沟通
    selenium webdrive 默认打开浏览器设置
  • 原文地址:https://www.cnblogs.com/zjy1997/p/7588787.html
Copyright © 2011-2022 走看看