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

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

    每章一个问题

    • 第1章:我们输入的命令,计算机是如何将其转换为计算机的语言?
    • 第2章:计算机在计算的过程中产生溢出要如何保证计算的精确度?
    • 第3章:及时编译的时候,如果输错了命令只能从头开始吗?有其他的办法吗?
    • 第4章: 处理器是如何跟踪每一条命令的?又是如何分配每一条命令的空间的?
    • 第5章:既然程序可以分块,那么,模块被其他程序调用修改值的时候,是不是会有专门的区域存储修改的值?
    • 第6章:一个程序只要满足了高速缓存是不是就可以称作是高效率的程序呢?
    • 第7章:链接器在使用的时候有什么限制吗?
    • 第8章:fork函数与之前java中的catch有什么区别?
    • 第9章:虚拟内存与动态分配的malloc有冲突吗?两者是什么关系?
    • 第10章:Unix I/O与标准I/O函数之间的关系是什么?两者要如何互换?
    • 第11章:linux下的网络编程有什么优势?
    • 第12章:线程化的程序中如何找到最适合最高效的函数?

    教材学习内容总结

    Linux快捷键复习

    • Ctrl+Alt+T 打开新窗口
    • Ctrl+Shift+T 打开新的标签页
    • Ctrl+Shift+Q 关闭当前窗口
    • Ctrl+Shift+w 关闭当前标签页
    • Ctrl+空格切换输入法

    位+上下文

    • 源程序是由0和1组成的位(bit)序列。
    • 8个位被组织成一组,称为字节。
    • 16个位称为字

    程序的生命周期(gcc)

    1. 用vi编辑程序,编译,运行

      • 编译

      • 运行
    2. 预处理

    3. 编译

    4. 汇编

    5. 链接:用链接器将函数链接到程序

    硬件组成

    1. 总线:贯穿整个系统,相当于各字节间的连接,总线上有接口,每次只传送1个字。
    2. I/O设备:输入与输出相当于计算机与外界沟通的桥梁
      • 键盘
      • 鼠标
      • 显示器
      • 磁盘
    3. 主存:存储程序和程序处理的数据,由一组动态随机存取存储器芯片组成。
    4. 处理器:中央处理单元,相当于计算机的大脑,不断处理接收到的指令,维持计算机的运行。

    存储设备的层次结构

    从上至下,设备的访问速度越来越慢,容量越来越大。高一层的存储器将作为低一层存储器存储器的高速缓存。

    进程、线程、文件、并发、并行

    • 一个系统上可以有多个进程
    • 一个进程可以由多个线程组成
    • 多线程比单线程更高效
    • 进程就像是线程上的单元,而线程就是解决每个程序的控制流。
    • 文件就是字节序列,I/O设备包括磁盘、键盘、显示器甚至网络
    • 并发:一个同时具有多个活动的系统。
    • 并行:用并发使一个系统运行得更快。

    三个抽象

    • 文件是对I/O的抽象
    • 虚拟存储器是对程序存储器的抽象
    • 进程是对一个正在运行的程序的抽象

    链接

    相当于一个整合,将各部分整合成一个单一的可执行的文件。

    • 符号解析,将每一个定义与引用联系起来
    • 重定位,把定义与位置联系起来,修改引用后指向新的位置实现重定位。
    • 目标文件就是字节块的集合
      • 可重定位的
      • 可执行的
      • 共享的:可以被动态地加载并链接

    符号和符号表

    • 目标模块定义的可被其他模块引用的全局符号
    • 其他模块定义的可被目标模块引用的全局符号(外部符号)
    • 目标模块定义的只可被目标模块引用的本地符号

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

    • 问题1:链接器如何解析多重定义的全局符号?但是,链接器是如何筛选不同定义的全局变量呢?全局变量不是不变的吗?

    • 问题1解决方案:看了书上的解释,我知道了“符号”就像是我们熟知的变量和函数一样。全局符号就相当于动态变量,本地符号就相当于本地的静态变量。

    根据强弱符号的定义,Unix链接器使用下面的规则来处理多重定义的符号:

    1)不允许有多个强符号

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

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

    没有定义的全局变量就是弱符号,强符号被定义了多次就会出现错误。如果是同一个符号但有强有弱,链接器就会自动选择模块中的强符号。

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

    • 问题1:将程序进行预处理
    • 问题1解决方案:在gcc中,gcc -o用来指定输出文件的文件名。输入gcc -E hello.c -o hello.i,结果正确。

    代码托管

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

    暂无

    结对及互评

    暂无

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

    一个暑假过去了,发现自己好多虚拟机的操作都不像之前那么熟练了。感觉还是得多练,要多敲代码才能更好地学习。这一周学习了第一章和第七章,前面的内容掌握得差不多了,但是,第七章的链接还不是很理解,后续会继续学习。然后自己敲了一些C语言的小程序,对用vim写代码也熟练了一点。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 37/37 1/1 25/25
    • 计划学习时间:20小时

    • 实际学习时间:25小时

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

    参考资料

  • 相关阅读:
    VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)
    VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)
    VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)
    Getmemory问题
    计算后缀表达式
    0-1背包问题
    不抛异常的swap函数
    输出n*n矩阵
    字符串全排列输出
    判断主机字节
  • 原文地址:https://www.cnblogs.com/-zyl/p/7587757.html
Copyright © 2011-2022 走看看