zoukankan      html  css  js  c++  java
  • 深入理解计算机系统-第一章

    第一章主要是对计算机系统的一个概述,以及计算机系统与IO设备等如何交互,计算机硬件的抽象等。

    1.1 信息 = 位 + 上下文

    计算机使用二进制的原因:电子电路采用的基本元件只有通和断两种状态,一切运算在计算机硬件内部都会转换为元件的通和断的状态,使用二进制作为电子计算机的运算语言比较容易实现。

    位 bit 表示信息的最小单位只能是0或1
    字节 byte 等于8个bit 是计算机数据处理的基本单位

    系统中所有的信息:磁盘、程序、用户数据等都是一串bit表示的,在不同的上下文下,同一串bit序列表示的意义可能不同 所以 信息 = 位 + 上下文


    1.2 程序的在系统中的编译过程

    #include <stdio.h>
    int main(){
        printf("hello world");
        return 0;
    }
    


    预处理器:读取stdio.h内容 插入程序文本生成 hello.i
    编译器:生成汇编程序 hello.s
    汇编器:编译成机器语言指令 生成可重定位目标程序 hello.o
    链接器:合并调用的函数 例如printf函数已经提前生成了printf.o,得到可执行目标文件hello,可以加载到内存有系统执行

    汇编语言:使得不同的高级语言经过编译之后都能得到相同语法、格式的输出语句。


    1.3 处理器解读指令集

    运行编译后的可执行目标文件 hello

    ./hello
    

    在shell中输入上述指令,如果指令不是内置的shell命令,就会认为是一个可执行文件 ,加载到内存并运行。

    1.3.1系统硬件组成


    1. 总线
    贯穿整个系统的一组电子管道,称作总线,携带信息字节并在各个部件之间传输

    2. I/O设备
    I/O设备(输入/输出设备)是系统与外部世界的联系通道,I/O设备通过控制器或适配器与I/O总线相连,在通过I/O桥与系统总线或内存总线相通

    3. 主存
    是一个临时存储设备,是由一组 DRAM(动态随机存储器)芯片组成,
    用来在处理器处理程序时,存储程序和程序处理的数据,逻辑上是一个线性的字节数组。

    4. 处理器
    即CPU,是解释、执行存储在主存之中的程序的引擎
    内部包括寄存器文件,由多个寄存器组成,存储数据;
    程序计数器(PC)大小一个字 对应内存中的一个地址,指向主存中某条机器指令的地址
    ALU 逻辑运算单元
    处理器从通电开始就在不停的执行程序计数器指向的指令,执行完毕PC指向下一条指令
    - 加载:从主存中读取数据到寄存器
    - 存储:从寄存器读取值覆盖内存中的值
    - 操作:复制两个寄存器的内容到ALU进行逻辑运算,结果存储到一个寄存器中
    - 跳转:从指令本身中抽取一个字,并将字复制到程序计数器中,覆盖原有值

    ps: 一个字是多大 第二章中会介绍
    每台计算机都有一个字长,指明指针数据的标称大小
    字长为n位 ,一个字的大小就是2^n,可表示的范围即虚拟地址范围 0-2n-1,程序最多访问2n字节。(字节是最小寻址单位 所以是范围*字节)
    32位字长机器 2^32 4GB
    64位字长机器 2^64 虚拟地址空间 16EB
    大多数64位机器可以兼容32机器编译的程序 称为 向后兼容

    1.3.2 hello程序运行过程

    1.从shell中输入 ./hello,将字符读入寄存器,存储到主存中
    2.输入回车 shell程序认为输入结束,shell开始执行一系列命令来加载可执行的hello文件
    3.将编译后的hello文件的代码、数据从磁盘复制到主存 (利用了直接存储器存取 DMA 数据不经过CPU 直接从磁盘到内存)
    4.CPU开始执行hello文件对应的机器指令,将hello world字符从寄存器复制到显示器输出


    1.4 高速缓存 通过特殊总线直接连接处理器 SRAM

    程序执行过程中很大一部分时间都是花费在数据的复制上,
    磁盘——>内存
    主存——>寄存器
    寄存器——>I/O设备
    存储设备容量越大,存储设备运行越慢。所以磁盘与主存之间、处理器与主存之间读取速度的差距非常大
    针对处理器与主存之间的差异,系统设计者采用了更小更快的存储设备,称为高速缓存存储器,作为暂时存储区域,存储处理器近期可能需要的信息

    现代处理器中的缓存 L1、L2、L3

    1.5 存储设备层次结构

    存储器分类:

    • 静态随机存取存储器(SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持,例如CPU高速缓存

    • 动态随机存取存储器(DRAM)里面所储存的数据就需要周期性地更新,例如主存

    • 只读存储器(ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器 例如电脑磁盘

    1.6 操作系统对硬件的管理

    操作体统是 应用程序、软件和硬件之间的中间层

    向应用程序提供了简单、一致的机制来操控复杂的硬件

    操作系统对系统硬件进行了抽象

    • 进程
      进程是操作系统对正在运行的程序的一种抽象,感觉同时可以运行多个进程,而每个程序都好像在独占的使用处理器。
      单核CPU 同一个时刻只能运行一个进程,同时运行多个是通过进程切换来交错运行来实行(上下文切换),因为CPU计算速度远超与文件读取、网络传输等任务。
      多核CPU 则在同一时刻可以运行多个进程
      上下文包含许多信息,包括PC、寄存器文件和主存中的内容,上下文切换就要报错当前进程的状态,加载新进程的上下文,由操作系统内核(kernel)进行,内核不是一个独立的进程,是系统全部进程所用代码和数据结构的集合

    • 线程
      线程是操作系统可识别的最小执行单元
      现代操作系统中一个进程分为多个线程,这些线程共享该进程的上下文——>引发线程安全问题
      多处理器时,多进程可以使得程序运行的更快

    • 虚拟内存
      虚拟内存是主存的抽象概念,让每个进程都有一种独占主存的错觉,每个进程看到的主存是一致的 称为虚拟地址空间

    • 文件
      文件就是字节序列,每个I/O设备磁盘、键盘、显示器设置网络都可以视为文件,系统中的输入输出都通过调用系统函数来读写文件来进行。

    1.7 网络通信

    随着Internet的出现现代操作系统经常通过网络个其他系统连接到一起。网络可以视为I/O设备。

    系统可以从主存复制一段信息到网络视频日期发送到另一台机器
    也可以从网络适配器读取其他机器发来的数据

  • 相关阅读:
    论文总结
    20179212 2017-2018-2 《密码与安全新技术》课程总结
    20179212 2017-2018-2 《密码与安全新技术》第6周作业
    SM234
    2017-2018-2 20179212 《网络攻防》 作业
    20179212 2017-2018-2 《密码与安全新技术》第5周作业
    第十周作业 缓冲区溢出攻防研究
    密码与安全新技术
    9th
    8th
  • 原文地址:https://www.cnblogs.com/shinyrou/p/13141197.html
Copyright © 2011-2022 走看看