三级pc知识点大总结-精华版

更新时间:2024-01-24 00:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章

计算机应用基础知识

1.1计算机的发展、应用与组成 1.1.1计算机的发展与应用 1.计算机的发展历程

第一台数字电子计算机ENIAC于1946年在美国宾夕法尼亚大学诞生,人们习惯于以计算机主机所使用的元器件为着眼点,把计算机的发展划分成为四代。表1.1是第一代至第四代计算机主要特点的对比。 表1.1 第一代至第四代计算机的对比 代别 年代 使用的主要元器件 使用的软件类型 主要应用领域 20世纪40年代GPU:电子管内存: 使用机器语言和第一代 科学和工程计算 中期—50年代末期 磁鼓 汇编语言编写程序 20世纪50年代中、GPU:晶体管内存: 使用FORTRAN等 开始广泛应用第二代 后期—60年代中期 磁芯 高级程序设计语言 于数据处理领域 在科学计算、GPU:SSI、MSI内存: 20世纪60年代操作系统、数据库管数据处理、工业控第三代 SSI、MAI的半导体中期—70年代初期 理系统等开始使用 制等领域得到广存储器 泛应用 软件开发工具和平GPU:LSI、VLSI内 深入到各行各 20世纪70年代台、分布式计算、网第四代 存:LSI、VISI的业,家庭和个人开中期以来 络软件等开始广泛使半导体存储器 始使用计算机 用 2.计算机的发展趋势 1. 计算机性能不断提高 2. 计算机体积不断缩小 3. 计算机价格持续下降

4. 计算机信息处理功能走向多媒化

5. 计算机与通信相结合,计算机应用进入“网络计算时代” 1.1.2 计算机的分类与PC的组成

1.计算机的分类

计算机的分类有多种方法。从技术角度可以按其逻辑结构进行分类,如单处理机与多处理机(并行机)、16位机、32位机或64位计算机等。从应用角度可以按其性能和价格进行分类,把计算机分成下面的5大类。

①巨型计算机(supercomputer),也称为超级计算机,它采用大规模并行处理的体系结构,由数以百计、千计甚至万计的CPU共同完成系统软件和应用软件的运行任务,有极强的运算处理能力,速度达到每秒数万亿次以上。

②大型计算机(mainframe),指运算速度快、存储容量大、通信连网功能完善、可靠性高、安全性好、有丰富的系统软件和应用软件的计算机,通常含有4、8、16、32甚至更多个CPU。

③小型计算机(minicomputer),是一种供部门使用的计算机,以IBM公司AS/400为代表。近些年来,小型机逐步被高性能的服务器(部门级服务器)所取代。 ④个人计算机(Personal Computer,PC),也称为个人电脑或微型计算机,它们是20世纪80年代初由于单片微处理器的出现而开发成功的。个人计算机的特点是价格便宜,使用方便,软件丰富,性能不断提高,适合办公或家庭使用。 有一种特殊的个人计算机,称为工程工作站或简称工作站(workstation),它们具有高速的运算能力和强大的图形处理功能,通常运行UNIX操作系统,特别适合于工程与产品设计使用。

⑤嵌入式计算机(embedded computer),是安装在其他设备中的计算机,例如安装在智能仪表、电子玩具、计算机外部设备、家用电器、汽车、手机、数码相机、MP3播放器等产品中,它们执行着特定的任务。 2.PC的组成

无论系统多么复杂,任何计算机系统都是由硬件和软件组成的。 计算机硬件是计算机系统中所有实际物理装置的总称。 计算机软件则是指在硬件上运行的程序和相关的数据及文档,其中程序是指计算机硬件完成特定功能的指令序列,数据则为程序处理的对象。

PC的硬件主要包括中央处理器(central processing unit,CPU)、内存储器、外存储器、输入设备和输出设备等,它们通过总线互相连接。 (1)中央处理器(CPU)

迄今为止,我们所使用的计算机都是基于“存储程序”的原理进行工作的,计算机中能够按照各种指令的要求完成对数据运算处理的部件称为处理器。 处理器主要由运算器和控制器两部分组成。运算器用来对数据进行各种算术运算和逻辑运算,它也称为执行单元。控制器是指挥中心,它能解释指令的含义,控制运算器及其他部件的工作。

PC中通常包含多个不同的微处理器,它们各有不同的分工和任务,其中承担系统和应用软件运行任务的处理器称为CPU,它是任何一台计算机必不可少的核心部件。

(2)内存储器和外存储器

计算机中的存储器分为两大类:内存储器(简称内存)和外存储器(简称外存)。内存是存取速度快而容量相较小(因容量太大,成本将十分昂贵)的一类存储器,外存则是存取速度慢而容量相对很大的一类存储器。 内存直接与CPU相连接,是计算机中的工作存储器,当前正在运行的程序与数据都必须存储在内存中。CPU工作时,所执行的指令及操作数都是从内存中取出的,处理的结果也存放在内存中。 外存储器也称为辅助存储器,其存储容量很大,存放着计算机系统中几乎所有的信息。计算机执行程序和处理数据时,外存中的信息需要先调入内存后才能被CPU使用。 (3)输入设备

输入(input)是把信息送入计算机的过程,作为名词使用时,指的是向计算机输入的内容。输入可以由人、外部环境或其他计算机来完成。用来向计算机输入信息的设备通称为输入设备。输入设备有多种,例如鼠标器、键盘、扫描仪、麦克风等。

不论信息的原始形态如何,输入到计算机中的信息都使用二进位(0和1)来表示。

(4)输出设备

输出(output)表示把信息送出计算机,作为名词使用时,指的是计算机所产生的结果。计算机的输出可以是文本、语音、音乐、图像、动画等多种形式。 (5)总线

总线(bus)是连接计算机中CPU、内存、外存、各种输入/输出控制部件的一组信号线及其相关的控制电路,它是计算机中用于在各部件间运载信息的公共设拖。

3. 计算机的分类

计算机的分类有多种方法。从技术角度可以按其逻辑结构进行分类,如单处理机与多处理机(并行机)、16位机、32位机或64位计算机等。从应用角度可以按其性能和价格进行分类,把计算机分成下面的5大类。

①巨型计算机(supercomputer),也称为超级计算机,它采用大规模并行处理的体系结构,由数以百计、千计甚至万计的CPU共同完成系统软件和应用软件的运行任务,有极强的运算处理能力,速度达到每秒数万亿次以上。

②大型计算机(mainframe),指运算速度快、存储容量大、通信连网功能完善、可靠性高、安全性好、有丰富的系统软件和应用软件的计算机,通常含有4、8、16、32甚至更多个CPU。 ③小型计算机(minicomputer),是一种供部门使用的计算机,以IBM公司AS/400为代表。近些年来,小型机逐步被高性能的服务器(部门级服务器)所取代。 ④个人计算机(Personal Computer,PC),也称为个人电脑或微型计算机,它们是20世纪80年代初由于单片微处理器的出现而开发成功的。个人计算机的特点是价格便宜,使用方便,软件丰富,性能不断提高,适合办公或家庭使用。有一种特殊的个人计算机,称为工程工作站或简称工作站(workstation),它们具有高速的运算能力和强大的图形处理功能,通常运行UNIX操作系统,特别适合于工程与产品设计使用。

⑤嵌入式计算机(embedded computer),是安装在其他设备中的计算机,例如安装在智能仪表、电子玩具、计算机外部设备、家用电器、汽车、手机、数码相机、MP3播放器等产品中,它们执行着特定的任务。 2. PC的组成

无论系统多么复杂,任何计算机系统都是由硬件和软件组成的。计算机硬件是计算机系统中所有实际物理装置的总称。计算机软件则是指在硬件上运行的程序和相关的数据及文档,其中程序是指计算机硬件完成特定功能的指令序列,数据则为程序处理的对象。 PC的硬件主要包括中央处理器(central processing unit,CPU)、内存储器、外存储器、输入设备和输出设备等,它们通过总线互相连接。

(1)中央处理器(CPU)

迄今为止,我们所使用的计算机都是基于“存储程序”的原理进行工作的,计算机中能够按照各种指令的要求完成对数据运算处理的部件称为处理器。 处理器主要由运算器和控制器两部分组成。运算器用来对数据进行各种算术运算和逻辑运算,它也称为执行单元。控制器是指挥中心,它能解释指令的含义,控制运算器及其他部件的工作。

PC中通常包含多个不同的微处理器,它们各有不同的分工和任务,其中承担系统和应用软件运行任务的处理器称为CPU,它是任何一台计算机必不可少的核心部件。

(2)内存储器和外存储器

计算机中的存储器分为两大类:内存储器(简称内存)和外存储器(简称外存)。内存是存取速度快而容量相较小(因容量太大,成本将十分昂贵)的一类存储器,外存则是存取速度慢而容量相对很大的一类存储器。 内存直接与CPU相连接,是计算机中的工作存储器,当前正在运行的程序与数据都必须存储在内存中。CPU工作时,所执行的指令及操作数都是从内存中取出的,处理的结果也存放在内存中。 外存储器也称为辅助存储器,其存储容量很大,存放着计算机系统中几乎所有的信息。计算机执行程序和处理数据时,外存中的信息需要先调入内存后才能被CPU使用。 (3)输入设备

输入(input)是把信息送入计算机的过程,作为名词使用时,指的是向计算机输入的内容。输入可以由人、外部环境或其他计算机来完成。用来向计算机输入信息的设备通称为输入设备。输入设备有多种,例如鼠标器、键盘、扫描仪、麦克风等。

不论信息的原始形态如何,输入到计算机中的信息都使用二进位(0和1)来表示。

(4)输出设备

输出(output)表示把信息送出计算机,作为名词使用时,指的是计算机所产生的结果。计算机的输出可以是文本、语音、音乐、图像、动画等多种形式。 (5)总线

总线(bus)是连接计算机中CPU、内存、外存、各种输入/输出控制部件的一组信号线及其相关的控制电路,它是计算机中用于在各部件间运载信息的公共设拖。

3. PC的性能参数 (1) CPU的性能

计算机的性能在很大程度上依赖于CPU。CPU的性能主要体现为它的运算速度。测量CPU运算速度的传统方法是看它每秒钟能执行多少条指令。由于不同类型的指令所需要的执行时间不同,因而运算速度的计算比较复杂,也有许多不同的方法。例如,可以以单字长定点指令的平均执行时间来计算,单位是MIPS(million instructions per second),也可以以单字长浮点指令的平均执行速度来衡量,单位是MFLOPS(million floating instructions per second)。

CPU的运算速度与它的工作频率、cache容量、指令系统、运算器的逻辑结构等都有关系。CPU的工作频率也称为CPU的主频,它决定着CPU内部数据传输和指令执行的每一步的快慢。 (2) 内存容量与速度

计算机中内存的容量是越大越好,速度是越快越好。

内存的速度用存取周期来衡量。存储器执行一次完整的读(写)操作所需要的时间称为存取周期,通常情况下也就是从存储器中连续存(写)或取(读)两个字所用的最小时间间隔。 (3) 硬盘存储器性能

磁盘存储器的主要技术指标是磁盘的存储容量和平均访问时间。 (4) 总线的传输速率

总线的传输速度直接影响到计算机内部各个部件相互间传输数据的速度,它与总

线中的数据线宽度、总线工作频率、每次数据传输需要的总线周期数目等有关,以MBps或GBps为单位。 (5) 系统的可靠性

系统的可靠性常常用平均无故障时间(mean rime between failures,MTBF)、平均故障修复时间(mean time to repair,MTTR)来表示,它们的单位是“小时”。若MTBF值很高,且MTTR值很低,则称该计算机具有高的可用性(availability)。 1.1.3 PC软件

1.软件的功能与分类

目前绝大多数计算机都是按照冯?诺依曼“存储程序”的思想设计的。软件大致划分为系统软件和应用软件两大类。 2.系统软件

系统软件中最重要的是操作系统、语言处理程序、实用程序与工具软件等。 (1)操作系统

操作系统(operationg system,OS)是直接运行在裸机上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。它已成为计算机系统必不可少的基本组成部分。操作系统负责对计算机系统的各类资源(包括硬件与软件资源)进行统一控制、管理、调度和监督,合理地组织计算机的工作流程(故被称为操作系统),其目的是提高各类资源的利用率,方便用户使用,并为其他软件的开发提供必要的服务和相应的接口。 (2)程序设计语言及其处理程序

计算机硬件可以直接执行的指令是由0和1所组成的一串二进位代码,这是硬件唯一能直接理解的语言,称为机器语言。所谓汇编语言,是一种与计算机的机器语言相当接近的符号语言,其本质是采用有助于人们记忆的文字符号来表示机器语言,再加上一些用来控制程序执行和便于定义数据的命令。汇编语言通常依赖于特定计算机的指令集,受到了计算机指令的限制,它与机器语言一样,还是一种低级语言。所谓高级程序设计语言,是指比较接近于人们日常所使用的书面语言(英语)的用来编制程序的一类语言。比如已流行多年的FORTRAN、COBOL、BASIC、Pascal、C等程序设计语言都是高级语言。任何一个语言处理系统通常包含一个翻译程序,它把一种语言的程序翻译成等价的另一种语言的程序。被翻译的语言和程序分别称为源语言和源程序,而翻译生成的语言和程序分别称为目标语言和目标程序。按照不同的翻译处理方法,可以将翻译程序分为以下3类: ①从汇编语言到机器语言的翻译程序称为汇编程序。 ②按源程序中语句的执行顺序,逐条翻译并立即执行其功能的处理程序称为解释程序。

③先将高级语言源程序翻译成目标语言程序,然后与需调用的库函数连接成为可执行程序,此类翻译程序称为编译程序。

除了翻译程序外,语言处理系统通常还包括编辑程序(用于编写源程序)、连接程序(将多个分别编译或汇编过的目标程序和库文件进行组合)和装入程序(将目标程序装入内存并启动执行)等。 (3)实用程序

实用程序(utilities program)指用户完成一些日常任务所使用的工具程序,它多半应用于软件和硬件的日常维护、管理和安全控制等方面。 1.2 二进制与数值信息的表示

1.2.1 二进制 1.什么是二进制

日常生活中人们最熟悉十进制数,一个数用10个不同的符号来表示,每一个符号处于十进制数中不同位置时,它代表的实际数值是不一样的。例如,1 997.82代表的实际值是

1 997.82=1×103+9×102+9×101+7×100+8×10-1+2×10-2 在十进制记数制中,基数是10,它表示这种记数制一共使用10个不同数字符号,低位记满10之后就要向高位进一,即日常所说的“逢十进一”。

二进制和十进制相仿,也是一种进位记数制。但它的基数是2,它只使用两个不同的数字符号,即0和1,而且二进制数是“逢二进一”。例如,二进制数(10101)2代表的实际数值是

(10101)2=1×24+0×23+1×22+0×21+1×20=(21)10

对于二进制小数,也有类似情况,例如(101.01)2的实际数值是 (101.01)2=1×22+0×21+1×20+0×2-1+1×2-2=(5.25)10 从十进制和二进制的概念出发,可以进一步推广到更一般的任位制的情况。最常用的有八进制和十六进制两种。八进制数使用0、1、2、3、3、4、5、6、7这8个数字,逢八进一。

(365.2)8=3×82+6×81+5×80+2×8-1=(245.25)10

十六进制数使用0、1、2、4、5、6、7、8、9、A、B、C、D、E、F这16个符号,其中A、B、C、D、E、F分别代表十进制的10、11、12、13、14、15。在十六进制数中,低位逢十六进一,高位借一当十六。 (F5.4)16=15×161+5×160+4×16-1=(245.25)10

3.不同进位制数之间的转换

例1.1 二进制数转换成十进制数。

(111.001)2=(1×22+1×21+1×20+0×2-1+0×2-2+1×2-3)10=(7.125)10 例1.2 八进制数转换成十进制数。

(34.6)8=(3×81+4×80+6×8-1)10=(28.75)10 例1.3 十六进制数的转换成十进制数

(2AB.C)16=(2×162+10×161+11×160+12×16-1)10=(68.375)10 4. 二进制信息的计量单位

