Linux内核学习(Linux-0.11)——组成原理基本知识

《Linux内核完全注释》笔记
任何一个系统都可认为由四个基本部分组成。其中输入部分用于接收进入系统的信息或数据;经过处理中心加工后再由输出部分送出。能源部分为整个系统提供操作运行的能源供给,包括输入和输出部分操作所需要的能量。

一、微型计算机的组成原理

CPU通过地址线数据线控制信号线组成的本地总线(或称为内部总线)与系统其它部分进行数据通信。
地址线用于提供内存或I/O设备的地址,即指明需要读/写数据的位置。
数据线用于在CPU和内存或I/O设备之间提供数据传输的通道。
控制线则负责指挥执行的具体读/写操作。
caution:对于使用80386 CPU的PC机,其内部地址线和数据线都分别有32根,即都是32位的。因此地址寻址空间范围有2^32字节,从0到4 GB。
在这里插入图片描述
图上部的控制器和存储器接口通常集成在计算机主板上,这些控制器分别都是以一块大规模集成电路芯片为主组成的功能电路。
eg:
终端控制器:Intel 8259 A或其兼容芯片构成;
DMA 控制器:Intel 8237 A芯片构成;
定时计数器:Intel 8253/8254 定时芯片;
键盘控制器:Intel 8042芯片来与键盘中的扫描电路进行通信。
图中下方的控制卡(或者成为适配器)贼是通过扩展插槽与主板上系统总线连接。总线插槽是系统地址总线、数据总线和控制线的与扩展设备控制器的标准连接接口。

随着计算机技术的发展,很多原来使用控制卡来完成的功能(例如硬盘控制器功能)都已经集成在计算机主板上少数几个超大规模集成电路芯片。除了CPU外,现代PC机主板主要使用2个超大规模芯片构成的芯片组或芯片集组成:北桥芯片和南桥芯片。
在这里插入图片描述
如图,北桥芯片用于与CPU、内存和AGP视频接口,这些接口具有很高的传输速率,除此之外,北桥芯片还起着存储器控制作用,因此Intel把该芯片标号为MCH(Memoty Controller Hub)芯片。

南桥芯片用于管理低、中速的组件,例如,PCI总线、IDE硬盘接口、USB端口,因此南桥芯片的名称为ICH(I/O Controller Hub)

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

1、I/O端口和寻址

I/O接口控制器或控制卡的地址称为I/O端口地址或者简称端口。
端口地址的设置方法一般有两种:统一编址独立编址

端口统一编址:吧I/O控制器中的端口地址归入存储器寻址空间范围内。因此这种编址方式也成为存储器影响编址。
端口独立编制:把I/O控制器和控制卡的寻址空间单独作为一个独立的地址空间对待,称为I/O地址空间。

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

2、接口访问控制

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

循环查询方式:指CPU通过在程序中循环查询指定设备控制器中的状态来判断是否可以与设备进行数据交换。这种方式不需要过多硬件支持,使用和编程都比较简单,但是特别耗费CPU时间。

中断处理控制方式:需要有中断控制器的支持。在这种控制方式下,只有当I/O设备通过中断向CPU提出处理请求时,CPU才会暂时中断当前执行的程序转而去执行相应的中断处理服务过程的入口地址。

直接存储器访问DMA(Direct Memory Acess):用于I/O设备与系统内存之间进行批量数据传送,整个操作过程需要用专门的DMA控制器来进行而无需CPU插手。

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

1、主存储器

目前的存储器通常都配置有512MB或者更多的物理内存容量。但是为了与原来的PC机在软件上兼容,系统1MB以下物理内存使用分配上仍然保持与原来的PC机基本一致,只是原来系统ROM中的基本输入与输出程序BIOS一直处于CPU能寻址的内存最高端位置处,而BIOS原来所在的位置将在计算机开机并初始化时被用作BIOS的影子区域,即BIOS代码仍然会被复制到这个区域中。
在这里插入图片描述
上图为有关1MB以下内存关于BIOS的配置。
除了地址从0xA0000到到0xFFFFF(640K到1M共384K)和0xFFFE0000到0xFFFFFFFF(4G处的最后一64K)范围以外的内存都可以用作系统内存。
这两个特定的范围被用于I/O设备和BIOS程序。
0~640k用于存放内核数据和代码

