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


    ---恢复内容开始---

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

    教材学习内容总结

    第一章:计算机系统漫游

    一、信息=二进制(位串)+上下文

    二、C语言代码转汇编代码命令:gcc -S hello.i -o hello.s

    三、源程序翻译过程:源程序文本 → 预处理器(预处理) → 编译器(编译) → 汇编器(汇编) → 链接器(链接) → 可执行目标程序(二进制)

    四、了解编译系统工作原理的益处:

    1、优化程序性能

    2、理解链接时出现的错误

    3、避免安全漏洞

    五、系统的硬件组成

    1、总线:传送定长字节块。字中的字节数(即字长)是一个基本的系统参数,各个系统中都不尽相同。

    2、I/O设备:是系统与外部世界的联系通道。每个I/O 设备都通过一个控制器或适配器与I/O 总线相连。

    3、主存:主存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。存储器是一个线性的字节数组,每个字节都有其唯一的地址。

    4、处理器(CPU):中央处理单元。具有加载、存储、操作、跳转过程。

    六、存储设备形成层次结构:主要思想是上一层的存储结构作为低一层存储器的高速缓存。

    七、操作系统管理文件

    操作系统基本抽象概念为进程、虚拟机和文件。

    文件是对I/O设备的抽象表示,虚拟内存是对主存和磁盘I/O 设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示。

    进程是操作系统提供的一种假象,这些假象是通过进程的概念来实现的,进程是计算机科学中最重要和最成功的概念之一。进程是操作系统对一个正在运行的程序的一种抽象。实现这个抽象概念需要低级硬件和操作系统软件之间的紧密配合。

    线程:当有多个处理器可用时,多线程是一种使得程序可以运行得更快的方法。

    虚拟内存:虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占地使用主存。

    文件:文件就是字节序列,每个I/O设备都可以看成是文件。

    八、Amdahl定理

    想要显著加速整个系统,必须提升全系统中相当大的部分的速度。

    第七章:链接

    一、理解链接和链接器的作用

    1、有助于构造大型程序

    2、避免一些危险的编程错误

    3、理解语言的作用域规则是如何实现的

    4、帮助理解其它重要的系统概念

    5、能够利用共享库

    二、静态链接

    1、符号解析

    2、重定位

    三、目标文件

    1、可重定位目标文件

    2、可执行目标文件

    3、共享目标文件

    编译器和汇编器生成可重定位目标文件(包括共享目标文件),一个目标模块就是一个字节序列,而一个目标文件就是一个以文件形式存放在磁盘中的目标模块。

    四、可重定位目标文件

    一个典型ELF可重定位目标文件包含的几个节:
    .text,.data,.bss,.rodata,.symtab,.rel.text,.rel.data,.debug,.line,.strtab

    五、符号和符号表

    在链接器的上下文中,有三种不同的符号:

    1、由模块m定义并能被其他模块引用的全局符号

    2、由其他模块定义和引用并被模块m引用的全局符号

    3、只被模块m定义和引用的局部符号

    六、Linux链接器使用的处理多重定义的符号名的规则

    1、不允许有多个同名的强符号

    2、如果有一个强符号和多个弱符号同名,那么选择强符号

    3、如果有多个弱符号同名,那么从这些弱符号中任意选择一个

    八、小结

    链接器的两个主要任务是符号解析和重定位,符号解析将目标文件中的每个全局符号都绑定到一个唯一的定义,而重定位确定每个符号的最终内存地址,并修改对那些目标的引用。

    静态链接器是由像GCC这样的编译驱动程序调用的。

    多个目标文件可以被链接到一个单独的静态库中。

    加载器将可执行文件的内容映射到内存,并运行这个程序。

    被编译为位置无关代码的共享库可以加载到任何地方,也可以在运行时被多个进程共享。

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

    • 问题1:
      对于Amdahl定律的时间计算方面不理解

    • 问题1解决方案:
      进行实例计算

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

    在Linux系统下用终端运行hello.c

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

    1、对于深入了解计算机系统的学习,虽然我们无法在学习之后完成对操作系统的编写,但是可以使我们在编写代码的过程中考虑代码运行所耗费的时间和空间成本,可使我们的代码效率得到提高。

    2、对计算机系统的初步了解让我初步理解了计算机工作时软件与硬件之间的相互联系与配合。。

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

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

    • 计划学习时间:25小时

    • 实际学习时间:20小时

    • 改进情况:

      ---恢复内容结束---

  • 相关阅读:
    Solr开发文档(转)
    使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
    用nodejs搭建最简单、轻量化的http server(转)
    [ASP.NET MVC 小牛之路]03
    【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器(转)
    我是如何在SQLServer中处理每天四亿三千万记录的(转)
    pycharm Unresolved reference 无法引入包
    vue 学习
    《插件》一个比较好用的 chrome浏览器的json格式化插件
    ip地址正则表达式
  • 原文地址:https://www.cnblogs.com/LeeX1997/p/7587146.html
Copyright © 2020-2023  润新知