IB 计算机科学/系统基础进阶
标准等级
主题 1 - 系统生命周期和软件开发 — 主题 2 - Java 程序构造 — 主题 3 - 计算机系统基础 —
高级等级
主题 4 - 计算机数学与逻辑 — 主题 5 - 抽象数据结构与算法 — 主题 6 - 系统基础进阶 — 主题 7 - 文件组织
附加内容
程序文档 — 案例研究
返回 IB 计算机科学
指令寄存器是CPU控制单元(如下所示)的一部分,用于存储指令。指令寄存器的位被微程序解码,该微程序控制着计算机。
累加器是ALU(如下所示)中的一个寄存器。它暂时存储算术或逻辑运算的结果,然后将其写入主内存或另一个非累加器CPU寄存器(取决于被告知做什么)。[1]
程序计数器是位于CPU(如下所示)中的一个寄存器。它用于保存从直接访问内存中获取的下一条指令的地址,以便计算机执行。[2]
存储文件的最常见的物理设备是磁性磁盘。磁性磁盘有一个或多个以磁盘形式存在的磁头,它们覆盖着磁性介质。硬盘磁头由刚性金属制成,而软盘由更灵活的塑料制成。磁性磁盘上的每个磁头都有两个工作表面。较旧的硬盘驱动器有时不会使用堆叠的磁头中顶部的或底部的表面,因为它们更容易损坏。
磁头的表面被组织成许多圆形环,称为磁道。一组直接位于另一组上方的磁道(如下图所示)称为一个柱面。
此外,每条磁道被分成扇区。一个扇区中存储的信息,一个块,是磁盘和主内存之间传输的单位(通常是4K字节左右)。操作系统确定每个文件所在的块的位置。
磁性磁盘上的数据由读写磁头读取。标准配置(如下图所示)每个表面使用一个磁头,每个磁头在单独的臂上,由一个共同的臂组件控制,该组件同时将所有磁头从一个柱面移动到另一个柱面。
从磁盘到计算机传输数据的速率由三个不同的步骤组成
寻道时间 | 将磁头移动到正确磁道所需的时间。 |
---|---|
延迟(旋转延迟) | 等待扇区旋转到磁头位置所需的时间。 |
块传输时间 | 实际传输数据所需的时间。 |
所有这些时间都约为几十毫秒。寻道时间和延迟时间会根据所需块相对于磁头当前位置的位置而变化。将文件的所有块放在一个磁道上很有用,以最大程度地减少访问文件时的寻道时间和延迟。同样,对于更大的文件,最好将它全部放在同一个柱面上(不同磁盘上的一组对应磁道)。还有许多其他放置技巧(例如,将使用频繁的文件放在中间磁道上,以减少平均寻道时间)。但是,由于文件的大小不一,并且可以动态地改变大小,因此通常不可能将块放置在最佳位置。 [3] [4]
握手是指一台计算机与另一台计算机或任何想要连接到计算机的设备建立连接。握手可以细分为几个步骤,例如验证连接、速度和尝试连接的计算机的授权。例如:当调制解调器连接到另一个调制解调器时,拨号就是它们之间的握手。可以通过进入控制面板来静音调制解调器握手。 [5] [6]
端口连接通常位于计算机背面的后面,它通常类似于插头。硬件端口允许访问外部设备。例如 USB、打印机、鼠标。
在谈论互联网或网络时,网络端口是发送信息的位置。一个常用的端口是 http,即端口 80。它通常被称为虚拟端口。
一种常见的管理传输的方法是提供一个状态位,该状态位将被发送到一个辅助输入端口。例如,单个位中的 1 可以告诉 CPU 打印机已准备好接收更多数据。如果出现 0,则会告诉 CPU 打印机正在忙碌,因此 CPU 暂时不应该发送任何新数据。另一个例子是,如果不同端口中的一个位可以告诉 CPU 已按下键盘键并且它在数据端口可用。如果显示 0,则表示没有键盘按键。
虚拟端口是串行端口的模拟。该端口可以由软件创建,该软件将启用系统中的额外端口。虚拟端口可以被赋予任何名称(COM1337、VSP11 等)。您的 PC 中可以有无限数量的虚拟端口。端口越多,计算机性能越低。
虚拟端口复制所有硬件串行端口功能,包括波特率、数据位、奇偶校验位、停止位等。它们控制数据流,复制所有信号线(DTR/DSR/CTS/RTS/DCD/RI)并自定义引脚分配。常见的虚拟端口是蓝牙。如果计算机上的物理端口较少,虚拟端口可能很有用。虚拟端口的另一个用途是通过互联网或 LAN 与其他串行设备通信,就像它们相互连接一样。此类示例可以在 Hamachi 和 Garena 等应用程序中找到。链接:[www.garena.com]、[www.hamachi.com] [7]
缓冲区是内存的一部分,用于在数据从一个地方移动到另一个地方时临时保存数据。数据存储在缓冲区中,然后从输入设备(如键盘)接收数据到输出设备(如打印机)。当数据在计算机中的进程之间移动时,也使用缓冲区。这可能与电信中的缓冲区有关。缓冲区可以在硬件或软件中找到,但它主要在软件中实现。如果正在传输的数据具有不同的接收和处理速率,则在这种情况下的典型情况下使用缓冲区。缓冲区与 I/O 到硬件相结合,例如磁盘驱动器,将数据从一个地方发送到另一个地方,或在扬声器上播放声音。
一些高速缓存充当缓冲区。但它并不完全相同,高速缓存基于同一个数据(data 的复数)将被多次读取的假设。高速缓存的目的是减少对速度较慢的存储器的访问。高速缓存是一个抽象层,这意味着它是一种隐藏特定功能集细节的方式。例如 OSI 7 层模型。 OSI 7 层模型
计算机始终需要与其他外部设备(输入/输出设备)传输数据。在计算机内存和外部设备之间传输数据有两种不同的方法。
PIO (Programmed I/O) 是一种方法,其中处理器不断读取或写入内存单元(8 位、16 位或 32 位,具体取决于设备接口),直到数据传输完成。显然,这种方法消耗了大量的处理器周期。有几种不同的 PIO 速度,称为编程 I/O 模式,或者更常见的是 PIO 模式。下表显示了五种不同的 PIO 模式
PIO 模式 | 周期时间(纳秒) | 最大传输速率(MB/s) | 定义标准 |
---|---|---|---|
模式 1 | 600 | 3.3 | ATA |
模式 2 | 383 | 5.2 | ATA |
模式 3 | 240 | 8.3 | ATA |
模式 4 | 180 | 11.1 | ATA-2 |
模式 5 | 120 | 16.7 | ATA-2 |
PIO 是 90 年代中期设备和 IDE/ATA 硬盘之间传输数据的唯一方法。三个较低速度的模式(模式 1、模式 2、模式 3)被定义为原始 ATA 标准文档的一部分;另外两个(模式 4、模式 5)作为 ATA-2 的一部分(以及多个非官方标准的一部分)添加。[8]
DAM (Direct Access Memory) 是一种功能,它允许连接的外部设备(如磁盘驱动器)上的数据直接发送到主板上的计算机内存。在 DMA 方法中,系统向设备发出一个 I/O 命令,启动一个 DMA 事务,然后将进程放入等待队列,然后处理器将被释放,以便进行其他传输或执行代码。DMA 控制器将通过发出中断信号来通知系统其当前操作已完成。虽然数据仍然一次从设备传输一个内存单元,但现在传输到主内存绕过了 CPU,因为 DMA 控制器可以直接访问内存单元。[9]
让我们更深入地了解一下!
正如DMA方法中提到的,处理器在整个传输过程中不会参与;它只是启动传输,之后数据可以直接从或到主内存传输。但是CPU是如何做到的呢?
为了启动传输,处理器应该将三个不同的值加载到DMA控制器中的三个不同的寄存器中。这些值是
1- 源设备的标识
2- 数据传输开始的内存位置
3- 要传输的字节数
然后,DMA控制器使用总线上的控制线与IO单元协作,执行用于管理数据传输的握手协议。传输完成后,DMA通过中断通知CPU。使用DMA,数据不会通过CPU寄存器,而是直接沿着总线从源到目的地。[10]
直接内存访问,也称为DMA,是现代计算机的一项功能。在某些计算机中,硬件子系统具有自己的访问系统内存,用于独立于中央处理单元(CPU)进行读写。许多系统使用DMA,例如磁盘驱动器控制器、显卡、网卡和声卡。具有DMA的计算机可以比没有DMA通道的计算机以更少的CPU开销从设备传输数据。
如果没有DMA,CPU将在整个读写操作过程中完全占用,无法执行其他任何工作。DMA可以启动传输、运行程序以及接收和中断来自DMA控制器的信号。这对实时计算非常有用。
投票!
您能请投票并告诉我们您认为哪个“直接访问内存”的定义更清楚吗?您可以在讨论区回复。
处理器在计算机中的职责之一是管理设备和程序,由于有许多设备连接到处理器,并且还有许多程序(在操作系统上运行),因此处理器需要能够弄清楚在每个时刻应该做什么。两种不同的方法是*轮询*和使用*中断*。
轮询是一种方法,处理器在循环中检查每个设备的当前状态并查找数据。当一个设备上有新数据可用时,它可以读取数据并处理传入的字节。
然而,这种方法可以用来管理设备和程序,但也有一些很大的问题。首先,处理器总是忙于检查所有设备和程序,而不是处理数据并执行一些有用的代码。其次,在这种方法中,当数据传输速率过高时,很可能丢失一些到达的字节。[11]
中断是来自连接到计算机的设备或程序的信号,发送到操作系统(操作系统),使其停止并弄清楚下一步该做什么。由硬件发出的中断称为*硬件中断*,而由程序发出的中断称为*软件中断*、*陷阱*或*异常*。一台普通的PC支持16个硬件中断和256个软件中断。每种类型的异常(软件中断)都与一个例程相关联,该例程在中断发生时接管控制。这个例程称为*中断处理程序*。
发送到处理器的实际中断称为IRQ(中断请求)。每个IRQ都是一个二进制代码,与其他中断不同,处理器使用这些二进制代码来区分不同的中断。但是,这些中断在每个设备和处理器上可能不同,但它们通常遵循一个标准。下表显示了典型的硬件中断[12]
IRQ编号 | 二进制代码 | 典型用途 | 描述 |
---|---|---|---|
IRQ 0 | 00000000 | 系统计时器 | 此中断保留给内部系统计时器。它永远不可用于外设或其他设备。 |
IRQ 1 | 00000001 | 键盘 | 此中断保留给键盘控制器。即使在没有键盘的设备上,此中断也专门用于键盘输入。 |
IRQ 2 | 00000010 | IRQ 8-15 的级联中断 | 此中断将第二个中断控制器级联到第一个。 |
IRQ 3 | 00000011 | 第二个串行端口(COM2) | 第二个串行端口的中断,通常是第四个串行端口(COM4)的默认中断。 |
IRQ 4 | 00000100 | 第一个串行端口(COM1) | 此中断通常用于第一个串行端口。在不使用PS/2鼠标的设备上,此中断几乎总是由串行鼠标使用。这也是第三个串行端口(COM3)的默认中断。 |
IRQ 5 | 00000101 | 声卡 | 这是大多数声卡在查找IRQ设置时首选的中断。 |
IRQ 6 | 00000101 | 软盘控制器 | 此中断保留给软盘控制器。 |
IRQ 7 | 00000110 | 第一个并行端口 | 此中断通常保留给打印机使用。如果不使用打印机,则此中断可以用于使用并行端口的其他设备。 |
IRQ 8 | 00000111 | 实时时钟 | 此中断保留给系统的实时时钟计时器,不能用于任何其他目的。 |
IRQ 9 | 00001001 | 空闲 | 此中断通常在设备上保留以供外设使用。 |
IRQ 10 | 00001010 | 空闲 | 此中断通常在设备上保留以供外设使用。 |
IRQ 11 | 00001011 | 空闲 | 此中断通常在设备上保留以供外设使用。 |
IRQ 12 | 00001100 | PS/2 鼠标 | 此中断保留给使用 PS/2 鼠标的机器上的 PS/2 鼠标。如果不使用 PS/2 鼠标,则此中断可以用于其他外设,例如网卡。 |
IRQ 13 | 00001101 | 浮点单元/协处理器 | 此中断保留给集成的浮点单元。它永远不可用于外设或其他设备,因为它专门用于内部信号。 |
IRQ 14 | 00001110 | 主 IDE 通道 | 此中断保留给主 IDE 控制器使用。在不使用 IDE 设备的系统上,IRQ 可以用于其他目的。 |
IRQ 15 | 00001111 | 次要 IDE 通道 | 此中断保留给次要 IDE 控制器使用。 |
当一个输入或输出设备向 CPU 发送中断时,在处理器捕获它之前,该 IRQ 会经过一个名为PIC(可编程中断控制器)的芯片。PIC 从优先级最高的设备中选择一个 IRQ 传递给 CPU,如果处理器准备接受该 IRQ,PIC 会将其发送给 CPU。处理器有一个标志,说明它是否准备接受 IRQ。如果 CPU 捕获了请求(因为它也可以忽略请求),它会暂时停止当前正在做的事情并执行与该请求相关的适当代码。ISR 完成后,CPU 返回到它正在执行的程序并恢复其先前的任务。[13]
如何查找您的 PC IRQ?
Windows
为了在 Windows 中找到设备的 IRQ,请打开设备管理器(您可以在“我的电脑”或 Windows Vista 中的“计算机”上右键单击,然后单击“属性”。然后单击“设备管理器”。或者在您的计算机中搜索“设备管理器”。)。右键单击任何设备,在打开的表单中,转到“资源”选项卡,查看 IRQ 前面的二进制代码。
Linux
对于大多数发行版,这将起作用
# dmesg | grep irq
轮询和中断系统之间的比较 |
正如前面提到的,在轮询系统中,处理器应该在循环中检查所有设备(以及在操作系统上运行的程序)的状态,以查看接下来应该做什么;而在使用中断的系统中,处理器不需要不断检查所有设备和程序,而是每个设备在需要时向处理器发送信号。显然,在第一种方法中,CPU 总是忙于检查设备,因此它执行有用代码和处理数据的能力较低。这种方法的另一个缺点是,想要与处理器交互的设备或程序必须等待处理器完成循环并转向该特定设备或程序。而在中断系统中,客户端发送一个信号(即一个字节)并通知处理器。因此,使用中断的系统中客户端和处理器之间的通信速度会加快。 |
数据通过通信介质传输,可以串行传输或并行传输。大多数微型计算机用户都知道他们的计算机配备了串行端口和并行端口。这将使计算机能够传输串行和并行信号。
在串行传输中,发送的字节一个接一个地沿着介质发送。例如,如果要发送“SYAMIL”,它将首先发送“S”,然后发送“Y”,然后发送“A”,依此类推。对于并行传输,它们是分开发送的,并行路径对应于字节的每个位,以便所有位同时到达。
由于并行传输比串行传输更有效率,因此它需要更多的布线和额外的位路径,除此之外,它比串行传输更昂贵。彼此靠近的设备通常使用串行传输。例如,并行传输计算机将把文字文档发送到连接到它的打印机。[14]
- ↑ Irvine, Kip R. (2007). Assembly Language for Intel-Based Computers (第 5 版 ed.). Pearson Prentice Hall. pp. pp. 633, 622. ISBN 0-13-238310-1.
{{cite book}}
:|edition=
has extra text (help);|pages=
has extra text (help) - ↑ Hutchinson Encyclopaedia. Helicon Publishing LTD 2008.
- ↑ 磁碟存储[1]
- ↑ 存储结构[2]
- ↑ "握手." <http://www.mrhope.com/jargon/h/handshak.htm>.
- ↑ "握手." <http://webster.cs.ucr.edu/AoA/Windows/HTML/IOa3.html>.
- ↑ "虚拟端口." <www.ftdichip.com/Drivers/VCP.htm>.
- ↑ PIO[3]
- ↑ 8237 DMA 控制器[4]
- ↑ DMA – 直接内存访问[5]
- ↑ Sunsite [6]
- ↑ 宽带 [7]
- ↑ 中断控制[8]
- ↑ "串行和并行传输." <http://www.blurtit.com/q511025.html>.