【读书笔记】Linux内核完全注释第二章:微型计算机组成结构

非常主观的笔记,只是摘抄一下自己觉得比较重要的地方,并不会概述所有内容(概括能力太差是这样的)

2.微型计算机组成结构

2.1 微型计算机组成原理

在这里插入图片描述
除了 CPU 以外,现代 PC 机主板主要使用 2 个超大规模芯片构成的芯片组或芯片集(Chipsets)组成:

  • 北桥:与 CPU、内存和 AGP 视频接口,这些接口具有很高的传输速率。除此之外还起着存储器控制的作用,因此标号为 MCH(Memory Controller Hub)。
  • 南桥:管理低、中速的组件,例如,PCI(Peripheral Component Interconnect,外围组件互连)总线、IDE 硬盘接口、USB 端口等,因此标号为 ICH(I/O Controller Hub)。

2.2 I/O 端口寻址和访问控制方式

在 CPU 和 I/O 适配器之间开始传输数据时,首先需要确定适配器的 I/O 位置,即端口地址。 在 CPU和 I/O 之间传输数据时,一般可以使用程序循环查询、中断处理和 DMA 传输方式。

2.2.1 I/O 端口和寻址

  • 存储器映像编址:把 I/O 控制器中的端口地址归入存储器寻址地址空间范围内。CPU 访问一个端口的操作与访问内存的操作一样,也使用访问内存的指令。
  • 端口独立编址:把 I/O 控制器和控制卡的寻址空间单独作为一个独立的地址空间对待,称为 I/O 地址空间。每个端口有一个 I/O 地址与之对应,并且使用专门的 I/O 指令来访问端口。

对于使用 EISA 或 PCI 等总线结构的现代 PC 机,有 64KB 的 I/O 地址空间可供使用。在普通 Linux 系统下通过查看/proc/ioports文件可以得到相关控制器或设置使用的 I/O 地址范围。

2.2.2 接口访问控制

PC 机 I/O 接口数据传输控制方式一般可采用程序循环查询方式中断处理方式DMA 传输方式

  • 循环查询方式: CPU 通过在程序中循环查询指定设备控制器中的状态来判断是否可以与设备进行数据交换。
  • 中断处理方式:需要有中断控制器的支持。只有当 I/O 设备通过中断向 CPU 提出处理请求时,CPU 才会暂时中断当前执行的程序转而去执行相应的 I/O 中断处理服务过程。当执行完该中断处理服务过程后,CPU 又会继续执行刚才被中断的程序。在 I/O 控制器或设备发出中断请求时,CPU通过使用中断向量表(或中断描述符表)来寻址相应的中断处理服务过程的入口地址。因此采用中断控制方式时需要首先设置好中断向量表,并编制好相应的中断处理服务过程。Linux 操作系统中大多数设备 I/O控制都采用中断处理方式。
  • DMA(Direct Memory Access,直接存储器访问)方式:用于 I/O 设备与系统内存之间进行批量数据传送,整个操作过程需要使用专门的 DMA 控制器来进行而无需 CPU 插手。由于在传输过程中无须软件介入,因此操作效率很高。在 Linux 操作系统中,软盘驱动程序使用中断和 DMA 方式配合来实现数据的传输工作。

2.3 主存储器、BIOS 和 CMOS 存储器

典型 PC 机上通常含有三种类型的存储器,一种是用来运行程序和临时保存数据的内存存储器,一种是存放着系统开机诊断和初始化硬件程序的 ROM,另一种是用来存放存计算机实时时钟信息和系统硬件配置信息的少量 CMOS 存储器。

2.3.1 主存储器

目前的计算机通常都配置有 512MB 或者更多的物理内存容量,并且都采用 Intel 32 位 CPU,即都是 PC/AT 计算机。因此 CPU 的物理内存寻址范围已经高达 4GB。
但为了与原来的 PC 机在软件上兼容,系统 1MB 以下物理内存使用分配上仍然保持与原来的 PC 机基本一致,只是原来系统 ROM 中的基本输入输出程序 BIOS 一直处于 CPU 能寻址的内存最高端位置处,而 BIOS 原来所在的位置将在计算机开机初始化时被用作 BIOS 的影子(Shadow)区域,即 BIOS代码仍然会被复制到这个区域中。见图 2-4 所示。

当计算机上电初始化时,物理内存被设置成从地址 0 开始的连续区域。其中,地址从 0xA0000 到 0xFFFFF(640K 到 1M 共 384K)和0xFFFE0000 到 0xFFFFFFFF(4G 处的最后一 64K)这两个特定范围被用于 I/O 设备和BIOS 程序,除此以外的所有内存都可用作系统内存。
在这里插入图片描述

2.3.2 基本输入/输出程序 BIOS

BIOS主要功能:
1.执行系统各部分的自检。
2.建立起操作系统需要使用的各种配置表,例如中断向量表、硬盘参数表。
3.把处理器和系统其余部分初始化到一个已知状态。
4.为 DOS 等操作系统提供硬件设备接口服务。
由于 BIOS 提供的这些服务不具备可重入性(即其中程序不可并发运行),并且从访问效率方面考虑,因此除了在初始化时会利用 BIOS 提供一些系统参数以外,Linux 操作系统在运行时并不使用 BIOS 中的功能。

