《Linux内核彻底注释》笔记
任何一个系统均可认为由四个基本部分组成。其中输入部分用于接收进入系统的信息或数据;通过处理中心加工后再由输出部分送出。能源部分为整个系统提供操做运行的能源供给,包括输入和输出部分操做所须要的能量。web
1、微型计算机的组成原理
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)ide
2、I/O端口寻址和访问控制方式
一、I/O端口和寻址
I/O接口控制器或控制卡的地址称为I/O端口地址或者简称端口。
端口地址的设置方法通常有两种:统一编址和独立编址。svg
端口统一编址:吧I/O控制器中的端口地址纳入存储器寻址空间范围内。所以这种编址方式也成为存储器影响编址。
端口独立编制:把I/O控制器和控制卡的寻址空间单独做为一个独立的地址空间对待,称为I/O地址空间。学习
caution:对于使用EISA或PCI等总线结构的现代PC机,有64KB的I/O地址空间可供使用。在普通Linux系统下经过查看/proc/ioports 文件能够获得相关控制器或设置使用的I/O地址范围,见下图所示。
操作系统
二、接口访问控制
I/O接口数据传输控制方式通常可采用程序循环查询方式、中断处理方式和DMA传输方式。3d
循环查询方式:指CPU经过在程序中循环查询指定设备控制器中的状态来判断是否能够与设备进行数据交换。这种方式不须要过多硬件支持,使用和编程都比较简单,可是特别耗费CPU时间。指针
中断处理控制方式:须要有中断控制器的支持。在这种控制方式下,只有当I/O设备经过中断向CPU提出处理请求时,CPU才会暂时中断当前执行的程序转而去执行相应的中断处理服务过程的入口地址。视频
直接存储器访问DMA(Direct Memory Acess):用于I/O设备与系统内存之间进行批量数据传送,整个操做过程须要用专门的DMA控制器来进行而无需CPU插手。
3、主存储器、BIOS和 CMOS存储器
一、主存储器
目前的存储器一般都配置有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用于存放内核数据和代码
二、基本输入/输出程序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范围内的某一条指令开始执行。
三、CMOS存储器
除了使用内存和ROM BIOS之外,还使用只有不多存储容量的CMOS存储器来存放计算机的实时时钟信息和系统硬件配置信息。这部份内存一般和实时时钟芯片作在一块集成块中。CMOS内存的地址空间在基本内存地址空间以外,须要使用I/O指令来访问。
4、控制器和控制卡
一、中断控制器
本例中断控制器由两片级联的 8259A可编程中断控制芯片组成,用于实现I/O设备的中断控制数据存取方式,而且能为15个设备提供独立的中断控制功能。
ROM BIOS会分别对两片8259A 芯片进行初始化,并分别把15级中断优先级分配给始终定时器、键盘、串行口、打印口、软盘控制、协处理器和硬盘等设备或控制器使用。
当一个PC计算机刚上电开机时,上图的硬件中断请求号会被ROM BIOS设置成下表中列出的中断向量号。
二、DMA控制器
三、定时/计数器
四、键盘控制器
五、串行控制卡
串行通讯是指在线路上以比特位数据流一次一个比特进行传输的通讯方式。串行通讯可分为异步和同步串行通讯两种类型。他们之间的主要区别在于传输时同步的通讯单位或帧的长度不一样。异步串行通讯以一个字符做为一个通讯单位或一帧进行传输,而同步串行通讯则以多个字符或字节组成的序列做为一帧数据进行传输。
六、显示控制
①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让字符高亮度显示;比特位D六、D五、D四、和D二、D一、D0能够分别组合出8种颜色,效果以下图所示:
③EGA/VGA显示标准
加强型图形适配器EGA和视频图形阵列VGA除兼容或支持MDA和CGA的显示方式以外,还支持其余在图形显示方面的加强显示方式。
七、软盘和硬盘控制器
5、总结
本章整体来讲主要是对计算机组成原理、操做系统的复习。我认为这一章最重要的收获即是对各类参数设置的学习,为下一张as86的学习打好铺垫。