CN1987791A - 用于共享硬件设备的基于文件的访问控制方法和装置 - Google Patents

用于共享硬件设备的基于文件的访问控制方法和装置 Download PDF

Info

Publication number
CN1987791A
CN1987791A CNA2006101078916A CN200610107891A CN1987791A CN 1987791 A CN1987791 A CN 1987791A CN A2006101078916 A CNA2006101078916 A CN A2006101078916A CN 200610107891 A CN200610107891 A CN 200610107891A CN 1987791 A CN1987791 A CN 1987791A
Authority
CN
China
Prior art keywords
processor
hardware device
lock
document
shared hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2006101078916A
Other languages
English (en)
Other versions
CN100461111C (zh
Inventor
J·D·阿姆斯壮
A·K·马哈坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1987791A publication Critical patent/CN1987791A/zh
Application granted granted Critical
Publication of CN100461111C publication Critical patent/CN100461111C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files

Abstract

一种装置、程序产品和方法通过处理器可访问的文件有效地虚拟化了多个处理器之间共享的硬件设备,从而对该硬件设备的访问可经由与该文件相关联的锁而被控制。通过这样做,可以使用例如由运行在处理器上的操作系统中的文件锁定工具提供的基于文件的锁定,来代表该处理器控制对该硬件设备的访问。

Description

用于共享硬件设备的基于文件的访问控制方法和装置
技术领域
本发明涉及计算机和计算机软件,特别涉及控制对计算机中的共享硬件设备的访问。
背景技术
由于在当代社会中不断增长的对计算机的依赖,计算机技术已经不得不在很多方面取得进步以跟上增长的需求。重大研究和开发工作的一个特别主题是并行性,即并行执行多个任务。
一些计算机软件和硬件技术已经被开发来促进增长的并行处理。从硬件角度看,计算机越来越依靠多个微处理器来提供增长的工作负荷能力。而且,一些微处理器已被开发来支持并行执行多线程的能力,从而有效地提供了许多通过使用多个微处理器可以得到的相同性能增益。在一些情况下,从并行部件可以提供冗余以使得一个这样的部件可以接替另一个出故障的部件的角度看,并行部件的提供还有助于提高系统可靠性。从软件的角度看,多线程操作系统和内核已经被开发,其允许计算机程序在多线程中并行执行,从而多个任务可以基本上被同时执行。
另外,一些计算机实现了逻辑分区的概念,其中单个的物理计算机被允许基本上像多个独立的“虚拟”计算机(被称作逻辑分区)一样来操作,其中在各个逻辑分区分配该物理计算机(例如,处理器、存储器、输入/输出设备)的各种资源。每个逻辑分区执行单独的操作系统,并且从用户和在逻辑分区上执行的软件应用的角度,其作为完全独立的计算机进行操作。
虽然并行性依靠同时执行多个任务的能力有效地提高了系统性能,并行性的一个副作用是由于需要同步多个并行的进程或线程的操作,特别是在能够被多个进程或线程访问的数据结构和其他系统资源方面,而带来的提高的系统复杂性。能够访问特定的共享数据结构的单独的过程或线称通常不清楚其他进程或线程的活动。因此,存在着一个线程以相对于另一个线程是不期望的方式来访问特定数据结构,而产生不确定的结果和潜在的系统错误的风险。
其中可能需要同步的一个特定应用是在使计算机中的多个处理器能够访问和控制这样的硬件设备的领域,该硬件设备一次只能被一个处理器访问。特别是当处理器和/或在其上运行的操作系统是多线程的从而运行在处理器上的多个应用能够同时访问硬件设备的时候,将对硬件设备的控制从一个处理器切换到另一个上,并且特别是确定什么时候处理器上所有的应用不再访问硬件设备,会成为问题。
在一些传统设计中,当存在特定处理器上的多个应用能够同时使用硬件设备的可能性时,已使用计数器来在多个处理器之间调节对硬件设备的控制。使用计数器,每次设备将被使用时,计数器被递增,并且当设备被释放时,计数器被递减。然而与使用计数器相关的一个常见问题是可能遇到非零运行时错误,例如,当一个应用发生故障或锁死(lock up)并阻止计数器被递减时。当该问题发生时,处理器永久锁住该硬件直到采取恢复措施。
在其他传统设计中,已使用设备驱动器来同步对与它们的相关的硬件设备的访问,或者可选地,已使用单独的管理软件来管理多个硬件设备。然而在一些实例中,某些硬件设备和/或用来与这种硬件设备接口连接的硬件可能没有被处理器上的硬件驱动器所代表。而且,该硬件可能不支持锁定能力。另外,当使用计数器时,以及当使用设备驱动器或管理软件时,通常不支持共享和排它访问两者。
在其中前面提到的访问控制技术是不足的一种具体设计是在多用户计算机设计中,该多用户计算机设计利用冗余服务处理器在计算机的初始化和管理中提供帮助,例如,执行启动过程和执行一些与可靠性、可用性和可服务性(RAS)有关的监视、恢复、报告和其他任务。当使用多服务处理器时,可以在服务处理器与构成计算机的中央电子联合体(CentralElectronics Complex,CEC)的系统处理器、存储器和多种其他外围设备之间提供于共享通信路径,例如多路复用器。在这种情况下,每次只有一个服务处理器能够通过该多路复用器进行通信,因此需要某种机制来控制在任何时间点上哪个服务处理器被允许使用该多路复用器。
控制服务处理器对该多路复用器的使用由于以下事实而变得复杂,即服务处理器可经由该多路复用器对多个共享硬件设备进行访问,而且,服务处理器上运行的多个应用可能同时在访问不同的共享硬件设备。典型地,在服务处理器中使用使用设备驱动器来代表共享硬件设备;然而在许多设计中,该多路复用器本身并不被服务处理器的操作系统知晓为一个设备,并因此不被设备驱动器所代表。所以,存在一个问题,即如何控制对多路复用器的使用以及如何阻止多路复用器在使用中被放弃。
如上所述,计数器由于不能支持排它和共享的访问,以及一个应用中止(hang)和未能递减计数器的可能性,而不是最佳的。设备驱动器和/或管理软件也不是最佳的,同样一部分是因为不能支持排它和共享的访问。而且,对于设备驱动器,每个都需要定制编程,并且当多个硬件设备被通过多路复用器连接到服务处理器时,没有设备驱动器可用于管理对于多路复用器本身的访问。从管理软件的角度看,服务处理器通常运行嵌入的操作系统并具有极有限的板载存储器,所以包括管理软件将限制可用于服务处理器所需的其他应用的可用非易失性的和运行时存储器。
因此,对于管理多个处理器对共享硬件设备的访问的改进的方式的巨大需求依旧存在。
发明内容
本发明通过提供这样的一种装置、程序产品和方法来解决与现有技术相关的这些和其他问题,其中硬件设备被处理器可访问的文件有效地虚拟化,这样对硬件设备的访问可以经由与该文件相关联的锁来控制。通过这样做,可以使用例如由运行在处理器上的操作系统中的文件锁定工具提供的基于文件的锁定,来控制对该硬件设备的访问。
因此,与本发明一致地,被多个处理器共享的硬件设备可以通过以下方式被访问,即将该共享硬件设备与可被多个处理器中的第一处理器访问的文件相关联,并使用与该文件相关联的锁控制在该第一处理器上执行的至少一个应用对该共享硬件设备的访问。
表现了本发明特征的这些和其他优点和特点在所附的并形成本文另一部分的权利要求中阐明。然而,为了更好地理解本发明,以及通过其使用而获得的优点和目的,应该参考附图以及伴随的描述文字,其中描述了本发明的示例性实施例。
附图说明
图1是计算机中主要硬件部件的方框图,该计算机适于利用与本发明一致的、对于共享硬件设备的基于文件的访问控制。
图2是图示由多个图1中所示类型的服务处理器在多个共享硬件设备之间进行基于文件的访问控制的功能方框图。
图3是图示在图2中所示的服务处理器的初始化过程中所执行的服务处理器启动例程的流程图。
图4是图示图2中所示的服务处理器执行的所有权获取协议的序列图。
图5-7是图示用于在图2中所示的服务处理器之一控制对共享硬件设备的访问的各种协议的序列图。
具体实施方式
以下所描述的实施例利用基于文件的访问控制来控制对计算机中或其他可编程电子设备中多个处理器所共享的硬件设备的访问。具体地,与本发明一致的实施例使用文件有效地虚拟化了硬件设备和/或该硬件设备通过其连接到处理器的通信路径,这样对该硬件设备的访问可以经由与该文件相关联的锁来控制。
如下面将变得更明显的那样,通过使用文件锁定作为机制,在处理器上运行的多个应用可以指定共享或排它锁请求,并且该机制独立于任何硬件特定的设备驱动器。而且,与实现基于文件的锁定有关的开销,无论是在开发、处理还是存储开销方面,通常都相对不大。
与本发明一致地,共享硬件设备的每个实例都可以通过使用一个文件而虚拟化,或可选地,可使用一个文件来虚拟化通过其该共享的硬件设备被连接到该处理器的通信路径,这样可使用同样的文件来虚拟化和控制所有可通过该同一通信路径访问的共享硬件设备。
在这方面,通信路径可被认为包括任何位于多个处理器和一个或多个其可访问的硬件设备之间的硬件部件,其中该通信路径在一个给定时间仅能够被这些处理器的一个子集使用(例如每次只有一个处理器),并且因此并不提供在所有时间对每个处理器的无限制访问。在图示的实施例中,通信路径采用多路复用器的形式;然而,在与本发明一致的其他实施例中可以在通信路径中布置其他部件。还应意识到即使在多个硬件设备经由相同的通信路径而连接的情况下,也可以在单个设计中提供多个通信路径,例如,用于支持共享硬件设备的多个子系统。
通常,在与本发明一致的实施例中,在能够对硬件设备进行访问的每个处理器上维护同样的文件,以使得每个处理器都可以独立地管理对该硬件设备的访问。然后在每个处理器上使用文件锁定以控制对该硬件设备的访问。要求所有使用该共享硬件的应用都要首先获得这样的文件上的锁,该文件与该硬件设备和/或该处理器通过其连接到该共享硬件的多路复用器或其他通信路径相关联。
在图示的实施例中,例如,所有通过多路复用器连接到处理器的硬件设备由相同的文件虚拟化,该文件被称作MUX文件,这样任何想要访问硬件设备的应用都必须首先获得与该硬件相关联的MUX文件上的锁。
而且,在图示的实施例中,共享和排它锁都被支持。在具有对多路复用器的控制的处理器上使用共享锁,而在任何当前不控制该多路复用器的处理器上获得排它锁。典型地,排它锁被处理器上运行的管理应用持有,这样其他应用仅被允许使用共享锁来访问硬件。通过这种方式,每当处理器不拥有对多路复用器的控制时,管理应用就能够持有排它锁,并且这样就阻止了在相同处理器上的任何其他应用访问该硬件,因为MUX文件上的排它锁的存在排斥了任何应用获得相同文件上的共享锁。另外,当一处理器需要将对MUX的控制释放给另一个处理器时,管理应用可以请求一个排它锁,一旦所有当前具有共享锁的应用释放那些锁,该排它锁就会被准许,并且有效地将后来在排它锁被请求之后试图获得共享锁的任何应用锁定在外。
基于文件的锁定的使用提供了若干超出传统技术的优点。相对于计数器,在此描述的文件锁定方式使得能够使用排它锁来在控制已经被或正要被切换到另一个处理器时阻止应用获取对硬件设备的访问。而且,典型地所有运行在处理器上的应用都可以使用文件操作,而计数器经常需要使用共享存储器(在嵌入设计中通常是很短缺的)来维护计数。此外,等待锁时的超时值可经常使用由操作系统支持的底层文件锁定工具来实现,这样就减少了应用由于不能递减计数器而中止系统的可能性。而且,相对于管理软件,文件锁定通常被处理器上运行的操作系统所支持,所以开销通常更低得多。
现在转向附图,其中相同的标号在几个视图中代表相同的部分,图1图示了能够实现与本发明一致的基于文件的访问控制的装置10的主要硬件部件。装置10被图示为一个多用户计算机,并且可一般地代表,例如,若干多用户计算机如网络服务器、中型(midrange)计算机,大型计算机等等例如IBM eServer iSerier或pSerier计算机中的任何一个。然而,应当注意到,本发明可被实现在其他计算机和数据处理系统中,例如,单用户计算机,如工作站、台式计算机、便携式计算机等中,或在其他可编程电子设备(例如,包含了嵌入的控制器等等)中。装置10在此以后也被称作“计算机”,尽管应当理解术语“装置”也可以包括其他与本发明一致的合适的可编程电子设备。另外,装置可被认为包括计算机或其他电子设备的一个或多个部件或子系统,例如,集成电路芯片。
计算机10一般包括一个或多个经由总线16连接到存储器14和IO结构(fabric)20的系统处理器12。存储器14可包括一个或多个存储器设备级别,例如,基于DRAM的主存储器,还有一个或多个数据、指令和/或组合高速缓存级别,其中某些高速缓存服务于单个处理器或多个处理器,如本领域中公知的。此外,IO结构20提供了对各个外部或周边设备的访问,这些设备例如,一个或多个网络适配器22(用于将计算机接口连接到网络24),一个或多个存储控制器26(用于将计算机接口到一个或多个存储设备28),以及一个或多个工作站控制器30(用于经由多个工作站适配器与一个或多个终端或工作站32接口)。
另外,计算机10包括多个服务处理器34,其中每一个都用来运行专门的固件代码来管理系统的启动(也被称作系统初始化或初始程序装入(IPL)),另外还监视、诊断和配置系统硬件。例如在图示实施例中,每个都能够作为备用或首要服务处理器来操作的两个服务处理器34被使用在计算机10中,并且就这个方面来说,服务处理器提供了额外程度的冗余和故障避免。典型地,无论哪个服务处理器34被指定为备用,都将仅在每当首要服务处理器发生故障,或每当需要对首要服务处理器进行监视、测试或诊断的时候被使用。
服务处理器34被图示为经由多路复用器36连接到系统总线16,其中多路复用器36用作到形成用于计算机10的中央电子联合体(CEC)的部件(即系统处理器12、存储器14以及各种图1中没有示出的支持芯片和电路,例如,VPD芯片、UART芯片、JTAG电路、GPIO电路、I2C电路等)的通信路径。在这方面,可以被服务处理器34访问的计算机10中的每个部件都可以被认为是与本发明一致的共享硬件设备。
还应注意到服务处理器34和多路复用器36被连接到计算机10中各种硬件设备的精确方式可以改变,即硬件设备不需要经由系统总线16被访问。确实,图1中的系统总线16被以简化的形式图示来一般地表示部件12、14、20和36互相通信,并且从图1中并没有特定的通信网络拓朴应被暗示。此外,利用分别的多路复用器来处理不同类型的通信,例如提供分别的多路复用器来处理JTAG、GPIO和I2C以及其他类型的通信,可能是所希望的。
计算机10在操作系统的控制下进行操作,并执行或以其他方式依靠各种计算机软件应用、部件、程序、对象、模块、数据结构等等。其他的应用、部件、程序、对象、模块等也可以在经由网络连接到计算机10的另一个计算机的一个或多个处理器上执行,例如在分布式或客户机-服务器计算环境中,由此实现计算机程序的功能所需的处理可以被分配到网络中的多个计算机。另外,计算机10可以被实现为逻辑分区的计算机,由此多个分区驻留在计算机中,每个分区都有各自的操作系统。
通常,被执行来实现本发明实施例的例程,无论其实现为操作系统的一部分或特定的应用、部件、程序、对象、模块或指令序列,甚至是其子程序,在此将被称为“计算机程序代码”或简单地“程序代码”。程序代码典型地包括在不同时间驻留在计算机的不同存储器和存储设备中的一个或多个指令,并且所述指令在被计算机中一个或多个处理器读取并执行时,使得该计算机完成执行体现本发明各个方面的步骤或要素所必要的步骤。而且,尽管本发明已经和此后将要在全功能的计算机和计算机系统的上下文中被描述,本领域中那些技术人员将明白本发明的各个实施例能够作为多种形式的程序产品来分发,并且本发明可同等地应用而不管被用来实际执行该分发的计算机可读介质的特定类型。计算机可读介质的例子包括但并不局限于有形的可记录类型的介质例如易失的和非易失的存储设备、软盘和其他可拆装盘、硬盘驱动器、磁带、快闪驱动器、光盘(例如CD-ROM,DVD等)等等,以及传输类型的介质例如数字和模拟通信链路。
另外,在此后描述的各程序代码可以基于它在本发明特定实施例中被在其中实现的应用或软件部件而被识别。然而,应当明白后面任何特定的程序名称仅为方便而使用,因此本发明不应被局限于仅使用在由这种术语标识和/或暗示的任何特定应用中。此外,考虑到其中计算机程序可以被组织为例程、过程、方法、模块、对象等的典型为无穷数量的方式,以及在其中程序功能可以被分配在驻留在典型计算机中各个软件层(例如操作系统、库、API,应用、小应用程序等)中的各种方式,应当明白本发明并不局限于在此描述的程序功能的特定组织和分配。
本领域中技术人员应当明白图1中图示的示例性环境并不是意在限制本发明。确实,本领域的技术人员可以认识到可使用其他可选的硬件和/或软件环境而不脱离本发明的范围。例如,可以在其中多个处理器能够访问一个或多个共享硬件设备的其他很多种环境中利用基于文件的访问控制。
图2更详细地图示了用来在装置50(其可以类似于图1的装置10的方式被实现)中实现基于文件的访问控制的主要软件部件。装置50被显示为包含通过多路复用器56连接到多个硬件设备54的一对服务处理器52。此外,每个装置50中包括一个或多个设备驱动器58、一个或多个设备访问层(DAL)60、一个或多个应用62、MUX文件64和服务处理器(SP)管理应用66、以及操作系统68。在操作系统68中还图示了文件锁定工具(FLF)70,其提供操作系统本机的基于文件的锁定功能。
典型地为每个设备54提供设备驱动器58;然而,在图示的实施例中,没有为多路复用器56提供这样的设备驱动器。在其他实施例中,多路复用器56可以通过与其他设备54相似的方式被管理,由此可利用设备驱动器来管理其他实施例中的多路复用器。
设备访问层60被用来代表应用62、66访问设备驱动器58,并且结果是对应用62、66隐藏设备访问。在图示的实施例中,可提供不同的DAL来支持不同的通信协议,例如JTAG通信、GPIO通信和I2C通信。也是在DAL 60中试图代表应用62、66来获取MUX文件64上的锁以使能访问硬件设备54。典型地,由应用向DAL发出的设备打开获取用于该应用的共享锁,而向该DAL发出的关闭释放该锁。
应用62被典型地配置为执行各种初始化、系统配置和运行时诊断功能,例如以便提供onDemand和VPD支持、电源管理、系统监视等。应当理解在其他环境中可以利用其他应用功能。
MUX文件64典型地在系统启动时每当检测到多路复用器就被创建。该MUX文件被与单个多路复用器或其他通信路径部件相关联,并且被使用来作为控制对每个通过多路复用器56连接到服务处理器的设备54的访问的门。DAL使用一个表来将该MUX文件与每个连接到多路复用器的硬件设备54相匹配,这样当设备被访问时可以访问该表以确定该设备所关联的适当的MUX文件。可提供多个MUX文件来支持多个多路复用器,并且如图2所示,在连接到多路复用器56的每个服务处理器52中维护与多路复用器56相关联的单独的MUX文件64。
图示实施例中的SP管理应用66被用来在服务处理器52被首先初始化的时候获取MUX文件64上的排它锁,并被用来每当服务处理器控制了该多路复用器的时候释放该排它锁。此外,如下面所详细描述的,SP管理应用被用来每当这样的时候获取MUX文件64上的排它锁,即每当另一个服务处理器控制了该多路复用器,或每当另一个服务处理器在尝试取得对该多路复用器的控制并在等待该SP管理应用66当前运行于其上的服务处理器的释放。在其他环境中,可以不使用专用的SP管理应用。
操作系统68例如可以被实现为例如嵌入式Linux操作系统,其包含作为其本机文件系统的一部分的文件锁定工具(FLF)70。由于操作系统68是嵌入式的,用来保持操作系统程序代码、用于部件58-62和66的程序代码、和MUX文件64以及操作系统管理的任何其他文件的运行时存储器和非易失性存储器,都可以位于与服务处理器52相同的集成电路上。在其他实施例中,这样的部件可以驻留在可被服务处理器52访问的其他IC上。
通常,当一个应用“打开”一个设备时,给出共享或是排它的指示。在一些实现中,可支持多个共享锁和嵌套锁以防止死锁情况。在其他实现中,可以限制除管理应用之外的应用获取除共享锁之外的任何东西。
在可以使用硬件设备之前,必须获取MUX文件上的锁。当使用完该设备之后该锁被释放。在依赖嵌入式Linux的图示实施例中,可以经由flock结构和fcntl系统调用来完成锁定。
在图示的实现中,在任何时候只有一个服务处理器可以使用多路复用器,所以没有使用该多路复用器的服务处理器(具体是其上的SP管理应用)获取MUX文件上的排它锁以防止任何应用试图使用可经由该多路复用器访问的设备。这样在不允许服务处理器经由该多路复用器访问设备的时候,或经由该多路复用器对该设备的访问将被转移到其他服务处理器的时候,SP管理应用获取排它锁。
在第一种情况中,另一个服务处理器已经控制了该多路复用器,所以该服务处理器上的应用都不能访问任何设备。在第二种情况中,服务处理器具有控制但是想把该控制转移给另一个服务处理器。因此,在等待那些已经具有共享状态下的锁的应用完成的时候,获取排它锁以阻止那些还没有共享状态下的锁的应用。只有在一旦所有的共享锁都被释放时,才能够转移对多路复用器的控制,以此确保转移发生时没有应用还在访问任何设备。
在图示实施例中,对多路复用器的所有权是首要服务处理器的角色的组成部分。因此,服务处理器典型地实现一个协议来确定哪个服务处理器是首要的以及哪个是备用的。因此,为实现所有权的改变,通常一个服务处理器要么放弃它作为首要的角色,要么是备用服务处理器检测到首要服务处理器在某方面发生故障,并且该备用服务处理器必须承担首要角色。关于后一个例子,备用服务处理器在承担首要角色的时候也可以启动对首要服务处理器的重置以避免服务处理器之间的冲突。然而应当明白,各种给服务处理器指派首要或备用状态,以及切换服务处理器状态的方式,都可以被用在其他实施例中。还应当理解,在其他实施例中也可以使用其他将多路复用器的所有权指派给处理器的方式。
如上面指出的,典型地,应用被限制为获取共享锁来使用设备。根据它们的功能,应用可以选择等待共享锁,或者如果获取共享锁失败是意外的,可以将错误记入日志以协助程序调试。在其他实现中,如果需要的话,可以允许应用请求排它锁。
接下来图3图示了可以在服务处理器52的初始化过程中被执行的服务处理器启动例程80,并且具体限于那些在初始化过程中所执行的相关于与本发明一致的基于文件的访问控制的操作。例程80在服务处理器加电时被执行,并且起始于用于该服务处理器的内核和设备访问层的低层初始化,如方块82所示。然后,在方块84,检测到多路复用器,并且结果为其创建MUX文件。然后,在方块86,随着每个连接到多路复用器的硬件设备被检测到,该MUX文件被映射到这样的硬件设备上,例如通过使用可由DAL访问的表。另外,其他与初始化每个硬件设备相关联的初始化操作也可以在这个时候被执行。一旦映射在方块86已被执行,则执行启动操作的其余部分,如方块88所示。
如上面指出的,服务处理器被配置为只要该服务处理器当前不具有对相关联的多路复用器的控制,它就获取MUX文件上的排它锁。在这方面,图4示出了在初始化过程中服务处理器52(也表示为“SP1”和“SP2”)执行以初始获取这样的服务处理器中的MUX文件上的排它锁的所有权获取协议,该服务处理器作为该所有权获取协议的结果被确定为不具有对多路复用器的控制。具体地,在图示实施例中,一个服务处理器被指定为首要处理器,另一个被指定为备用处理器而主要用于冗余目的。在这个实施例中,是首要处理器被给予对多路复用器的控制。
步骤A1-A3图示了当SP1确定它是首要服务处理器时发生的操作的序列。具体地,基于两个服务处理器都知道的协议,服务处理器SP1确定它是首要的,并在步骤A1发送消息给服务处理器SP2来指示它是首要的。结果服务处理器SP2在步骤A2请求SP2 MUX文件64上的排它锁,这在获取了该锁的时候导致在步骤A3,“准许”指示被返回到服务处理器SP2。
另一方面,步骤B1-B3图示了当SP1确定它不是首要服务处理器时发生的操作的次序。具体地,基于两个服务处理器都知道的协议,服务处理器SP1确定它不是首要的,并在步骤B1发送消给服务处理器SP2来指示SP2,而不是SP1,是首要的。此后,服务处理器SP1在步骤B2请求SP1 MUX文件64上的排它锁,这在获取了该锁的时候导致在步骤B3,“准许”指示被返回到服务处理器SP1。
下面,图5-7图示了用于在服务处理器54之一上控制对共享硬件设备的访问的各种协议,还图示了服务处理器上执行的不同应用的某些动作是如何基于MUX文件64上的锁的状态而被处理的。
例如图5图示了其中第一应用62(“APP1”)与SP管理应用66(“SPM”)一同运行的实现,其中服务处理器开始具有对多路复用器的控制,并因此能够访问设备54(“HW”)。如在步骤C1-C5中所示的,APP1可在步骤C1经由到DAL 60的打开调用来请求访问设备54,从而请求对其的共享访问。然后在步骤C2,DAL 60尝试获取MUX文件64上的共享锁,例如通过使用由嵌入式Linux的文件锁定工具支持的flock结构和fcntl系统调用。由于多路复用器被该服务处理器控制,该锁被获取,并且在步骤C3,“准许”指示被返回到DAL 60。然后DAL 60可以在步骤C4发出打开请求给设备驱动器58,并在步骤C5返回“完成”指示给APP1。
在此时,APP1具有到设备54的共享访问。因此,如步骤D1-D5所示,APP1可以访问该设备,例如经由步骤D1所示的到DAL 60的读请求。该请求由DAL 60在步骤D2通过转发该读取请求到设备驱动器58而处理,从而导致在步骤D3合适的请求被转发到设备54。设备驱动器58在步骤D4返回“完成”指示,其被DAL 60在步骤D5转发到APP1。
然后步骤E1-E14图示了SPM 66获取MUX文件64上的排它锁的尝试,例如,响应于将对多路复用器的控制转移给其他服务处理器的请求。在此时,APP1依旧具有MUX文件上的共享锁,因此,如步骤E1所示的从SPM 66到DAL 60的获得MUX文件64上的排它锁的打开请求,将导致不会立即完成的获得MUX文件64上的排它锁的尝试,如步骤E2所示。相反,该请求被阻塞直到APP1释放MUX文件64上的共享锁。
因此,如在步骤E3-E7中所示,APP1可以继续访问设备54。然后,一旦APP1完成了对设备54的访问,APP1就可以发出关闭请求给DAL 60,如步骤E8中所示。这导致DAL 60在步骤E9释放MUX文件64上的锁,并在步骤E10发出关闭请求给设备驱动器58。然后当MUX文件64上的锁被释放后(步骤E11),DAL 60接收到“已释放”指示,由此DAL 60可以在步骤E12返回“完成”指示给APP1。
此外,一旦共享锁已被释放,SPM 66的排它锁请求可以完成。这样,在步骤E13,DAL 60接收到请求已被准许并且SPM 66具有MUX文件上的排它锁的指示。因此DAL 60在步骤E14发送“完成”指示给SPM 66。
一旦SPM 66获得了排它锁,该服务处理器上所有的应用都不被允许访问该设备。具体地,如在步骤F1-F4中所示,APP1可以在步骤F1经由到DAL 60的打开调用请求对设备54的访问,从而请求对其的共享访问,然后在步骤F2,DAL 60尝试获取MUX文件64上的共享锁。然而,由于SPM 66具有MUX文件上的排它锁,所以该请求失败,并且在步骤F3,“拒绝”指示被返回给DAL 60。然后DAL 60在步骤F4返回“错误”指示给APP1,以指示打开该设备的请求失败。
下面图6图示了驻留在相同服务处理器上的多个应用62(“APP1”和“APP2”)之间的交互。具体地,步骤C1-C5和D1-D5图示了APP1获取共享锁和一旦获取了共享锁APP1对设备54的访问。
与步骤E1-E14相似,步骤G1-G13图示了当APP1具有MUX文件64的上共享锁时SPM 66获取MUX文件64上的排它锁的尝试。然而,不同于步骤E1-E14,步骤G1-G13图示了在SPM 66作出了获取排它锁的请求之后APP2获取MUX文件上的共享锁的尝试。具体地,如在步骤G1和G2中所示,SPM 66作出获取排它锁的请求,该请求被保持直到APP1持有的共享锁被释放。然后,如在步骤G3-G6中所示,APP2通过发出打开请求到DAL 60(步骤G3)作出以共享访问打开设备54的请求,这导致在步骤G4获取共享锁的尝试。然而,由于SPM 66具有在MUX文件上待决的排它锁,所以该请求失败,并且在步骤G5“拒绝”指示被返回到DAL 60。然后在步骤G6,DAL 60返回“错误”指示给APP2,以指示打开设备的请求失败。
其后,在步骤G7-G11,APP1释放MUX文件64上的共享锁,这类似于步骤E8-E12。一旦该锁被释放,SPM 66对排它锁的请求可以完成。因此,在步骤G12,DAL 60接收到请求已被准许的指示,并且SPM 66具有MUX文件上的排它锁。这样DAL 60在步骤G13发送“完成”指示给SPM 66。
然后,如在步骤H1-H4和J1-J4(其以与步骤F1和F4相似的方式操作)中所示的那样,一旦SPM 66持有排它锁,那么服务处理器上的任何应用都不被允许访问该设备。因此,APP1(步骤H1-H4)和APP2(步骤J1-J4)发出的打开请求被拒绝,并且响应于请求,“错误”指示被返回给每个应用。
接下来图7图示了在获取对设备54的并行共享访问的过程中应用APP1和APP2之间的交互。具体地,步骤C1-C5图示了APP1获取共享锁,而步骤K1-K5图示了APP2获取共享锁。而且,如在步骤L1-L10(其以与步骤D1-D5相似的方式发挥作用)中所示,当两个应用都具有共享访问时,两个应用都可以发出访问请求给设备54。
然后,步骤M1-M18图示了APP2释放共享锁,其后是在SPM 66在APP2释放该锁之后请求排它锁以后重新获取共享锁的尝试。具体地,步骤M1-M5图示了APP2对共享锁的释放(与步骤E8-E12类似),其后是SPM 66在步骤M6-M7获取MUX文件64上的排它锁的尝试。
值得注意的是,由于APP1仍然具有MUX文件上的共享锁,所以该请求被保持直到APP1持有的共享锁被释放。但是,没有其他应用能够重新获取该锁,即使是先前持有MUX文件上的锁的应用也不能。因此,如在步骤M8-M11(与步骤G3-G6类似)中所示,APP2的打开请求失败,并且“错误”指示被返回到APP2。此后,一旦APP1释放了MUX文件64上的共享锁,如步骤M12-M16中所示,SPM 66对排它锁的请求可以完成。因此,在步骤M17,DAL 60接收到请求被准许以及SPM 66具有MUX文件上的排它锁的指示。因此DAL 60在步骤M18发送“完成”指示给SPM 66。
应当明白的是,在此描述的包含有嵌入式Linux操作系统环境的服务处理器内的功能的实现,是完全处于阅读了本公开的本领域普通技术人员的能力之内的。而且,在不脱离本发明的精神和范围的情况下可以对图示的实施例作以各种其他修改。因此,本发明在于后面所附的权利要求。

Claims (30)

1.一种访问由多个处理器共享的硬件设备的方法,该方法包括:
将该共享硬件设备与可由该多个处理器中的第一处理器访问的文件相关联;以及
使用与该文件相关联的锁来控制在该第一处理器上执行的至少一个应用对该共享硬件设备的访问。
2.如权利要求1所述的方法,进一步包括将该共享硬件设备与可由所述多个处理器中的第二处理器访问的第二文件相关联。
3.如权利要求1所述的方法,进一步包括在所述第一处理器启动过程中响应于检测到这样的共享通信路径而创建该文件,即通过该共享通信路径该共享硬件设备被连接到所述多个处理器,其中该文件进一步与该共享通信路径相关联。
4.如权利要求3所述的方法,其中所述共享通信路径包括多路复用器,其中该文件与该多路复用器相关联。
5.如权利要求3所述的方法,进一步包括将可被所述多个处理器通过所述共享通信路径访问的第二共享硬件设备与该文件相关联。
6.如权利要求1所述的方法,其中所述多个处理器中的每一个都包括通过共用多路复用器连接到该共享硬件设备的服务处理器,其中该文件与该多路复用器相关联。
7.如权利要求6所述的方法,其中所述第一处理器上驻留有操作系统、设备访问层和与共享硬件设备相关联的设备驱动器,其中该第一处理器上没有设备驱动器与该多路复用器相关联,并且其中控制对该共享硬件设备的访问包括响应于应用向该设备访问层作出的访问该共享硬件设备的请求,尝试使用该设备访问层获取与该文件相关联的锁。
8.如权利要求1所述的方法,其中控制对该共享硬件设备的访问是使用驻留第一处理器中的操作系统中的文件锁定工具而执行的。
9.如权利要求1所述的方法,其中控制对该共享硬件设备的访问包括:
确定所述第一处理器是否具有对该共享硬件设备的控制;以及
如果是,则获取该文件上的锁以准许该应用访问该共享硬件设备。
10.如权利要求9所述的方法,其中确定所述第一处理器是否具有对该共享硬件设备的控制包括访问该文件上的锁。
11.如权利要求9所述的方法,进一步包括响应于确定除了所述第一处理器之外的处理器具有对该共享硬件设备的控制,拒绝该应用对该共享硬件设备的访问。
12.如权利要求11所述的方法,进一步包括每当除了所述第一处理器之外的处理器具有对该共享硬件设备的控制时,保持用于驻留在该第一处理器上的管理应用的排它状态的该文件上的锁,以阻止在该第一处理器上执行的另一个应用获取对该共享硬件设备的访问。
13.如权利要求11所述的方法,进一步包括当所述第一处理器具有对该共享硬件设备的控制时,获取用于驻留在该第一处理器上的管理应用的排它状态的该文件上的锁,以使得除了该第一处理器之外的处理器能够获得对该共享硬件设备的控制。
14.如权利要求13所述的方法,其中驻留在所述第一处理器上的除了所述管理应用之外的每个应用都被允许仅获取处于共享状态的该文件上的锁,并且其中获取用于该管理应用的排它状态的该文件上的锁包括仅在驻留在该第一处理器上的具有共享状态的该文件上的锁的每个其他应用都释放锁之后才准许该锁。
15.一种装置,包括:
用于将共享硬件设备与处理器可访问的文件相关联的单元;以及
用于使用与该文件相关联的锁控制在该处理器上执行的至少一个应用对该共享硬件设备的访问的单元。
16.如权利要求15所述的装置,进一步包括将该共享硬件设备与可由多个处理器中的第二处理器访问的第二文件相关联的单元。
17.如权利要求15所述的装置,进一步包括在第一处理器启动过程中响应于检测到这样的共享通信路径而创建该文件的单元,即通过该共享通信路径该共享硬件设备被连接到多个处理器,其中该文件进一步与该共享通信路径相关联。
18.如权利要求17所述的装置,其中该共享通信路径包括多路复用器,其中该文件与该多路复用器相关联。
19.如权利要求17所述的装置,进一步包括将可被多个处理器通过该共享通信路径访问的第二共享硬件设备与该文件相关联的单元。
20.如权利要求15所述的装置,其中多个处理器中的每一个都包括通过共用多路复用器连接到该共享硬件设备的服务处理器,其中该文件与该多路复用器相关联。
21.如权利要求20所述的装置,其中所述第一处理器上驻留有操作系统、设备访问层和与该共享硬件设备相关联的设备驱动器,其中该第一处理器上没有设备驱动器与该多路复用器相关联,并且其中控制对该共享硬件设备的访问包括响应于应用向该设备访问层作出的访问该共享硬件设备的请求,尝试使用该设备访问层获取与该文件相关联的锁。
22.如权利要求15所述的装置,其中控制对该共享硬件设备的访问是使用驻留在所述第一处理器中的操作系统中的文件锁定工具而执行的
23.如权利要求15所述的装置,其中控制对该共享硬件设备的访问包括:
确定所述第一处理器是否具有对该共享硬件设备的控制;以及
如果是,则获取该文件上的锁以准许该应用访问该共享硬件设备。
24.如权利要求23所述的装置,其中确定所述第一处理器是否具有对该共享硬件设备的控制包括访问该文件上的锁。
25.如权利要求23所述的装置,进一步包括响应于确定除了所述第一处理器之外的处理器具有对该共享硬件设备的控制,拒绝该应用对该共享硬件设备的访问的单元。
26.如权利要求25所述的装置,进一步包括每当除了所述第一处理器之外的处理器具有对该共享硬件设备的控制,就保持用于驻留在该第一处理器上的管理应用的排它状态的该文件上的锁,以阻止在该第一处理器上执行的另一个应用获取对该共享硬件设备的访问的单元。
27.如权利要求25所述的装置,进一步包括当所述第一处理器具有对该共享硬件设备的控制时,获取用于驻留该第一处理器上的该管理应用的排它状态的该文件上的锁,以使得除了该第一处理器之外的处理器能够获得对该共享硬件设备的控制的单元。
28.如权利要求27所述的装置,其中驻留在所述第一处理器上的除了该管理应用之外的每个应用都被允许获取仅处于共享状态的该文件上的锁,并且其中获取用于该管理应用的排它状态的该文件上的锁包括仅在驻留在该第一处理器上的具有共享状态的该文件上的锁的每个其他应用都释放锁之后才准许该锁。
29.一种装置,包括:
中央电子联合体,其包括多个共享硬件设备;
多个服务处理器,其包括第一服务处理器,该第一服务处理器包括带有文件锁定工具的操作系统;
多路复用器,其连接在该多个服务处理器和中央电子联合体之间,以提供它们之间的共享通信路径;以及
驻留在第一服务处理器上的程序代码,其被配置为将文件与该多路复用器相关联,并通过使用该操作系统中的文件锁定工具控制与该文件相关联的锁,来控制在该第一服务处理器上执行的至少一个应用对该多个共享硬件设备中的每一个的访问。
30.一种程序产品,包括:
驻留在处理器上的程序代码,其被配置为访问与至少一个其他处理器共享的硬件设备,该程序代码被配置为将该共享硬件设备与可由该处理器访问的文件相关联,并使用与该文件相关联的锁来控制在该处理器上执行的至少一个应用对该共享硬件设备的访问;以及
承载有该程序代码的计算机可读介质。
CNB2006101078916A 2005-12-22 2006-07-27 用于共享硬件设备的基于文件的访问控制方法和装置 Expired - Fee Related CN100461111C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/316,266 US7752367B2 (en) 2005-12-22 2005-12-22 File-based access control for shared hardware devices
US11/316,266 2005-12-22

Publications (2)

Publication Number Publication Date
CN1987791A true CN1987791A (zh) 2007-06-27
CN100461111C CN100461111C (zh) 2009-02-11

Family

ID=38184596

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101078916A Expired - Fee Related CN100461111C (zh) 2005-12-22 2006-07-27 用于共享硬件设备的基于文件的访问控制方法和装置

Country Status (2)

Country Link
US (1) US7752367B2 (zh)
CN (1) CN100461111C (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561786B (zh) * 2008-04-16 2011-10-05 索尼株式会社 信息处理装置和信息处理方法
CN102262559A (zh) * 2010-05-24 2011-11-30 腾讯科技(深圳)有限公司 一种资源共享的方法及系统
WO2012083839A1 (zh) * 2010-12-20 2012-06-28 联想(北京)有限公司 电子设备及数据传输方法
CN106201015A (zh) * 2016-07-08 2016-12-07 百度在线网络技术(北京)有限公司 基于输入法应用软件的语音输入方法及装置
CN107272549A (zh) * 2016-04-07 2017-10-20 欧姆龙株式会社 控制装置、控制方法以及程序

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078990B2 (en) 2006-02-01 2011-12-13 Research In Motion Limited Secure device sharing
US7500037B2 (en) * 2007-01-30 2009-03-03 International Business Machines Corporation System, method and program for managing locks
US8136147B2 (en) * 2007-04-16 2012-03-13 International Business Machines Corporation Privilege management
US20100122253A1 (en) * 2008-11-09 2010-05-13 Mccart Perry Benjamin System, method and computer program product for programming a concurrent software application
US20120284702A1 (en) * 2011-05-02 2012-11-08 Microsoft Corporation Binding applications to device capabilities
CN102819453B (zh) * 2012-07-20 2015-11-18 腾讯科技(深圳)有限公司 信息获取的方法及信息获取平台
CN112052439A (zh) * 2020-09-29 2020-12-08 北京智芯微电子科技有限公司 嵌入式系统的访问权限控制方法、控制装置及存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02195453A (ja) 1989-01-25 1990-08-02 Toshiba Corp ファイルアクセス制御方式
JPH02226442A (ja) * 1989-02-28 1990-09-10 Toshiba Corp データベースシステムのデッドロック防止方式
US5339388A (en) * 1991-12-31 1994-08-16 International Business Machines Corporation Cursor lock region
JP3255759B2 (ja) 1993-06-11 2002-02-12 富士通株式会社 マルチプロセッサシステム
JP3385091B2 (ja) 1994-05-13 2003-03-10 三菱電機株式会社 計算機間の排他制御装置
US5892954A (en) * 1995-07-07 1999-04-06 Sun Microsystems, Inc. Method and apparatus for refreshing file locks to minimize conflicting accesses to data files
JP3745800B2 (ja) 1995-09-29 2006-02-15 富士通株式会社 共有資源の排他制御方式
EP0834806B1 (en) 1996-08-28 2008-04-23 Hitachi, Ltd. Process executing method and resource accessing method in computer system
US6343338B1 (en) 1997-04-01 2002-01-29 Microsoft Corporation System and method for synchronizing disparate processing modes and for controlling access to shared resources
JPH1165863A (ja) 1997-08-26 1999-03-09 Hitachi Ltd 共有資源管理方法
US6401110B1 (en) 1998-11-30 2002-06-04 International Business Machines Corporation Method for managing concurrent processes using dual locking
US6105099A (en) 1998-11-30 2000-08-15 International Business Machines Corporation Method for synchronizing use of dual and solo locking for two competing processors responsive to membership changes
CN1537275A (zh) * 2001-02-24 2004-10-13 �Ҵ���˾ 低等待时间存储器系统访问
US7428732B2 (en) 2001-12-05 2008-09-23 Intel Corporation Method and apparatus for controlling access to shared resources in an environment with multiple logical processors
US7107267B2 (en) * 2002-01-31 2006-09-12 Sun Microsystems, Inc. Method, system, program, and data structure for implementing a locking mechanism for a shared resource
US7181744B2 (en) 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
US6990560B2 (en) 2003-01-16 2006-01-24 International Business Machines Corporation Task synchronization mechanism and method
US20050165938A1 (en) * 2003-12-24 2005-07-28 Linden Cornett Method, system, and program for managing shared resources

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561786B (zh) * 2008-04-16 2011-10-05 索尼株式会社 信息处理装置和信息处理方法
CN102262559A (zh) * 2010-05-24 2011-11-30 腾讯科技(深圳)有限公司 一种资源共享的方法及系统
CN102262559B (zh) * 2010-05-24 2013-08-14 腾讯科技(深圳)有限公司 一种资源共享的方法及系统
WO2012083839A1 (zh) * 2010-12-20 2012-06-28 联想(北京)有限公司 电子设备及数据传输方法
CN102567249A (zh) * 2010-12-20 2012-07-11 联想(北京)有限公司 一种电子设备及其数据传输方法
CN102567249B (zh) * 2010-12-20 2015-08-26 联想(北京)有限公司 一种电子设备及其数据传输方法
US9430431B2 (en) 2010-12-20 2016-08-30 Lenovo (Beijing) Limited Multi-part electronic device and data transmission method
CN107272549A (zh) * 2016-04-07 2017-10-20 欧姆龙株式会社 控制装置、控制方法以及程序
CN106201015A (zh) * 2016-07-08 2016-12-07 百度在线网络技术(北京)有限公司 基于输入法应用软件的语音输入方法及装置
CN106201015B (zh) * 2016-07-08 2019-04-19 百度在线网络技术(北京)有限公司 基于输入法应用软件的语音输入方法及装置

Also Published As

Publication number Publication date
US20070150630A1 (en) 2007-06-28
US7752367B2 (en) 2010-07-06
CN100461111C (zh) 2009-02-11

Similar Documents

Publication Publication Date Title
CN100461111C (zh) 用于共享硬件设备的基于文件的访问控制方法和装置
US6529978B1 (en) Computer input/output (I/O) interface with dynamic I/O adaptor processor bindings
US9519795B2 (en) Interconnect partition binding API, allocation and management of application-specific partitions
JP4491194B2 (ja) オペレーティングシステムなしでcpuおよびデバイスを管理するモジュラーマイクロコントローラ
US7774785B2 (en) Cluster code management
US10108460B2 (en) Method and system for integrated deployment planning for virtual appliances
JP4001877B2 (ja) 入出力ファブリックにおけるハードウェア・エラーからの自動回復
CN100530079C (zh) 用于在非均衡存储器存取计算机系统中调度任务的方法和设备
JP5305866B2 (ja) データ処理システム内で入出力(i/o)仮想化を管理するための方法およびコンピュータ・プログラムならびにデータ処理システム
JP4056471B2 (ja) プロセッサに譲渡するためのシステム
US7743372B2 (en) Dynamic cluster code updating in logical partitions
JP4842210B2 (ja) フェイルオーバ方法、計算機システム、管理サーバ及び予備サーバの設定方法
US20050097384A1 (en) Data processing system with fabric for sharing an I/O device between logical partitions
US20070005861A1 (en) Fault tolerant computer system
WO2005020073A9 (en) Method and apparatus for providing virtual computing services
JP2007115246A (ja) ソフトウェアによって使用される資源を動的に割り当てるための方法及び装置
KR20100069572A (ko) 리소스 뷰에 기초한 리던던트 컨트롤러의 선택
JP2002505471A (ja) 遠隔処理の中断および継続の方法と装置
US7512719B1 (en) Sharing a dynamically located memory block between components executing in different processor modes in an extensible firmware interface environment
KR20140111746A (ko) 워크 로드에 따라 동적 자원 할당 가능한 상호 연결 패브릭 스위칭 장치 및 방법
KR20230016110A (ko) 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법
EP1815333A1 (en) Migration of tasks in a computing system
US20020116506A1 (en) Cross-MVS system serialized device control
EP0851352B1 (en) Input/output control device and method applied to fault-resilient computer system
Ha et al. Dynamic Capacity Service for Improving CXL Pooled Memory Efficiency

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090211

Termination date: 20150727

EXPY Termination of patent right or utility model