1 信息就是位+上下文

  • 信息:任何一段文本,一段代码,一块内存中的数据,在计算机里面,都称为信息
  • :这些信息,在计算机中会存储成0 1 组成的位,8位会构成一组,称之为字节
  • 上下文:如何在这些0 1构成的位中,区分出我们需要的信息。这就需要上下文,比如说一段代码通过ASCII编码成计算机认识的,通过ASCII解码成我们能看懂的代码片段。这个过程中,ASCII规则就可以称之为上下文

    2 编译过程

  • 编译过程:预处理器,编译器,汇编器,链接器。

  • 汇编代码:为不同的语言和不同的编译器提供了通用的输出语言。

    3 系统硬件总览

  • 总线:携带字节信息,并在系统各个部件中传输。通常总线被设计成传送定长的字节块。32位4字节,64位8字节。

  • IO设备:每个IO设备都有一个控制器或适配器作为媒介与IO总线连接。

image.png

  • 主存:内存设备。
  • 处理器: 我们所说的cpu。

    4 存储器的层次结构

  • L1 L2 L3 高速缓存,作为数据暂时的集结区域,存放处理器近期可能需要访问的数据。程序具有访问局部区域代码和数据的趋势,这部分数据和代码通常存放在高速缓存中。

  • L1 L2 L3 存储容量递增,速度递减。

image.png

5 操作系统

5.1 进程

  • 上下文:操作系统保持跟踪进程运行所需的所有状态信息,这种状态信息,称为上下文
  • 上下文切换:操作系统决定把控制权从当前进程转移到其他进程时,就会进行上下文切换,保存当前进程的上下文,恢复或创建新进程的上下文。
  • 从一个进程到另一个进程的转换,是有操作系统内核决定的。

    5.2 虚拟内存

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

image.png

  • 程序代码和数据:起始部分是程序代码和程序中的常量,全局变量。
  • 堆:程序中malloc动态创建。
  • 共享库:用来存放像C标准库和数学库这样的共享代码和数据区域。
  • 栈:位于用户虚拟地址空间顶部的是用户栈,编译器用它实现函数调用。
  • 内核虚拟内存:为内核保留,应用程序是无法读取的。

    5.3 文件

  • 文件就是字节序列。应用程序通过Unix IO接口操作文件,无需了解磁盘的各种细节。