二进制的每一位(即0或1)称为“二进制位”,英文是binary digit,缩写为bit,中文直译为比特,也称为“二进位”,在含义不发生混淆时简称“位”,一般用小写的字母“b”表示。比特是计算机处理、存储、传输信息的最小单位。在计算机系统中,存储容量是用它能存储多少字节的二进制信息作为度量单位的。内存容量的度量单位有:

千字节(KB),1 KB=210B=1 024 B 兆字节(MB),1 MB=220B=1 024 KB 吉字节(GB),1 GB=230B=1 024 MB

太字节(TB),1 TB=240B=1 024 GB 1.2.2 整数在计算机内的表示 1.整数(定点数)的表示 整数不使用小数点,或者说小数点是隐含在个位数右面的,所以它也称为定点数。计算机中的整数分为两类:不带符号的整数(unsigned integer),此数整数一定是正整数;带符号的整数(signed integer),此类整数既可表示整数,又可表示负整数。

不带符号的整数常常用于表示地址等正整数,它们可以是8位、16位甚至32位。8个二进位所能表示的正整数其取值范是0~255(28-1),16个二进位所能表示的正整数其取值范围是0~65 535(216-1),32个二进位所能表示的正整数其取值范围是0~232-1。

带符号的整数必须使用一个二进位作为其符号位,一般总是最高位(最左面的一位),0表示“+”(正数),1表示“-”(负数),其余名位则用来表示数值的大小。例如:

00101011=+43 10101011=-43

可见,8个二进位所能表示的带符号整数其取值范围是

77

-127~+127(-2+1~+2-1),16个二进位所能表示的带符号整数其取值范围是-32 767~+32 767(-215+1~+215-1),32个二进位所能表示的带符号整数其取值范围是-231+1~+231-1,64个二进位所能表示的带符号整数其取值范围也可类似地推算出来。

为了内部运算处理方便,数值为负的整数在计算机内不止一种表示方法。上面的表示法称为“原码”,另外的两种表示方法分别称为反码和补码。

负数使用反码表示时,符号位为1,但绝对值部分却正好与原码相反(0变为1,1变为0)。例如: (-43)原=10101011 (-43)反=11010100

负数使用补码表示时,符号位也是1,但绝对值部分却是反码的个位加1后所得到的结果。例如: (-43)原=10101001 (-43)反=11010100 (-43)补=11010101

还有一种整数也经常在计算机内使用,称为“二进制编码的十进制”整数(binary coded decimal,BCD整数),它使用4个二进位表示1个十进制数字,符号的表示仍与上相同。例如: (-56)BCD=1 0101 0110 2.整数的运算

(1)不同长度整整之间的转换

一般而言,短整数可以转换成长整数表示而保持其数值不变,而反过来却不行。短整数转换成长整数表示的方法是,把符号位向左扩充至所需要的长度为止。 (2)整数的变号操作

所谓“变号操作”,是指将该整数变成绝对值相同符号相反的另一个整数。变号操作又称为“取负”运算,它的处理方法是,将该整数的每一个二进位变反,然后在最末位(个位)加1,其结果即为所求。 (3)整数的移位操作

移位操作有多种。按照移位方向来分,移位操作可分成左移、右移两大类;按照操作性质则又可区分为算术移位、逻辑移位和循环移位等不同类型。 ① 算术移位

当乘数或除数是2n时,算术移位用来快速地完成对整数进行乘法或除法的运算。算术左移n位相当于乘以2n,执行方法是把原来的数中每一位都向左移n个位置,左面移出的高位丢弃,右面低位空出的位置上全部补0。若正数左移过程中移出的位中包含1,或者负数移出的位中包含0时,则表示运算结果超出了可表示的数值范围,即发生了溢出,结果不正确。 ② 逻辑移位

逻辑左移n位的执行方法是,把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃,右面低位空出的位补0。

逻辑右移n位的执行方法是把原来的每一位都向右移动n个位置,右面移出的低位丢弃,左面高位的位置上全部补0。 ③ 循环移位

循环移位是一种逻辑操作,它仅仅移动操作数中二进位信息的位置,不会丢弃任何一位信息。循环左移n位是把原来的数中每一位都向左移动n个位置,左面移出的高位放在右面低位空出的位置上。循环右移n位则把原来数中的每一位都向右移动n个位置,右面移出的低位放到左面高位空出的位置上。 (4)逻辑运算

逻辑运算(又称为布尔运算)总是按位进行处理的,即对应位之间进行规定的逻辑运算,不考虑位与位之间的进位。常用的基本逻辑运算有4种:“非”运算(NOT)、“或”运算(OR)、“与”运算(AND)、“按位加”运算(XOR),它们都非常简单。

(5)整数加法

两个带符号整数相加的运算方法很简单,只需从低位到高位把所有位(包括符号位)相加,逢二进一,最高位产生的进位忽略不计。做加法运算时判断有无溢出的规则是,两个同号的整数相加,若结果的符号却相反,则发生溢出。注意,是否发生溢出并不取决于最高位有无进位。 (6)整数减法

两上带符号整数相减的运算方法也很简单,只需先把减数变号,然后再与被减数相加即可。

做减法运算时判断有无溢出的规则是,两个异号的整数相减,若结果的符号与被减数符号相反,则发生益出。当然,是否发生溢出也并不取决于最高位有无进位。 1.2.3 实数在计算机内的表示 1.实数(浮点数)的表示 实数也称为浮点数,因为它的小数点位置不固定。实数是既有整数又有小数的数,整数和纯小数可以看做是实数的特例。任意一个实数在计算机内部都可以用“指数”(整数)和“尾数”(纯小数)来表示,这种用指数和尾数来表示实数的方法称为“浮点表示法”。所以,在计算机中实数也称为浮点数,而整数则称为定点数。

以流行的Pentium系列微处理器中的浮点数为例,它表示为如下形式。 (-1)s2E(b0△b1b2b3?bp-1)

可以看出,pentium系列微处理器中的浮点数具有如下性质。 ① 最高位是符号位,它表示该浮点数(实数)的正负。

② 规格化浮点数的尾数的最高位(第1位)总是1,它不必在尾数表示出来。 ③ 浮点数的0有两种,+0和-0。+0表示成全0,即0 00000000 000000000000000000000000,-0表示成1 00000000 00000000000000000000000。 ④ 浮点数的表示范围虽然很大,但运算中还是可能出现超出它允许范围的一些结果,这种情况称为“向上溢出”。

⑤ 浮点数能表示绝对值很小的数,当运算中出现绝对值更小的数时,这种情况称为“向下溢出”,这时,处理器只能用0来表示。 2.实数的运算

浮点数的加、减运算要比定点数(整数)复杂得多。下面只作简要介绍。 设浮点数A=As×2Ea,B=Bs×2Eb

则和数C=(As×2Ea-Eb+Bs) ×2Eb,差D=(As×2Ea-Eb-Bs) ×2Eb(若Ea≤Eb) 或者:和数C=(As+Bs×2Eb-Ea) ×2Ea,差D=(As-Bs×2Eb-Ea) ×2Ea(若Ea>Eb) 一般来说,浮点数的加、减运算有如下几个步骤:

① 检测A和B中有无0,若A=0,则C=B,若B=0,则C=A。运算结束。

② 计算两数阶码之差,即d=Ea-Eb,若d>0,则将尾数Bs向右移d位,若d<0,则将尾数As向右移-d位,若d=0,则As和Bs均不移位。这个过程称为对阶。 ③ 将对阶过后的两个尾数相加或相减。

④ 把结果进行规格化。对于Pentium处理器来说,若结果尾数绝对值小于1,则尾数不断左移且阶码不断减1,直至尾数绝对值大于或等于1;若结果尾数绝对值大于或等于2,则尾数右移1位阶码加1。 注意,两浮点数相加或相减时,在结果规格化的过程中,可能会发生上溢或下溢。浮点数的乘除法比加减法稍简单一些,其公式为: 乘积=(As×Bs)×2Ea+Eb 商=(As/Bs) ×2Ea-Eb 处理过程如下。

① 检测A和B中有无0,若As=0,则乘积(商)=0,运算结束;若Bs=0,做乘法运算时乘积=0,做除法运算时商为∞,运算结束。 ② 计算两数阶码的和(或差) ③ 两尾数相乘或相除。

④ 把结果进行规格化,即:若结果尾数绝对值小于1,则尾数不断左移且阶码不断减1,若结果尾数绝对值大于或等于2,则尾数右移且阶码加1。

注意,两浮点数相乘或相除时,在阶码相加 (减)的过程中,或者在结果规格化的过程中,可能会发生上溢或下溢。浮点数运算过程中,为了保证浮点数运算的精度,当尾数右移时,对移出的位还需进行舍入处理,这里就不赘述了。 1.3 文字符号在计算机中的表示与处理 1.3.1 西文字符的编码 西文是由拉丁字母、数字、标点符号及一些特殊符号所组成的,它们统称为字符。所有字符的集合称为字符集。字符集有多种,每一字符集的编码方法也多种多样。目前计算机中使用最广泛的西文字符集及其编码是ASCII码,即美国标准信息交换码。每个字符都由7个二进位b6b5b4b3b2b1b0表示。

ASCII码是7位的编码,但由于字节是计算机中的基本处理单位,故一般仍以一字节来存放一个ASCII字符。 1.3.2 汉字的编码 1. GB 2312汉字编码

1981年我国颁布了第一个汉字编码的国家标准——《信息交换汉字编码字符集·基本集》(GB 2312)。该标准选出6 763个常用汉字和682个非常用汉字字符,为每个字符规定了标准代码,这个标准所收集的字符及其编码为国标码,又称为国标交换码。

GB 2312国标字符集由3部分组成。第一部分是字母、数字和各种符号,包括拉丁字母、俄文、日文平假名与片假名、希腊字母、汉语拼音等共682个;第二部分为一级常用汉字,共3 755个,按汉语拼音排列;第三部分为二级常用汉字,共3 008个,因不太常用,所以按偏旁部首列。

GB 2312的所有字符分布在一个94行×94列的二维平面内,行号称为区号,列号称为位号。区号和位号的组合就可以作为汉字字符的编码,称为汉字的区位码。 区号和位号各用8个二进位表示,它们的最高位均设置为1。这样得到的高位匀为1的双字节汉字编码就称为GB 2312汉字的“机内码”,又称为内码。PC中GB 2312汉字的表示都采用这种方式。 2.GBK汉字内码扩充规范

GBK是我国1995年发布的又一个汉字编码标准,全称为《汉字内码扩展规范》。 2.UCS/Unicode与GB 18030编码标准

UCS/Unicode规定,全世界现代书面文字所使用的所有字符和符号都集中在一个字符集中统一进行编码。目前的做法是采用双字节编码。 1.3.3 计算机中的文字处理 1.文稿的输入

汉字输入的编码方法大体可分成以下4类: 1. 数字编码。 2. 字音编码。 3. 字形编码。 4. 音形混合编码。

2.文本的编辑与排版

文本编辑就是对已输入的文字内容进行增加、删除或修改,直到满意为止。使用文字处理软件(如Word、WPS等)。 3.文档的存储与输出

制作的文档可以多种不同的文件格式在外存储器上进行存储。 1. doc:微软公司专用的Word文档格式 2. .txt:纯文本格式 3. .rtf:丰富文本格式

4. .html:超文本标记语言格式

5. .xhtml:超文本标记语言单个文件格式 6. .xml:扩展标记语言格式

1.4 图形在计算机中的表示与处理

图在计算机中有两种表示方法,一种称为点阵图像(dot matrix image)或位图图像(bitmap image),简称图像(image);另一种称为几何图形或矢量图形(vector graphics),简称图形(graphics)。

1.4.1 图像及其处理

1.数字图像的获取及基本参数

现实世界的景物输入到计算机的过程称为图像的获取。 图像获取的过程实质上是信号扫描和数字化的过程,它的处理步骤大体分为以下3步: 1. 取样。 2. 分色。 3. 量化。

每一幅数字图像至少具有下列几个基本参数。

1. 图像的大小,也称为图像分辨率。

2. 位平面(bitplane)的数目,即像素色彩分量的数目。 3. 彩色空间的类型,指彩色图像使用哪些基色进行描述。 4. 像素的深度,指每个像素需要使用多少二进位来表示。像素深度是像素的所有分量的位数之和,它决定着该图像可能出现的不同颜色(灰度)的最大数目。

5. 图像压缩编码与图像文件格式

数字图像在计算机中处理时,其数据量可按下面的公式进行计算(以字节为单位)。

图像数据量=水平分辨率×垂直分辨率×图像深度/8

数据压缩可分成两种类型,一种是无损压缩,另一种是有损压缩。

数字图像保存在存储器中时,其数据文件的格式繁多,PC上常用的就有下列几种:

1. JPEG格式: 2. BMP格式。 3. GIF文件格式: 4. TIFF文件格式: 5. PNG格式。

1.4.2 计算机图形 1.景物的计算机表示

表1.8 图形(graphics)与图像(image)的比较

数据量 可编辑性 3D景物表现能力 图形(graphics) 很小 较好 能准确表示3D景物 图像(image) 很大 较差 3D信息已部分丢失 自然景物表现能力 视图生成能力 视图生成的复杂性 困难 能生成多个视图 需要大量计算 容易 只能生成1个视图 计算比较简单 1.5 音频与视频信息的表示与处理 1.5.1 音频信息的处理与应用 声音是模拟信号。为了使用计算机进行处理,必须将它转换成二进制数字编码的形式,这个过程称为声音信号的数字化。声音信号数字化的过程分为以下几个步骤:

? 取样。

取样也称为采样,就是用时间上离散的一组值(称为取样值或样本)来代替一个时间连续的信号。 ? 量化。

量化就是把每个样本的模拟值转换成数字量来表示,因此量化过程往往也称为A/D转换(模数转换)。

? 编码。 2.波形声音的压缩编码

数字波形声音的数量比较大,每秒钟的数据量(码率)是:码率=取样频率×量化位数×声道数

所谓“MP3播放器”,就是专门用于播放MPEG-1层的编码的高质量数字音乐的电子装置。

3. 计算机合成声音

MIDI是乐谱的数字表示方法,使用MIDI描述的音乐称为MIDI音乐。

MIDI音乐与高保真的波形声音相比,虽然在音质方面还有一些差距,也无法合成出所有各种不同的声音(例如歌词),但它的数据量很少(比CD少3个数量级),又易于编辑修改,还可以与波形声音同时播放,因此,在多媒体文档中得到了广泛的使用。

1.5.2数字视频的压缩编码

表1.10 视频压缩编码的标准及其应用 源图像格式 压缩后的码率 主要应用 名称 MPEG-1 360×288 1.2~1.5 Mbps 适用于VCD、数码相机、数字摄像机等 H.261 360×288或 P×64kbps(P=1、2时,只应用于视频通信,如可视180×144 支持180×144格式,P≥6电话 、电视会议等 时,可支持360×288格式) MPEG-2 720×576 5~15 Mbps 用途最广,如DVD、数字(MP@ML) 卫星电视直播、数字有线电话等 MPEG-2High 1 440×1 152 80~100 Mbps 高清晰度电视(HDTV)领Profile 1 920×1 152 域 MPEG-4 多种不同的视与MPEG-1、MPEG-2相当,适合于交互式和移动多媒(H.26L) 频格式 但最低可达到64kbps 体应用,包括虚拟现实、远程教学、手机、MP4播放器等 数字视频在PC中保存或在互联网上传输时,其文件格式有多种。除了使用MPEG进行压缩编码的视频(其文件扩展名为.mpeg、.mpg、.mp2、.mp3、.dat和.mpa等)一些公司还开发了自己的文件格式。如微软公司的AVI、ASF、WMV文件格式(.avi、.asf、.wmv)、苹果公司的QuickTime格式(.mov、.qt),以及Real Networks公司的RealVideo格式(.rm、.rmvb)等。 1.6 计算机网络基础

1.6.1 计算机网络的功能和分类 1.计算机网络的组成

计算机网络是利用通信设备、通信线路和网络软件,把地理上分散的许多具有独立工作能力计算机(及其他智能设备)以相互共享资源(硬件、软件和数据等)为目的连接起来的一个系统。

实质上,计算机网络是一种数据通信系统。 计算机网络一般由下列几个部分组成:

1. 计算机

2. 数据传输介质 3. 通信控制设备

