SLP(Chapter 0、1):绪论

why 《系统级编程》?

通过操作系统(OS)课程我们明白了进程管理,同步互斥,虚拟内存管理,文件管理
但我们仍然不清楚进程化为进程映像后,程序究竟是如何执行的?
因此当程序运行出现问题时,很难准确定位错误

Some Question

  1. What is Computer System?
    A computer system is a collection of hardware and software components that work together to run computer programs.
    (通过层次,抽象,转化得到以下层次)
    SLP(Chapter 0、1):绪论
  2. 操作系统有两个主要目的:
    (1) 保护硬件不被失控的应用程序滥用;
    (2) 为应用程序提供简单和统一的机制,用于操作复杂和不同的低级硬件设备。
    SLP(Chapter 0、1):绪论
    文件是 I/O 设备的抽象。
    虚拟内存是主内存和磁盘 I/O 设备的抽象。
    进程是处理器、主内存和 I/O 设备的抽象。
  3. What is Computer Program?
    Computer programs are instructions for a computer.

程序运行过程

1. 源代码

同时使用位信息和上下文表示
位信息 (information of bits) : 都是使用位表示信息
上下文 (context) : 不同上下文同样的位信息可以是整型或者字符串

2. 编译(源代码 → 硬件可识别的机器码)

完成变量表

3. 执行(可执行程序→进程印像)

总线:就像我们人体中的血管,用于在部件之间来回传递信息。
通常设计为传输固定大小的字节块(称为word)。
传输的信息包括地址、数据和控制信号。

CPU(计算机的核心): 负责执行指令。
程序计数器(PC)将告诉下一次要执行的指令,ALU 将执行计算和逻辑操作。准备使用的说明和数据存储在寄存器中。
创建进程时,指令将由 CPU 逐个执行。
SLP(Chapter 0、1):绪论
南桥:I/O系统间总线管理(离CPU远)
北桥:CPU,内存,图像处理器等离CPU近的总线管理(被集成到CPU里)
为什么需要 I/O 桥?I/O 总线通信的管理

进程

SLP(Chapter 0、1):绪论
进程是运行程序的操作系统的抽象。
并发:多个进程可以在同一个系统上同时运行,并且每个进程似乎都有硬件的独占使用。不同流程的指令是交错执行的。
为了保持每个进程正常运行,系统将保持每个进程的状态。状态称为上下文。它包含 PC 的当前值、寄存器文件和主内存的内容。当操作系统决定将控制从当前进程转移到某个新进程时,它
通过保存当前进程的上下文、还原新进程的上下文,然后将控制权传递给新进程,执行上下文切换。

虚拟内存(进程印像)

在进程的帮助下,操作系统提供了一种错觉,认为程序是唯一在系统上运行的程序。
虚拟内存在提供错觉中起着重要的作用。每个进程具有相同的统一内存视图,称为其虚拟地址空间。(Linux 进程的虚拟地址空间如图所示。Windows 系统使用类似的布局。)请注意,图中的地址从底部增加到顶部。
红色矩形中的地址空间保留给__操作系统中的代码和数据__。
绿色矩形中的地址空间包含__用户进程定义的代码和数据__。您可以经常在图上讨论栈和堆。请注意,栈和堆朝相反的方向增长。这就是为什么在问题 1 中,定义变量 i 和数组的顺序将导致不同的性能。
蓝色矩形,这是我们使用函数访问 IO 设备的文件抽象的地方。
第3、7和10章将讨论详细内容。这些主题对于避免安全错误非常重要。
SLP(Chapter 0、1):绪论