可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。

2.3.3 CMOS 存储器

CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)存储器用来存放计算机的
实时时钟信息和系统硬件配置信息。
CMOS 内存的地址空间在基本内存地址空间之外,需要使用 I/O 指令来访问。

2.4 控制器和控制卡

2.4.1 中断控制器

IBM PC/AT 80X86 兼容微机使用两片级联的 8259A 可编程中断控制芯片组成一个中断控制器,用于实现 I/O 设备的中断控制数据存取方式,并且能为 15 个设备提供独立的中断控制功能。
在计算机刚开机初始化期间,ROM BIOS 会对这两片 8259A 芯片进行初始化,并分别把 15 级中断优先级分配给时钟定时器、键盘、串行口、打印口、软盘控制、协处理器和硬盘等设备或控制器使用。同时在内存开始处 0x000-0xFFF 区域内建立一个中断向量表,并把这些中断请求映射到了从 0x08 开始的中断向量号上。
由于中断号 0x00–0x1F 属于 Intel 公司专门保留给 CPU 使用的,因此 BIOS 的这些设置与 Intel 公司的要求有冲突。为解决这个问题,在上电启动时, Linux 操作系统会在内核初始化期间又重新对 8259A 进行了设置,把所有系统硬件中断请求号全部都映射到了 0X20 及以上中断号上。

2.4.2 DMA 控制器

DMA 控制器的主要功能是通过让外部设备直接与内存传输数据来增强系统的性能。通过对 DMA 控制器进行编程,外设与内存之间的数据传输能在不受 CPU 控制的条件下进行。

2.4.3 定时/计数器

Intel 8253/8254 是一个可编程定时/计数器(PIT - Programmable Interval Timer)芯片,用于处理计算机中的精确时间延迟。该芯片提供了 3 个独立的 16 位计数器通道。3 个定时/计数器通道被分别用于日时钟计时中断信号、动态内存 DRAM 刷新定时电路和主机扬声器音调合成。

2.4.4 键盘控制器

当一个键被按下时,键盘发送的扫描码称为接通扫描码(Make code),或简称为接通码;当一个被按下的键放开时发送的扫描
码被称为断开扫描码(Break code),或简称为断开码。
主机键盘控制器专门用来对接收到的键盘扫描码进行解码,并把解码后的数据发送到操作系统的键盘数据队列中。因为每个按键的接通和断开码都是不同的,所以键盘控制器根据扫描码就可以确定用户在操作哪个键。整个键盘上所有按键的接通和断开码就组成了键盘的一个扫描码集(Scan Code Set)。根据计算机的发展,目前已有三套扫描码集可供使用,它们分别是:

  • 第一套扫描码集 – 原始 XT 键盘扫描码集。目前的键盘已经很少发送这类扫描码;
  • 第二套扫描码集 – 现代键盘默认使用的扫描码集,通常称为 AT 键盘扫描码集;
  • 第三套扫描码集 – PS/2 键盘扫描码集。原 IBM 推出 PS/2 微机时使用的扫描码集,已很少使用。
    AT 键盘默认发送的是第二套扫描码集。虽然如此,主机键盘控制器为了与 PC/XT 机的软件兼容起见,仍然会把所有接收到的第二套键盘扫描码转换成第一套扫描码,如图所示。
    在这里插入图片描述

2.4.5串行控制卡

串行通信是指在线路上以比特位数据流一次一个比特进行传输的通信方式,可分为异步和同步串行通信两种类型。
异步串行通信以一个字符作为一个通信单位或一帧进行传输,而同步串行通信则以多个字符或字节组成的序列作为一帧数据进行传输。

2.4.6 显示控制

2.4.7 软盘和硬盘控制器

为了读写磁盘(软盘和硬盘)上的数据,就必须使用磁盘控制器。
磁盘控制器是 CPU 与驱动器之间的逻辑接口电路,它从 CPU 接收请求命令,向驱动器发送寻道、读/写和控制信号,并且控制和转换数据流形式。控制器与驱动器之间传输的数据包括图 2-12 中的扇区地址信息以及定时和时钟信息。控制器必须从实际读/写数据中分离出这些地址信息和一些编码、解码等控制信息。
在这里插入图片描述
对磁盘控制器的编程过程就是通过 I/O 端口设置控制器中的相关寄存器内容,并通过寄存器获取操作的结果信息。
软盘控制器电路采用 DMA信号,因此需要使用 DMA 控制器实施数据传输。
AT 硬盘控制器采用高速数据块进行传输,不需要 DMA控制器的介入。

总结

硬件部分的内容真的好难读啊好难读,但是为了更好地理解操作系统到底为什么这么写,对硬件的理解又是必不可少的。
有空可能再回头看看查尔斯·佩措尔德的《编码:隐匿在计算机软硬件背后的语言》吧,我的硬件入门圣经。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值