4. 通信协议(protocol),为了确保网络中的计算机能正确地交换数据,计算机和通信控制设备必须共同遵循的一组规则和约定,这些规则、约定或标准就称为通信协议,简称协议 5. 网络操作系统 6. 网络应用程序 2.计算机网络的功能与服务 1. 文件服务 2. 打印服务 3. 消息服务 4. 应用服务

计算机网络有两种基本工作模式:对等(peer-to-peer)模式和客户/服务器(client/server,C/S)模式。 3. 计算机网络的类型

人们按网络所覆盖的地域范围把计算机网络分为局域和广域网两大类。 1.6.2 计算机局域网 1. 局域网的特点与组成

局域网(LAN)指较小地域范围(1千米或几千米)内的计算机网络,计算机局域网的主要特点是:

① 为一个单位所拥有,地理范围有限 ② 使用专门铺设的传输介质进行数据通信

③ 数据传输速率高(10 Mbps~1 Gbps),延迟时间短

④ 可靠性高、误码率低(10-8~10-11) 2. 常用局域网简介

局域网有多种不同的类型。按照它所使用的传输介质,可分为有线网和无线网;按照网络中各个结点互连的拓扑结构,可以分为星状网、环状网、总线网等;按照结点对传输介质的访问控制方法,可以分为以太网、FDDI网和令牌网等。 (1) 以太网

以太网(Ethernet)最常用的一种局域网,网络中所有结点都使用以太网卡和双绞线(或光纤)连接到网络中,实现相互间的通信。 实际的以太网大多数以集线器(hub)为中心构成。 (2) 光纤分布式数据接口网

光纤分布式数据接口网(FDDI)采用环状结构,利用光将多个结点环接起来,环上的结点依次获得对环路的访问权,进行数据帧的发送或接收。 (3) 无线局域网

无线局域风(WLAN)是局域网与无线通信技术相结合的产物。它采用无线电波进行数据通信,具有有线局域网的所有功能,同时还能方便地移动结点的位置或改变网络的组成。

无线局域网通过无线网卡、无线hub、无线网桥等设备使无线通信得以实现。IEEE802.11是无线局域网目前最常用的传输协议。其中802.11a和802.11g的传输速率分别可达25 Mbps和54Mbps。

蓝牙是一种近距离无线数字通信的技术标准,它是802.11的补充。蓝牙的最高数据传输速率为1 Mbps(有效传输率为721 kbps),传输距离通常为10cm~10m。 1.6.3 互联网及其应用

世界上规模最大的计算机网络是因特网(Internet),因特网通常也称“互联网”。互联网起源于美国国防部ARPANET计划,后来与美国国家科学基金会的科学教育网合并。从20世纪90年代起,政府机构和公司企业的计算机也纷纷入网,并迅速扩大到全世界几乎所有的国家和地区。 3. 互联网的接入 (1) IP地址

为了实现互联网中计算机的相互通信,网络中的每一台计算机(也称为主机,host)必须有一个唯一的标识,核标识就称为IP地址。凡是入网的计算机,都必须获得IP地址授权机构分配的IP地址。

IP地址需指明计算机所在的网络号(net-id)以及它在该网络中的主机号

(host-id)。由于计算机所在局域网的规模大小不完全相同,IP地址分为5类(A、B、C、D、E),所以每个IP地址由3部分构成: IP地址=类型号+网络号(net-id)+主机号(host-id) 目前广泛使用的IP协议第4版规定,IP地址使用4个字节(32个二进位)表示,A类地址用于拥有大量主机(≤16 777 214)的超大型网络,只有少数网络(不超过126个)可获得A类IP地址,它的特征是其二进制表示的最高位为“0”(首字节的值小于128)。B类IP地址的特征是其二进制表示的最高两位为“10”(首字节大于等于128但小于192),规模适中的网络(≤65 534台主机)使用B类地址。C类地址用于主机数量不超过254的小型网络,其IP地址的特征是二进制表示的最高3位为“110”(首字节大于等于192但小于224)。

为了便于记忆,通常采用“点分十进制”来表示IP地址,即使用4个十进制数来表示一个IP地址,每个十进制数对应IP地址中的一个字节,十进制数之间采

用小数点“?”相互分隔。 (2) 域名

每台入网的计算机也可以符号来表示易记的名字为其标识,称为该计算机的域名。域名与各自的IP地址对应,当用户访问网络中的某台主机时,只需按名访问,而无须关心它的IP地址。

一台主机通常只能有一个IP地址,但允许有多个域名(用于不同的目的)。主机从一个物理网络移到另一个网络时,其IP地址必须更换,但可以保留原来的域名不变。

把域名翻译成IP地址的软件称为域名系统(domain name system,DNS)。 (3) 如何接入互联网

互联网是由遍布全球的局域网、广域网和计算机通过通信线路连接在一起而构成的,将局域网连接到互联网通常需要使用路由器。路由器的功能是将两个甚至多个同构或者异构的计算机网互相连接起来。 4. 互联网与Web

Web(world wide web,WWW或Web)有人译作万维网、环球网、或称为Web网、3W网。

网页可以是文本、图片、声音、动画以及它们的组合,多数网页是一种采用HTML语言描述的文档(HTML文档),其文件扩展名为.html或.htm。网页的最大特点在于它是超文本文档,即网页中包含超链接(hyperlink),网页通过超链接相互链接,形成网状的信息空间。 5. 互联网的应用 ① 搜索引擎 ② 电子邮件 ③ 即时通信 ④ 电子政务 ⑤ 电子商务

⑥ 网络新闻和博客 ⑦ 网络音乐和网络影视 ⑧ 网络游戏

第二章 80x86微处理与汇编语言程序设计 2.1. 8086/8088微处理器 2.1.1内部逻辑结构

8086/8088微处理器由两个相互独立且互相配合的部件组成,它们分别称为执行部件(Execution Unit,EU)和总线接口部件(bus interface unit,BIU)。 执行部件负责指令的执行并产生相应的控制信号,主要包括:

①通过EU控制部件将指令队列中取出的指令翻译成EU可直接执行的微操作码。 ②根据指令译码所得到的微操作码,向算术逻辑部件(ALU)及相关寄存器发出控制信号,完成指令的执行,包括数据传送、指令转移以及算术和逻辑运算等,并将运算时产生的状态记录在标志寄存器中。

③根据有关寄存器中的数据以及指令中提供的位偏移量计算有效地址(即偏移地址),然后送总线接口部件产生物理地址。

总线接口部件负责CPU内部与存储器或I/O接口之间的信息传送。 2.1.2 寄存器组

8086/8088CPU的寄存器由3组16位寄存器以及一个指令指针寄存器和一个标志寄

存器所组成。

1.通用寄存器AX、BX、CX和DX

AX(accumulator,累加器):它是执行算术运算的主要寄存器,使用该寄存器往往比其他3个寄存器有更短的目标码和更快的运行速度。此外,AX还被指定作为十进制调整、乘除法以及I/O等操作的专用寄存器。

BX(base,基址寄存器):用于存放数据段内存空间的基础地址。 CX(Count,计数寄存器):用于循环操作和数据串处理的计数控制。

DX(data,数据寄存器):用于乘除法运算时扩展累加器及I/O操作时提供端口地址。

2.指针和变址寄存器SP、BP、SI和DI

SP(stack pointer,堆栈指针):用来提供堆栈顶的偏移地址。

BP(base pointer,基址指针):用来提供堆栈中某指定单元的偏移地址作为基地址使用。 SI(source index,源变址寄存器):串操作时提供DS段中指定单元的偏移地址。 DI(destination indes,目标变址寄存器):串操作时提供ES段中指定单元的偏移地址。

3.段寄存器CS、DS、SS、ES

CS(code segment,代码段段寄存器):用来存放代码段起始地址的高16位。 DS(data segment,数据段寄存器):用来存放数据段起始地址的高16位。 SS(stack segment,堆栈段寄存器):用来存放堆栈段起始地址的高16位。 ES(extra segment,附加段寄存器):用来存放附加段起始地址的高16位。 4.指令指针寄存器IP

这是一个16位的控制寄存器,用来存放CS段中指令的偏移地址。在程序执行过程中,该寄器指向下一条要取的指令,从而可以控制程序的执行流程。 5.标志寄存器flags

flags是一个16位的寄存器,其中CF、AF、SF、PF、OF和ZF为状态标志,DF、IF和TF为控制标志。 2.1.3 存储器管理

8086有20位地址线,因此可以存储的最大内存空间为1MB(220B=1 MB),其范围是00000H~FFFFFH。CPU内部可编址寄存器只有16位,16位寄存器只能寻址64KB。为了能对1 MB内存空间寻址,8086引入了分段技术。所谓分段技术,就是把1 MB的存储空间分成若干个逻辑段,每一个逻辑段的容量小于或等于64 KB,段内地址连续,段与段之间相互独立,可以分别寻址,每个段由软件赋给一个起始地址,应能被16整除 ,也就是说它的20位地址中低4位应该为0,高16位作为“段基址”,存放在段寄存器CS、DS、SS或ES中,段内偏移地址则由IP、SP、BX、BP、SI、DI以及指令中所提供的位移量来确定。

物理地址是一个唯一的、用20位二进制数表示的地址,CPU与存储器交换数据时所使用的地址就是物理地址;而逻辑地址则是由段地址和偏移地址两部分组成的,把逻辑地址转换为物理地址,只要将段地址寄存器中的内容左移4位,再加上偏移地址,就可以得到所需要的物理地址,例如,段地址为0045H,偏移地址为FFFEH,则合成后的20位物理地址就是00450H+FFFEH=1044EH。 2.1.4 中断管理 1.中断和中断源

中断是一种使CPU挂起正在执行的程序,转去处理特殊事件的操作。引起中断的

原因或来源称为中断源(imterrupt source),根据中断请求来自CPU外部或内部,可以将其分为两大类。 (1)外部中断

一切非CPU内部原因产生的中断称为外部中断。外部中断又分为非屏蔽中断(non-maskable interrupt,NMI)和可屏蔽中断(maskable interrupt)。在CPU标志寄存器中,有一个中断允许标志位IF控制可屏蔽中断是否被响应。当IF=1时,表示允许中断;而当IF=0时,表示禁止中断。对于非屏蔽中断来说,IF不产生任何影响,无论为1或为0,非屏蔽中断一定被CPU接收。

通常,人们把比较重要且影响全局的中断源(如掉电等)安排为非屏蔽中断,直接从CPU的NMI引脚输入;而把一般的输入/输出设备引起的中断安排为可屏蔽中断,通过专用的中断控制芯片8259A连接到CPU的INTR引脚。 (2)内部中断

一切由CPU内部引起的中断称为内部中断,如除法运算出错中断、单步中断、溢出中断(INTO)以及由用户定义的各种软件中断INTn等。 2.中断向量表及中断处理

8086/8088微处理器可以处理256种不同类型的中断,每一个中断都有唯一的编号,称之为中断类型号。显然不同类型的中断要求的中断处理程序是不相同的,因而为了使系统响应中断后能转入相应的中断处理程序,系统建立了一张中断类型号与中断处理程序入口地址相联系的中断向量表,表中的中断处理程序入口地址就是指向该程序的指针(也可能指向一组数据,如中断类型号1 EH指向软盘参数),因而称它为中断向量,而中断类型号则通常为中断向量号。 该中断向量表占用1 KB内存空间,固定存放在内存的最低端00000~003FFH地址空间。

2.2 80x86及Pentium4微处理器 2.2.1 概述

80286是为多用户和多任务环境所设计的8086微处理器的改进型号,存储管理系统在原实模式基础上增加了保护模式,可对16 MB物理存储器和1 GB虚拟存储器寻址。此外,还使7种类型的指令得到了增强与扩充。

80486是80386的增强型号,它可在一个时钟周期内完成一条简单指令的执行。此外它还包括cache存储器和一个增强的80387协处理器(80486 DX4有16 KB的高速cache),首次吸取了RISC技术,采用突发周期(burst cycle)与内存进行高速数据传送,因而其执行速度比80836提高了2~4倍。 2.2.2 Pentium4微处理器的逻辑结构与工作原理 1.超标量结构

Pentium4微处理器芯片内含有9个可以同时工作的运算部件,因而称之为超标量(superscalar)结构。 2.指令流水线

CPU的主要任务就是执行指令,为了提高指令的执行效率,Pentium微处理器采用了流水线工作方式。每条指令流水线可以有多条指令同时执行,它们分别处于不同的执行阶段,如取指、译码、读数、执行、存结果等。 (1)采用RISC内核

RISC(reduced instruction set computer,精简指令集计算机)指令系统的最大特点就是大多数指令长度相同,并且能在单个时钟周期内完成,因而特别适合于高速流水线作业。

早期的8086/8088、80386等都属于CISC(complex instruction setcomputer,复杂指令计算机)。Intel公司人80486开始,已经注重RISC技术, (2)在CPU芯片内集成高速缓存 高速缓存(cache)是为了解决CPU内核与主存的速度差异而设置的,其原理是CPU在一段时间内所执行和处理的数据往往集中于存储器的局部范围内,因而把这一段时间可能被频繁访问的指令和数据预先成批从内存读入cache中,以减少CPU访问内存的机会,从而大大提高了读取指令和数据的传输速度。

Pentium微处理器开始就已经将高速缓存分离为指令cache和数据cache。 (3)采用双独立总线

所谓双独立总线(dual independent bus,DIB),就是除了原有的总线接口部件与系统主存相连的前端总线(front side bus,FSB)外,新增了一条连接L2 cache的后端总线(back side bus,BSB),该总线速度较高,可以达到全主频。例如,Pentium 4微处理器主频为1.5 GHz,每个时钟钟周期内可传输4次数据。 (4)采用了先进的动态执行技术 ①深度分支预测 ②动态数据流分析 ③推测执行

3.NetBurst微体系结构

NetBurst微结构的核心由前端流水线(front end pipeline)、乱序执行内核(out of order execution core)以及结果输出部件(retirement unit)3个部分组成。 (1)前端流水线

前端流水线由预取/译码和ETC(执行跟踪cache)/微代码ROM两个部件组成,其功能是按程序确定的执行顺序向乱序执行内核提供指令。 (2)乱序执行内核

乱序执行内核是一个很深的推测执行引擎,其中含有一个容量相当大的指令池,可以允许126条指令的微操作在指令流水线上同时进行处理(Pentium Ⅲ微处理采用的P6微结构中只能提供40条指令的微操作)。这样,一旦某些指令由于执行条件不满足而陷入停顿时,执行单元就可以从指令池中选择其他可供执行的指令,从而实现乱序执行目的 (3)结果输出部件

结果输出部件一方面检测已经执行完的指令,按源程序中确定的指令执行顺序有序地输出结果,另一方面跟踪分支(转移)的执行,把更新了的转移目标送BTB,以支持转移预测功能的实现。 4.超线程技术

超线程技术(Hyper-Threading,HT)是为了减少NetBurst微结构中执行部件的闲置时间,利用多线程设计思想使单个物理CPU并发执行两个以上的代码流(称为线程)。

2.2.3 寄存器组

Pentium4 微处理器实际上是8086/8088内部寄存器的增强与扩充,不同的只是寄存器从16位扩展到32位(段寄存器仍为16位),并且增加了两个段寄存器FS和CS。 1.通用寄存器

通用寄存器包括EAX、EBX、ECX、EDX和ESP、EBP、EDI和ESI。 2.段寄存器

Pentium共有6个段寄存器,即CS、DS、SS、ES以及FS和GS,其中FS和GS是新增设

的两上附加段寄存器。这些段寄存器仍然是16位,在保护模式下段寄存器中不是直接存放段地址,而是装入段选择子。 3.指令指针寄存器

Pentium微处器的指令指针寄存器EIP用于访问代码段中的下一条指令,当微处理器工作在实模式时,该寄存器为IP(16位),而当386以上的微处理器工作于保护模式时,该寄存器为EIP(32位)。 4.标志寄存器

标志寄存器EFLAGS用于指示微处理器的状态并控制其操作。 (1)程序不可见的寄存器

这类寄存器包括描述符cache、局部描述表寄存器LDTR、任务寄存器TR、全局描述符表寄存器GDTR和中断描述符表寄存器IDTR。 2.2.4 工作模式与存储器管理

