1325.进入 BOOTSTRAP电路模块 开发板需要使用到EZ328的 BOOTSTRAP模式,因此要有相关的电路保证。只要驱动 EZ328的 EMUBRK引脚为低电平并执行系统复位,就可使EZ328进入 bootstrap模式,其 内建的 bootstrap程序就会开始运行,初始化芯片上集成的UART控制器并准备接收数据。 这样开发者就可以通过UART控制器写寄存器来初始化开发板,然后下载程序到开发板的 RAM和 FLASH中运行调试。 在 RESET部分,使用了六路施密特触发器74HC14和六路反相器74AC05。触发器用 来整理\ RESET波形,反相器用来产生 MUBRK信号并且保证它和 RESET之间的时序关系 EMUBRK RESET 图1.15. RESET电路进入 BOOTSTRAP时序图 1.3.3.TQFP和LQFP器件的焊接方法 在嵌入式系统硬件设计中,会大量用到表贴元器件特别是芯片,制作少量样机时,非常 需要进行手工焊接。下面介绍焊接TQFP和LQFP器件的焊接方法,供读者在实际的焊接工作 中参考。 1.所需工具和材料 合适的工具和材料是做好焊接工作的关键 (1)焊锡丝,直径为04mm或0.5mm; (2)电烙铁,要求烙铁尖要细,顶部的直径在1mm以下,功率为25W(不需选用功率过大 (3)无腐蚀型松香焊锡膏 (4)吸锡网,宽度为1.8mm; (5)无水乙醇(酒精)含量不少于99.8% (6)防静电尖头镊子(不要平头)和一组专用的焊接辅助工具(两端有尖的、弯的各种形 状) (7)一把小硬毛刷(非金属材料); (8)数字万用表; 9)放大镜,最小为10倍,可根据自己的实际情况选用头戴式、台灯式或手持式 2.焊接操作过程 首先检查QFP的引脚是否平直,如有不妥之处,可事先用尖头镊子处理好。PCB上的焊 盘应是清洁的 (1)在焊盘上均匀涂上一层焊锡膏,由于焊锡膏有粘性,除了有助焊作用,还方便芯片的 定位。 (2)用尖镊子或其它的方法小心地将QFP器件放在PCB上,然后再用尖镊子夹QFP的对角 无引脚处,使其尽可能的与焊盘对齐(要保证镊子尖不弄偏引脚,以免校正困难)。 要确保器件的放置方向是正确的(引脚1的方向)。 (3)另一只手拿一个合适的辅助工具(头部尖的或是弯的)向下压住已对准位置的QFP器 (4)将烙铁尖加上少许的焊锡,焊接芯片对角的两点引脚。此时不必担心焊锡过多而使相 邻的引脚粘连,目的是用焊锡将QFP固定住。这时再仔细观察QFP引脚与焊盘是否对 得很正,如不正应及早处理。 (5)按上步的方法焊接另外对角的两引脚,使其四面都有焊锡固定,以防焊接时窜位 (6)这时便可焊接所有的引脚了
- 30 - 1.3.2.5. 进入 BOOTSTRAP 电路模块 开发板需要使用到 EZ328 的 BOOTSTRAP 模式,因此要有相关的电路保证。只要驱动 EZ328 的/EMUBRK 引脚为低电平并执行系统复位,就可使 EZ328 进入 bootstrap 模式,其 内建的 bootstrap 程序就会开始运行,初始化芯片上集成的 UART 控制器并准备接收数据。 这样开发者就可以通过 UART 控制器写寄存器来初始化开发板,然后下载程序到开发板的 RAM 和 FLASH 中运行调试。 在 RESET 部分,使用了六路施密特触发器 74HC14 和六路反相器 74AC05。触发器用 来整理\RESET 波形,反相器用来产生\EMUBRK 信号并且保证它和\RESET 之间的时序关系 如下: 图 1.15. RESET 电路进入 BOOTSTRAP 时序图 1.3.3. TQFP 和 LQFP 器件的焊接方法 在嵌入式系统硬件设计中,会大量用到表贴元器件特别是芯片,制作少量样机时,非常 需要进行手工焊接。下面介绍焊接TQFP和LQFP器件的焊接方法,供读者在实际的焊接工作 中参考。 1.所需工具和材料 合适的工具和材料是做好焊接工作的关键: (1) 焊锡丝,直径为0.4mm或0.5mm; (2) 电烙铁,要求烙铁尖要细,顶部的直径在1mm以下,功率为25W(不需选用功率过大 的); (3) 无腐蚀型松香焊锡膏; (4) 吸锡网,宽度为1.8mm; (5) 无水乙醇(酒精)含量不少于99.8%; (6) 防静电尖头镊子(不要平头)和一组专用的焊接辅助工具(两端有尖的、弯的各种形 状); (7) 一把小硬毛刷(非金属材料); (8) 数字万用表; (9) 放大镜,最小为10倍,可根据自己的实际情况选用头戴式、台灯式或手持式。 2.焊接操作过程 首先检查QFP的引脚是否平直,如有不妥之处,可事先用尖头镊子处理好。PCB上的焊 盘应是清洁的。 (1) 在焊盘上均匀涂上一层焊锡膏,由于焊锡膏有粘性,除了有助焊作用,还方便芯片的 定位。 (2) 用尖镊子或其它的方法小心地将QFP器件放在PCB上,然后再用尖镊子夹QFP的对角 ——无引脚处,使其尽可能的与焊盘对齐(要保证镊子尖不弄偏引脚,以免校正困难)。 要确保器件的放置方向是正确的(引脚1的方向)。 (3) 另一只手拿一个合适的辅助工具(头部尖的或是弯的)向下压住已对准位置的QFP器 件。 (4) 将烙铁尖加上少许的焊锡,焊接芯片对角的两点引脚。此时不必担心焊锡过多而使相 邻的引脚粘连,目的是用焊锡将QFP固定住。这时再仔细观察QFP引脚与焊盘是否对 得很正,如不正应及早处理。 (5) 按上步的方法焊接另外对角的两引脚,使其四面都有焊锡固定,以防焊接时窜位。 (6) 这时便可焊接所有的引脚了
3.焊接要领 (1)在焊接时要保持烙铁尖与被焊引脚是并行的。 (2)尽可能防止焊锡过量而发生连接现象,如果出现粘连也不必立即处理,待全部焊接完 毕后再统一处理。同时也要避免发生虚焊现象 (3)焊接时用烙铁尖接触每个QFP引脚的末端,直到看焊锡注入引脚。可随时向烙铁尖加 上少量焊锡。 (4)电烙铁不要长时间的停留在QFP引脚上,以免过热损坏器件或焊锡过热而烧焦PCB板。 4.清理过程 (1)焊完所有的引脚后要清除多余的焊锡。在需要清除焊锡的地方将吸锡网贴在该处,如 有必要可将吸锡网浸上焊锡膏。用电烙铁尖贴在被吸点边缘的吸锡网上,吸锡网有了 热量就会把多余的焊锡吸在吸锡网上以解除粘连现象。存留在吸锡网上的焊锡可随时 给以剪掉清理或加热甩掉 (2)用10倍(或更高倍数)放大镜检查引脚之间有无粘连假焊现象,或将万用表调到测试 极管极性一挡(一般此时两测试笔之间短路会有蜂鸣声),检查芯片两相邻引脚是 否出现不应该的短路。如有必要可重新焊接这些引脚。 (3)检査合格后需清洗电路板上的残留焊锡膏,以保证电路板的淸洁美观,更能看清焊接 效果。 (4)用毛刷浸上无水乙醇,然后用毛刷沿引脚方向顺向反复擦拭,用力要适中,不要用力 过大。要用足够的酒精在QFP引脚处仔细擦拭,直到焊锡膏彻底消失为止。如有必要 可更换新的酒精擦拭,使得清洗的电路板及器件更美观。 (5)最后再用放大镜检査焊接的质量。焊接效果好的,应该是焊接器件与PCB之间,有 个平滑的熔化过渡,看起来明亮,没有残留的杂物,焊点清晰。如发现有问题之处, 重新焊接或清理引脚。 6)擦拭过的线路板应在空气中干燥30分钟以上使得QFP下面的酒精能够充分挥发。 上述介绍的焊接技术是我们在实际的焊接工作中积累的一些经验。焊接QFP器件原本就 不是很难,只要细心观察精心操作,就会得到满意的焊接成果 13.4.硬件调试 PCB板制作完成后,要对比较重要的电路进行分块焊接,分块调试 (1)首先完成电源模块,检查输出电压是否符合要求 (2)然后焊接CPU和晶振,上电后检查晶振起振是否正常 (3)焊接MAX3232,检查串口电压转换是否正常 (4)焊接9针串口接头,和PC上位机连接,使用BBUG程序检査是否正常进入 BOOTSTRAP模式 (5)焊接上EDO芯片,使用BBUG检查对存储器能否进行正常读写 (6)连接上LCD模块,通过BBUG在 EDO RAM中写入显示信息,检查LCD显示是否正 常 (7)焊接上 FLASH芯片,使用 BOOTLOADER对 FLASH进行读写: (8)完成系统其他部分 31
- 31 - 3.焊接要领 (1) 在焊接时要保持烙铁尖与被焊引脚是并行的。 (2) 尽可能防止焊锡过量而发生连接现象,如果出现粘连也不必立即处理,待全部焊接完 毕后再统一处理。同时也要避免发生虚焊现象。 (3) 焊接时用烙铁尖接触每个QFP引脚的末端,直到看焊锡注入引脚。可随时向烙铁尖加 上少量焊锡。 (4) 电烙铁不要长时间的停留在QFP引脚上,以免过热损坏器件或焊锡过热而烧焦PCB板。 4.清理过程 (1) 焊完所有的引脚后要清除多余的焊锡。在需要清除焊锡的地方将吸锡网贴在该处,如 有必要可将吸锡网浸上焊锡膏。用电烙铁尖贴在被吸点边缘的吸锡网上,吸锡网有了 热量就会把多余的焊锡吸在吸锡网上以解除粘连现象。存留在吸锡网上的焊锡可随时 给以剪掉清理或加热甩掉。 (2) 用10倍(或更高倍数)放大镜检查引脚之间有无粘连假焊现象,或将万用表调到测试 二极管极性一挡(一般此时两测试笔之间短路会有蜂鸣声),检查芯片两相邻引脚是 否出现不应该的短路。如有必要可重新焊接这些引脚。 (3) 检查合格后需清洗电路板上的残留焊锡膏,以保证电路板的清洁美观,更能看清焊接 效果。 (4) 用毛刷浸上无水乙醇,然后用毛刷沿引脚方向顺向反复擦拭,用力要适中,不要用力 过大。要用足够的酒精在QFP引脚处仔细擦拭,直到焊锡膏彻底消失为止。如有必要 可更换新的酒精擦拭,使得清洗的电路板及器件更美观。 (5) 最后再用放大镜检查焊接的质量。焊接效果好的,应该是焊接器件与PCB之间,有一 个平滑的熔化过渡,看起来明亮,没有残留的杂物,焊点清晰。如发现有问题之处, 再重新焊接或清理引脚。 (6) 擦拭过的线路板应在空气中干燥30 分钟以上使得QFP下面的酒精能够充分挥发。 上述介绍的焊接技术是我们在实际的焊接工作中积累的一些经验。焊接QFP器件原本就 不是很难,只要细心观察精心操作,就会得到满意的焊接成果。 1.3.4. 硬件调试 PCB 板制作完成后,要对比较重要的电路进行分块焊接,分块调试。 (1) 首先完成电源模块,检查输出电压是否符合要求; (2) 然后焊接 CPU 和晶振,上电后检查晶振起振是否正常; (3) 焊接 MAX3232,检查串口电压转换是否正常; (4) 焊接 9 针串口接头,和 PC 上位机连接,使用 BBUG 程序检查是否正常进入 BOOTSTRAP 模式; (5) 焊接上 EDO 芯片,使用 BBUG 检查对存储器能否进行正常读写; (6) 连接上 LCD 模块,通过 BBUG 在 EDO RAM 中写入显示信息,检查 LCD 显示是否正 常; (7) 焊接上 FLASH 芯片,使用 BOOTLOADER 对 FLASH 进行读写; (8) 完成系统其他部分
第二章操作系统 21.基础知识 211.操作系统功能 操作系统是充当计算机用户和计算机硬件之间的一个中介,并用于管理计算机资源和 控制应用程序运行的计算机程序 简单的讲,操作系统一般会提供以下服务 程序运行一个程序的运行离不开操作系统的配合,其中包括指令和数据载入内 存,ⅣO设备和文件系统的初始化等等 ●IO设备访问每种IO设备的管理和使用都有自己的特点。而操作系统接管了这 些工作,从而使得用户在使用这些IO设备的过程中会感觉更方便 文件访问文件访问不仅需要熟悉相关ⅣO设备(磁盘驱动器等)的特点,而且还 要熟悉相关的文件格式。另外,对于多用户操作系统或者网络操作系统,从计算 机安全角度考虑,需要对文件的访问权限做出相应的规定和处理。这些都是操作 系统所要完成的工作。 ●系统访问对于一个多用户或者网络操作系统而言,操作系统需要对用户系统访 权限做出相应的规定和处理 错误检测和反馈当操作系统运行时,会出现这样那样的问题。操作系统应当提 供相应的机制来检测这些信息,并且能对某些问题给出合理的处理或者报告用户 系统使用纪录在一些现代操作系统中,出于系统性能优化或者系统安全角度考 虑,操作系统会对用户使用过程纪录相关信息。 程序开发一般操作系统都会提供丰富的API供程序员开发应用程序,并且很多 程序编辑工具,集成开发环境等等也都是通过操作系统提供的。 而计算机有很多资源,它们分别用于数据的传输、处理或存储以及这些操作的控制 这些资源的管理工作就交给了操作系统 2.1.2.操作系统发展史 串行处理系统 在二十世纪四五十年代,电子计算机发展初期,没有操作系统的概念,人们通过一个 由显示灯、跳线、某些输入输出设备同计算机打交道。当需要执行某个计算机程序时,人 们通过输入设备将程序灌入计算机中,然后等待运行结果。如果中间出现错误,程序员就 得检査计算机寄存器、内存甚至是一些元器件以找出原因所在;如果顺利完成,结果就从 打印机上打印出来。人们称这种工作方式为串行处理方式。随着计算机技术的发展,一些 较为成型的软件开始出现,比如说,调试器、ⅣO驱动等。 简单批处理系统 由于早期的计算机系统十分昂贵,人们希望通过某种方式提高计算机的利用率。于是 批处理的概念就被引入了
- 32 - 第二章 操作系统 2.1. 基础知识 2.1.1. 操作系统功能 操作系统是充当计算机用户和计算机硬件之间的一个中介,并用于管理计算机资源和 控制应用程序运行的计算机程序。 简单的讲,操作系统一般会提供以下服务: z 程序运行 一个程序的运行离不开操作系统的配合,其中包括指令和数据载入内 存,I/O 设备和文件系统的初始化等等。 z I/O 设备访问 每种 I/O 设备的管理和使用都有自己的特点。而操作系统接管了这 些工作,从而使得用户在使用这些 I/O 设备的过程中会感觉更方便。 z 文件访问 文件访问不仅需要熟悉相关 I/O 设备(磁盘驱动器等)的特点,而且还 要熟悉相关的文件格式。另外,对于多用户操作系统或者网络操作系统,从计算 机安全角度考虑,需要对文件的访问权限做出相应的规定和处理。这些都是操作 系统所要完成的工作。 z 系统访问 对于一个多用户或者网络操作系统而言,操作系统需要对用户系统访 问权限做出相应的规定和处理。 z 错误检测和反馈 当操作系统运行时,会出现这样那样的问题。操作系统应当提 供相应的机制来检测这些信息,并且能对某些问题给出合理的处理或者报告用户。 z 系统使用纪录 在一些现代操作系统中,出于系统性能优化或者系统安全角度考 虑,操作系统会对用户使用过程纪录相关信息。 z 程序开发 一般操作系统都会提供丰富的 API 供程序员开发应用程序,并且很多 程序编辑工具,集成开发环境等等也都是通过操作系统提供的。 而计算机有很多资源,它们分别用于数据的传输、处理或存储以及这些操作的控制。 这些资源的管理工作就交给了操作系统。 2.1.2. 操作系统发展史 z 串行处理系统 在二十世纪四五十年代,电子计算机发展初期,没有操作系统的概念,人们通过一个 由显示灯、跳线、某些输入输出设备同计算机打交道。当需要执行某个计算机程序时,人 们通过输入设备将程序灌入计算机中,然后等待运行结果。如果中间出现错误,程序员就 得检查计算机寄存器、内存甚至是一些元器件以找出原因所在;如果顺利完成,结果就从 打印机上打印出来。人们称这种工作方式为串行处理方式。随着计算机技术的发展,一些 较为成型的软件开始出现,比如说,调试器、I/O 驱动等。 z 简单批处理系统 由于早期的计算机系统十分昂贵,人们希望通过某种方式提高计算机的利用率。于是 批处理的概念就被引入了
在早期的批处理系统中,功能相对比较简单,其核心思想就是借助某个称为监视器的 软件,用户不需要直接和计算机硬件打交道,而只需要将自己所要完成的计算任务提交给 计算机操作员。在操作员那里,所有计算任务按照一定的顺序被成批输入计算机中。当某 个计算任务结束之后,监视器会自动开始执行下一个计算任务。 多道程序设计批处理系统 即便是采用了批处理技术,并不能对计算机资源进行有效利用。一个很头疼的问题就 是O设备的操作速度往往比处理器慢很多。当某个批处理任务需要访问MO设备的时候, 处理器往往处于空闲状态。基于这方面的考虑,多道程序设计思想被引入了批处理系统中 通常,多道程序设计也可被称为多任务。即多道程序设计批处理系统也可称为多任务批处 理系统。 多道程序设计思想的引入允许某个计算任务在等待IO操作的时候,计算机可以转而 执行其它计算任务。从而提高处理器的利用率。 分时系统 在多任务批处理系统中,计算机资源的利用率得到了很大提高。问题是如果用户希望 能够干预计算任务的执行该怎么办?我们需要引入一种交互模式来实现这一功能 分时的概念引入了。在分时系统中,处理器时间按照一定的分配策略在多个用户中间 共享。在实际的单处理器系统中,是多个任务交替获取处理器控制权,交替执行,从而提 供更好的交互性能。 现代操作系统 现代操作系统技术是在综合了以上四种典型的操作系统技术的基础上提出的操作系统 实现方式,它适应了现代计算机系统管理和使用的要求。其主要特征是多任务、分时、而 且很多系统都开始陆续加入多用户功能。现代操作系统一般包括 (1)进程及进程管理, (2)内存及虚拟管理 (3)信息保护和安全, (4)调度和资源管理, (5)模块化系统化设计。 所有这些我们将在后续章节给予详细阐述 213. Linux与嵌入式 Linux Linuⅹ作为一个典型的现代网络型操作系统,其中所涉及到的技术实现涵盖了操作系 统技术的最新成果。它是一个多用户多任务操作系统,支持分时处理和软实时处理(后面 将给予阐述),并带有微内核特征(如模块加载/卸载机制),具有很好的定制特性。由于它 是开放源码的,全世界很多科学技术人员在不断对它完善的同时,还增加了越来越多的新 功能,比如说支持硬实时任务处理等。 Linux作为一个现代操作系统的典型实现,可以说 是一个计算机业与时俱进的产物,它不断更新,不断完善,其新功能的加入和完善速度超 过了现今世界任何一种操作系统 功能的不断增加和完善,灵活多样的实现,可定制的特性、开放源码等等,使得它的 应用日益广泛,大到服务器和计算机集群,小到PDA和控制器,可以说是无处不见 而 Linux在嵌入式系统应用方面尤其显示出其优越性。可以预见, Linux的强大的网 络功能将赋予嵌入式系统对网络天然的亲和力,从而为嵌入式系统的网络互连和功能扩展 准备了广阔的发展空间
- 33 - 在早期的批处理系统中,功能相对比较简单,其核心思想就是借助某个称为监视器的 软件,用户不需要直接和计算机硬件打交道,而只需要将自己所要完成的计算任务提交给 计算机操作员。在操作员那里,所有计算任务按照一定的顺序被成批输入计算机中。当某 个计算任务结束之后,监视器会自动开始执行下一个计算任务。 z 多道程序设计批处理系统 即便是采用了批处理技术,并不能对计算机资源进行有效利用。一个很头疼的问题就 是 I/O 设备的操作速度往往比处理器慢很多。当某个批处理任务需要访问 I/O 设备的时候, 处理器往往处于空闲状态。基于这方面的考虑,多道程序设计思想被引入了批处理系统中。 通常,多道程序设计也可被称为多任务。即多道程序设计批处理系统也可称为多任务批处 理系统。 多道程序设计思想的引入允许某个计算任务在等待 I/O 操作的时候,计算机可以转而 执行其它计算任务。从而提高处理器的利用率。 z 分时系统 在多任务批处理系统中,计算机资源的利用率得到了很大提高。问题是如果用户希望 能够干预计算任务的执行该怎么办?我们需要引入一种交互模式来实现这一功能。 分时的概念引入了。在分时系统中,处理器时间按照一定的分配策略在多个用户中间 共享。在实际的单处理器系统中,是多个任务交替获取处理器控制权,交替执行,从而提 供更好的交互性能。 z 现代操作系统 现代操作系统技术是在综合了以上四种典型的操作系统技术的基础上提出的操作系统 实现方式,它适应了现代计算机系统管理和使用的要求。其主要特征是多任务、分时、而 且很多系统都开始陆续加入多用户功能。现代操作系统一般包括: (1) 进程及进程管理, (2) 内存及虚拟管理, (3) 信息保护和安全, (4) 调度和资源管理, (5) 模块化系统化设计。 所有这些我们将在后续章节给予详细阐述。 2.1.3. Linux 与嵌入式 Linux Linux 作为一个典型的现代网络型操作系统,其中所涉及到的技术实现涵盖了操作系 统技术的最新成果。它是一个多用户多任务操作系统,支持分时处理和软实时处理(后面 将给予阐述),并带有微内核特征(如模块加载/卸载机制),具有很好的定制特性。由于它 是开放源码的,全世界很多科学技术人员在不断对它完善的同时,还增加了越来越多的新 功能,比如说支持硬实时任务处理等。Linux 作为一个现代操作系统的典型实现,可以说 是一个计算机业与时俱进的产物,它不断更新,不断完善,其新功能的加入和完善速度超 过了现今世界任何一种操作系统。 功能的不断增加和完善,灵活多样的实现,可定制的特性、开放源码等等,使得它的 应用日益广泛,大到服务器和计算机集群,小到 PDA 和控制器,可以说是无处不见。 而 Linux 在嵌入式系统应用方面尤其显示出其优越性。可以预见,Linux 的强大的网 络功能将赋予嵌入式系统对网络天然的亲和力,从而为嵌入式系统的网络互连和功能扩展 准备了广阔的发展空间
2.2.操作系统内核 221.内存管理 在单任务操作系统中,内存被分成两部分,一部分给了操作系统的驻留程序,另一部 分则分给了用户进程。而在多任务操作系统中,后一部分需要继续细分给不同的进程。 个工作是由操作系统的内存管理机制实现的。 个操作系统的内存管理效率对它的性能有着很重要的影响。一般而言,我们希望内 存在通过有效的分配之后能够容纳更多的任务以提高CPU的利用率 221.1.内存管理功能 一般而言,内存管理需要完成以下功能:二次定址、保护、共享、逻辑组织和物理组 织。下面给予简单阐述 首先,进程调入调出内存存在随机性,我们需要内存管理提供二次定址功能使得任务 再次调入内存能够和先前一样正常运行。 其次,不同的进程为了自己的正常运行需要有自己的私有空间,内存管理需要提供相 应的保护机制以容许这种私有空间的存在。 再次,为了能够协同完成更高级的功能,不同进程之间需要有不同形式的交互,比如 说访问对方数据,使用对方进程代码等等,而内存管理所完成的共享功能可以保证顺利实 现 另外,由于计算机采用的是线性存储设备,而计算机程序本身为了完成自身的逻辑任 务就有了适合自己特点的逻辑划分,如果操作系统或计算机硬件能够顺利实现这个逻辑划 分和线性存储之间的顺利转换对程序本身实现的相对独立性等方面不无裨益。因此内存管 理需要提供相应的逻辑组织功能。 最后一点需要指出的就是,计算机存储设备是多样的,如何合理的管理这些存储设备 以提高操作系统性能也是内存管理的功能要求的,这就是内存管理的物理组织功能。 2212.内存分割 计算机程序最终是要装载到内存中才能运行的。这就涉及到多个进程如何在内存中合 理占用空间的问题,也就是内存分割的问题。从操作系统产生发展至今,已经提出了不少 内存分割机制,诸如固定分割、动态分割、分页和分段等四种内存分割机制 固定分割( Fixed partitioning 固定分割,顾名思义,就是将内存固定划分为若干大小相同或不同的区域。当程序装 入时,选择与其大小最相近的一个区域将其载入即可。这种方式的缺点就是引入了内部碎 片( Internal Fragmentation),即每个程序需要占用一整块区域,而它的大小很难与区域大 小完全相符,区域大小多出来的部分也无法被其它程序使用,从而造成内存资源的浪费。 动态分割( Dynamic Partitioning 为了克服固定分割机制的缺陷,人们提出了动态分割机制,其中心思想就是内存分割 出来的区域大小具有一定的随意性,它可以在内存空间允许的情况下根据装入的程序大小
- 34 - 2.2. 操作系统内核 2.2.1. 内存管理 在单任务操作系统中,内存被分成两部分,一部分给了操作系统的驻留程序,另一部 分则分给了用户进程。而在多任务操作系统中,后一部分需要继续细分给不同的进程。这 个工作是由操作系统的内存管理机制实现的。 一个操作系统的内存管理效率对它的性能有着很重要的影响。一般而言,我们希望内 存在通过有效的分配之后能够容纳更多的任务以提高 CPU 的利用率。 2.2.1.1. 内存管理功能 一般而言,内存管理需要完成以下功能:二次定址、保护、共享、逻辑组织和物理组 织。下面给予简单阐述: 首先,进程调入调出内存存在随机性,我们需要内存管理提供二次定址功能使得任务 再次调入内存能够和先前一样正常运行。 其次,不同的进程为了自己的正常运行需要有自己的私有空间,内存管理需要提供相 应的保护机制以容许这种私有空间的存在。 再次,为了能够协同完成更高级的功能,不同进程之间需要有不同形式的交互,比如 说访问对方数据,使用对方进程代码等等,而内存管理所完成的共享功能可以保证顺利实 现。 另外,由于计算机采用的是线性存储设备,而计算机程序本身为了完成自身的逻辑任 务就有了适合自己特点的逻辑划分,如果操作系统或计算机硬件能够顺利实现这个逻辑划 分和线性存储之间的顺利转换对程序本身实现的相对独立性等方面不无裨益。因此内存管 理需要提供相应的逻辑组织功能。 最后一点需要指出的就是,计算机存储设备是多样的,如何合理的管理这些存储设备 以提高操作系统性能也是内存管理的功能要求的,这就是内存管理的物理组织功能。 2.2.1.2. 内存分割 计算机程序最终是要装载到内存中才能运行的。这就涉及到多个进程如何在内存中合 理占用空间的问题,也就是内存分割的问题。从操作系统产生发展至今,已经提出了不少 内存分割机制,诸如固定分割、动态分割、分页和分段等四种内存分割机制。 z 固定分割(Fixed Partitioning) 固定分割,顾名思义,就是将内存固定划分为若干大小相同或不同的区域。当程序装 入时,选择与其大小最相近的一个区域将其载入即可。这种方式的缺点就是引入了内部碎 片(Internal Fragmentation),即每个程序需要占用一整块区域,而它的大小很难与区域大 小完全相符,区域大小多出来的部分也无法被其它程序使用,从而造成内存资源的浪费。 z 动态分割(Dynamic Partitioning) 为了克服固定分割机制的缺陷,人们提出了动态分割机制,其中心思想就是内存分割 出来的区域大小具有一定的随意性,它可以在内存空间允许的情况下根据装入的程序大小