专利名称:静态设备驱动程序的动态扩展的制作方法
技术领域:
本发明一般涉及计算机系统,尤其涉及一种不需重建操作系统而扩展静态设备驱动程序功能的方法。
常规的计算机系统10的基本结构示于
图1。计算机系统10的中心部件是中央处理部件(CPU)或处理器12,它与多个外围设备相连,他们是与用户接口的输入/输出(I/O)设备14(如显示器及键盘),用于存储计算机操作系统及用户程序的永久存储设备16(如硬盘或软盘),及由处理器12所使用以执行程序指令的暂时存储设备18(如随机访问存储器或RAM)。处理器12通过总线20或直接通道22等各种方式与外围设备通信。计算机系统10还有许多未图示的附加部件,如用于连接调制解调器或打印机等的串行及并行口等。熟练的技术人员将能理解,还有一些其它部件可以与示于图1的方框图中的部件相连使用;如,可以有一显示适配器与处理器12相连,用于控制视频显示监视器。各种不同类型的设备驱动程序(软件程序)用于控制硬件设备。
计算机系统10还包括固件24,其基本功能是当计算机第一次开机时从一个外围设备(经常是永久存储设备16)中查找并装入操作系统。查找和装入操作系统的过程被称为“引导”计算机可以将计算机系统10设计成不需关闭计算机及再开机就可以让固件24重新初始化一个操作系统(“软”引导)。固件24实际上是被典型地存储在如只读存储器(ROM)等的只读存储(ROS)设备上的一系列机器指令。如图2的流程图所示,计算机系统10的电源打开后,处理器12开始执行固件指令并查找操作系统(26)。若找到操作系统,则将其装入(28)暂时存储器18,其中包括呈现在操作系统映象中的任何一种设备驱动程序。这些设备驱动程序使得系统与适当的硬件通信。然后,例如若引导序列后硬件设备已连到计算机系统上,则操作系统(30)可以动态地装入附加的设备驱动程序。最后,操作系统允许加入其它应用层,如用户软件程序(32)。
以上描述一般应用于任何一种类型的操作系统,包括两种最常用的操作系统MSDOS和UNIX(MSDOS是微软公司的注册商标;UNIX是UNIX系统实验室的注册商标)。但是本发明尤其适用于UNIX。UNIX是一个具有不同版本的多个来源的多用户、多任务操作系统。其中包括System V(美国电报电话公司)、AIX(国际商业机器公司)及Mach(NeXT计算机公司(。图3示出了典型的UNIX工作站34。工作站34包括示于图1的各种硬件部件,在图3中用36表示,此外还包括两个软件层,内核部分38及用户应用层40。内核部分36是操作系统的最低层并且是用户程序和硬件设备之间的媒介,其中包括与硬件控制42接口的设备驱动程序。内核部分38包括静态设备驱动程序44,它们在初始化时与内核部分最先连接在一起,内核部分还包括动态装入的设备驱动程序46,它们在初始化后加到内核部分。动态装入设备驱动程序可以为单独的设备所使用,也可以作为通用静态设备驱动程序的简单替换。两种类型的设备驱动程序通常都可以为设备转换表48等缓冲机构所访问。
设备驱动程序常依赖于硬件,在装入或使用具体的硬件设备时,程序常出现问题。若内核中尚未有适用于一新的设备的驱动程序(即静态连接)并且没有可用的动态可装入驱动程序,则内核部分必须与一新的静态设备驱动程序重新连接。若动态可装入驱动程序是可用的,则其可以轻易地作为内核扩展部分装入,但是,在有些情况下,系统所需要的某些设备或硬件功能必须通过连接在内核部分的静态设备驱动程序才能提供,这是由于它们所需要的设备必须在装入内核扩展部分之前就存在。这些功能包括例如NVRAM,RAMDD及控制台设备驱动程序。这时,增强静态设备驱动程序功能或能力的唯一办法是重建基本内核部分。同样的,一旦静态设备驱动程序装入后,就不能再修改。例如,静态设备驱动程序中可能有缺陷(软件指令错误),但是在内核部分重建之前它是不能被修改的。因此,特别希望设计一种不需重建内核部分或重新引导操作系统就能改变静态连接的设备驱动程序功能的方法。
本发明的一个目的是提供一种改进的将设备驱动程序装入计算机系统的方法。
本发明的另一个目的是提供一种允许修改静态连接的设备驱动程序的方法。
本发明的再一个目的是提供一种不需重建操作系统就能修改静态连接的设备驱动程序的方法。
以上目的可通过对计算机系统中的设备进行控制的方法得以实现,该方法一般包括如下步骤将静态设备驱动程序装入计算机系统的内存中,然后使用扩展驱动程序动态地扩展静态设备驱动程序,其中扩展驱动程序注册到静态设备驱动程序中。静态设备驱动程序具有用于控制设备的多个驱动程序或功能(如输入/输出功能)。尽管扩展驱动程序可以改变几个或全部功能,但它至少修改其中一个功能。在实施例中计算机系统是一个内核部分驻留在内存中的UNIX类型的工作站,静态设备驱动程序在内核部分,并且通过为扩展驱动程序提供至少一个入口点被动态扩展。
通过以下的详细描述,本发明以上及其它目的,特征和优点将更清楚。
本发明的新颖特征在附加的权利要求书中。通过以下实施例及附图的描述,将能更好地理解本发明及其优选方式及其进一步的目的和优点。其中图1是现有技术中计算机操作系统的方框图。
图2是示出计算机如何装入具有与操作系统连接在一起的静态设备驱动程序的现有技术的操作系统,然后在操作系统装入之后动态装入可装入的设备驱动程序的流程图。
图3是现有技术中具有静态和动态设备驱动程序的现有技术UNIX类型工作站的方框图。
图4是根据本发明配置的具有注册的扩展驱动程序的UNIX类型工作站方框图。
图5是示出根据本发明计算机如何装入具有静态设备驱动程序的操作系统,静态设备驱动程序中可以注册扩展驱动程序,及静态驱动程序如何动态地访问已注册的扩展驱动程序的流程图。
现在参考附图,尤其是图4,其中展示了根据本发明的UNIX类型工作站实施例50。工作站50一般包括如图1所示的同样的基本硬件,其中一部分示于52,但是工作站50具有装入在内核部分54的新颖操作系统,该操作系统允许登记扩展的静态设备驱动程序。内核部分54具有与其连接在一起的静态设备驱动程序56,并包括与设备驱动程序的输出相连的常规的硬件控制器58。通过常规的设备转换表60访问静态设备驱动程序56,其中转换表是与用户应用程序62之间的接口。内核部分54还包括“注册”到静态设备驱动程序56的扩展驱动程序64,扩展驱动程序用于控制硬件控制器58,但不是由设备转换表访问。而是由静态设备驱动程序56注册专门的驱动程序或功能(如open(打开)、read(读取)、ioctl(输入输出控制)或其它I/O控制功能)从而为正在被访问的专门设备的那些功能提供处理入口点。
这种方案使得在还需要静态引导时间功能性时可以动态地扩展静态设备驱动程序的功能以得到可装入设备驱动程序的灵活性。其中一个这样的例子是在系统初始化的较后的点,内核扩展部分根据调用一个静态设备驱动程序的一个功能ioctl,可以向它自己注册被调用的ioctl()驱动程序。该例子还可以扩展到其它的设备驱动程序入口点。这样,用户不需重新连接内核部分就可以改变静态连接的设备驱动程序的功能。这种适用性允许用户增强设备驱动程序如提供硬件专用微分器,或者修改驱动程序如改正错误。
使用注册的设备扩展的计算机系统的典型操作示于图5,系统加电后(或执行软引导命令后),固件查找是装入的操作系统(70)。然后包括所有静态设备驱动程序的操作系统被装入主存储器(72),这些驱动程序被配置成能根据设备驱动程序入口点(74)识别扩展功能。例如,若调用了静态NVRAM读/写设备驱动程序入口点,则驱动程序首先检查是否有任何一种对应于该入口点的注册的扩展功能,若有,则调用注册的扩展功能。该扩展功能检测NVRAM请求的偏移并确定该偏移是否在它所控制的NVRAM设备中。若在,扩展功能将服务该请求,否则将控制权还给静态驱动程序,静态驱动程序接着调用下一个已注册的扩展功能或者,如果合适的话,自己处理请求。当装入操作系统并注册完所有的驱动程序扩展功能后,执行正常的用户程序(76)。接着,一旦应用程序向具有注册的扩展功能的静态设备驱动程序发送功能调用时,静态驱动程序重定路径,调用扩展功能(78)。这样,注册使得注册功能代替一具体的功能或为静态驱动程序增加新的功能。
在本发明的一个具体实施方案中,AIX操作系统被修改以提供一个机器设备驱动程序(/dev/nuram),该驱动程序为一个静态设备驱动程序,用于在可能动态地装入进一步的支持之前提供所需要的基本功能。但是,通过使用为机器设备驱动程序注册的专用扩展文件,可以得到该机器专用的附加功能。该方法使得将公用的静态功能保留在基本操作系统中,而将机器专用的功能放入适当的内核扩展部分,只在运行期间将其动态地装入和注册进机器设备驱动程序。
注册的扩展驱动程序64不象动态装入的驱动程序,它经常不是完全的驱动程序,即扩展程序常常仅修改驱动程序功能的一部分。注册扩展功能部能完全替代某个静态驱动程序的所有功能,或者可以使用两个或更多的注册扩展功能替代所有的基本功能。熟练的技术人员将能理解,根据本发明构建的操作系统除了能够动态装入注册的驱动程序扩展功能64外,还能动态装入驱动程序(未示于图4)。
尽管本发明是根据具体实施例描述的,但是该描述不具有限制意义。熟练的技术人员可以根据本发明的描述对公开的实施例作各种修改或做出其它替代的实施例。因此在不偏离本发明的精神和范围内的这种修改附在权利要求书中。
权利要求
1.一种在具有内存的计算机系统中提供控制一台设备的方法,包括如下步骤将静态设备驱动程序装入计算机系统的内存中,静态设备驱动程序具有用于控制该设备的多个功能的模块;及使用扩展驱动程序动态地扩展静态设备驱动程序。
2.如权利要求1所述的方法,其特征在于,静态设备驱动程序根据来自于用户应用程序的功能调用被动态地扩展。
3.如权利要求1所述的方法,其特征在于,静态设备驱动程序被作为将操作系统装入计算机系统的更进一步步骤的一部分而被装入。
4.如权利要求1所述的方法,其特征在于,计算机系统是具有驻留于内存的内核部分的UNIX类型工作站;静态设备驱动程序被装入内核部分;及通过为扩展驱动程序提供至少一个入口点来动态地扩展静态设备驱动程序。
5.如权利要求1所述的方法,其特征在于,通过在静态设备驱动程序中对扩展驱动程序进行注册来动态地扩展静态设备驱动程序。
6.如权利要求1所述的方法,其特征在于,扩展驱动程序至少修改静态设备驱动程序的多个功能中的一个。
7.如权利要求1所述的方法,其特征在于,扩展驱动程序提供一个新的功能以控制该设备。
8.如权利要求1所述的方法,其特征在于,扩展驱动程序也装入计算机的内存中。
9.如权利要求6所述的方法,其特征在于,至少一个功能是输入/输出功能。
10.如权利要求6所述的方法,其特征在于,通过向扩展驱动程序注册至少一个功能来动态地扩展静态设备驱动程序。
11.一种计算机系统,包括硬件设备;内存设备,存储用于控制所述硬件设备的静态设备驱动程序;处理器设备,执行所述静态设备驱动程序中的指令以控制所述硬件设备;及向所述静态设备驱动程序注册的扩展设备驱动程序,使得发送到所述硬件设备的功能调用被所述静态设备驱动程序重定路径到所扩展设备驱动程序。
12.如权利要求11所述的计算机系统,其特征在于,所述静态设备驱动程序提供多个用于控制所述硬件设备的功能;及所述静态设备驱动程序将一个功能调用重定路径到所述扩展设备驱动程序并仅调用所述功能中的一个。
13.如权利要求11所述的计算机系统,其特征在于,所述静态设备驱动程序提供多个用于控制所述硬件设备的功能;及所述静态设备驱动程序将一个功能调用重定路径到所述扩展设备驱动程序以调用所述功能中的至少两个。
14.如权利要求11所述的计算机系统,其特征在于,计算机系统是具有驻留在所述内存设备中的内核部分的UNIX类型工作站;所述静态设备驱动程序被装入所述内核部分;及所述静态设备驱动程序通过为所述扩展设备驱动程序提供一个入口点从而为所述功能调用重定路径。
15.如权利要求11所述的计算机系统,其特征在于,所述扩展设备驱动程序提供一个用于控制设备的新的功能。
16.如权利要求14所述的计算机系统,其特征在于,内核部分包括一个硬件控制单元,并且所述扩展设备驱动程序直接与所述硬件控制单元接口。
全文摘要
一种通过使用注册的扩展驱动程序动态地扩展静态设备驱动程序以改变静态连接的设备驱动程序的功能的方法,静态设备驱动程序具有多个用于控制与计算机系统相连或部分相连的设备的驱动程序或功能(如输入/输出功能),扩展驱动程序至少修改这些功能中的一种。计算机系统是一个具有驻留在内存的内核部分的UNIX类型工作站,静态设备驱动程序被装入内核并且通过为扩展驱动程序提供至少一个入口点来动态扩展之。
文档编号G06F13/10GK1193774SQ98103839
公开日1998年9月23日 申请日期1998年2月16日 优先权日1997年3月17日
发明者布鲁斯·杰勒德·米利, 兰德尔·克雷格·斯旺伯格, 迈克尔·斯蒂芬·威廉斯 申请人:国际商业机器公司