Pentium处理器包括3种工作模式,即实地址模式、保护虚地址模式、虚拟8086模式。

1.实地址模式

处理器加电或复位时都处于这一工作模式。

①采用分段方式,每段最大地址空间为64 KB,物理地址由段地址乘以16加上偏移地址构成,其段地址位于段寄存器中,确定一个64 KB存储器段的起始地址,偏移地址可用来选择段内的任何一个存储单元。 ②在00000H~003FFH内存区存放256级中断向量表。 ③应用程序不分特权级(相当于特权级0)。

实地址模式下工作的高档微处理器仍然只相当于一个快速的8086/8088。 2.保护虚地址模式

保护模式是80286以上的高档微处理器最常用的工作模式。系统启动后总是先进入实地址模式,对系统进行初始化,然后才转入保护模式进行操作。

在保护模式下,存储器空间采用逻辑地址、线性地址和物理地址来进行描述。地址变换必须分两步进行:第一步将逻辑地址转换为线性地址,第二步再将线性地址转换为物理地址。

1)从逻辑地址到线性地址的转换 在保护模式下,逻辑地址由16位段寄存器中的代码与32位偏移地址组成。在保护模式下段基址不再像实地址模式那样直接由段寄存器提供,而是在段寄存器中装入段选择子(selector),然后通过该选择子间接地到一个描述符表中选择相应的段描述符(descriptor),并从中获得32位的段基址。这样,就可以将32位段基址与32位的偏移地址相加得到所谓的线性地址。 (1)选择子

选择子是装入段寄存器CS~FS、局部描述符表寄存器LDTR或任务寄存器TR中,对全局描述符表或局部描述符表进行检索的一种数据结构。 (2)描述符

描述符也是一种数据结构,利用该数据结构可以提供有关段的属性、大小、位置以及控制和状态信息。 一个段描述符占用8个字节,其中包括32位的段基址、20位的段限界和8位访问权限以及特片位G、D和AVL。

(3)描述符表和描述符表寄存器

Pentium4微处理器中有3种类型的描述符表,即全局描述表GDT、局部描述符表

LDT和中断描述符表IDT。

在8086/8088中段的大小只能在16B~64KB的范围内变化,而Pentiuum4可以根据需要在1~1MB或4KB~4GB的范围内变化。 2)从线性地址到物理地址的转换

若控制寄存器CR0中PG=0,也就是说禁止分页,则分段部件送来的线性地址就是物理地址。

进入分页操作后,线性地址由3个字段组成,它们分别是10位页目录索引值DIR、10位页索引值PAGE和12位偏移地址。

分页部件为了实现从线性地址到物理地址的转换,使用了两种表,即页目录表和页表,这两种表都在存储器中,因此进入地址转换时需要读两次存储器。 3.虚拟8086模式 虚拟8086模式,就是指一个系统可以模拟多个8086微处理同时工作。8086模式下应用程序在最低特权级3级上运行。

Pentium4微处理器除了上述3种工作模式外,还支持系统管理模式(SMM)。 2.2.5 任务管理 1.特权级保护

Pentium4向处理器提供了4个特权级(0~3),其中操作系统的核心放在最高特权级0,操作系统的其余部分放在特权级1,应用程序放在最低特权级3,留下特权级2供中间软件使用。 2.数据访问的保护机制

Pentium4微处理器提供了段、页两级存储保护机制。 3.程序的控制转移

程序的控制转移分为任务内的控制转移和任务间的控制转移两种类型。 2.2.6 中断和异常管理 1.外部中断

外部中断仍然包括可屏蔽中断(INTR)和不可屏中断(NMI)两种类型。 2.内部异常

(1)故障(fault) (2)陷阱(trap) (3)中止(abort)

3.中断和异常类型及其功能

80x60微处理器能处理多达256种类型的中断和异常。 2.2.7 总线时序

Pentium微处理器支持多种不同类型的总线周期。按照数据传送方式,可分为单数据传送总线周期和突发式(成组)传送总线周期;而按照总线操作是否访问高速缓存,又可以分为缓存式和非缓存式两种类型。为了进一步提高总线效率,总线周期还可以采用非流水线和流水线两种方式。 1.非流水线存储器读写周期 2.突发式存储器读写总线周期

Pentium微处理器有3种突发式总线周期,即代码读发式数据线填充、存储器读突发式数据线填充和突发式回写。 3.流水线存储器读写总线周期

Pentium微处理通过NA(下一个地址)输入信号来形成流水线总线周期。 2.2.8 Pentium 4微处理器的发展与展望

自从2000年Pentium4微处理器问世以来,Intel公司在以下几个方面做出进一步的努力:

1.Core微结构

(1)使用四路超标量结构 (2)14级指令流水线 (3)128位SIMD执行单元

(4)更高效率的内存管理系统 (5)更智能化的共享L2缓存架构 (6)更先进的节能技术 2.多核技术

多核技术(multi-cor technology)就是在一块物理芯片上集成两个或多个执行内核来增强硬件多线程的能力。 3.虚拟化技术 虚拟化技术(virtualization technology,VT)是采用软件或硬件方法,使单CPU模拟多个CPU,在一个平台上同时运行多个操作系统,并且应用程序可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

硬件虚拟化方法就是设计支持虚拟技术的CPU以及配套的芯片组、BIOS和VMM软件,采用专用指令集MX(virtual machine extensions)控制虚拟过程。 4.EM64T与Intel64微处理器

在支持EM64T的微处理器中新增加了8个64位通用寄存器(R8~15)和8个128位SSE寄存器(XMM8~XMM15),并且把原有的通用寄存器全部扩展为64位,大大增强了对SSE、SSE2、SSE3和SSSE3的支持。 5.SIMD技术

(1)SIMD的基本特点

SIMD(single instruction multi data)是一种单指令、多数据技术,指令中操作数由多个紧缩(packed)数据组成,其数据类型可以是字节、字、双字、四字紧缩整型数,也可以是紧缩单精度和紧缩双精度浮点数。 (2)SIMD系列指令简介

SIMD系列指包括MMX(multi-media extended)和流式SIMD扩展(tream SIMD extension)指令SSE、SSE2、SSE3、SSSE3。 2.3 80x86指令系统 2.3.1 指令格式与编码

计算机的指令一般由操作码和一个或多个操作数组成。 2.3.2 寻址方式

寻址方式就是指令中用来说明操作数怎样存放以及如何寻找操作数的方法。80x86指令中涉及的操作有3种:立即操作数、寄存器操作数和存储器操作数。 1.立即寻址

寻址方式是把操作数直接放在指令中,紧跟在操作码之后,因而这种操作数称为立即数。

立即寻址方式常用于给寄存器赋初值,并且只能作为源操作数,不能作为目的操作数。

2.寄存器寻址

这种寻址方式的操作数在8位、16位或32们的通用寄存器中。立即寻址方式和寄存寻址方式所执行的操作均在CPU内进行,所以执行速度比较快。

3.存储器寻址

这种寻址方式的操作数在内存数据区中。当需要访问某存储单元时,应根据指令中提供的逻辑地址,即段地址和偏移量形成的物理地址,然后才能对它进行读写操作。

我们就把这个计算得到的段内偏移量称为有效地址(effective address,EA) 在80x86微处理器中,有效地址可以由以下4种地址分量组合而成。 ①基地址:用来指示某局部存储区的起点。 ②变地址:可以方便地访问数组或字符串。 ③位移量:是上述机器指令中的disp字段。 ④比例因子:是32位寻址方式中特有的一种地址分量,其使用方法见下面的说明。 计算80x86微处理器有效地址的一般方法如下: EA=基地址+(变地址×比例因子)+位移量

下面比较详细地介绍80x86微处理器的几种储器寻址方式。 (1)直接寻址

这是最简单的存储器寻址方式,操作数的有效地址是以8位、16位或32位位移量的形式作为指令的一部分,与操作码一起存放在代码段中。操作数的段基址默认为DS,若要对代码段、堆栈段和附加段中的数据寻址,应在指令中增加段跨越前缀。例如:

MOV AX,[2000H] MOV AX,ES:[2000H]

直接寻址的操作数还可以用变量名的形式给出。例如: BUF DB 12H MOV AL,BUF;

(2)寄存器间接寻址 在这种寻址方式中,存储器操作数的有效地址可以是基址寄存器或变址寄存器中的内容,也可以是基址寄存器和变址寄存器中的内容之和。若单独使用基址寄存器或变址寄存器,则分别称为基址寻址和变址寻址;若同时使用基址寄存器和变址寄存器,则称为基址的寄存器间接寻址。例如: MOV EAX,[BX];基址寻址 MOV EAX,[SI];变址寻址

MOV EAX,[BX][SI];基址加变址寻址,[BX][SI]等效于[BX+SI]

注意,基址加变址的寻址方式中,只能是基址和变址相加,而不能是两个基址寄存器相加或两变址寄存器相加。

若以(E)BP、(E)SP为基地址进行间接寻址,默认的段基址在SS中;而采用其他通用寄存器作为基地址进行间接寻址时,则默认的段基址在DS中。同样,可以采用加段跨越前缀的方法对其他段进行寻址。 (3)寄存器相对寻址 在这种寻址方式中,存储器操作数的有效地址是基址或变址寄存器的内容与指令中指定的位移量之和,也可以是基址寄存器加变址寄存器中的内容与指令中指定的位移量之和。与寄存器间接寻址类似,也有所谓相对的基址寻址、相对的变址寻址以及相对的基址加变址寻址。便如: MOV ECX,[BX+24];相对的基址寻址 MOV ECX,[SI+24];相对的变址寻址

MOV EAC,[BX+SI+24];相对的基址加变址寻址,[BX+SI+24]等效于24{BX}{SI}

(4)寄存器比例寻址

在这种寻址方式中,形成存储器操作数的有效地址可以采用以下3种形式: ①变址寄存器的内容乘以比例因子,再加上位移量,称为比例变址方式。 ②变址寄存器的内容乘以比例因子,再加上基址寄存器的内容,称为基址比例变址方式。

③变址寄存器的内容乘以比例因子,再加上基址寄存器的内容和位移量,称为基址比例变址位移方式。例如:

MOV EAX,X[EDI*4];EA=(EDI)*4+X,其中X是8位或32位位移量 MOV EBX,[EDI*8][EBX];EA=(EDI)*8+(EBX) MOV EAX,X[ESI*4][EBP];EA=(ESI)*4+(EBP)+X,其中X是8位或32位位移量 2.3.3基本指令系统 1.传送指令

传送指令用于寄存器、存储单元或输入/输出端口之间传送数据或地址,除了部分标志传送指令外,这类指令不会影响标志位的状态。但要说明的是:第一,两个段寄存器之间不能直接传送数据;第二,两个存储单元之间不能直接传送数据,两操作数中必须有一个是寄存器或立即数;第三,立即数和段寄存器CS不能作为目的操作数,并且立即数也不能直接传送到段寄存器;第四,操作数的类型和长度必须一致,并且不允许溢出。 (1) 通用数据传送指令

MOV DST,SRC;(DST)←(SRC)

MOVSX DST,SRC ;(DST)←符号扩展(SRC) MOVZX DST,SRC ;(DST)←零扩展(SRC) XCHG DST,SRC;(DST)←→(SRC) BSWAP REG;交换字节顺序

PUSH SRC;(SP或ESP)←(SP或ESP)-2或4,(SP或ESP)←(SRC) POP DST;(DST) ←(Sp或ESP),(SP或ESP)←(SP或ESP)+2或4 PUSHA/PUSHAD;8个16/32位通用寄存器数据依次进栈 POPA/POPAD;8个16/32位数据依次出栈,送通用寄存器 (2)累加器专用传送指令

IN ACC,PORT ;(ACC)←(PORT) OUT PORT,ACC ;(PORT)←(ACC) (3)地址传送指令

LEA REG,SRC ;(REG)←SRC

LDS REG,SRC ;(REG)←(SRC),(DS)←(SRC+2或4) LES REG,SRC ;(REG)←(SRC),(ES)←(SRC+2或4) LFS REG,SRC ;(REG)←(SRC),(FS)←(SRC+2或4) LGS REG,SRC ;(REG)←(SRC),(GS)←(SRC+2或4) LSS REG,SRC ;(REG)←(SRC),(SS)←(SRC+2或4) (3)标志传送指令

LAHF ;(AH)←(FLAGS低字节) SAHF ;(FLAGS低字节)←(AH) PUSHF/PUSHFD ;(FLAGS进栈 POPF/POPFD ;FLAGS出栈 2.算述运算指令

1)加法指令

ADD DST,SRC ;(DST) ←(DST)+(SRC) ADC DST,SRC ;(DST) ←(DST)+(SRC)+CF INC DST ;(DST) ←(DST)+1

XADD DST,SRC ;(TEMP←(DST)+(SRC),(SRC) ←(DST),(DST) ←TEMP AAA ;(AL) ←将AL中的和调整为非组合BCD码 DAA ;(AL)←将AL中的和调整为组合BCD码 2)减法指令

SUB DST,SRC ;(DST)←(DST)-(SRC) SBB DST,SRC ;(DST)←(DST)-(SRC)-CF DEC DST ;(DST)←(DST)-1 NEG DST ;(DST)←0-(DST) CMPDST,SRC ;(DST)-(SRC) CMPXCHG DST,SRC ;若(ACC)=(DST),ZF←1,(DST)←(SRC);否则ZF←0,(ACC)←(DST) CMPXCHG8B DST ;(EDX,EAC)中的数据与DST中指定的64位数据比较

DAS ;(AL)←将AL中的差调整为组合BCD码 AAS ;(AL)←将AL中的差调整为非组合BCD码 3)乘法指令

(1)单操作数乘法指令

MUL SRC ;(AX)或(DX,AX)或(EDX,EAX)←ACC)*(SRC) IMUL SRC ;(AX)或(DX,AX)或(EDX,EAX)←(ACC)*(SRC) (2)双操作数和三操作数乘法指令

IMUL REG,SRC1 ;REG16/32←REG16/32*(SRC1) IMUL REG,SRC2,IMM ;REG16/32←(SRC2)*IMM (3)乘法的ASCII调整指令

AAM(ASCII adjust after multiplication)用于将字节乘法的积转换成两个非组合型BCD码。 4)除法指令

DIV SRC ;(ACC)/(SRC),(AL)或(AX)(EAX)←商,(AH)或(DX)或(EDX)←余数 IDIV SRC ;(ACC)/(SRC),(AL)或(AX)或(EAX)←商,(AH)或(DX)或(EDX)←余数 3.逻辑指令

1)逻辑运算指令

NOT DST ;(DST)←(DST)

AND DST,SRC ;(DST)←(DST)∧(SRC) OR DST,SRC ;(DST) ←(DST)∨(SRC) XOR DST,SRC ;(DST) ←(DST)○(SRC) TEST DST,SRC ;(DST)∧(SRC) 2)位操作指令

(1)测试与置位指令

BT DST,SRC ;检查DST中由SRC指定的位,并将其复制到CF中

BTS DST,SRC ;检查DST中由SRC指定的位,并将其复制到CF中,然后该位置1

BTR DST,SRC ;检查DST中由SRC指定的位,并将其复制到CF中,然后该位清0

BTC DST,SRC ;检查DST中由SRC指定的位,并将其复制到CF中,然后该位取反 例如:

BTS AX,7 ;(AX)的位7→CF,1→AX7 (2)位扫描指令

BSF REG,SRC ;从右到左扫描源操作数SRC中的各位 4.移位指令

这类指令可将寄存器与存储器单元8/16/32位二进制数进行逻辑移位、算术移位或循环移位。在移位过程中,这些指令都把CF看作扩展位,用它接收从操作数最左或最右移出的一个二进位。 SHL DST,SRC ;逻辑左移,SRC决定移位次数,最高位进入标志位CF,最低位补0

SHR DST,SRC ;逻辑右移,操作与SHL类似,不同的只是移位方向相反 SAL DST,SRC ;算术左移,操作与SHL相同,但符号位发生变化时,OF置1 SAR DST,SRC ;算术右移,操作与SHR类似,但每次移位通过复制保持号位不变

ROL DST,SRC ;循环左移,移出的位送到操作数的另一端,CF不参加循环移位

