计算机硬件简介-CPU
操作系统与运行操作系统的内核硬件关系密切。操作系统扩展了计算机指令集并管理计算机的资源。因此,操作系统因此必须足够了解硬件的运行,这里我们先简要介绍一下现代计算机中的计算机硬件。
简单个人计算机的组件
从概念上来看,一台简单的个人电脑可以被抽象为上面这种相似的模型,CPU、内存、V/O 设备都和总线串联起来并通过总线与其他设备进行通信。
CPU
CPU 是计算机的大脑,它主要和内存进行交互,从内存中提取指令并执行它。
一个 CPU 的执行周期是从内存中提取第一条指令、解码并决定它的类型和操作数,执行,然后再提取、解码执行后续的指令,重复该循环直到程序运行完毕。
每个 CPU 都有一组可以执行的特定指令集。因此,x86 的 CPU 不能执行 ARM 的程序并且 ARM 的 CPU 也不能执行 x86 的程序。
由于访问内存获取执行或数据要比执行指令花费的时间长,因此所有的 CPU 内部都会包含一些寄存器来保存关键变量和临时结果。因此,在指令集中通常会有一些指令用于把关键字从内存中加载到寄存器中,以及把关键字从寄存器存入到内存中。还有一些其他的指令会把来自寄存器和内存的操作数进行组合,例如 add 操作就会把两个操作数相加并把结果保存到内存中。
除了用于保存变量和临时结果的通用寄存器外,大多数计算机还具有几个特殊的寄存器,这些寄存器对于程序员是可见的。其中之一就是程序计数器(program counter),程序计数器会指示下一条需要从内存提取指令的地址。提取指令后,程序计数器将更新为下一条需要提取的地址。
另一个寄存器是堆栈指针(stack pointer),它指向内存中当前栈的顶端。堆栈指针会包含输入过程中的有关参数、局部变量以及没有保存在寄存器中的临时变量。
还有一个寄存器是 PSWProgram Status Word)程序状态字寄存器,这个寄存器是由操作系统维护的8个字节(64位) long 类型的数据集合。它会跟踪当前系统的状态。除非发生系统结束,否则我们可以忽略 PSW。用户程序通常可以读取整个PSW,但通常只能写入其某些字段。PSW 在系统调用和1/0 中起着重要作用。
操作系统必须了解所有的寄存器。在时间多路复用(time multiplexing)的 CPU 中,操作系统往往停止运行一个程序转而运行另外一个。每次当操作系统停止运行一个程序时,操作系统会保存所有寄存器的值,以便于后续重新运行该程序。
为了提升性能,CPU 设计人员早就放弃了同时去读取、解码和执行一条简单的指令。许多现代的 CPU 都具有同时读取多条指令的机制。
例如,一个 CPU 可能会有单独访问、解码和执行单元,所以,当 CPU 执行第 N 条指令时,还可以对N+1条指令解码,还可以读取 N+2 条指令。像这样的组织形式被称为流水线(pipeline):

比流水线更先进的设计是超标量(superscalar)CPu,下面是超标量 CPU的设计

在上面这个设计中,存在多个执行单元,例如,一个用来进行整数运算、一个用来浮点数运算、一个用来布尔运算。两个或者更多的指令被一次性取出、解码并放入缓冲区中,直至它们执行完毕。只要一个执行单元空闲,就会去检查缓冲区是否有可以执行的指令。如果有,就把指令从缓冲区中取出并执行。
这种设计的含义是应用程序通常是无序执行的。在大多数情况下,硬件负责保证这种运算的结果与顺序执行指令时的结果相同。
除了用在嵌入式系统中非常简单的 CPU 之外,多数 CPU 都有两种模式,即前面已经提到的内核态和用户态。
通常情况下,PSW 寄存器中的一个二进制位会控制当前状态是内核态还是用户态。当运行在内核态时,CPU 能够执行任何指令集中的指令并且能够使用硬件的功能。在台式机和服务器上,操作系统通常以内核模式运行,从而可以访问完整的硬件。在大多数嵌入式系统中,一部分运行在内核态下,剩下的一部分运行在用户态下。
用户应用程序通常运行在用户态下,在用户态下,CPU 只能执行指令集中的一部分并且只能访问硬件的一部分功能。一般情况下,在用户态下,有关 V/O 和内存保护的所有指令是禁止执行的。当然,设置 PSW 模式的二进制位为内核态也是禁止的。
为了获取操作系统的服务,用户程序必须使用系统调用(system call),系统调用会转换为内核态并且调用操作系统。TRAP 指令用于把用户态切换为内核态并启用操作系统。当有关工作完成之后,在系统调用后面的指令会把控制权交给用户程序。我们会在后面探讨操作系统的调用细节。
-
如何判断相亲是否成功,很多单身朋友在相亲后不太能判断对方是否对自己满意,迟迟没有行动就会造成误会,相亲过程及结束后总是会有些迹象表明对这次见面的结果,那么该如何判断相亲是否成功?1.对方身体肢体反应身体反应是最真实的,如果不喜欢一个人,不会跟你近距离的接触,如果当你主动给ta夹菜时,ta表现的很开心[详细]
-
大家现在基本都处于一个快节奏的时代,很多事情都讲究效率,感情也不例外,从而导致离婚率提高了不少。前两天有个人问我怎么样才能提高表白的成功率?个人认为表白是一件非常私人的事情,成功率高与否往往取决于很多因素,包括你和对方的关系、对方的性格、你的表达方式等等。以下是一些可能有用的建议分享给需要的朋友:1[详细]
-
一个男人爱不爱你,其实你很容易分辨出来,因为他的一举一动,都能带给你不一样的感受。比如,他对你的态度,会影响到你的心情。在生活中,他对你的态度,会让你觉得很委屈。如果一个男人,总是能让你在他面前受尽委屈,那么就说明他根本不在乎你。因为在他心里,根本就没有在意过你的感受,更不会把你放在心上。他不会顾及[详细]
-
问你几个问题:你和你丈夫最后一次尽情聊天是什么时候?他最后一次主动和你分享生活中有趣的事情是什么时候?他最后一次和你聊共同朋友是什么时候?你有没有注意到,不知道从什么时候开始,你们之间的交流变得越来越少,见面的时候也不知道该如何无话不谈的继续下去?即使我们每天一起吃饭,看剧,睡觉,我们总是无话可说。[详细]
-
感情里经常有吵吵闹闹,能够在吵吵闹闹中走过来的,最后都是非常幸福的。而那些走不过来的情侣,往往都有一方会很心痛,另一方则是毫无波澜。毕竟情侣真的要分手了,大多数都是有一方已经累了、或是不爱了,才会把那些绝情的话甩给对方。那么在分手的时候,什么话会让女人感到绝情呢?一起来看看吧。1.我想我们的性格不合[详细]