本發(fā)明涉及網(wǎng)絡通信領(lǐng)域,尤其涉及一種分區(qū)調(diào)度方法。
背景技術(shù):
ARINC 653規(guī)范定義了綜合模塊化航空電子(英文為Integrrated Modular Avionics,英文簡稱IMA)實時操作系統(tǒng)的行為邏輯以及向應用程序提供的接口規(guī)范,該系統(tǒng)提出的分區(qū)概念,是ARINC653標準中資源分配、調(diào)度、實現(xiàn)系統(tǒng)空間時間隔離的基本單位,保障了IMA航電系統(tǒng)的高可靠性與高安全性。
為了保證航電系統(tǒng)的安全性與可靠性,航電軟件在部署應用前需要進行充分的測試和驗證。在實際開發(fā)過程中,為支持全系統(tǒng)機載軟件的研制與調(diào)試,目前國內(nèi)的機載軟件運行測試平臺主要采用全物理仿真或半物理仿真的搭建方式。在這種方式下,搭建全部平臺需要大量真實硬件,并且,由于缺乏開發(fā)平臺,使得該開發(fā)難度比較高,且部署數(shù)量受限。在系統(tǒng)集成階段,多個子系統(tǒng)都需要在完整的平臺上測試運行。由于平臺資源有限,子系統(tǒng)的運行測試只能排隊依次測試,當某個子系統(tǒng)出現(xiàn)問題時,需要返工重新排隊申請再次測試。因此,采用航電系統(tǒng)集成單位的測試平臺,容易導致系統(tǒng)測試周期長、集成過程復雜,并且任務緊迫,成本昂貴的問題。
綜上所述,現(xiàn)有的機載軟件運行測試平臺存在平臺資源受限,導致系統(tǒng)測試周期比較長,集成過程復雜,且導致成本昂貴的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種分區(qū)調(diào)度方法,用以解決現(xiàn)有的機載軟件運行測試平臺存在平臺資源受限,導致系統(tǒng)測試周期比較長,集成過程復雜,且導致成本昂貴的問題。
本發(fā)明實施例提供一種分區(qū)調(diào)度方法,包括
使用驅(qū)動加載軟件進行系統(tǒng)初始化;
通過配置信息加載器打開共享內(nèi)存,將系統(tǒng)管理器信息映射至程序的地址空間;
設(shè)置APIC Timer標志位并將模塊地址作為第一參數(shù)發(fā)送至模塊調(diào)度器;
所述模塊調(diào)度器將所述APIC Timer對應的時間確定為系統(tǒng)當前時間;根據(jù)所述第一參數(shù),若確定所述模塊地址對應的模塊當前狀態(tài)為POWER_RUNNING,則獲取當前正在運行的第一分區(qū)信息;若所述第一分區(qū)信息對應的分區(qū)狀態(tài)為運行狀態(tài),且所述系統(tǒng)當前時間大于所述第一分區(qū)預計調(diào)度時間,則暫停所述第一分區(qū)的調(diào)度,并將所述第一分區(qū)的第一暫停標志位和第一調(diào)度標志位分別設(shè)置為TRUE;獲取下一個被調(diào)度的第二分區(qū),根據(jù)所述第二分區(qū)Duration確定所述第二分區(qū)預計調(diào)度時間,若所述第二分區(qū)預計調(diào)度時間大于所述系統(tǒng)當前時間,則將所述第二分區(qū)的第二調(diào)度標志位設(shè)置為TRUE,并將所述第二調(diào)度標志位信息作為調(diào)度事件發(fā)送至分區(qū)調(diào)度器;
所述分區(qū)調(diào)度器根據(jù)所述調(diào)度事件,若確定所述第二調(diào)度標志位的信息為TRUE,則關(guān)閉所述第二分區(qū)調(diào)度功能,先將所述第二分區(qū)進行RESUME,并將所述第二分區(qū)運行狀態(tài)設(shè)置為NORMAL,并將運行狀態(tài)為NORMAL的所述第二分區(qū)內(nèi)包括的全部進程按照調(diào)度策略進行調(diào)度;
ARINC653標準接口按照調(diào)度策略將正在調(diào)度的第一進程的ID從所述第二分區(qū)內(nèi)刪除。
優(yōu)選地,所述分區(qū)調(diào)度器根據(jù)所述調(diào)度事件,若確定所述第二調(diào)度標志位的信息為TRUE,則關(guān)閉所述第二分區(qū)調(diào)度功能之后,還包括:
若所述第二分區(qū)的第二暫停標志位為TRUE,則暫停所述第二分區(qū)的調(diào)度。
優(yōu)選地,所述使用驅(qū)動加載軟件進行系統(tǒng)初始化包括:
獲取系統(tǒng)處理器的核心數(shù)量,每個所述核心啟動一個模塊,并將所有已啟動的所述模塊的狀態(tài)設(shè)置為POWER_OFF;
將所述模塊狀態(tài)為POWER_ON的所述模塊確定為第一模塊,為所述第一模塊在系統(tǒng)空間申請一塊內(nèi)存空間,獲取所述第一模塊的內(nèi)存在整個共享內(nèi)存中的相對偏移,并將所述第一模塊的狀態(tài)設(shè)置為POWER_NORMAL;
將所述模塊狀態(tài)為POWER_BUILDED的所述模塊確定為第二模塊,為所述第二模塊中每個分區(qū)創(chuàng)建所述調(diào)度事件,并將所述第二模塊的狀態(tài)設(shè)置為POWER_RUNNING。
優(yōu)選地,所述通過配置信息加載器打開共享內(nèi)存,將系統(tǒng)管理器信息映射至程序的地址空間,包括:
通過配置信息加載器打開所述共享內(nèi)存,將內(nèi)核空間中所述系統(tǒng)管理器信息映射至所述程序的地址空間,當所述第一模塊的狀態(tài)從POWER_ON變?yōu)镻OWER_NORMAL時,將所述配置信息寫入所述第一模塊的內(nèi)存,并將所述第一模塊的狀態(tài)設(shè)置為POWER_BUILDED;
所述配置信息包含模塊配置信息、分區(qū)配置信息、偽分區(qū)配置信息、隊列端口配置信息、采樣端口配置信息、主時間框架配置信息、調(diào)度ID號和調(diào)度優(yōu)先級。
優(yōu)選地,所述設(shè)置APIC Timer標志位并將模塊地址作為第一參數(shù)傳給模塊調(diào)度器,包括:
確定當前狀態(tài)為POWER_BUILDED的所述模塊地址,將所述模塊地址確定為所述第一參數(shù);
將所述APIC Timer周期設(shè)置為100微秒,并啟動所述APIC Timer。
優(yōu)選地,所述ARINC653標準接口按照調(diào)度策略將正在調(diào)度的第一進程的ID從所述第二分區(qū)內(nèi)刪除之后,還包括:
將停止進程指針指向所述第一進程,并觸發(fā)重調(diào)度指令,等待對所述第一進程停止調(diào)用。
本發(fā)明實施例中,提供了一種分區(qū)調(diào)度方法,包括:使用驅(qū)動加載軟件進行系統(tǒng)初始化;通過配置信息加載器打開共享內(nèi)存,將系統(tǒng)管理器信息映射至程序的地址空間;設(shè)置APIC Timer標志位并將模塊地址作為第一參數(shù)發(fā)送至模塊調(diào)度器;所述模塊調(diào)度器將所述APIC Timer對應的時間確定為系統(tǒng)當前時間;根據(jù)所述第一參數(shù),若確定所述模塊地址對應的模塊當前狀態(tài)為POWER_RUNNING,則獲取當前正在運行的第一分區(qū)信息;若所述第一分區(qū)信息對應的分區(qū)狀態(tài)為運行狀態(tài),且所述系統(tǒng)當前時間大于所述第一分區(qū)預計調(diào)度時間,則暫停所述第一分區(qū)的調(diào)度,并將所述第一分區(qū)的第一暫停標志位和第一調(diào)度標志位分別設(shè)置為TRUE;獲取下一個被調(diào)度的第二分區(qū),根據(jù)所述第二分區(qū)Duration確定所述第二分區(qū)預計調(diào)度時間,若所述第二分區(qū)預計調(diào)度時間大于所述系統(tǒng)當前時間,則將所述第二分區(qū)的第二調(diào)度標志位設(shè)置為TRUE,并將所述第二調(diào)度標志位信息作為調(diào)度事件發(fā)送至分區(qū)調(diào)度器;所述分區(qū)調(diào)度器根據(jù)所述調(diào)度事件,若確定所述第二調(diào)度標志位的信息為TRUE,則關(guān)閉所述第二分區(qū)調(diào)度功能,先將所述第二分區(qū)進行RESUME,并將所述第二分區(qū)運行狀態(tài)設(shè)置為NORMAL,并將運行狀態(tài)為NORMAL的所述第二分區(qū)內(nèi)包括的全部進程按照調(diào)度策略進行調(diào)度;ARINC653標準接口按照調(diào)度策略將正在調(diào)度的第一進程的ID從所述第二分區(qū)內(nèi)刪除。上述方法中,采用Windows驅(qū)動的方式加載模塊調(diào)度器,使模塊調(diào)度器工作在內(nèi)核態(tài),并使其運行在DPC中斷優(yōu)先級下,從而不會被Windows調(diào)度器所打斷,保障了調(diào)度的穩(wěn)定性。而對于性能要求不是特別高的分區(qū)調(diào)度器,則運行在用戶態(tài);使用Local APIC中的APIC Timer來觸發(fā)模塊調(diào)度器并提供最高精度100微秒的時鐘信號,可以保障調(diào)度時間的準確性;將ARINC653的接口進行封裝,并結(jié)合模塊調(diào)度器和分區(qū)調(diào)度器,可以讓機載軟件開發(fā)與調(diào)試可以在Windows下進行,大大降低了開發(fā)難度和成本。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供一種分區(qū)調(diào)度方法流程示意圖;
圖2為本發(fā)明實施例提供的模塊調(diào)度器流程示意圖;
圖3為本發(fā)明實施例提供的分區(qū)調(diào)度器流程示意圖;
圖4為本發(fā)明實施例提供的STOP_SELF函數(shù)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
圖1為本發(fā)明實施例提供一種分區(qū)調(diào)度方法流程示意圖,如圖1所示,該方法主要包括以下步驟:
步驟101,使用驅(qū)動加載軟件進行系統(tǒng)初始化;
步驟102,通過配置信息加載器打開共享內(nèi)存,將系統(tǒng)管理器信息映射至程序的地址空間;
步驟103,設(shè)置APIC Timer標志位并將模塊地址作為第一參數(shù)發(fā)送至模塊調(diào)度器;
步驟104,所述模塊調(diào)度器將所述APIC Timer對應的時間確定為系統(tǒng)當前時間;根據(jù)所述第一參數(shù),若確定所述模塊地址對應的模塊當前狀態(tài)為POWER_RUNNING,則獲取當前正在運行的第一分區(qū)信息;若所述第一分區(qū)信息對應的分區(qū)狀態(tài)為運行狀態(tài),且所述系統(tǒng)當前時間大于所述第一分區(qū)預計調(diào)度時間,則暫停所述第一分區(qū)的調(diào)度,并將所述第一分區(qū)的第一暫停標志位和第一調(diào)度標志位分別設(shè)置為TRUE;獲取下一個被調(diào)度的第二分區(qū),根據(jù)所述第二分區(qū)Duration確定所述第二分區(qū)預計調(diào)度時間,若所述第二分區(qū)預計調(diào)度時間大于所述系統(tǒng)當前時間,則將所述第二分區(qū)的第二調(diào)度標志位設(shè)置為TRUE,并將所述第二調(diào)度標志位信息作為調(diào)度事件發(fā)送至分區(qū)調(diào)度器;
步驟105,所述分區(qū)調(diào)度器根據(jù)所述調(diào)度事件,若確定所述第二調(diào)度標志位的信息為TRUE,則關(guān)閉所述第二分區(qū)調(diào)度功能,先將所述第二分區(qū)進行RESUME,并將所述第二分區(qū)運行狀態(tài)設(shè)置為NORMAL,并將運行狀態(tài)為NORMAL的所述第二分區(qū)內(nèi)包括的全部進程按照調(diào)度策略進行調(diào)度;
步驟106,ARINC653標準接口按照調(diào)度策略將正在調(diào)度的第一進程的ID從所述第二分區(qū)內(nèi)刪除。
需要說明的是,本發(fā)明實施例需要通過Windows驅(qū)動的方式,利用APIC(中文為:高級可編程中斷控制器,英文為:Advanced Programmable Interrupt Controller)Timer和共享內(nèi)存實現(xiàn)了在Windows操作系統(tǒng)環(huán)境下符合ARINC653標準的高性能兩級調(diào)度方法。
在步驟101中,使用驅(qū)動加載軟件進行系統(tǒng)初始化,主要包括,
在內(nèi)核中申請一塊內(nèi)存空間,用于存放系統(tǒng)管理器和模塊調(diào)度器信息,并進行初始化。
步驟101-1,獲取系統(tǒng)處理器核心數(shù),每一個核心啟動一個模塊,并將該模塊狀態(tài)設(shè)置為POWER_OFF。
步驟101-2,在用戶態(tài)啟動監(jiān)視線程,并將內(nèi)核系統(tǒng)信息映射至當前進程地址空間。
具體地,監(jiān)視線程主要負責監(jiān)視步驟101-1中所創(chuàng)建模塊的狀態(tài)變化。
其中,模塊的狀態(tài)變化包括以下類型:
1)、將模塊狀態(tài)為POWER_ON的模塊確定為第一模塊,并為第一模塊在系統(tǒng)空間申請一塊內(nèi)存空間,進一步的,獲取第一模塊的內(nèi)存在整個共享內(nèi)存中的相對偏移,并將第一模塊的狀態(tài)設(shè)置為POWER_NORMAL;
2)、將模塊狀態(tài)為POWER_BUILDED的模塊確定為第二模塊,為第二模塊中每個分區(qū)創(chuàng)建調(diào)度事件,并將第二模塊的狀態(tài)設(shè)置為POWER_RUNNING。
步驟101-3,系統(tǒng)初始化完成。
在步驟102中,通過配置信息加載器打開共享內(nèi)存,將系統(tǒng)管理器信息映射至程序的地址空間。其中,配置信息包含模塊配置信息、分區(qū)配置信息、偽分區(qū)配置信息、隊列端口配置信息、采樣端口配置信息、主時間框架配置信息、調(diào)度ID號和調(diào)度優(yōu)先級。
通過配置信息加載器打開共享內(nèi)存,將內(nèi)核空間中系統(tǒng)管理器信息映射至程序的地址空間,當?shù)谝荒K的狀態(tài)從POWER_ON變?yōu)镻OWER_NORMAL時,將配置信息寫入第一模塊的內(nèi)存,并將第一模塊的狀態(tài)設(shè)置為POWER_BUILDED;
在步驟103中,設(shè)置APIC Timer標志位并將模塊地址作為第一參數(shù)發(fā)送至模塊調(diào)度器。
需要說明的是,在實際應用中,APIC Timer負責觸發(fā)模塊調(diào)度器,并為整個調(diào)度器部分提供時鐘信號,其實現(xiàn)如下:
設(shè)置APIC Timer,當驅(qū)動程序收到消息后,首先找到當前狀態(tài)為POWER_BUILEDED的第二模塊的地址,將第二模塊的地址作為第一參數(shù)傳給模塊調(diào)度器。然后設(shè)置APIC Timer標志位,將APIC Timer周期設(shè)置為100微秒,并啟動APIC Timer,觸發(fā)模塊調(diào)度器。
需要說明的是,設(shè)置APIC Timer的同時,還設(shè)置初始計數(shù)寄存器、分頻寄存器(英文為:divide configuration register)和本地向量表寄存器(英文為:LVT register),使其能產(chǎn)生微秒級的時鐘信號供調(diào)度器使用。
在步驟104中,圖2為本發(fā)明實施例提供的模塊調(diào)度器流程示意圖,如圖2所示,模塊調(diào)度器工作流程主要包括以下步驟:
步驟104-1,模塊調(diào)度器通過讀取APIC Timer寄存器數(shù)值獲取當前系統(tǒng)時間;模塊調(diào)度器讀取指向當前模塊信息的指針獲取模塊信息,其中模塊信息包括:模塊狀態(tài),模塊內(nèi)存大小,模塊編號,模塊分區(qū)數(shù),模塊的分區(qū)表,當前正在運行的分區(qū)和模塊調(diào)度信息。
步驟104-2,如果當前模塊狀態(tài)為POWER_RUNNING,則獲取當前正在運行的分區(qū)。
步驟104-3,如果系統(tǒng)時間已經(jīng)大于等于預計調(diào)度時間且當前分區(qū)運行模式為NORMAL,則暫停當前分區(qū),并將當前分區(qū)暫停標志位設(shè)置為TRUE,將調(diào)度標志位設(shè)置為TRUE。
步驟104-4,然后獲取下一個分區(qū)的分區(qū)窗口,根據(jù)主時間框架中當前分區(qū)Duration設(shè)置當前分區(qū)調(diào)度時間,若當前分區(qū)運行模式不為IDLE,則將當前分區(qū)調(diào)度標志位設(shè)置為TURE,通知當前分區(qū)的分區(qū)調(diào)度器可以進行調(diào)度。
需要說明的是,在確定第二調(diào)度標志位的信息為TRUE,并關(guān)閉第二分區(qū)調(diào)度功能之后,還包括:
若確定第二分區(qū)的第二暫停標志位為TRUE,則暫停第二分區(qū)的調(diào)度。
在步驟105中,分區(qū)調(diào)度器根據(jù)所述調(diào)度事件,若確定第二調(diào)度標志位的信息為TRUE,則關(guān)閉第二分區(qū)調(diào)度功能,先將第二分區(qū)進行RESUME,再將第二分區(qū)運行狀態(tài)設(shè)置為NORMAL,并將運行狀態(tài)為NORMAL的所述第二分區(qū)內(nèi)包括的全部進程按照調(diào)度策略進行調(diào)度。
需要說明的是,在本發(fā)明實施例中,分區(qū)內(nèi)調(diào)度是以進程作為基本單位,基本調(diào)度策略為優(yōu)先級搶占,對于同優(yōu)先級進程,采用FIFO的調(diào)度策略。具體地:在冷啟動或者熱啟動模式下,分區(qū)內(nèi)的進程只能處于等待或者休眠狀態(tài);在空閑狀態(tài)下,分區(qū)為空白分區(qū),將不會初始化分區(qū)內(nèi)的進程;在正常狀態(tài)下,分區(qū)內(nèi)的進程才可以將處于準備狀態(tài)變?yōu)檫\行狀態(tài)。
圖3為本發(fā)明實施例提供的分區(qū)調(diào)度器流程示意圖,如圖3所示,分區(qū)調(diào)度器的工作流程主要包括:
分區(qū)在Windows操作系統(tǒng)以用戶態(tài)程序的形式進行加載,當分區(qū)加載后,啟動當前分區(qū)的調(diào)度器線程。調(diào)度器線程首先將內(nèi)核中系統(tǒng)管理器映射到當前地址空間,然后采用輪詢方式獲取當前分區(qū)調(diào)度標志位。
若當前分區(qū)的調(diào)度標志位被模塊調(diào)度器被設(shè)置為TRUE,則按照調(diào)度策略調(diào)度當前分區(qū)內(nèi)進程。否則,則釋放當前CPU,直到調(diào)度標志位標志位為TRUE。
在步驟106中,ARINC653標準接口按照調(diào)度策略將正在調(diào)度的第一進程的ID從第二分區(qū)內(nèi)刪除。
需要說明的是,ARINC653標準接口部分通過利用Win32接口實現(xiàn)出符合ARINC653標準的接口,并結(jié)合上述的調(diào)度器部分,從而使機載軟件可在Windows平臺下直接進行開發(fā)和測試。
對于ARINC653接口的封裝,以下以STOP_SELF函數(shù)并結(jié)合圖4為例,來介紹ARINC653標準接口的工作流程,其中,圖4為本發(fā)明實施例提供的STOP_SELF函數(shù)示意圖,用于暫停調(diào)用該函數(shù)的進程,其操作實現(xiàn)如下:
首先獲得當前分區(qū)調(diào)度器中的當前分區(qū);
將調(diào)用STOP_SELF函數(shù)的進程ID從當前分區(qū)的StateList中刪除,并將分區(qū)調(diào)度器的當前停止進程指針指向STOP_SELF函數(shù)的進程;
觸發(fā)重調(diào)度,等待分區(qū)調(diào)度器對調(diào)用進程進行停止操作。
綜上所述,本發(fā)明實施例提供了一種分區(qū)調(diào)度方法,采用Windows驅(qū)動的方式加載模塊調(diào)度器,使模塊調(diào)度器工作在內(nèi)核態(tài),并使其運行在DPC中斷優(yōu)先級下,從而不會被Windows調(diào)度器所打斷,保障了調(diào)度的穩(wěn)定性。而對于性能要求不是特別高的分區(qū)調(diào)度器,則運行在用戶態(tài);使用Local APIC中的APIC Timer來觸發(fā)模塊調(diào)度器并提供最高精度100微秒的時鐘信號,可以保障調(diào)度時間的準確性;將ARINC653的接口進行封裝,并結(jié)合模塊調(diào)度器和分區(qū)調(diào)度器,可以讓機載軟件開發(fā)與調(diào)試可以在Windows下進行,大大降低了開發(fā)難度和成本。
本領(lǐng)域內(nèi)的技術(shù)人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的系統(tǒng)。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令系統(tǒng)的制造品,該指令系統(tǒng)實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。