ROR DST,SRC ;循环右移,移出的位送到操作数的另一端,CF不参加循环移位

RCL DST,SRC ;带进位循环左移,CF作为操作数的扩展,一起参加循环移位

RCR DST,SRC ;带进位循环右移,CF作为操作数的扩展,一起参加循环移位

SHRD DST,REG,SRC ;双精度右移 SHLD DST,REG,SRC ;双精度左移 5.串操作指令

串操作指令用来处理存储器中存放的字节、字或双字数据串。 ①MOVS:串传送指令,DS:SI/ESI指向的数据串传送到ES:DI/EDI指向的内存区。 ②CMPS:串比较指令,比较DS:SI/ESI和ES:DI/EDI指向的数据串,若相同,则ZF=1。

③SCAS:串扫描指令,用ACC中的关键字扫描ES:DI/EDI指向的目标串,若相同,则ZF=1。

④LODS:取串指令,将DS:SI/ESI指向的数据串元素取到ACC中。

⑤STOS:存串指令,将ACC中的内容存入ES:DI/EDI指向的内存单元中。

⑥INS:串输入指令,从DX指示的端口取数据串到ES:DI/EDI指向的内存区。 ⑦OUTS:串输出的指令,将DS:SI?ESI指向的数据串传送到DX指示的端口中去。 6.控制转移指令 1)无条件转移指令

这种类型的指令无条件转移到目标地址执行程序。按不同的寻址方法可以分为以

下6种指令形式。

JMP SHORT DST ;段内直接短转移,-128~+127B范围相对转移,DST为标号 JMP NEAR PTR DST ;段内直接近转移,±32 KB范围相对转移,DST为标号 JMP DST ;段内直接转移,64 KB范围绝对转移,DST为寄存器 JMP WORD PTR DST ;段内间接转移,64KB范围绝对转移,DST为存储单元 JMP FAR PTR DST ;段间直接转移,段外绝对转移,DST为标号 JMP DWORD PTR DST ;段间间接转移,段外绝对转移,DST为存储单元 2)条件转移指令

这种类型的指令是以标志位的状态或者以标志位的逻辑运算结果作为转移依据,这类指令都是采用段内直接短转移,转移地址的偏移量限制在-128~+127B范围内。

3)条件设置指令 指令格式如下: SETcc DST

4)条件传送指令 指令格式如下: CMOVcc REG,DST 5)循环指令

循环指令用于控制程序的重复执行,它们以CX/ECX寄存器为计数器,在其中预置程序的循环次数,并根据对CX/ECX内容的测试结果来决定程序是循环至目标地址,还是顺序执行循环指令的下一条指令。 按控制循环的方式,循环指令有以下4种形式。 LOOP DST ;(CX/ECX)-1≠0,则循环

LOOPZ/LOOPE DST ;(CX/ECX)-1≠0且ZF=1,则循环 LOOPNZ/LOOPNE DST;(CX/ECX)-1≠0且ZF=0,则循环 JCXZ/JECXZ ;(CX/ECX)=0,则转移 6)调用和返回指令 (1)CALL调用指令

下面是CALL指令的几种基本类型:

CALL NEAR PTR DST ;段内直接调用(NEAR PTR可省略),DST为子程序入口地址

CALL DST ;段内间接调用,DST为寄存器 CALL WORD PTR DST ;段内间接调用,DST为存储单元

CALL FAR PTR DST ;段间直接调用,DST为子程序入口地址 CALL DWORD PTR DST ;段间间接调用,DST为存储单元 (2)RET返回指令

该指令通常放在子程序的末尾,使子程序执行完毕以后能够返回主程序继续执行原来的程序。执行该指令后应该把返回地址出栈送IP寄存器(段内或段间调用时)和CS寄存器(仅段间调用)。 7)中断指令

80x86微处理器提供了以下3条中断指令。

INT TYPE ;TYPE为中断类型号,取值范围为0~255

INTO ;溢出中断指令,若OF=1,产生类型号为4的中断服务 IRET/IRETD ;中断返回指令,偏移地址和段地址送CS:IP/EIP,恢复

FLAGS/EFLAGS

7.处理器控制指令

处理器控制指令用于控制处理器的某些功能,下面只介绍常用的4种类型。 1)标志操作指令

①STC:进位标志置1(set carry)。 ②CLC:进位标志置0(clear carry)。

③CMC:进位标志取反(complement carry)。 ④STD:方向标志置1(set direction)。 ⑤STI:中断允许标志置1(set interrupt)。 ⑥CLI:中断允许标志置0(clear interrupt)。 2)外部同步指令

①NOP:空操作指令,除了使指令指针加1以外,不执行任何操作。 ②HLT:使处理器处于暂停状态。

③WAIT:使处理器处于空转状态 ,定期检查TEST信号是否为低电平。

④ESC:换码指令,可作为其他指令的前缀联合使用,以保持总线的封锁信号。 3)高级语言支持指令

(1)内存存储范围检查指令 指令格式如下: ROUND r,mem

(2)设置与撤销堆栈空间的指令 ENTER i16,i8 ;为过程参数建立一个堆栈区,其中i16指出过程所需要的堆栈字节数

;i8指出过程的嵌套层数(0~31) LEAVE ;撤销前面ENTER指令建立的堆栈区 4)处理器特征识别指令CPUID 2.4 80x86宏汇编语言

2.4.1 汇编语言及其程序结构

汇编语言是机器语言的符号表示,用汇编语言编写的程序不仅容易阅读和理解,而且可以很方便地借助于汇编程序MASM和连接程序LINK对方扩展名为.asm的源程序进行汇编与连接,逐步生成扩展名为.obj的目的程序和护展名的.exe的可执行程序,从而为计算机的软件开发提供了新的支持。 汇编语言编写的程序有以下几个特点。

(1)汇编语言程序以SEGMENT和ENDS把整个程序分成若干段 (2)代码段中可以用PROC和ENDP伪指令定义若干过程

(3)整个程序必须用END语句结束,表示汇编源程序到此为止 2.4.2 80x86宏汇编语言的数据与表达式 1.常量

常量是汇编时已经确定的值,主要用于伪指令中给变量赋值,或作为指令语句中的立即数或存储操作数的组成部分。 2.变量

变量用于定义存储器中的数据,这些数据在程序运行过程中可以随时修改。变量名可以认为是存放数据的存储单元符号地址,它的3个属性是: (1)段属性,指变量所在的段基址。

(2)偏移地址属性,指变量所在地与段基址之间的偏移量。

(3)类型属性,指变量占用存储单元的字节数。 3.标号

标号是给指令性语句所在地址取的名字,它表明该指令在存储器中的位置,可以作为转移类指令的操作数,以确定程序转移的目标地址。 4.表达式和运算符 常量、变量和标号是汇编语言中表示数据的基本形式。在实际使用中往往需要将这3种基本形式的数据用运算符把它们组合起来形成表达式作为汇编语言的数据。

80x86宏汇编语言允许使用的表达式有两种类型:一类是数值表达式,它只产生一个数值结果;另一类是地址表达式,它所产生的结果是一个存储器地址,如果这个地址存放的是数据,则称它为变量,如果这个地址中存放的是指令,就称它为标号。

运算符主要包括以下6种类型。 1.算术运算符

算术运算符包括加(+)、减(-)、乘(*)、除(/)、模除(MOD)、左移(SHL)和右移(SHR)共7种。 2.逻辑运算符

逻辑运算符包括AND(与)、OR(或)、XOR(异或)、NOT(非)共4种,它们只适用于对常量进行逻辑运算。 3.关系运算符

关系运算符包括EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)共6种。 4.数值返回运算符

这种运算符的运算对象必须是存储器操作数,即变量或标号。运算符总是加在运算对象之前,返回的结果是一个数值。 (1)SEG运算符

该运算符加在变量名称或标号之前,返回的数值是该变量或标号所在段的段基址。

(2)OFFSET运算符

该运算符加在变量或标号之前,返回的数值是该变量或标号在段内的偏移地址。例如:

MOV SI,OFFSET ARRAY (3)TYPE运算符

TYPE运算符加在变量名之前,返回该变量以字节数表示的类型,DB、DW、DD、DF、DQ、DT定义的变量类型分明用1、2、4、6、8、10表示,而当TYPE加在标号之前,则返回该标号类型的数值,NEAR和FAR标号类型分别用-1和-2表示。 (4)LENGTH运算符 该运算符加在变量之前,返回的数值是变量中所定义的元素个数。如果变量用重复数据操作符DUP说明,则返回外层DUP前面的数值;如果没有DUP说明,则返回的值总是1。

(5)SIZE运算符

该运算符加在变量之前,返回的数值是变量所占的总字节数,且等于LENGTH和TYPE两个运算符返回值的乘积。 5.修改属性运算符

(1)该运算符用来指明某个变量、符号或地址表达式的类型或距离属性,或者使它们临时兼有与原定义不同的类型属性,但保持它们原来的段属性和偏移地址属性。其使用格式如下: <类型>PTR<地址表达式>

根据地址表达式的不同,所赋给的新类型可以是BYTE、WORD、DWORD、NEAR、FAR,它们只在所在的指令内有效。 (2)THIS运算符

该运算符用来把它后面指定的类型或距离属性赋给当前的变量、符号或地址表达式,但不分配新的存储单元,下一个能分配存储单元的段和偏移地址就是它的段和偏移地址。其使用格式如下: THIS<类型>

注意,该运算符必须与伪操作命令EQU(或=)连用,类型属性可以是BYTE、WORD、DWORD、NEAR、FAR。 (3)HIGH和LOW运算符

HIGH和LOW运算符分别用于从运算对象中分离出高字节和低字节。 (4)SHORT运算符

用于说明转移指令的目标地址与本指令之间的字节距离在-128~+127范围内。 6.其他运算符

(1)圆括号运算符()

用于改变运算符的优先级别。 (2)方括号运算符[]

该运算符中可以是数组变量的下标或地址表达式,以区别操作数的操作数地址。 4.3 80x86宏汇编语言的伪指令语句 80x86宏汇编语言有两种类型的语句,其中指令性语句是80x86微处理器的各种符号指令,它们在汇编过程中被翻译成相应的目标代码,并经过连接后生成计算机可执行的机器指令代码;而伪指令语句使用的是各种伪操作命令,它们在汇编时被解释执行,其功能是为汇编程序提供一些信息,以便能正确地把指令性语句翻译相成应的机器指令代码。

下面分别介绍这些为操作命令的功能及使用方法。 1.符号定义伪指令

符号定义伪指令用于给程序中多次出现的同一个常量或表达式赋一个符号名,也可以为其他符号名取一个新名子,并赋给新的类型属性。 (1)EQU

这是一种等值为操作命令,其语句格式如下: <符号名>EQU<表达式> 其中表达式可以是数值、地址或新的类型属性,也可以是其他符号名,它们与EQU左边所赋给的符号名完全等价,因而在程序中可以方便地用符号名来取代它们。 (2)“=”

该伪操作命令与EQU具有相同的功能,但它定义的符号允许重新定义。其语句格式如下:

<符号名>=<表达式> (3)LABEL

该伪操作命令为当前存储单元定义一个指定类型的变量或符号。语句格式如下: <变量名>LABEL<类型>

该语句通常要与DB、DW、DD等变量定义语句或指令语句连用。这样,它就为与其相连的变量或标号定义一个指定类型的标识符(即新的变量名或标号)。这个新标识符同样有段、偏移量、类型3个属性,其中段和偏移量与相连的变量或标号相同,而类型属性的选择则取决于该标识符与什么连用。如果它与变量连用,其类型可定义为BYTE、WORD或DWORD等;如果它与标号连用,则其类型可定义为NEAR或FAR。

2)变量定义的伪指令

定义变量就是为数据分配存储单元,且对这个存储单元取一个名字,即变量名。存储单元的初值由程序员预置,语句的格式如下:

[<变量名>]{DB|DW|DD|DF|DQ|DT}<表达式>,<表达式>,?

该格式中,变量名是可选的,{ }表示其中的伪操作命令必须选用一种,表达式是赋给变量的初值,常见的有如下几种: (1)数值表达式

这实际上是为数据分配存储单元,并用变量名作为该存储单元的名称。若要定义多个相同类型的数据,可以用逗号把这些数据隔开,并依次分配相邻的存储单元,例如:

BYTES DB 50H,60H

(2)这时必须用DW或DD进行定义。若用DW定义,则变量中存入的是偏移地址;若用DD定义,则变量中存放的是偏移地址和段地址,它们分别处于变量的低位和高位字中。例如:

SRC DD 12345678H LDS SI,SRC ;将SRC中的32位数据作为段地址和偏移地址送DS和SI寄存器

ADDR1 DW SRC ;ADDR1中存放变量SRC的偏移地址

ADDR2 DD SRC ;ADDR2中存放变量SRC的段地址和偏移地址 (3)ASCII字符串

ASII字符串可以用DB伪操作命令为串中的一个字符分配一个字节存储单元,注意,字符串必须用引号括起来,并且不超过256个字符,它们在内存中自左至右以字符的ASCII码按地址递增顺序依次存放。 (4)?表达式

这仍然是为数据项分配存储单元的一种方法,但存储单元中不预置确定的值,常用来预留存储单元,存放程序的中间结果或最终结果。例如: TEMP DB ? ;分配一个字节单元 (5)带DUP的表达式

DUP是重复数据定义操作符,利用带DUP的表达式可以为若干重复数据分配存储单元,并赋给相应的变量名。带DUP的表达式格式如下: DUP<(表达式)>

其中圆括号内的表达式是重复的内容,n是重复次数,例如:

TAB1 DB 10H DUP(?) ;分配10H个字单元,每个单元可预置任意内容 TAB3 DB 10h DUP(’ABCD’) ;重复10H个字符串’ABCD’,共占有40个字节单元

3)程序分段定义伪指令

(1)SEGMENT和ENDS段定义伪操作命令

是利用这种伪操作命令定义一个段的基本格式:

<段名>SEGMENT[<定位类型>],[<组合类型>],[<’类别名’>] ? ; 段体 <段名>ENDS ①定位类型

BYTE:表示本段起始单元可以从任一地址开始,段间不留空隙,存储器利用率最高。 WORD:表示本段起始单元从一个偶字节地址开始,即段起始地址的最后一位二进制数一定是0,如02152H、0A156H等。这种定位方式适合于数据项的类型为字的数据段。

PARA:默认值,表示本段起始地址从一个字节的边界开始,一个节为16个字节,所以段的起始地址一定能被16整除。

PAGE:表示本段起始地址从一个页的边界开始。一页为256个字节,所以段的起始地址一定能被256整除。 ②组合类型

NONE:默认值,表示本段与其他段无组合关系,每段都有自己的段基址。 PUBLIC:表示满足定位类型的前提下与其他模块的同名段连接在一起,形成一个新的逻辑段,共用一个段基址,所有偏移量调整为相对于新逻辑段的起始地址。 COMMON:表示产生一个覆盖段。

STACK:表示把所有同名段连接成一个连续段,自动初始SS和SP,使SS的内容为该连续段的首地址,SP指堆栈低部+1的存储单元。

MEMORY:表示本段在存储器中应定位在所有其他段的最高地址。 AT<表达式>:表示本段从表达式指定的地址开始装入。

③类别名:这是用单引号括起来的字符串,以表示该段的类型。 (2)ASSUME段寻址伪操作命令

该命令用来建立段寄存器与段名之间的联系。语句格式如下。 ASSUME<段寄存器>:<段名>[,<段寄存器>:<段名>,?]

其中段寄存器是CS、DS、SS、PS、GS中的一个,段名是指SEGMENT/ENDS伪指令语句中定义的名字,段寄存器和段名之间必须用冒号“:”分离。 ASSUME CS:CSEG,DS:DSEG,SS:SSEG,ES:ESEG (3)定位伪操作命令ORG和当前位置计数器$

汇编程序对源程序中的段进行汇编处理时,将段名填入段表,同时为该段配备一个初值为0的位置计数器。计数器依次累计段内语句被汇编后生成的目标代码字节个数。为了能够改变该位置计数器的内容,可用伪操作命令ORG实现,它的伪指令格式如下: ORG<数值表达式>

