OS- -计算机硬件简介
OS- -计算机硬件简介
文章目录
- OS- -计算机硬件简介
- 计算机硬件简介
- 计算机硬件简介
- CPU
- 多线程和多核芯片
- 内存
- 寄存器
- 高速缓存
- 主存
- 磁盘
- I/O设备
- 总线
- 计算机启动过程
计算机硬件简介
现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输 出设备构成。
然而,程序员不会直接和这些硬件打交道
,而且每位程序员不可能会掌握所有计算机系统的细节,这样 我们就不用再编写代码了
所以 在硬件的基础之上,计算机安装了一层软件,这层软件能够通过响应用 户输入的指令达到控制硬件的效果,从而满足用户需求,这种软件称之为操作系统
;它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型。
我们一般常见的操作系统主要有Windowss Linux、FreeBSD或OS X ,这种带有图形界面的操作系 统被称为图形用户界面(Graphical User Interface, GUI),而基于文本、命令行的通常称为Shell
下面是我们所要探讨的操作系统的部件
这是一个操作系统的简化图:
- 最下面的是硬件,硬件包括芯片、电路板、磁盘、键盘、显示器等我们上 面提到的设备,在硬件之上是软件。
- 大部分计算机有两种运行模式:
内核态 和 用户态
- 软件中最基 础的部分是操作系统,它运行在内核态中,内核态也称为管态和核心态,它们都是操作系统 的运行状态,只不过是不同的叫法而已。操作系统具有硬件的访问权,可以执行机器能够运行的任何指 令。
- 软件的其余部分运行在 用户态 下。
- 用户接口程序(shell或者GUI)处于用户态中,并且它们位于用户态的最低层,允许用户运行其他程 序,例如Web浏览器、电子邮件阅读器、音乐播放器等。
- 而且,越靠近用户态的应用程序越容易编 写,如果你不喜欢某个电子邮件阅读器你可以重新写一个或者换一个,但
你不能自行写一个操作系统或 者是中断处理程序。这个程序由硬件保护,防止外部对其进行修改
。
计算机硬件简介
操作系统与运行操作系统的内核硬件关系密切。操作系统扩展了计算机指令集并管理计算机的资源。
因 此,操作系统因此必须足够了解硬件的运行,这里我们先简要介绍一下现代计算机中的计算机硬件。
从概念上来看,一台简单的个人电脑可以被抽象为上面这种相似的模型,CPU.内存、I/O设备都和总 线串联起来并通过总线与其他设备进行通信;
现代操作系统有着更为复杂的结构,会设计很多条总线
CPU
- CPU是计算机的大脑,它主要和内存进行交互,
从内存中提取指令并执行它
。一个CPU的执行周期是从内存中提取第一条指令、解码并决定它的类型和操作数,执行,然后再提取、解码执行后续的指令
。 重复该循环直到程序运行完毕。 每个CPU都有一组可以执行的特定指令集
。因此,x86的CPU不能执行ARM的程序并且ARM的 CPU也不能执行x86的程序。- 由于访问内存获取执行或数据要比执行指令花费的时间长,因此所有的 CPU内部都会包含一些寄存器来保存关键变量和临时结果。
- 因此,在
指令集中通常会有一些指令用于 把关键字从内存中加载到寄存器中,以及把关键字从寄存器存入到内存中。
- 还有一些其他的指令会把来 自寄存器和内存的操作数进行组合,例如add操作就会把两个操作数相加并把结果保存到内存中。
- 除了用于保存变量和临时结果的通用寄存器外,大多数计算机还具有几个特殊的寄存器,这些寄存器对 于程序员是可见的。
- 其中之一就是
程序计数器(program counter),程序计数器会指示下一条需要从 内存提取指令的地址。提取指令后,程序计数器将更新为下一条需要提取的地址
。 - 另一个寄存器是
堆栈指针
(stack pointer),它指向内存中当前栈的顶端
。堆栈指针会包含输入过程 中的有关参数、局部变量以及没有保存在寄存器中的临时变量。 - 还有一个寄存器是
PSW(Program Status Word)程序状态字寄存器
,这个寄存器是由操作系统维护 的8个字节(64位)long类型的数据集合。它会跟踪当前系统的状态
。除非发生系统结束,否则我们可以 忽略PSWO用户程序通常可以读取整个PSW,但通常只能写入其某些字段。PSW在系统调用和I/O 中起着重要作用。 - 操作系统必须了解所有的寄存器。
在时间多路复用(time multiplexing)的CPU中,操作系统往往 停止运行一个程序转而运行另外一个。每次当操作系统停止运行一个程序时,操作系统会保存所有寄存 器的值,以便于后续重新运行该程序
。 - 为了提升性能,
CPU设计人员早就放弃了同时去读取、解码和执行一条简单的指令。许多现代的CPU 都具有同时读取多条指令的机制
。 - 例如,一个CPU可能会有单独访问、解码和执行单元,所以,当 CPU执行第N条指令时,还可以对N + 1条指令解码,还可以读取N +2条指令。像这样的组织形式 被称为
流水线(pipeline)
- 在上面这个设计中,
存在多个执行单元
,例如,一个用来进行整数运算、一个用来浮点数运算、一个用 来布尔运算。两个或者更多的指令被一次性取出、解码并放入缓冲区中,直至它们执行完毕。 只要一个 执行单元空闲,就会去检查缓冲区是否有可以执行的指令
。如果有,就把指令从缓冲区中取出并执行。 这种设计的含义是应用程序通常是无序执行的- 在大多数情况下,硬件负责保证这种运算的结果与顺序 执行指令时的结果相同。
- 除了用在嵌入式系统中非常简单的CPU之外,多数CPU都有两种模式,即前面已经提到的内核态和 用户态。
- 通常情况下,
PSW寄存器中的一个二进制位会控制当前状态是内核态还是用户态。当运行在 内核态时,CPU能够执行任何指令集中的指令并且能够使用硬件的功能
。 - 在
台式机和服务器
上,操作 系统通常以内核模式运行,从而可以访问完整的硬件。 - 在
大多数嵌入式系统
中,一部分运行在内核态 下,剩下的一部分运行在用户态下。 - 用
户应用程序通常运行在用户态下
,在用户态下,CPU只能执行指令集中的一部分并且只能访问硬件 的一部分功能。 一般情况下,在用户态下,有关I/O和内存保护的所有指令是禁止执行的。当然,设置 PSW模式的二进制位为内核态也是禁止的。
- 为了获取操作系统的服务,用户程序
必须使用 系统调用(system call),系统调用会转换为内核态并 且调用操作系统
。 - TRAP指令
用于把用户态切换为内核态并启用操作系统
。当有关工作完成之后,在 系统调用后面的指令会把控制权交给用户程序
。 需要注意的是操作系统在进行系统调用时会存在陷阱。大部分的陷阱会导致硬件发出警告,比如说试图 被零除或浮点下溢等
。- 在所有的情况下,操作系统都能得到控制权并决定如何处理异常情况。有时, 由于出错的原因,程序不得不停止。
多线程和多核芯片
- Intel Pentinum 4也就是奔腾处理器引入了被称为多线程(multithreading)或 超线程 (hyperthreading, Intel公司的命名)的特性,x86处理器和其他一些CPU芯片就是这样做的。
- 包括SSPARC、Power5s Intel Xeon和Intel Core系列。近似地说,
多线程允许CPU保持两个不 同的线程状态并且在纳秒级(nanosecond)的时间完成切换
。 - 线程是一种轻量级的进程,例如,如果一个进程想要从内存中读取指令(这通常会经历几个时钟周期),多线程CPU则可以 切换至另一个线程。
多线程不会提供真正的并行处理。在一个时刻只有一个进程在运行。
- 对于操作系统来讲,多线程是有意义的,因为每个线程对操作系统来说都像是一个单个的CPU。比如 一个有两个CPU的操作系统,并且每个CPU运行两个线程,那么这对于操作系统来说就可能是4个 CPU。
- 除了多线程之外,现在许多CPU芯片上都具有四个、八个或更多完整的处理器或内核。多核芯片在其 上有效地承载了四个微型芯片,每个微型芯片都有自己的独立CPU。
带有共享L2缓存的4核芯片:
带有分离L2缓存的4核芯片:
- 如果要说在绝对核心数量方面,没有什么能赢过现代GPU(Graphics Processing Unit) , GPU是 指由成千上万个微核组成的处理器。它们擅长处理大量并行的简单计算。
内存
计算机中第二个主要的组件就是内存。理想情况下,内存应该非常快速(比执行一条指令要快,从而不会 拖慢CPU执行效率),而且足够大且便宜,但是目前的技术手段无法满足三者的需求。
于是采用了不同 的处理方式,存储器系统采用一种分层次的结构
- 顶层的存储器速度最高,但是容量最小,成本非常高,层级结构越向下,其访问效率越慢,容量越大, 但是造价也就越便宜。
寄存器
- 存储器的顶层是CPU中的寄存器,它们用和CPU 一样的材料制成,所以和CPU 一样快。
程序必须 在软件中自行管理这些寄存器(即决定如何使用它们)
高速缓存
- 位于寄存器下面的是高速缓存,它多数由硬件控制。主存被分割成 为64 字节,内存地址的0 - 63对应高速缓存行0 ,地址64 - 127对应高速缓存行的1,等等。
- 使用最频繁 的高速缓存行保存在位于CPU内部或非常靠近CPU的高速缓存中。
当应用程序需要从内存中读取关 键词的时候,高速缓存的硬件会检查所需要的高速缓存行是否在高速缓存中
。 如果在的话,那么这就 是高速缓存命中(cache hit)。高速缓存满足了该请求,并且没有通过总线将内存请求发送到主内 存
。- 高速缓存命中通常需要花费两个时钟周期。缓存未命中需要从内存中提取,这会消耗大量的时间。
- 高速缓存行会限制容量的大小因为它的造价非常昂贵。有一些机器会有两个或者三个高速缓存级别,每 一级高速缓存比前一级慢且容量更大。
- 缓存在计算机很多领域都扮演了非常重要的角色,不仅仅是RAM缓存行。
随机存储器(RAM):内存中最重要的一种,表示既可以从中读取数据,也可以写入数据。当机 器关闭时,内存中的信息会 丢失。
- 大量的可用资源被划分为小的部分,这些可用资源的一部分会获得比其他资源更频繁的使用权,缓存经 常用来提升性能。操作系统无时无刻的不在使用缓存。
- 例如,大多数操作系统在主机内存中保留(部 分)频繁使用的文件,以避免重复从磁盘重复获取。举个例子,类似于/home/ast/projects/minix3/src/kernel/clock. c这样的场路径名转换成的文件所在磁盘地址 的结果也可以保存缓存中,
以避免重复寻址。
- 另外,当一个Web页面(URL)的地址转换为网络地址(IP 地址)后,
这个转换结果也可以缓存起来供将来使用。
在任何缓存系统中,都会有下面这几个噬需解决的问题
- •何时把新的内容放进缓存
- •把新的内容应该放在缓存的哪一行
- •在需要空闲空间时,应该把哪块内容从缓存中移除
- •应该把移除的内容放在某个较大存储器的何处
- 并不是每个问题都与每种缓存情况有关。
对于CPU缓存中的主存缓存行,当有缓存未命中时,就会调 入新的内容。通常通过所引用内存地址的高位计算应该使用的缓存行
。 - 缓存是解决问题的一种好的方式,所以现代CPU设计了两种缓存。
第一级缓存
或者说是LI cache 总是位于CPU内部
,用来将已解码的指令调入CPU的执行引擎。对于那些频繁使用的关键字,多数 芯片有第二个L1 cache。典型的L1 cache的大小为16 KB
- 另外往往还设有
二级缓存
,也就是L2 cache ,用来存放最近使用过的关键字,一般是兆字节为单位
。L1 cache和L2 cache最大的不 同在于是否存在延迟。访问L1 cache没有任何的延迟,然而访问L2 cache会有1 - 2个时钟周期的 延后
。
- 什么是时钟周期?
计算机处理器或CPU的速度由时钟周期来确定,该时钟周期是振荡器两个脉冲之间的时间量
。- 一般而言,每秒脉冲数越高,计算机处理器处理信息的速度就越快。时钟速度以
Hz为单位测量,通常为兆赫(MHz)或千兆赫(GHz)。- 例如,一个4 GHz处理器每秒执行 4,000,000,000个时钟周期。
- 计算机处理器可以在每个时钟周期执行一条或多条指令,这具体取决于处理器的类型。
早期的计算机处理器和较慢的CPU在每个时钟周期只能执行一条指令,而现代处理器在每个时钟周期可以 执行多条指令。
主存
- 在上面的层次结构中再下一层是主存,这是内存系统的主力军,
主存通常叫做RAM(Random Access Memory)
- 由于1950年代和1960年代的计算机使用微小的可磁化铁氧体磁芯作为主存储器,因此旧时有时将其称为核心存储器。所有不能再高速缓存中得到满足的内存访问请求都会转往主存中。
- 除了主存之外,许多计算机还具有少量的非易失性随机存取存储器。它们与RAM不同,在电源断电 后,非易失性随机访问存储器并不会丢失内容。
R0M(Read Only Memory)中的内容一旦存储后就不 会再被修改
。它速度非常快而且便宜
。(如果有人问你,有没有什么又快又便宜的内存设备,那就是ROM 了)- 在计算机中,用于启动计算机的引导加载模块(也就是bootstrap )就存放在ROM中。另外,一 些I/O卡也采用ROM处理底层设备控制。
EEPROM(Electrically Erasable PROM)和闪存(flash memory)
也是非易失性的,但是与 ROM相反,它们可以擦除和重写。不过重写它们需要比写入RAM更多的时间
,所以它们的使用方式 与ROM相同,但是与ROM不同的是他们可以通过重写字段来纠正程序中出现的错误。- 闪存也通常用来作为便携性的存储媒介。闪存是数码相机中的胶卷,是便携式音乐播放器的磁盘。闪存 的速度介于RAM和磁盘之间。另外,与磁盘存储器不同的是,如果闪存擦除的次数太多,会出现磨 损。
- 还有一类是
CMOS,它是易失性
的。许多计算机都会使用CMOS存储器保持当前时间和日期。
磁盘
- 下一个层次是磁盘(硬盘),磁盘同RAM相比,每个二进制位的成本低了两个数量级,而且经常也有 两个数量级大的容量。
- 磁盘
唯一的问题是随机访问数据时间大约慢了三个数量级。磁盘访问慢的原因是 因为磁盘的构造不同
- 磁盘是一种机械装置,在一个磁盘中有一个或多个金属盘片,它们以5400rpm、7200rpm. 10800rpm 或更高的速度旋转。
- 从边缘开始有一个机械臂悬横在盘面上,这类似于老式播放塑料唱片33转唱机上 的拾音臂。
- 信息会写在磁盘一系列的同心圆上
。在任意一个给定臂的位置,每个磁头可以读取一段环形 区域,称为磁道(track)
。把一个给定臂的位置上的所有磁道合并起来,组成了一个柱面(cylinder)
- 每个磁道划分若干扇区,扇区的值是512字节。在现代磁盘中,较外部的柱面比较内部的柱面有更多的 扇区。
- 机械臂从一个柱面移动到相邻的柱面大约需要1ms。而随机移到一个柱面的典型时间为5ms至 10ms,具体情况以驱动器为准。
- 一旦磁臂到达正确的磁道上,驱动器必须等待所需的扇区旋转到磁头 之下,就开始读写,低端硬盘的速率是50MB/S ,而高速磁盘的速率是160MB/S
需要注意,
固态硬盘(Solid State Disk, SSD)不是磁盘
,固态硬盘并没有可以移动的部分,外形也不像唱片,并且数据是存储在存储器(闪存)中,与磁盘唯一的相似之处就是它也存储了 大量即使在电源关闭也不会丢失的数据。
- 许多计算机支持一种著名的
虚拟内存机制
,这种机制使得期望运行的存储空间大于实际的物理存储空 间。 - 其
方法是将程序放在磁盘上,而将主存作为一部分缓存,用来保存最频繁使用的部分程序,这种机 制需要快速映像内存地址,用来把程序生成的地址转换为有关字节在RAM中的物理地址
。 这种映像由 CPU中的一个称为 存储器管理单元(Memory Management Unit, MMU)的部件来完成。
缓存和MMU的出现是对系统的性能有很重要的影响,在多道程序系统中,从一个程序切换到另一个程 序的机制称为上下文切换(context switch),对来自缓存中的资源进行修改并把其写回磁盘是很有 必要的
。
I/O设备
CPU和存储器不是操作系统需要管理的全部
,I/O设备也与操作系统关系密切I/O设备一般包括两个部分:设备控制器和设备本身
。控制器本身是一块芯片或者一组芯片,它能 够控制物理设备。它能够接收操作系统的指令,例如,从设备中读取数据并完成数据的处理。- 在许多情况下,实际控制设备的过程是非常复杂而且存在诸多细节。
因此控制器的工作就是为操作系统 提供一个更简单(但仍然非常复杂)的接口
。也就是屏蔽物理细节。 - 任何复杂的东西都可以加一层代理 来解决,这是计算机或者人类社会很普世的一个解决方案
- I/O设备另一部分是设备本身,设备本身有一个相对简单的接口,这是因为接口既不能做很多工作,而 且也已经被标准化了。
- 例如,标准化后任何一个SATA磁盘控制器就可以适配任意一种SATA磁盘,所 以标准化是必要的。ATA代表 高级技术附件(AT Attachment),而SATA表示串行高级技术附件 (Serial ATA)。
AT是啥?它是旧M公司的第二代个人计算机的高级技术成果,使用1984年推出的6MHz 80286处理器,这个处理器是当时最强大的。
- 现在SATA是很多计算机的标准硬盘接口。由于实际的设备接口隐藏在控制器中,所以操作系统看到的是对控制器的接口,这个接口和设备接口有很大区别。
每种类型的设备控制器都是不同的,所以需要不同的软件进行控制
。专门与控制器进行信息交流,发出 命令处理指令接收响应的软件,称为 设备驱动程序(device driver)
。- 每个控制器厂家都应该针对 不同的操作系统提供不同的设备驱动程序。
- 为了使设备驱动程序能够工作,必须把它安装在操作系统中,这样能够使它在内核态中运行。要将设备 驱动程序装入操作系统,一般有三个途径
- •第一个途径是将内核与设备启动程序重新连接,然后重启系统。这是UNIX系统采用的工作方式
- •第
二个途径是在一个操作系统文件中设置一个入口,通知该文件需要一个设备驱动程序,然后重新 启动系统。在重新系统时,操作系统回寻找有关的设备启动程序并把它装载,这是Windows采 用的工作方式
- •第三个途径是操作系统能够在运行时接收新的设备驱动程序并立刻安装,无需重启操作系统,这种 方式采用的少,但是正变得普及起来。热插拔设备,比如USB和IEEE 1394都需要动态可装载的 设备驱动程序。
每个设备控制器都有少量用于通信的寄存器
,例如,一个最小的磁盘控制器也会有用于指定磁盘地址、内存地址、扇区计数的寄存器。- 要激活控制器,设备驱动程序回从操作系统获取一条指令,然后翻译成对应的值,并写入设备寄存器中,所有设备寄存器的结合构成了 I/O端口空间。
- 在一些计算机中,设备寄存器会被映射到操作系统的可用地址空间,使他们能够向内存一样完成读写操 作。
- 在这种计算机中,不需要专门的I/O指令,用户程序可以被硬件阻挡在外,防止其接触这些存储器 地址(例如,采用基址寄存器和变址寄存器)。
- 在另一些计算机中,设备寄存器被放入一个专门的I/O 端口空间,每个寄存器都有一个端口地址。在这些计算机中,特殊的IN和OUT指令会在内核态下 启用,它能够允许设备驱动程序和寄存器进行读写。
- 前面第一种方式会限制特殊的I/O指令但是允许一 些地址空间;后者不需要地址空间但是需要特殊的指令,这两种应用都很广泛。
- 实现输入和输出的方式有三种。
- •
OS- -计算机硬件简介相关推荐
- 黑马程序员-01.IOS和MAC OS X简介总结
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.什么是IOS 1)iOS是由苹果公司为iPhone开发的操作系统.它主要是给iPhone.i ...
- Palm OS开发简介
Palm OS开发简介 --简单介绍Palm OS上的应用软件开发过程 篇首语:Palm OS现在的正确名字其实是Garnet OS...不过Palm OS更为人们所知... Palm OS历史 Pa ...
- 【Python】OS 模块简介
文章目录 一.OS 模块简介 二.os.system 方法 三.OS 模块中的常用方法 四.参考链接 一.OS 模块简介 os 就是 "operating system" 的缩写, ...
- 计算机硬件简介ppt,_计算机硬件简介.ppt
_计算机硬件简介 计算机基础教程 内容提要 微型计算机硬件系统概述 微型计算机硬件系统 计算机引导过程(自学) 计算机选购(自学) 学习要求 基本要求 理解微机主板的作用并且能识别主板上的部件: 能够 ...
- 嵌入式系统开发16——嵌入式实时操作系统uC/OS的简介及简单应用
本文主要介绍嵌入式实时操作系统(RTOS),并且以uc/OS为例,将其移植到stm32F103C8T6上,构建3个任务:其中两个task分别以1s和3s周期对LED灯进行点亮-熄灭的控制:另外一个ta ...
- python 文本模式读写文件时 不应使用 os.linesep 简介
os.linesep官方文档 The string used to separate (or, rather, terminate) lines on the current platform. Th ...
- python os.walk_Python os.walk() 简介
os.walk目录遍历 每个月都有那么几天想划水,又到划水的日子了,今天分享的是刚在处理遍历目录相关用到的相关方法. os.walk os.walk的参数如下: os.walk(top, topdow ...
- 操作系统-计算机硬件简介
目录 1 简介 2 CPU 2.1 CPU的工作流程 2.2 超标量CPU 2.3 内核态和用户态 3 存储器 3.1 存储器分为四个层次 3.2 寄存器 3.3 高速缓存 3.4 磁盘 4 I/O设 ...
- Symbian OS SDKs简介(转)
为Symbian OS开发应用程序的第一步就是获得一个SDK.Symbian OS SDKs支持基于Java和C++的开发. 这些SDK提供: 1.便于构建和开发Symbian OS应用程序的一组二进 ...
- Palm OS系统简介
提到Palm当然不能不提生产它的Palm公司,说起Palm公司的经历,还颇具有戏剧性.Palm Inc.成立于1992年,1995年被U.S. Robotics Corporation收购:199 ...
最新文章
- BTrace是一个非常不错的java诊断工具
- nssl1256-C(盟主的忧虑)【并查集】
- js 获取father_(原创)Node.JS实战26:强大的工作池。收藏吧!你一定会用的到。...
- 典型的 C++ 程序员成长经历
- Java必考题目之JVM面试题目和答案
- 错误记录(二)java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误时的原因及解决办法
- git将本地仓库强制替换掉远程仓库
- macos 管理员权限 黑苹果_Mac OS X 黑苹果系统安装驱动Kext方法
- python插入排序
- PFC离散元仿真核心技术与应用
- html中内部css样式怎么写,HTMLCSS基础-内联样式和内部样式表
- 如何为NFT熊市做准备
- 制作flash cs的简单小游戏
- cousera课程 Introduction to Programming with MATLAB 范德堡大学 作业1
- SAS PROC SQL
- 【JAVA工具类】批量修改文件名称修改成特定名称
- 手机闪存速度测试工具,AndroBench
- 【前端小实战】遮罩层动画效果
- 小程序外包公司有哪些选择参考标准?
- 纹理过滤函数glTexParameteri
热门文章
- 黑马程序员-01.IOS和MAC OS X简介总结