电脑系统的首要任务是有效地管理资源,以便快速地相应用户给定的任务。可是,一旦发生资源冲突,就失去对某些资源的管理能力,造成系统瘫痪。这种问题无法通过更换硬件来排除,因此显得十分棘手。本文带领读者从资源管理的源头来了解资源冲突的原因,掌握摆脱资源冲突的思路和方法。
一、电脑是如何管理资源的?
●所谓资源
电脑中的资源也称为资源库,它包括cpu、内存、外设和信息(包括程序和数据)4大类,所有的硬件和软件都可以称作资源。
通常把irq、dma、内存和i/o端口看作系统资源,每一种设备都要占有一定的系统资源才能使用,在设备管理器中可以看到设备占用资源的细节(如图1)。
|
图1 硬件设备使用的资源
●资源信息的收集与资源分配过程
资源管理贯穿于电脑运行的整个过程中,资源信息的收集与分配是资源管理的重要环节。当我们接通电脑的电源时,系统从bios芯片中读取post程序并立即执行之,对电脑硬件进行检测。检测工作结束后,转入执行bios中的设置程序,将系统资源(包括i/o端口、中断号、dma及内存等)分配给检测到的设备,生成一个资源配置表,并将配置数据写回bios后,屏幕上出现“update escd......succeed”信息,说明escd(extended system configuration data,扩展系统配置数据)更新成功,随后启动自举装载程序引导操作系统,并把资源配置表传递给操作系统,由操作系统进行统一管理和使用。可以看出资源信息的收集工作先是由bios进行侦测,然后上报给操作系统的。
在即插即用系统中,bios可以动态地完成系统资源信息的收集工作。当我们带电接入新设备时,因为新设备要占用系统资源,这时就可能会与以前的资源配置发生冲突,系统在工作时就会表现出不稳定或错误提示。为此,即插即用bios可以发现新设备,并通过总线枚举器向操作系统通报事件,枚举器发送的信息指明了设备id以及对资源的需求信息,操作系统使用pnp管理器将枚举器传送来的这些信息记录到注册表中,i/o管理器从注册表中提取设备信息,并查找与之相匹配的设备驱动程序(如果找不到驱动程序,便弹出一个要求用户安装驱动程序的对话框),并在驱动程序与设备之间建立关联,最后将中断号等资源信息发送给设备,存储在设备的寄存器中,如图2。
图2 即插即用系统信息流程
小知识:设备驱动程序
并不是所有硬件安装到电脑里之后,就可以马上使用。举例来说,如果你自己买了内存,并将它安装到内存插槽之后,开机启动之后就可以使用内存,cpu也是安装后就可以使用。但是,如显示卡或打印机等功能卡或者外设,当你安装完成后,往往还必须安装它们的驱动程序,这些设备才能使用。
设备驱动程序是一种将硬件与操作系统相互连接的软件
。虽然现在的操作系统自身都带有庞大的驱动程序库,以支持常见的硬件,这也是操作系统变得越来越臃肿的主要原因之一。但是大部分驱动程序的版本都还停留在操作系统第一版时的情形,后来设备性能改进所带来的新特性就不能发挥作用了,驱动程序中所存在的兼容性问题也得不到解决,所以应该安装最新的驱动程序。
设备驱动程序是在电脑启动过程中通过system.ini文件中的[mic]、[drivers]、[drivers32]这三个字段来加载到系统的,驱动程序的打开、启用、禁用和关闭均由动态连接库文件(后缀通常为dll)控制的,而动态链接库文件又是由应用程序调用的。
●谁用了我的资源?
本文开头说过,每个设备都要使用一定的系统资源才能工作。以外,程序运行过程中也需要占有计算机的各种资源才能运行下去,譬如,将程序和数据从外存储器加载到主内存,就占用了内存资源;在word中编辑图文,word程序本身要占用系统资源,如果再进行打印,就要使用中断和i/o端口等系统资源。系统中运行的程序越多,资源利用的也越多。
从资源供应的角度来看,系统资源是有限的,当运行的程序很多时,会存在资源耗尽而
无法运行更多
电脑系统的首要任务是有效地管理资源,以便快速地相应用户给定的任务。可是,一旦发生资源冲突,就失去对某些资源的管理能力,造成系统瘫痪。这种问题无法通过更换硬件来排除,因此显得十分棘手。本文带领读者从资源管理的源头来了解资源冲突的原因,掌握摆脱资源冲突的思路和方法。
一、电脑是如何管理资源的?
●所谓资源
电脑中的资源也称为资源库,它包括cpu、内存、外设和信息(包括程序和数据)4大类,所有的硬件和软件都可以称作资源。
通常把irq、dma、内存和i/o端口看作系统资源,每一种设备都要占有一定的系统资源才能使用,在设备管理器中可以看到设备占用资源的细节(如图1)。
|
图1 硬件设备使用的资源
●资源信息的收集与资源分配过程
资源管理贯穿于电脑运行的整个过程中,资源信息的收集与分配是资源管理的重要环节。当我们接通电脑的电源时,系统从bios芯片中读取post程序并立即执行之,对电脑硬件进行检测。检测工作结束后,转入执行bios中的设置程序,将系统资源(包括i/o端口、中断号、dma及内存等)分配给检测到的设备,生成一个资源配置表,并将配置数据写回bios后,屏幕上出现“update escd......succeed”信息,说明escd(extended system configuration data,扩展系统配置数据)更新成功,随后启动自举装载程序引导操作系统,并把资源配置表传递给操作系统,由操作系统进行统一管理和使用。可以看出资源信息的收集工作先是由bios进行侦测,然后上报给操作系统的。
在即插即用系统中,bios可以动态地完成系统资源信息的收集工作。当我们带电接入新设备时,因为新设备要占用系统资源,这时就可能会与以前的资源配置发生冲突,系统在工作时就会表现出不稳定或错误提示。为此,即插即用bios可以发现新设备,并通过总线枚举器向操作系统通报事件,枚举器发送的信息指明了设备id以及对资源的需求信息,操作系统使用pnp管理器将枚举器传送来的这些信息记录到注册表中,i/o管理器从注册表中提取设备信息,并查找与之相匹配的设备驱动程序(如果找不到驱动程序,便弹出一个要求用户安装驱动程序的对话框),并在驱动程序与设备之间建立关联,最后将中断号等资源信息发送给设备,存储在设备的寄存器中,如图2。
图2 即插即用系统信息流程
小知识:设备驱动程序
并不是所有硬件安装到电脑里之后,就可以马上使用。举例来说,如果你自己买了内存,并将它安装到内存插槽之后,开机启动之后就可以使用内存,cpu也是安装后就可以使用。但是,如显示卡或打印机等功能卡或者外设,当你安装完成后,往往还必须安装它们的驱动程序,这些设备才能使用。
设备驱动程序是一种将硬件与操作系统相互连接的软件
。虽然现在的操作系统自身都带有庞大的驱动程序库,以支持常见的硬件,这也是操作系统变得越来越臃肿的主要原因之一。但是大部分驱动程序的版本都还停留在操作系统第一版时的情形,后来设备性能改进所带来的新特性就不能发挥作用了,驱动程序中所存在的兼容性问题也得不到解决,所以应该安装最新的驱动程序。
设备驱动程序是在电脑启动过程中通过system.ini文件中的[mic]、[drivers]、[drivers32]这三个字段来加载到系统的,驱动程序的打开、启用、禁用和关闭均由动态连接库文件(后缀通常为dll)控制的,而动态链接库文件又是由应用程序调用的。
●谁用了我的资源?
本文开头说过,每个设备都要使用一定的系统资源才能工作。以外,程序运行过程中也需要占有计算机的各种资源才能运行下去,譬如,将程序和数据从外存储器加载到主内存,就占用了内存资源;在word中编辑图文,word程序本身要占用系统资源,如果再进行打印,就要使用中断和i/o端口等系统资源。系统中运行的程序越多,资源利用的也越多。
从资源供应的角度来看,系统资源是有限的,当运行的程序很多时,会存在资源耗尽而
无法运行更多