该伪指令把位置计数器的值设置成表达式的值。这样,ORG后面的一条指令语句或数据区定义伪指令就从指定位置进行汇编。表达式的值应该是非负的整数,而且要保证计数器指针定位在0~65 535之间。 4)过程定义伪指令

80x86宏汇编语言用于过程定义的伪操作命是PROC和ENDP,它的语句格式如下: <过程名>PROC[NEAR或FAR] ? RET

<过程名>ENDP

5)宏指令

宏指令可以把重复出现的程序段定义成一条宏指令。这样,在源程序中就可以用一条宏指令代替所定义的程序段,从而使用非常简练、清晰、免去重复书写所定义的程序段。而在汇编时,每当遇到该宏指令,就将其替换成相应的代码块。下面比较详细地说明宏处理的3个过程,即宏定义、宏调用和宏扩展。 (1)宏定义

宏定义由伪操作命令MACRO和ENDM伪操作命令定义,其语句格式如下: <宏指令名>MACRO[<形式参数>。?] ? ENDM

其中,从MACRO语句到ENDM语句之间的所有语句构成了宏指令体(简称宏体)。宏体中使用的形式参数必须在MACRO语句中列出,当有两个以上的形式参数时,必须用逗号隔开。这些形式参数在引用宏指令时被给出的一些名字或数值所取代,这里的名字或数值称为“实参数”。事实上,形式参数只为实参数保留了一些空间,它们指出了在任何以及如何使用实参数的方法。形式参数的使用使宏指令更加灵活。 (2)宏调用

经过宏定义,在源程序中任意位置可以直接引用宏指令名,构成宏指令语句。宏指令名的引用就是宏调用,它要求汇编程序把宏定义的程序段目标代码复制到调用点。如果宏定义是带参数的,就用宏调用时的实参数替代形式参数,其位置一一对应。宏调用的格式如下: <宏指令名>[<实参数>,?]

其中实参数将一一对应地替代宏指令体中的形式参数。当有两个以上的参数时,应该用逗号隔开。

(3)当宏汇编程序扫描到宏指令语句(即宏调用)时,宏汇编程序就把宏体中的指令插入到源程序宏指令所在的位置上,用实参数替代形式参数,并在插入的每一条指令前加上一个“+”号,这一过程就称为宏扩展。 为了解决多次宏调用时,避免宏指令内部使用的符号重复定义的错误,在宏定义中第一条语句必须用局部符号宏指令对其内部使用的符号进行说明。局部符号宏指令的格式如下:

OLCAL<形式参数>[,<形式参数>,?] 6)程序模块的定义和通信

汇编语言可以把程序分成许多模块,并对每个模块独立地进行汇编和调试。程序模块的汇编及调试一般是从低层到高层逐步进行的,当所有模块汇编完毕后,通过连接程序连接成为一个完整的可执行程序。 (1)NAME和END模块定义伪操作命令

定义一个模块,一般需要对模块命名的伪操作命令,它的语句格式如下: [NAME<模块名>] ?

END[标号]

(2)PUBLIC全局符号伪操作命令

该命令说明一张符号表,表示该模块中定义的哪些符号常量、变量、符号以及过程名可以被其他模块所引用。语句格式如下: PUBLIC<符号表>

(3)EXTRN外部符号伪操作命令 该命令同样说明一张符号表,表示本模块中需要引用但却是在其他模块中定义并说明为PUBLIC的那些符号。这些符号可以是常量、变量、符号以及过程名。语句格式如下:

EXTRN<符号:类型>[,?] (4)INCLUDE伪操作命令

该命令可以把源文件插入当前的源文件一起汇编,其语句格式如下: INCLUDE<文件名>

2.5 汇编语言程序设计的基本方法

汇编语言的程序结构有4种,即顺序结构、分支结构、循环结构和子程序结构。下面分别介绍这4种结构的程序设计方法。 2.5.1顺序程序设计

顺序结构的程序在执行中无分支、无转移、无循环,完全按照顺序逐条执行每一条指令。

2.5.2 分支程序设计

分支结构的程序比顺序结构的程序有较高的执行效率,因为它不需要逐条执行程序中的每一条指令,而是可以根据不同的情况和条件自动做出判断,跳过若干指令,并转向相应的处理程序。

分支程序常用的结构形式有两种:一种是比较/测试结构,另一种是分支表(跳转表)结构。

2.5.3 循环程序设计 1.循环程序的结构与组成

循环程序一般应包括以下5个组成部分。 (1)初始化部分; (2)工作部分; (3)修改部分; (4)控制部分; (5)结束处理部分。 2.控制循环的方法 (1)计数控制法; (2)条件控制法; 2.5.4 子程序设计 1.子程序的调用和返回

2.主程序和子程序之间的信息传递 (1)约定寄存器传递信息; (2)约定存储单元传递信息; (3)约定堆栈传递信息。 3.保护现场和恢复现场

子程序中一般要进行现场保护和现场恢复的操作。这种操作可以通过进栈和出栈指令实现。在进入子程序时首要将有关寄存器的内容保存在堆栈中,而当子程序执行完毕返回主程序之前,再把保存的内容弹入相应的寄存器。 2.5.5 ROM BIOS中断调用和DOS系统功能调用 80x86微机系统通过ROM BIOS和DOS提供了丰富的中断服务子程序,用户可以非常方便地调用,从而给程序设计带来了很大的方便。

1.DOS系统功能调用

系统功能调用是DOS为程序员提供的80多个常用子程序,使用方法是: (1)在AH寄存器中设置调用子程序的功能号; (2)根据所调用功能号设置入口参数; (3)用INT 21H指令转入子程序入口;

(4)子程序运行完毕后,按规定取得出口参数。

第三章 PC组成原理与接口技术 3.1 主板与芯片组 3.1.1 主板概述

主板又称为母板(motherboard),是PC的核心部件。主板上通常包含下列各个部分:芯片组、CPU调压器、ROM BIOS、CMOS RAM/RT、电池等器件及CPU插座(或插槽)、存储器(内存)插槽、总线插槽等连接器

CPU和存储器(内存条)分别通过主板上的CPU插座和存储器插槽安装在主板上。PC常用外围设备通过扩充卡(声音卡、显卡等)或主板上的I/O接口与主板相连。扩充卡通过扩充卡上的印刷插头插在主板上相关的I/O总线插槽中。 3.1.2 芯片组

芯片组(chipset)是PC各组成部分相互连接和通信的枢钮。主板上所有的存储器控制功能和I/O控制功能几乎都集成在芯片组内,它既实现了PC总线的功能,又提供了各种I/O接口及相关的控制。离开芯片组,处理器无法和内存、适配卡、外转设备等交换信息。

芯片组主要由两块超大规模集成电路组成:北桥芯片(north bridge chip)和南桥芯片(south bridge chip)。

北桥芯片主要连接pentium4微处理器、DDR内存储器、AGP或PCI-Express×16显卡,并与南桥芯片相连。南桥芯片主要提供PCI总线槽,USB、硬盘接口、局域网口、音频解码器等,并与BIOS ROM相连。 3.2 主板BIOS

主板BIOS是指固化在PC主板上的ROM芯片中的一组程序。系统加电后首先装载这组程序,然后装载操作系统。简单地说,大部分PC中的ROM BIOS有4个主要功能。 1.主板BIOS的主要功能

(1)POST(power on self test,加电自检)程序 (2)CMOS SETUP(或BIOS SETUP)程序 (3)Bootstrap Loader(系统自举装入程序)

(4)基本的I/O设备驱动程序和底层中断服务程序 2.主板BIOS芯片及主板BIOS升级 由于Flash ROM只需利用其工作电压就可以很方便地更新其存储内容,因此,1997年以后推出的主板,存放主板BIOS和ROM芯片基本上均采用Flash ROM。这样,不必更换ROM芯片就可以更新主板ROM中的内容。 3.2.1 CMOS RAM

CMOS RAM本身不存放程序,对CMOS RAM中各项参数的设定是通过执行主板BIOS中的CMOS SETUP程序完成的。而接通计算机电源(或接Reset复位键)时,首先执行的POST自诊断测试程序是通过读取CMOS RAM中的内容来识别系统硬件的配置,并根据这些配置信息对系统中各部件进行测试和初始化的。CMOS RAM的后备电池使存储在CMOS RAM中的信息在PC关机后不会丢失。 3.3 总线

3.3.1 总线概述

总线(bus)是计算机内数据传输的公共路径,用于实现计算机中两个或更多部件之间的通信。

总线的性能指标主要包含下述几个方面: 1.总线的位宽

总线的位宽指的是总线能同时传送的数据位数,即常说的16位、32位64位等。 2.总线的工作频率 总线的工作频率(也称为总线的时钟频率)是指用于协调总线上各种操作的时钟信号的频率(常以MHz为单位)。 3.总线的带宽

总线的带宽(总线的数据传输速率)是指单位时间内总线上可传送的数据量,即常说的每秒钟传送多少个字节。用公式表示为: Q=W×F/N

其中,Q为总线的带宽(MBps),W为总线的数据宽度[总线位宽/8,单位为字节(B)],F为总线工作频率(MHz),N为完成一次数据传送所需的总线时钟周期的个数(N=2时,表示完成一次数据传送需要两个总线时钟周期;N=0.5时,表示1个总线时钟周期内可完成两次数据传送)。 4.总线的寻址能力

总线的寻址能力主要指地址总线的位数及所能直接寻址的存储器空间的大小。一般地,地址线的位数越多,能寻址的地址空间越大,例如,地址总线为20b时,能寻址的存储空间为1M(220)。 5.总线的握手协议

按照总线上信息传送的握手方式划分,总线有同步、异步和半同步3种。 6.突发传送

总线上数据的传送方式分正常传送和突发传送两种。正常传送方式在每一个传送周期内都先传送数据的地址,然后传送数据。 7.总线的负载能力

总线的负载能力可以理解为总线上所能挂接的遵循该总线电气规范的总线设备的数目。

3.3.2 处理器总线与存储器总线

Pentium 4 CPU的PC中的总线结构,主要总线有处理器总线、存储器总线和作为I/O总线的PCI及AGP等(新型PC中还有PCI-PCI-Express及PCI-X总线)。 1.处理器总线

处理器总线又称为前端总线(front side bus FSB),是主板上速度最快的总线,其性能指标是芯片组和主板的最重要的性能指标之一。处理器总线包含数据、地址和控制3部分电路。 2.存储器总线

存储器总线用来在CPU与主存储器之间的传递信息。存储器总线通常与主板芯片组的北桥芯片或MCH(memory controller hub)芯片相连。 3.3.3 I/O总线 1.PCI总线

PCI(peripheral component interconnect)总线是一个标准的、与处理器无关的局部总线,不受制于系统所使用的处理器的种类,通用性更强。 PCI局部总线有以下几个特点。

(1)PCI总线的传输效率高。

(2)PCI总线是一种独立于处理器的总线标准,可以支持多种处理器,从而适用于由不同CPU组成的系统。同时,它将处理器子系统与外围设备分开。 (3)由于PCI总线与CPU隔离,因此不会造成CPU负载过重的问题。 (4)PCI具有即插即用的功能。

(5)PCI总线支持总线的主控方式。 (6)PCI总线采用同步操作。 (7)PCI总线支持突发传输。

(8)PCI有部分信号线具有双重功能,地址信号与数据信号共用一条信号线,在不同时刻。分别用于传输地址与数据信号。 (9)PCI总线管理引脚安排合理。 2.加速图形端口(AGP) AGP(accelerated graphics port,加速图端口)是Intel公司提出的一种新的局部总线,专门用于高性能图形及视频支持。

AGP是一种高速连接,以66MHz的基频运行(实际为66.66MHz),为标准PCI的两倍。基本AGP模式称为1×,每个周期完成一次传输,由于AGP总线为32b(4B)宽,在每秒6 600万次的条件下能达到大约266MBps的数据传输能力。AGP2×模式,每个周期完成两次数据传输,数据传输能力达到533MBps。AGP2.0增加了4×传输能力,数据传输速率可达1 066 MBps。 3.PCI-Express

2001年,Intel发起了由数家公司组成的Arapahoe工作组,开发了一种新的高速总线技术规范——3GIO(third-generation I/0)。2001年8月,PCI-SIC(PCI special interest group)同意接受并促进3GIO作为PCI的新一代规范。2002年4月,3GIO的初始版本1.0完成并被PCI-SIG命名为PCI-Express。2002年7月,PCI-Express1.0规范被批准。 PCI-Express的主要特性如下。

(1)和已有的PCI枚举和设备驱动程序兼容。

(2)物理连接可以是铜的、光纤的或别的物理媒介以满足将来的设计规范。 (3)最大化每个引脚的带宽并且可以减小体积、降低成本、简化布线和制板设计并且简化信号的完整性问题。

(4)与同步时钟相比,内嵌的时钟更容易实现频率的改变。

(5)通过频率和宽度(通道)的增加便于提高带宽(吞吐量,throughput)。 (6)潜伏时间短有利于同步要求高(时间敏感)的数据传送,如视频流。 (7)具有热插拔能力。 (8)具有电源管理能力。

PCI-Express是PC接口从并行向串行转变的一个例子。 1)链路和带宽

PCI-Express系统中以链路(link)进行两个PCI-Express设备间的物理连接,PCI-Express 1.0规范支持通路中每个方面的发送/接收速率为2.5Gbps。 2)差分信号传送 3)PCI-Express设备

PCI-Express设备包括根复合体、交换开关、端点、PCI-Express到PCI/PCI-X的桥等。

3.4 内存储器

计算机中的存储器分为内存储器(内存)和外存储器(外存)两大类。 3.4.1 PC中常用的半导体存储器类型

半导体存储器芯片按照是否能随机地进行读写,分为随机存储器(random access memory ,RAM)和只读存储器(read only memory ROM)两大类。 1.RAM

存储器芯片中的内容可以随机地读出或写入的半导体存储器称为RAM。只有给RAM芯片供电,其中的内容才能保持。目前,PC中使用的RAM主要采用以MOS工艺制成的MOS型半导体集成电路芯片。RAM常分为DRAM和SRAM两种。 (1)DRAM DRAM(dynamic RAM,动态随机存储器)是靠MOS电路中的栅极电容上的电荷来记忆信息的,因此,电路简单,集成度高(即同样芯片面积上可制作出更多的存储单元),功耗低,适合作为PC中内存的主体部分(又称为主存储器或主存,main memory或MM)。平时所说的内存条都是由DRAM为主构成的。由于电容上的电荷会泄漏,因此,为防止数据丢失,需定时给电容上的电荷进行补充。一般DRAM必须在一定的时间间隔(数毫秒)内将数据读出并再写入,这一过程为DRAM的刷新(refresh)。这样,DRAM在使用时必须设置刷新电路,刷新过程增加了处理器的读写时间。一般地,速度相对快的DRAM其刷新周期也短。 (2)SRAM SRAM(static RAM,静态随机存储器)利用半导体双稳态触发电路的两个稳定状态表示1和0,以达到保存和记忆信息的目的。这就使得SRAM存储数据时不需要刷新。

SRAM的主要特点是:工作速度快(如小于2 ms);不需要刷新电路,因此使用简单;在读出时不会破坏原来存放的信息(即一经写入可多次读出);但成DTAM相比集成度要低(主要原因是DRAM中存放1位信息时用到的晶体管数为1个,而SRAM中存放1位信息时用到的晶体管数为6个),功耗较大,制造成本高,价格贵。 2.ROM

与RAM相比,ROM是一种能够永久或永久性地保存数据的存储器,即使芯片掉电,存放在ROM中的数据也不会丢失,因此,常被看做非易失性存储器。只读存储器ROM在工作时虽然也是可以随机访问的,但ROM中的内容是否(或怎样)改写,与ROM的种类有关。

(1)Mask ROM(掩膜ROM或固化ROM)

(2)PROM(programmable ROM,可编程ROM)

PROM中的内容在使用前由专用设备一次写入,以后不能改变。 (3)EPROM(erasable programmable ROM,可擦除可编程ROM)

EPROM和前两种ROM的不同点在于ROM中的内容可以用特殊的装置擦除和重写。一般是将芯片在紫外线下照射15~20分钟以擦除其中的内容,然后用专用设备(如EPROM写入器)将信息重新写入。一旦写入则相对固定。

