1. Processor对于OS学习需要理解的知识
理解关于处理器(CPU)的内容对于学习操作系统是非常重要的,以下是几个关键原因:
1) 理解操作系统的核心功能
操作系统的核心功能之一是管理和协调硬件资源,其中最重要的资源就是CPU。了解CPU的工作原理(指令的获取、解码和执行循环)、指令集、寄存器及其操作模式有助于理解操作系统如何调度进程、处理中断和执行系统调用。
2) 理解进程调度和多任务处理
CPU的高级设计(如流水线和超标量)与操作系统的进程调度密切相关。理解这些概念有助于了解如何提高系统的效率,以及操作系统如何在多个任务之间切换和分配CPU时间。
3) 理解系统调用机制
系统调用是用户程序与操作系统交互的主要方式。了解TRAP指令和模式切换(用户模式和内核模式)的原理,能够帮助你更好地理解系统调用的实现及其在操作系统中的重要性。
4) 理解异常处理
处理器在执行指令时可能会遇到异常情况(如除以0),这些异常需要操作系统进行处理。理解异常处理机制有助于理解操作系统如何确保系统的稳定性和安全性。
5) 理解编译器和操作系统设计的复杂性
CPU的流水线和超标量设计增加了编译器和操作系统设计的复杂性。了解这些复杂性有助于理解为什么操作系统和编译器设计需要考虑各种边界情况和优化手段
需要熟练掌握的内容
尽管这些内容看起来很抽象,但在学习操作系统时,需要对以下方面有基本的理解:
- CPU的基本工作原理:包括指令的获取、解码和执行循环。
- 指令集和寄存器:理解基本的指令操作和寄存器的作用。
- 内核模式和用户模式:理解不同模式下CPU的权限和操作。
- 系统调用机制:理解用户程序如何与操作系统交互,以及TRAP指令的作用。
- 高级CPU设计:对流水线和超标量的基本概念有一个大致了解。
2. Processor的重点内容
1)CPU的基本功能:
- “大脑”:CPU是计算机的“大脑”,负责从内存中获取指令并执行它们。
- 基本循环:每个CPU的基本循环包括获取指令、解码指令、执行指令,然后重复这个过程直到程序结束。
2)指令集:
- 每种CPU都有特定的指令集,无法跨平台执行。比如x86处理器不能执行ARM的程序,反之亦然。
- 通常包括从内存加载数据到寄存器、将寄存器中的数据存储到内存的指令,以及在寄存器或内存之间进行操作(例如加法)的指令。
3)寄存器:
- 由于从内存中获取指令或数据需要更长时间,CPU内部有一些寄存器来存储关键变量和临时结果,减少访问内存的时间。
特殊寄存器:包括程序计数器、堆栈指针和程序状态字,分别用于指令地址、堆栈管理和状态管理
- 程序计数器(Program Counter, PC):存储下一条将被获取的指令的内存地址。在指令被获取后,程序计数器更新为下一条指令的地址。
- 堆栈指针(Stack Pointer, SP):指向当前堆栈的顶部。堆栈保存每个已进入但未退出的过程的帧,帧中包含输入参数、局部变量和临时变量。
- 程序状态字(Program Status Word, PSW):包含条件码位(由比较指令设置)、CPU优先级、模式(用户模式或内核模式)及其他控制位。用户程序通常可以读取整个PSW,但只能写入其中的部分字段。PSW在系统调用和I/O操作中起重要作用。
4)操作系统对寄存器的管理:
- 操作系统需要管理所有寄存器,确保在切换进程时能够正确保存和恢复寄存器的状态。在时间复用CPU时,操作系统会停止正在运行的程序以启动另一个程序。每次停止运行程序时,操作系统必须保存所有寄存器,以便在程序重新运行时恢复它们。
5)高级技术(Pipeline & Superscalar)
-
流水线 (Pipeline):
- 概念:为了提高性能,现代CPU设计者不再使用简单的一次获取、解码和执行一条指令的模型。相反,CPU可以同时处理多条指令。例如,当CPU在执行指令n时,它可以解码指令n+1并获取指令n+2。
- 优点:提高了指令执行的效率。
- 挑战:如果前一条指令是条件分支指令,并且被执行,那么即使已经进入流水线的指令也必须执行。这增加了编译器和操作系统设计的复杂性。
-
超标量 (Superscalar):
- 概念:这种设计中,CPU有多个执行单元,例如整数运算单元、浮点运算单元和布尔运算单元。多条指令可以同时被获取、解码,并放入一个缓冲区,等待执行。
- 优点:允许指令并行执行,提高了性能。
- 挑战:指令可能会乱序执行。硬件需要确保最终结果与顺序执行的一致性,但这增加了操作系统的复杂性。
6)操作模式
-
内核模式 (Kernel Mode):
特性:在内核模式下,CPU可以执行指令集中的所有指令,并使用硬件的所有功能。操作系统通常运行在内核模式下,以便完全访问硬件。 -
用户模式 (User Mode):
特性:用户模式下的程序只能执行指令集的一个子集,并且只能访问部分硬件功能。涉及I/O和内存保护的指令在用户模式下被禁止。
7)系统调用 (System Call)
- 概念:用户程序需要操作系统提供服务时,必须进行系统调用。系统调用会触发TRAP指令,从用户模式切换到内核模式,并启动操作系统。当工作完成后,控制权会返回用户程序。
- TRAP指令:除了用于系统调用,TRAP还用于硬件发出的异常情况(如除以0或浮点数下溢)。操作系统会接管控制权,决定如何处理这些异常。
3. 多线程和多核芯片(Multithreaded and Multicore Chips)
操作系统与硬件交互:
- 了解CPU的工作原理和指令集有助于理解操作系统如何管理进程和线程。
- 知道多线程和多核处理器的设计有助于理解操作系统如何进行并行处理和资源分配。
系统调度与资源管理:
- 多线程和多核设计直接影响操作系统的调度策略和资源管理策略。
- 了解这些概念可以帮助你理解操作系统如何实现高效的任务调度和资源利用。
1)多线程:
将多个功能单元和一些控制逻辑复制到芯片上。例如,Intel的Pentium 4引入了多线程(或超线程),允许CPU保存两个不同线程的状态,并在纳秒级别切换。这使得CPU可以在一个进程等待内存读取时,切换到另一个进程执行
2)多线程对操作系统的影响
每个线程对于操作系统来说都像是一个独立的CPU。例如,一个具有两个实际CPU的系统,每个CPU有两个线程,操作系统会看到四个“CPU”。如果只有足够的工作让两个CPU忙碌,操作系统可能会错误地在同一个CPU上调度两个线程,而另一个CPU空闲,这样效率会低很多。
3)多核芯片
- 定义:多核芯片是在单个芯片上包含多个独立的处理器(或核)。例如,Intel Xeon Phi和Tilera TilePro已经在单个芯片上拥有超过60个核。
- 需求:使用多核芯片需要多处理器操作系统,以有效地管理和利用这些核。
4)图形处理单元(GPU)
- 定义:GPU是拥有成千上万个小核的处理器,非常适合进行许多并行的小计算,如图形应用中的多边形渲染。
- 特点:GPU不太适合串行任务,并且编程困难。尽管GPU可以用于操作系统中的加密或网络流量处理,但不太可能操作系统的主要部分运行在GPU上。