• 深入理解计算机系统第一章


    深入理解计算机系统#

    1.1##

    • 010101(比特序列)八位一字节,一字节表示某些文本字符。ASCII即用单字节大小的整数值表示字符
    • 只有ASCII码字符构成的文件为文本文件,其他为二进制文件

    1.2##

    • 预处理
      • 根据#读取头文件中内容并插入原文本文件.c得到.i文本文件
    • 编译
      • 编译器(ccl)将.i文本文件翻译成.s文本文件,包含汇编语言程序
    • 汇编
      • 将.s翻译成机械语言指令,打包成可重定位目标程序格式,保存在.o二进制文件中
    • 链接
      • 调用printf.o中的printf函数,合并入.o程序,变为可执行目标文件

    1.3##

    • 了解编译系统——好!

    1.4##

    • shell是一个命令行解释器

    1.4.1##

    1. 总线
      • 贯穿整个系统,携带并传递信息字节,通常传输定长的字节块:32位——4字节,64位——8字节
    2. I/O设备
      • 输入/输出设备(In/Out)联系系统与外部:键鼠、显示器、磁盘……
      • I/O设备通过控制器适配器与I/O总线相连。相同的是,控制器和适配器用于在I/O设备和总线之间传递信息。不同的是,控制器是设备本身或系统的主板上的芯片组,适配器是插在主板插槽上的
    3. 主存
      • 主存在处理执行程序时用来存放程序和程序处理的数据。物理上是由一组动态随机存取存储器(DRAM)芯片组成。逻辑上是一个线性字节数组
    4. 处理器
      • CPU解释主存中指令,核心是程序计数器(PC)(此处核心指关键设备),为一字大小储存设备,PC始终指向主存中某条机械语言指令
      • 处理器从PC指向的内存处读取、结束、执行指令,然后更新PC

    1.5##

    • 存储空间越大,运行越慢。于是在空间小的高速处理器与空间大的低速主存之间插入高速缓存(cache),利用高速缓存的局部性原理,在高速内存中存放可能经常访问的数据,使大部分操作可在高速缓存中完成。

    1.6##

    • 通过一个从小到大,从快到慢(寄存器->高速缓存->主存->二级存储)的存储器层次结构,可以提高程序的性能。

    1.7##

    • 操作系统连接程序和硬件。
    • 操作系统的基本功能:
      1. 防止硬件被失控的应用程序滥用
      2. 向应用程序提供简单一致的机制来控制复杂的低级硬件设备

    1.7.1##

    • 进程是计算机科学中最重要和最成功的概念之一
    • 处理器看似并发运行程序,实则交错切换执行。例如需要运行的进程数多于可运行CPU。被称为上下文切换:保存当前进程的上下文、恢复新进程的上下文,将控制权传递到新进程。
    • 进程转换由系统内核(kernel)管理,内核是操作系统代码常驻主存的部分,它是系统管理全部进程所用代码和数据结构的集合。
    • 第八章

    1.7.2##

    • 多线程并发balabalaba在第十二章

    1.7.3##

    低地址

    • 程序代码与数据——在开始就被规定大小
    • ——在运行是可动态扩展或收缩
    • 共享库——存放C标准库和数学库这样的公用代码(第七章)
    • ——编译器用它来实现函数调用,调用增长,返回收缩(第三章)
    • 内存虚拟内存——为内核保留,不允许程序读写或调用

    高地址

    1.7.4##

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

    1.8##

    • 网络可视为一个I/O设备,多个系统通过网络读取/发送其他/自己的数据

    1.9##

    • 系统是硬件与软件互相交织的集合体

    1.9.1##

    • Amdahl定律:想要显著加速整个系统,必须提升全系统中相当大的部分的速度(考虑到分权)

    1.9.2##

    • 并发:一个同时具有多个活动的系统
    • 并行:用并发来使一个系统运行地更快
      1. 线程级并发
        • 我们能够设计出同时有多个程序执行的系统,这导致了并发
        • 超线程/同时多线程允许一个cpu执行多个控制流
      2. 指令级并行
        • 流水线通过将执行一条指令所需要的活动划分为不同的步骤,将处理器的硬件组织成一系列的阶段,每个阶段执行一个步骤。这些阶段可以并行地操作,用来处理不同指令的不同部分
      3. 单指令、多数据并行
        • 在最低层次上,一些特殊的硬件允许一条指令产生多个可并行执行的操作,这种方式被称为单指令、多数据

    1.9.3##

    • 抽象的使用是计算机科学中最为重要的概念之一。
    • 文件是多I/O设备的抽象,虚拟内存是对程序存储器的抽象,进程是对一个正在运行的程序的抽象,虚拟机是对整个计算机的抽象。
  • 相关阅读:
    iOS- 网络访问JSON数据类型与XML数据类型的实现思路及它们之间的区别
    iOS- AVSpeechSynthesizer——iOS7语音合成器
    iOS- 利用AFNetworking(AFN)
    iOS- 利用AFNetworking(AFN)
    iOS- NSThread/NSOperation/GCD 三种多线程技术的对比及实现
    iOS- 多线程技术的概述及优点
    150. Best Time to Buy and Sell Stock II【medium】
    213. String Compression【easy】
    495. Implement Stack【easy】
    547. Intersection of Two Arrays【easy】
  • 原文地址:https://www.cnblogs.com/Ziggy29/p/11312673.html
Copyright © 2020-2023  润新知