(4)EEPROM/E2PROM(electrically erasable PROM,电子擦除可编程ROM) EEPROM可以通过一定的电压(或电流)来擦除其中的信息,然后重新写入。 (5)flash ROM(快擦除ROM,闪速存储器) Flash ROM是近年发展最快、前景看好的新型存储芯片。它既像ROM一样具有非易失性,又能在线进行快速擦除和重写。由于flash ROM是全片或分块擦除的,所以擦除速度非常快。Flash ROM在PC中用于存储主板BIOS程序时,就能像使用EEPEOM一样在线更新芯片中的内容。另外,flash ROM已广泛用于数码相机、优

盘等便携式电子通信、娱乐设备中。 3.4.2 主存储器的工作原理 PC中的主存储器由DRAM组成。 1.PC中常用的主存

PC中常用的主存为DDR SDRAM和DDR2 SDRAM并正在向DDR3 SDRAM过渡。

SDRAM是一种与当时推出的芯片组的北桥芯片的前端总线同步运行的DRAM,并且内部的命令发送和数据传输都以前端总线频率为基准。SDRAM支持突发模式。 DDR SDRAM(double data rate SDRAM,DDR) 虽然在发展过程中内存出现了多种类型,但都基于DRAM内部的每一个存储单元——主要是一个晶体管和一个电容。

DDR2 SDRAM可以简单地理解为是一种更快的DDR SDRAM,因为它是通过使用差分信号线而实现更快的时序来获得更高的数据吞吐量的。

DDR2相比,DDR3在核心技术方面并没有本质上的变化,与DDR2的4位预取技术类似,DDR3采用了8位预取技术,加上使用DDR技术,总体上可将存储器外部传输速率提升至核心频率的8倍。

RDRAM是Rambus公司开发的一种芯片的存储器总线,总线具有一个可以以非常高的速率交换信息的特殊装置。

为提高内存条数据读写的可靠性,往往采用奇偶校验(parity check)的方式。采用奇偶校验的内存条,在每个字节(8位)的基础上再增加1位,用于记录每个字节的奇偶性,增加的这一位被称为奇偶校验位。每次访问内存后就利用奇偶校验位进行必要的校验(校验方法可分为奇校验和偶校验),若有错误则提示系统重新访问一遍。例如,采用奇校验时,每次访问内存后检查每个字节(包括校验位)中“1”的个数是否为奇数,若为奇数则认为数据正确,否则认为数据错误。奇偶校验方法只能检查出一位数据访问或传送错误的情况,无法检查多位同时出错的情况,因此只是一种简单的查错方法。 ECC内存

ECC是错误检测和校正(error checking and correcting)的缩写。ECC内存的主要特点是可以自动检查和纠正内存中数据访问和传送过程中产生的错误。在ECC内存结构中,一般采用12位来记录一个字节的数据,在这多出的4位中保存的是根据原8位数据进行计算后得到的一个CRC(cyclic redundancy check,循环冗余校验)值;如果在读出原8位数据时有某位出错,ECC内存就可以由4位CRC值计算出是哪一位出错并将其纠正。 3.4.3 内存条的组成形式

内存条是把一些内存芯片焊在一小条印制电板上组成的部件。内存条必须插入主板中相应的内存条插槽中才能使用。根据内存的封装方式和内存条插槽的规格,内存条主要有如下几种规格。

(1)单列直插式内存条模块(single in-line memory modules,SIMM内存条); (2)双列直插式内存条模块(double in-line memory modules,DIMM内存条); (3)RAMBUS内存条模块(rambus in-line memory modules,RIMM内存条)。 3.5 输入/输出及控制 3.5.1 输入/输出概述

输入/输出设备(又称为I/O设备、外围设备、外部设备等,也简称为外设)是计算机系统的重要组成部分,计算机通过输入/输出设备与外部交换信息。 3.5.2 输入/输出控制方式

PC中输入/输出控制有3种方式,即程序控制方式、中断控制方式及DMA控制方式。 1.程序控制方式

程序控制方式是指在程序的控制下进行数据传送,这是CPU与外部设备交换信息的一种最简单的方式,可分为无条件传送方式和条件传送方式两种。 2.中断控制方式 在中断控制方式下,当输入设备已将数据准备好或输出设备可以接收数据时,便可向CPU发中断请求。CPU响应中断请求后,暂时停止执行当前程序而去执行一个为外设输入/输出数据的服务程序。此服务程序即为中断处理子程序或中断服务子程序。中断服务程序执行完后,CPU又转向到被中断处而继续执行原来的程序。 在中断控制方式下,CPU和外设在大部分时间里是并行工作的。 3.DMA控制方式

与程序控制方式相比,采用中断控制方式进行输入/输出能提高CPU的利用率。但其数据的传输仍是通过执行程序来完成的,并且每次传输都需要保护断点处的现场信息,中断服务完成后还要恢复现场信息,这又需要CPU一定的执行时间。因此,采用中断控制方式传输数据的速度不可能很快,不能满足高速I/O设备以及磁盘设备成组交换数据的需求。为提高输入/输出的速度,可采用DMA(direct memory access,直接存储器存取)方式。

DMA方式采用专门的硬件——DMA控制器(DMAC)来执行数据传送。DMAC可从CPU那里接管系统总线的控制权,并且由DMAC本身发出的存储器地址信号以及访问存储器和I/O设备的读写脉冲等控制信号,使得数据通过总线直接在存储器和I/O设备之间(或I/O设备与存储器之间,存储器与存储器之间)进行传送。在DMA接管总线执行数据传送过程中,CPU暂停工作,不参与数据传送。 使用DMA控制方式进行输入/输出操作时,CPU必须先对指定外设的DMA通道设定工作方式,给出I/O操作命令,指出要传送的数据在存储器中的起始地址及需要传送的字节数目等,然后才能启动DMAC工作。 3.5.3 8259A可编程中断控制器

由于80x86CPU只有一个可屏蔽的中断请求输入端,为了使多个外设以中断方式与CPU进行数据传输,必须有一个专用的硬件中断控制器,早期PC中采用的中断控制器是8259A。

1.8259A中断控制器结构

8259A的逻辑结构包括中断请求寄存器(IRR)、优先级分析器、中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路和级联缓冲器/比较器组成。

中断请求线IRQ0~IRQ7上的中断请求信号接至8位中断请求寄存器IRR,IRR寄存所有中断请求(对应位置1表示有中断请求)。如有多个中断请求使IRR中某些位同时置1,优先级分析器负责选择其中优先级最高的中断请求,送入ISR中对应的一位,供CPU响应中断时获得它所决定的中断向量。ISR用来寄存所有正在被服务的中断信号。IMR存放被屏蔽的中断请求,该寄存器的每1位对应1个中断信号,若为1,则屏蔽掉对应的中断,否则开放该中断。I/O设备发出的中断请求信号IROi为高电平的时间必须保持到8259A接收到CPU发生的第一个中断响应信号INTA负脉冲结束时为止。8259A接收到第二个中断响应信号INTA后,将把中断类型码的值输出到数据总线上,供CPU读入。

8259A内部的数据总线缓冲器是双向三态的,级联缓冲器/比较器用于多片8259A的连接,以实现将优先级中断最多扩展到64级。

2.8259A编程及示例

使用8259A进行中断控制时,CPU首先应对8259A内部的各寄存器写入相应的初始化命令字ICW和控制命令字OCW,即要对8259A进行初始化编程。 初始化命令字共有4个:ICW1(PC的主片口地址为20H,从片口地址为A0H)、ICW2、ICW3和ICW4(主片口地址都是21H,从片口地址都是A1H)。 ICW1用于设置8259A的基本工作方式。 ICW2用于设置中断信号的类型码。 8259A多片级联时需使用ICW3。

ICW4用来设置中断结束方式、缓冲方式、特殊全嵌套方式等。 操作命令字

CPU在向8259A写完初始化命令字后,为了进一步提高它的中断处理功能,例如为了屏蔽某些中断,为了能够读出IRR、ISR中的内容,为了能够发出中断结束命令EOI等,还需继续设置(即向8259A写入)操作命令字。操作命令字共有3个:OCW1(主片口地址为21H,从片口地址为A1H)、OCW2(主片口地址为20H,从片口地址为A0H)、OCW3(主片口地址为20H,从片口地址为A0H)。 OCW1用来设置中断屏蔽寄存器IMR中各位的值。 OCW2用来调协中断结束、优先权循环等操作方式。

OCW2有两个作用。OCW2的第一个作用是在非自动中断结束(EOI)方式下:使ISR中刚刚被服务的那一位或者某一指定的位复位。复位的方法有正常方法和特殊方法两种。

OCW2的第二个作用是定义8259A的优先权工作方式。 OCW3用来设置中断屏蔽方式、查询方式等。 3 .PC的ISA总线中断

PC/XT使用一片8259A管理8级可屏蔽硬件中断,PC/AT及以上的系统使用两片8259A级联管理15级可屏蔽硬件中断。 5.5.4 8237可编程DMA控制器

采用DMA控制方式时,须采用DMAC,8237是早期PC采用的DMAC。8237具有4个用于连接I/O设备进行数据传送的通道。当I/O设备向某通道发出DMA请求时,该通道即可通过8237进行DMA数据传送。

8237内部寄存器可分成两种:4个通道共用的寄存器和各个通道专用的寄存器。 (1)控制寄存器

8237的4个DMA通道共用一个控制寄存器。 (2)模式寄存器

CPU可寻址的模式寄存器也是4个通道共用的。 8237提供4种工作方式,每个通道可以以4种方式之一进行工作,由模式寄存器的D7D6进行选择。 (3)地址寄存器

8237每个通道有一个16位的基地址寄存器和一个16位的当前地址寄存器。 (4)字节计数器

每个通道有一个16位的基本字节计数器和一个16位的当前字节计数器。 (5)状态寄存器(8位)

状态寄存器高4位D7~D4的状态表示当前4个通道即通道3~通道0是否有DMA请求(为1,表示有DMA请求;为0,表示无DMA请求)。低4位D3~D0指出通道3~通道0的DMA操作是否结束。

(6)请求寄存器和屏蔽寄存器

8237有1个四通道共用的DMA请求寄存器和1个四通道共用的DMA屏蔽寄存器,分别用来设置4个通道的DMA请求标志和屏蔽标志。

8237允许使用一个屏蔽一次完成对4个通道的屏蔽设置。 3.6 常用I/O接口 3.6.1 PC串行接口 1.串行通信基础

PC串行通信采用异步通信。异步通信是指一帧信息以起始位和停止位来完成收发同步,异步通信时,一帧字符以起始位开始,停止位结束。在起始位和停止位之间,是数据位和奇偶校验位,起始位之后是数据的最低位。

二进制数据序列串行传送的速率常被称为波特率(baud rate),单位为波特(baud)。

波特率=每秒传送的位数。波特率的倒数称为位时间、即传送一位所需的时间。 常用的校验方法有奇偶校验和循环冗余码校验等。

PC串行接口采用的通信标准是EIA制定的RS-232标准。RS-232定义了标准的机械规范、电气规范和功能规范。 2.通用异步接收器/发送器

PC/AT串行接口的核心是8250,现代PC串行接口的核心已集成在主板芯片组中。 (1)8250内部包括数据总线缓冲器、选择和读写控制逻辑、发送器、接收器、调制解调控制电路、通信线控制寄存器、通信线状态寄存器、波特率发生控制电路和中断控制逻辑。 (2)8250的引脚特性

8250共有40个引脚,除第29脚未使用外,其余引脚基本上可分成两类:与CPU系统总线相连接的信号线和与通信设备相连接的信号线。 与CPU系统总线相连接的其他信号线分述如下: (1)地址控制信号 (2)读写控制信号

(3)中断控制和复位控制信号 8250的内部寄存器

8250内部有10个可寻址的寄存器,分为3组:第一次用于实现数据传输,有发送保持寄存器和接收缓冲寄存器;第二组用于工作方式、通信参数的设置,有通信线控制寄存器、除数寄存器、MODEM控制寄存器和中断允许寄存器;第三组称为状态寄存器,有通信线状态寄存器、MODEM状态寄存器和中断识别寄存器。 (1)发送保持寄存器; (2)接收缓冲寄存器; (3)通信状态寄存器; (4)中断允许寄存器; (5)中断识别寄存器; (6)MODEM控制寄存器;

(7)除数寄存器(16位,由高8位和低8位寄存器组成); (8)通信线控制寄存器; (9)MODEM状态寄存器。

3.6.2 通用串行总线(USB)和IEEE 1394总线

通用串行总线(universal serial USB)和IEEE 1394是两种新的高速串行总线。

1.通用串行总线 (1)USB的特性 ①接口小巧; ②共享式接口;

③支持即插即用和热插拔; ④占用系统资源少; ⑤支持多种操作; ⑥错误检测和恢复; ⑦低成本;

⑧良好的兼容性; ⑨可以提供电源; ⑩电源保护。 2.IEEE 1394

1995年,IEEE提出了它的第1394个标准:IEEE,主要用于满足音频多媒体设备传输大量数据的需求。1394a标准的推出是为了解决最早的1394标准的互用性兼容性问题。它采用了与1394原始版本相同的连接器并支持相同的数据传输速率。 IEEE 1394a标准有3个信号速率:100Mbps\\200Mbps及400Mbps。IEEE1394在一个端口上最多可以连接63个设备,设备间采用树状或菊花链结构连接而不像USB那样必须使用集线器。1394电缆有6根引线,其中的4根用于传送数据,两根用于供电。与主板连接时有专门的1394接口或通过一个PCI总线上的专用适配卡。

第四章 Windows操作系统 4.1操作系统概述 4.1.1操作系统的功能

从计算机硬件和软件资源管理的角度来看,操作系统的主要功能包括下列几个方面。

1.处理器管理

为了提高CPU的利用率,操作系统一般都采用多道程序技术,使系统可以同时运行多个程序。这就要处理器的调度、分配和回收等问题。为了描述多道程序的并发执行,操作系统中引进了进程(process)的概念。进程是指程序处于一个执行环境中在一个数据集上的运行过程,它是系统进行资源分配和调度的基本单位。

2.存储管理

存储管理的主要职责是有效地管理系统的存储资源,特别是内存资源。当运行多个程序,以及运行规模较大、数据很多的程序时,内存往往不够用,存储管理必须解决内存的自动扩充问题,即将内存与外存结合起来,为用户提供一个比内存实际容量大得多的运行空间,这就是虚拟存储器的概念。 3.文件管理

存储在计算机中的所有信息都是以文件形式存放在外存储器上,使用时才装入内

存。

操作系统引入文件概念后,用户不再了解文件的物理结构,也不必自己去组织文件数据在外存储器上的存取操作,而是采用“按名存取”的方式,由文件管理程序根据用户给出的文件名自动地完成数据传输操作。

在许多操作系统中,把I/Q设备也看作是“文件”,称为设备文件。 4.设备管理

设备管理负责组织和管理系统中的各种I/Q设备,有效地处理用户(程序)对这些设备的使用请求,并完成实际的I/Q操作。

操作系统可以分为多种类型,例如单用户单任务操作系统、批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统和并行操作系统等。 4.1.2 PC操作系统 1.MS―DOS

MS―DOS最早的版本是1981年8月发布的1.0版,至1993年6月推出了6.0版。MS―DOS

起初是一个单用户单任务操作系统,从4.0版开始具有多任务处理能力。MS―DOS的主要功能有命令处理、文件管理和设备管理。 2.Windows 9x

微软公司从1983年开始研制Windows系统,于1985年推出了第一个版本。1987年推出了Windows2.0,它具有现在人们熟悉的多窗口界面形式,并且支持内存。1990年推出的Windows3.0及随后推出的3.1版本是一个重要的突破,它以压倒性的商业成功确定了Windows系统在PC领域的垄断地位。但这些版本均为16位系统,它们必须与DOS共同管理系统硬件资源,依赖DOS管理文件系统,且只能在DOS基础上运行,因而它们还不能算是独立、完整的操作系统。 1995年推出的Windows95摆脱了DOS的限制,它在提供强大功能的简化用户操作等方面取得了突出的成绩。Windows95实质上是一个16位32位处理混合的系统,它的缺点是稳定性稍差。