2、基本输入/输出程序BIOS

存放在ROM中的系统BIOS程序主要用于计算机开机时执行系统各部分的自检,建立起操作系统需要的各种配置表,例如中断向量表、硬盘参数表。并且把处理器和系统其余部分初始化到一个已知状态,而且还为DOS等操作系统提供硬件设备接口服务。
由于BIOS提供的这些服务不具备可重入性,因此除了在初始化时会利用BIOS提供一些系统参数外,Linux操作系统在运行时并不使用BIOS中的功能。

当计算机系统上电开机或者按了机箱上的复位按钮时,CPU会自动把代码寄存器CS设置为0xF000,其段基地址则被设置为0xFFFF0000,段长度设置为64KB。而IP被设置为0xFFF0,因此此时CPU代码指针指向0xFFFFFFF0处,即4G空间最后一个64K的最后16字节处。这里便是系统ROM BIOS存放的位置。并且BIOS会在这里存放一条跳转指令JMP到BIOS代码中64KB范围内的某一条指令开始执行。
在这里插入图片描述

3、CMOS存储器

除了使用内存和ROM BIOS以外,还使用只有很少存储容量的CMOS存储器来存放计算机的实时时钟信息和系统硬件配置信息。这部分内存通常和实时时钟芯片做在一块集成块中。CMOS内存的地址空间在基本内存地址空间之外,需要使用I/O指令来访问。

四、控制器和控制卡

1、中断控制器

本例中断控制器由两片级联的 8259A可编程中断控制芯片组成,用于实现I/O设备的中断控制数据存取方式,并且能为15个设备提供独立的中断控制功能。
ROM BIOS会分别对两片8259A 芯片进行初始化,并分别把15级中断优先级分配给始终定时器、键盘、串行口、打印口、软盘控制、协处理器和硬盘等设备或控制器使用。
在这里插入图片描述
当一个PC计算机刚上电开机时,上图的硬件中断请求号会被ROM BIOS设置成下表中列出的中断向量号。
在这里插入图片描述

2、DMA控制器

3、定时/计数器

4、键盘控制器

5、串行控制卡

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

6、显示控制

①MDA显示标准
仅支持黑白两色显示。并且支持独有的文本字符显示方式(BIOS显示方式7)其屏幕显示规格是80列X25行,共可显示2000个字符。每个字符还带有1个属性字节,因此显示一屏内容需要栈4KB字节。即2000X2,并且其中偶地址字节存放字符代码,奇地址存放显示属性。MDA卡配置有8KB显示内存。在PC机内存寻址范围中占用从0xb0000开始的8KB空间(0xb0000 – 0xb2000),已知屏幕行列值的字符在内存中的位置的计算方法如下:
在这里插入图片描述
注意video_num_colums为显示屏列数。
而每个字符的属性字节格式如下图所示:
在这里插入图片描述
②CGA显示标准
CGA支持7种色彩和图形显示方式(BIOS显示方式0–6)。在80列X25列的文本字符显示方式下,有单色和16色彩色两种显示方式(BIOS显示方式2–3)CGA卡标配有16KB显示内存(占用地址内存范围0xb8000–0xbc000),因此其中共可存放4帧显示字节。在每一帧4KB显示内存中,偶地址字节存放字符代码,奇地址字节存放字符显示属性。
每个显示字符的属性字节格式定义如图所示:在这里插入图片描述
D7置1用于让显示字符闪烁D3置1让字符高亮度显示比特位D6、D5、D4、和D2、D1、D0可以分别组合出8种颜色,效果如下图所示:
在这里插入图片描述
③EGA/VGA显示标准
增强型图形适配器EGA和视频图形阵列VGA除兼容或支持MDA和CGA的显示方式之外,还支持其他在图形显示方面的增强显示方式。

7、软盘和硬盘控制器

五、总结

本章总体来说主要是对计算机组成原理、操作系统的复习。我认为这一章最重要的收获便是对各种参数设置的学习,为下一张as86的学习打好铺垫。

猜你喜欢

转载自blog.csdn.net/weixin_41796913/article/details/88586269