1998年推出的Windows98操作系统是在Windows95基础上改进而成的。 3. WindowsNT/2000/XP/2003/Vista 1989年微软公司成立了一个开发小组。其目标是为商用PC专门开发的一个新的操作系统系列——Windows NT(new tehnolgy)。Windows NT采用与Windows 9x不同的内核。

Windows NT的进一步发展是1999年底推出的Windows2000,他们仍然是面向商务应用的PC操作系统。

2001年推出的Windows XP结束了Windows两条腿走路的历史,它是一个把消费型操作系统和商业型操作系统融合为统一代码的Windows操作系统,是第一个既适合家庭用户也适合商业用户使用的Windows操作系统。Windows XP目前包括5个版本,即家庭版(Home Edition)、专业版(Professional)、媒体中心版(Media Center Edition)、桌面PC版(Tablet PC Edition)和专业64版(Professional x64 Edition),以使用不同的用户。

2003年推出了Windows Server 2003系列操作系统主要是面向大型服务器应用的网络操作系统,以满足各类企业和部门的应用需求。 2006年推出了Windows Vista在许多方面做了改进。但由于Windows Vista对硬件配置要求比较高、价格比较高等原因,目前普及率不是太高。 4.1.3 Windows XP的结构和文件组成

1.基本概念和术语

(1)内核模式与用户模式

Intel x86处理器的体系结构定义了4种特权级(称为4个环),用来保护系统代码不会被恶意地或无意地改写。Windows XP操作系统使用特权级0(即0环)作为内核模式——允许访问所有的系统内存和所有的CPU指令,以运行操作系统的核心组件;特权级3(即3环)作为模式,以运行用户的程序代码和部分系统组件。 (2)Windows API与DLL

Windows应用程序接口(application programming interface, API)是针对Windows操作系统的可以被应用程序调用的函数定义、参数定义和消息格式的集合,应用程序通过Windows API调用操作系统提供的各种系统服务。 在Windows XP操作系统中,Windows API分为32位和16位两类(分别称为Win32 API和Win16 API),它们分别为32位和16位Windows应用程序所调用。 2. Windows XP的结构

基本的用户模式进程有4类,即系统支持进程、服务进程、环境子系统服务进程和应用程序进程。 (1)系统支持进程

①空闲(Idie)进程:进程的映像名称为System Idle Process。该进程作为单线程运行在各处理器上,占用空闲的CPU时间

②系统(Sysetem)进程:进程的映像名称为System ③会话管理器(smss. Ese)

④登录进程(winlogon. Exe):处理交互方式的用户登录和注销。 ⑤本地安全验证服务(Isass. Exe):接收来自winlogon的身份验证请求,并调用适当的身份验证来执行实际的验证。 ⑥服务管理器(servces. Ese):在系统中,“服务”既可以指服务进程,也可以指设备驱动程序,这里特指用户模式的服务进程。 (2)服务进程

许多Windows组件是以服务的方式来实现的,例如spooler(假脱机)、事件日志、任务调度器以及各种网络组件等。其中,svchost进程(svchost. Exe)是Windows XP的重要进程,它专门为系统启动服务各种服务。因此在系统中总是有多个svchost进程。 (3)环境子系统

Windows NT最初发布时带了3个不同的环境子系统:QS/2、POSIX和Windows。 (4)应用程序 在Windows XP环境运行的应用程序类型主要有32位Windows应用程序(简称Win32应用程序)、16位Windows 3.x应用程序(简称Win16应用程序)、16位MS―DOS应用程序。

(5)Windows执行体

执行体包含了基本的操作系统服务,它包含了以下主要组件: ①配置管理器

②进程和线程管理器 ③安全引用监视器 ④I/Q管理器

⑤即插即用(PnP)管理器 ⑥电源管理器

⑦高速缓存管理器和内存管理器 (6)Windows内核

内核是ntosknl.ese中的一组函数以及对于硬件体系结构的底层支持构成的,它完成底层操作系统功能。 (7)硬件抽象层

硬件抽象层(hardware abstract layer, HAL)是一个可加载的、内核模式的模块,它提供了针对Windows当前运行所在硬件平台的底层接口。 (8)设备驱动程序 在Windows XP中,设备驱动程序是可加载的内核模式块(通常以.sys为扩展名),它们是I/O系统和相关设备之间的接口。 3. Windows XP文件组成 Windows XP由成千上万个文件组成,安装后一般在系统盘(通常为硬盘C:)上生成3个文件夹(及其复杂的子文件夹结构):Documents and Settings、Progream Files和Windows,除少数几个系统文件存储在系统盘根目录中,绝大部分文件存储在者3个文件夹中。

(1)Documents and Settings文件

Documents and Settings文件夹用于保存用户配置信息等 (2)Progream Files文件夹

Progream Files文件夹用于存储安装的Windows操作系统内置的一些应用程序 (3)Windows文件夹

Windows文件夹是系统安装的默许文件夹,其中包含了操作系统的绝大多数系统文件。

4.2Windows处理器管理 4.2.1进程 1.进程概述

进程具有动态性(地址空间的大小和内容都是动态变化的)、独立性(各进程的地址空间相互独立)、并发性(宏观上各进程是同时独立运行的)等特征。它在执行过程中不断地在就绪(ready)、运行(running)和阻塞(blocked)3种状态间运行转换。 2.进程管理

进程是系统资源分配的基本单位,每个Windows进程都是由一个执行体进程块(EPROCESS)来表示的。执行体进程块主要包含: ①线程块(ETHREAD)列表 ②虚拟地址空间描述表 ③对象句柄(handle)列表 4.2.2 线程

为了提高进程内的并发性,进一步提高处理器的利用效率,Windows引入了线程(thread)的概念,把线程作为处理器调度的对象,而把进程作为资源分配的单位。线程表示进程中的一个控制点和一条执行途经,任何进程都可以创建多个并发执行的线程。一个进程至少包括一个线程(通常将线程称为初始线程),进程从初始线程开始进而创建一个或多个线程。Windows XP将线程状态分成7种 ①初始 ②就绪 ③备用

④运行 ⑤终止 ⑥等待 ⑦转换

4.2.3 处理器调度 1.调度概述 Windows XP实现了一个优先级驱动、抢先式调度系统——具有最高优先级的可运行线程总是最先运行,而且该线程可能仅限于在允许它运行的处理器上运行——这种现象称为处理器亲和性(procssor affinity)

总之,Windows是在线程粒度上进行调度的,进程并不直接运行,它只是提供资源和环境,让其线程可以在此环境中运行。 2.优先级别

Windows在内部使用32个优先级别,它们的划分如下:系统级别,其优先级别为0,保留给对系统中空闲物理页面进行清零的零页线程(zero page thread);可变级别,其优先级别为1~15;实时级别,其优先级别为16~31。

虽然一个进程只有一个基本优先级值,但每个线程有两个优先级值,即基本优先级和当前优先级,处理器的调度是根据当前优先级做出的。

Windows从来不会在实时优先级范围内(16~31)调整线程的优先级,所以它们的基本优先级和当前优先级总是相同的 3.时限

在Windows XP中,时限只有两种设置值:短期限(2个时钟间隔)或长期限(12个时钟间隔)

每个进程在创建时都有时限值,当给线程分配一个新的时限时就会用到该值。在系统内部,此时限值设置为3的倍数,即3作为一个时限单元。 4.处理器调度 Windows XP严格基于线程的优先级来确定哪一个线程将占有处理器,并进入运行状态。

(1)自愿切换

一个线程可能会通过调用某个Windows 等待某个对象,从而由运行状态进入等待状态,自愿放弃对处理器的使用。这时indows选择一个新的线程来运行。 (2)抢先模式

在这种调度中,当一个高优先级的线程变成就绪时,低优先级的线程被抢占。 (3)时限结束

当正在运行的线程用完了其时限,Windows必须决定的优先级是否应该被降低,然后决定是否应该调度另一个线程到当前处理器上来运行。 (4)线程终止

当一个线程结束运行时,它从运行状态变为终止状态。 5.线程优先级提升

线程优先级提升仅适用于动态优先级范围内的线程,即不管如何提升优先级,优先级永远不会超过15而到实时优先级范围内。 4.3 Windows存储管理 4.3.1 内存管理概述

在多任务处理系统中,存储管理的主要任务包括内存的分配和回收、地址变换、内存扩充、内存共享和保护等功能。

1.分区式存储管理

为了支持程序并发执行,引入了分区存储管理,它把内存分为一些大小相等或不等的分区,操作系统占用其中一部分分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。

分区式存储管理会使存储器产生碎片(被占用分区内未被利用的空间是内碎片,占用分区之间难以利用的空闲区是外碎片),整理碎片需要内存数据搬移,会占用CPU不少空间。

2.页式和段式存储管理

根据分配时采用的基本单位不同,可以将分配管理方式分为3种:页式存储管理、段式存储管理和段页式存储管理。

所谓页式存储管理,就是将程序的逻辑地址空间划分为固定大小的页(page),而物理内存也划分为同样大小的页帧(page frame)。程序加载时,可将任意一页放入内存的任意一个页帧中,且这些页帧不必连续。在段式存储管理器中,将程序的地址空间划分为若干个段(segment),这样每个进程有一个二维(需要给出段名和段内地址)的地址空间,系统为每个段分配一个连续的分区,而进程中的各个段可不连续地存放在内存的不同分区中。

实模式下程序的逻辑地址表示一个16位的段地址和一个16位的偏移量,段地址乘以16后加上偏移量就得到一个20位的指向内存真实位置的物理地址,所以实模式下程序的最大地址空间是1MB。保护模式程序的最大地址空间是4GB。程序的逻辑地址空间划分为若干可变长度的段,每一段内部又划分为4KB固定大小的页,同时,物理内存也划分为同样大小的页帧。 3.虚拟存储器

其基本思想是:在程序装入时,不必将其全部读入到内存,而只需将当前需要执行的一部分读入内存,就可以让程序开始执行。在程序执行过程中,如果需执行的指令或访问的数据尚未在内存(称为“缺页”),则由处理器将相应的页调入到内存,然后继续执行程序。另一方面,操作系统也将内存中暂时不使用的页调出,保存在外存上,从而腾出空间存放将要装入的程序以及将要调入的页。 虚拟存储技术的引入给用户提供了一个远远大于实际物理内存的虚拟存储空间,使得用户能在较小的内存中执行较大的用户程序,并且可在内存中容纳更多的程序并发执行。

4.3.2 内存管理器 Windows XP的内存管理主要由内存管理器组件实现,它有两个基本任务:一是将一个进程的虚拟地址空间转换或映射到物理内存中;二是当内存被过度提交(指运行线程试图使用比当前可用内存更多的物理内存)时,将内存中的某些内容转移到磁盘上(即页面文件中),并且在以后需要这些内容时再将其读到内存中。 内存管理器是Windows执行体的一部分,位于ntoskrni.exe文件中(在HAL中没有内存管理器的任何部分)。它主要由以下几个部分构成: ①一组执行体系统服务,负责分配、释放和管理虚拟内存

②一个转换无效和访问错误中断处理程序,用于解决硬件检测到的内存管理异常,并代表进程将虚拟页面装入内存。 4.3.3 虚拟地址空间布局与地址转换机制 1.虚拟地址空间的布局结构

对于x86系统的32位Windows操作系统来说,虚拟地址空间为4GB。为了有效地使用和管理,Windows XP对它们的区域划分作了统一的规定:在默许情况下,每个

用户进程可以占用2GB的地址空间(称为用户地址空间),系统占用剩下的2GB地址空间(称为系统地址空间)。需要说明的是,Windows XP支持一个可允许用户地址空间多达3GB的引导时刻选项(在boot.ini文件中设置)使用户地址空间为3GB、系统空间为1GB。 2.地址转换机制 (1)虚拟地址转换 在x86系统中,Windows XP利用二级页表结构来实现虚拟地址到物理地址的变换。一个32位的虚拟地址可被分为3个独立的部分:页目录索引、页表索引和字节索引,这3个部分均是索引值,用于指向描述页映射的结构。页面大小和页表项的宽度决定了页目录和页表索引域的宽度。

在将虚拟地址转换为物理地址时,将涉及下面的基本步骤: ①内存管理硬件找到当前进程的页目录 ②利用页目录索引找到相应的页目录项 ③利用页表索引在页表中找到页表项的位置 ④利用页表项来定位到页面

⑤当该页表项指向一个有效页面时,利用字节索引可定位到物理页面中目标数据的地址上。

4.3.4 内存分配方式 1.用户空间内存分配

(1)以页为单位的虚拟内存分配方式

在应用程序的地址空间,页面有3种状态:空闲(free)、被保留(reseved)或已被提交(committed)。 (2)内存映射文件

内存映射文件的基本思想是:在虚拟地址空间中保留一段地址空间,并把目标文件的全部或部分映射到这个空间中,使用户可以访问内存的方式直接操作文件中的数据。

(3)内存堆方式

在系统初始化时,内存管理器创建了两种类型的动态大小的内存池,内核模式的组建从这两种内存池中分配系统内存。 ①非分页池 ②分页池

4.3.5 缺页处理与页面文件 1.缺页处理 2.页面调入I/Q 3.页面文件

在Windows XP中,系统最多可支持16个页面文件,每个页面文件大小最大可达4GB。由系统管理页面文件时,在默许情况下,最小的页面文件大小值为RAM的大小(当系统内存小于1GB时)国RAM的1.5倍(当系统内存大小等于1GB时),最大的页面文件大小值为RAM的3倍。 4.3.6 工作集与物理内存管理

内存的访问速度远远高于外存的访问速度,若频繁地进行缺页处理——从外存中调入页面,则会大大降低系统性能。工作集是指驻留在物理内存中的虚拟页面的子集。

1.页面调度策略

2.工作集管理

3.平衡集管理器和交换程序 4.系统工作集

正如进程拥有工作集一样,操作系统中可分页的代码和数据也是通过一个系统工作集来管理的。系统工作集中可以驻留5种不同类型的页面:系统高速缓存页面、分页缓冲池、ntoskrnl.exe中可分页的代码和数据、设备驱动程序中可分页的代码和数据以及系统映射试图。 4.4 Windows文件管理

计算机中的程序和数据通常都以文件的形式存放在磁盘或其他外存储器上,用户或程序必须通过文件操作才能使用它们。文件管理是通过目录来完成的,而目录又是建立在分区卷基础上的。操作系统中文件和目录操作相关的子系统称为文件管理系统。

4.4.1 基本概念 1.文件

自Windows 95以来的版本,文件系统允许使用长文件名,即可用长达255个字符的名字来命名文件。 2.文件目录(文件夹)

Windows XP中的文件目录称为文件夹,它采用多级层次式结构(也称为树状结构)。在这种结构中,每一个磁盘(或磁盘上的分区)有若干文件夹,文件夹不但可以包含文件,而且还可以包含下一级的文件夹,这样依次推广下去就形成了多级层次文件夹结构。多级文件夹既方便用户查找文件,又可以把不同类型和不同用途的文件分类存储,还允许文件重名。 3.有关存储的术语 (1)磁盘

磁盘(disk)是一种物理存储设备,泛指硬盘(及移动硬盘)、软盘、光盘和优盘等外部存储器。 (2)扇区

扇区(sector)是磁盘上固定大小、可寻址的存储块。 (3)簇

簇(cluster)是许多文件系统使用的可寻址数据块,磁盘空间的分配通常以簇为基本单位。

(4)分区

硬盘的第一个扇区(第0面、第0磁道上的第1个扇区)称为分区扇区,该扇区中存储有一小段启动程序和一张分区表。在PC启动时,BIOS会读取分区扇区,然后由分区扇区中的启动程序转入活动分区中的引导扇区来运行引导程序。 (5)卷 卷(volume)分为简单卷(simple volume)和多分区卷(multipartition volume)。 通常所说的卷,是在基本盘上格式化的主分区或逻辑驱动器,用户所使用的每个盘均是一个卷。

(6)基本盘与动态盘

基本盘是一种可由MS-DOS和所基于Windows操作系统访问的物理磁盘,这是PC中最常见的磁盘类型。

动态盘是一种通过Windows 2000、Windows XP(及其后一些版本)才能访问的磁

本文来源:https://www.bwwdw.com/article/of3o.html

Top