本發(fā)明涉及計算機(jī)虛擬化技術(shù)領(lǐng)域,特別是涉及一種基于KVM虛擬化技術(shù)的處理器隔離方法及裝置。
背景技術(shù):
目前,隨著計算機(jī)硬件的發(fā)展,人們對最大化利用硬件資源的需求日益迫切。從上世紀(jì)六、七十年代虛擬機(jī)概念的提出,到現(xiàn)在虛擬化技術(shù)的日益成熟,為人們這些需求的實(shí)現(xiàn)提供了有利的解決方案?;贗ntelVT技術(shù)的KVM虛擬機(jī),是一種采用硬件輔助虛擬化的全虛擬化方案,并在Linux內(nèi)核版本2.6.20之后,以模塊的形式集成到內(nèi)核的各個主要發(fā)行版本。KVM虛擬機(jī)吸收了QEMU、Bochs、UML、Virtual PC等傳統(tǒng)虛擬機(jī)的長處和優(yōu)勢,利用硬件輔助的虛擬化技術(shù),使虛擬機(jī)的大多數(shù)指令可以直接在物理處理器上運(yùn)行,具有更加優(yōu)越的效率和性能,但是需要運(yùn)行的任務(wù)都是隨意在虛擬機(jī)上的處理器核中進(jìn)行,不能充分利用處理器的資源。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種基于KVM虛擬化技術(shù)的處理器隔離方法及裝置,以實(shí)現(xiàn)充分利用處理器的資源。
為解決上述技術(shù)問題,本發(fā)明提供一種基于KVM虛擬化技術(shù)的處理器隔離方法,包括:
通過修改qemu源碼生成對應(yīng)的KVM虛擬機(jī);
當(dāng)創(chuàng)建客戶機(jī)時,將所述KVM虛擬機(jī)與客戶機(jī)進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行。
優(yōu)選的,所述通過修改qemu源碼生成對應(yīng)的KVM虛擬機(jī),包括:
修改qemu源碼,增加-cpuid的命令選項,完成對參數(shù)的解析以及綁定操作,生成對應(yīng)的KVM虛擬機(jī)。
優(yōu)選的,當(dāng)創(chuàng)建客戶機(jī)時,將KVM虛擬機(jī)與客戶機(jī)進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行,包括:
當(dāng)創(chuàng)建客戶機(jī)時,根據(jù)解析獲得的cpuid參數(shù),對KQEMU應(yīng)用進(jìn)程、KVM線程、異步IO事件處理線程運(yùn)用linux內(nèi)核的Affinity機(jī)制進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行。
優(yōu)選的,所述方法還包括:
當(dāng)運(yùn)行多個客戶操作系統(tǒng)Guest OS時,通過配置CPU參數(shù)將各個Guest OS運(yùn)行在不同的處理器核上。
本發(fā)明還提供一種基于KVM虛擬化技術(shù)的處理器隔離裝置,該裝置包括:
修改模塊,用于通過修改qemu源碼生成對應(yīng)的KVM虛擬機(jī);
綁定模塊,用于當(dāng)創(chuàng)建客戶機(jī)時,將所述KVM虛擬機(jī)與客戶機(jī)進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行。
優(yōu)選的,所述修改模塊包括:
修改單元,用于修改qemu源碼;
解析單元,用于增加-cpuid的命令選項,完成對參數(shù)的解析以及綁定操作,生成對應(yīng)的KVM虛擬機(jī)。
優(yōu)選的,綁定模塊,用于當(dāng)創(chuàng)建客戶機(jī)時,將所述KVM虛擬機(jī)與客戶機(jī)進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行,包括:
綁定模塊,用于當(dāng)創(chuàng)建客戶機(jī)時,根據(jù)解析獲得的cpuid參數(shù),對KQEMU應(yīng)用進(jìn)程、KVM線程、異步IO事件處理線程運(yùn)用linux內(nèi)核的Affinity機(jī)制進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行。
優(yōu)選的,所述裝置還包括:
配置模塊,用于當(dāng)運(yùn)行多個客戶操作系統(tǒng)Guest OS時,通過配置CPU參數(shù)將各個Guest OS運(yùn)行在不同的處理器核上。
本發(fā)明所提供的一種基于KVM虛擬化技術(shù)的處理器隔離方法及裝置,通過修改qemu源碼生成對應(yīng)的KVM虛擬機(jī);當(dāng)創(chuàng)建客戶機(jī)時,將所述KVM虛擬機(jī)與客戶機(jī)進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行??梢?,通過修改qemu源碼生成特定的KVM虛擬機(jī),在創(chuàng)建客戶機(jī)的時候?qū)崿F(xiàn)綁定,使客戶機(jī)只能在指定核上的運(yùn)行,不發(fā)生遷移,實(shí)現(xiàn)了對處理器的隔離,達(dá)到最大化利用處理器資源,提高虛擬化CPU的效率,實(shí)現(xiàn)充分利用處理器的資源。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明所提供的一種基于KVM虛擬化技術(shù)的處理器隔離方法的流程圖;
圖2為KVM虛擬機(jī)架構(gòu)示意圖;
圖3為KVM工作模型示意圖;
圖4為客戶操作系統(tǒng)與CPU核的綁定示意圖;
圖5為KVM虛擬機(jī)進(jìn)程綁定實(shí)現(xiàn)過程示意圖;
圖6為本發(fā)明所提供的一種基于KVM虛擬化技術(shù)的處理器隔離裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明的核心是提供一種基于KVM虛擬化技術(shù)的處理器隔離方法及裝置,以實(shí)現(xiàn)充分利用處理器的資源。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請參考圖1,圖1為本發(fā)明所提供的一種基于KVM虛擬化技術(shù)的處理器隔離方法的流程圖,該方法包括:
S11:通過修改qemu源碼生成對應(yīng)的KVM虛擬機(jī);
S12:當(dāng)創(chuàng)建客戶機(jī)時,將KVM虛擬機(jī)與客戶機(jī)進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行。
可見,該方法通過修改qemu源碼生成特定的KVM虛擬機(jī),在創(chuàng)建客戶機(jī)的時候?qū)崿F(xiàn)綁定,使客戶機(jī)只能在指定核上的運(yùn)行,不發(fā)生遷移,實(shí)現(xiàn)了對處理器的隔離,達(dá)到最大化利用處理器資源,提高虛擬化CPU的效率,實(shí)現(xiàn)充分利用處理器的資源。
基于上述方法,進(jìn)一步的,步驟S11的過程包括:修改qemu源碼,增加-cpuid的命令選項,完成對參數(shù)的解析以及綁定操作,生成對應(yīng)的KVM虛擬機(jī)。
進(jìn)一步的,步驟S12的過程包括:當(dāng)創(chuàng)建客戶機(jī)時,根據(jù)解析獲得的cpuid參數(shù),對KQEMU應(yīng)用進(jìn)程、KVM線程、異步IO事件處理線程運(yùn)用linux內(nèi)核的Affinity機(jī)制進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行。
進(jìn)一步的,所述方法還包括:當(dāng)運(yùn)行多個客戶操作系統(tǒng)Guest OS時,通過配置CPU參數(shù)將各個Guest OS運(yùn)行在不同的處理器核上。
基于上述方法,具體的,通過修改qemu源碼生成特定的KVM虛擬機(jī)。在創(chuàng)建客戶機(jī)的時候?qū)崿F(xiàn)綁定,使客戶機(jī)只能在指定核上的運(yùn)行,不發(fā)生遷移,實(shí)現(xiàn)了一種KVM虛擬化技術(shù)中處理器隔離的設(shè)計。首先修改qemu源碼,增加-cpuid的命令選項,完成對參數(shù)的解析以及相關(guān)的綁定操作。其次,根據(jù)解析獲得的cpuid參數(shù),對KQEMU應(yīng)用進(jìn)程KVM線程、異步IO事件處理線程運(yùn)用Linux內(nèi)核的Affinity機(jī)制進(jìn)行綁定,實(shí)現(xiàn)對處理器的隔離。當(dāng)運(yùn)行多個Guest OS時,只需在運(yùn)行時指定CPU參數(shù),即可讓各個Guest OS始終運(yùn)行在指定的核上,進(jìn)而能夠充分有效地利用計算機(jī)硬件資源。
其中,對KVM虛擬機(jī)的綁定,實(shí)現(xiàn)了KVM虛擬機(jī)處理器核之間的隔離,使KVM虛擬機(jī)在指定的物理CPU核上運(yùn)行,不發(fā)生核間的遷移,從而達(dá)到物理CPU資源的指定使用。為了充分利用處理器的資源,往往需要虛擬機(jī)在某一指定個核上運(yùn)行,而其它的核上運(yùn)行特定的任務(wù),本方法基于CPU的親和性(Affinity),采用進(jìn)程綁定,實(shí)現(xiàn)了對處理器的隔離。
KVM是基于Intel VT技術(shù)并結(jié)合QEMU來提供設(shè)備虛擬化的虛擬機(jī)。通過分析和研究KVM虛擬機(jī)的創(chuàng)建、運(yùn)行機(jī)制,從進(jìn)程控制的角度對KVM虛擬機(jī)進(jìn)行隔離,實(shí)現(xiàn)了KVM虛擬機(jī)在創(chuàng)建、運(yùn)行時都保持在指定的核上運(yùn)行,達(dá)到最大化利用處理器資源的目的。本方法可以最大化利用處理器資源的目的,提高虛擬化CPU的效率。
具體的,關(guān)于KVM虛擬機(jī)架構(gòu),KVM虛擬機(jī)由兩部分構(gòu)成:一部分是以模塊形式集成到Linux內(nèi)核的KVM Driver,負(fù)責(zé)管理虛擬硬件資源,并創(chuàng)建一個字符設(shè)備(/dev/kvm),通過ioctl接口與用戶空間的設(shè)備通信,以及完成虛擬機(jī)內(nèi)存的分配、虛擬機(jī)寄存器的讀寫以及虛擬機(jī)CPU的運(yùn)行等。因此,每個虛擬機(jī)被Linux核心當(dāng)作是一個標(biāo)準(zhǔn)的進(jìn)程。另一個部分是KQEMU,即針對有虛擬化支持的X86處理器而修改過的QEMU。KQEMU主要是完成對硬件的模擬,通過/dev/kvm與KVM Driver交互。KVM虛擬機(jī)架構(gòu)如圖2所示:在Intel VT-x技術(shù)下有兩種工作模式:VMX rootoperation模式和VMX non-root operation模式。在這兩種模式下,KVM虛擬機(jī)充分利用硬件的支持,實(shí)現(xiàn)了系統(tǒng)的虛擬化。KVM的KVM Driver和KQEMU分別運(yùn)行于Kernel模式的和User模式。這里的Kernel模式和User模式實(shí)際上指的是VMX root operation模式下的特權(quán)級0和特權(quán)級3。在圖2中,Linux Kernel、KVM Driver和/dev/kvm都屬于VMX root operation模式。另外,KVM將客戶機(jī)所在的運(yùn)行模式稱為Guest模式,即VMX的VMX non-root operation模式。
關(guān)于QEMU和KVM工作原理,Intel VT-x是與處理器管理相關(guān)的硬件虛擬化技術(shù)。在VT-x的支持下,KVM中的每個虛擬機(jī)可具有多個虛擬處理器VCPU,每個VCPU對應(yīng)一個QEMU的線程,這個QEMU線程代表了KVM虛擬機(jī)的運(yùn)行。沒有硬件支持的純QEMU虛擬機(jī)和利用硬件支持實(shí)現(xiàn)虛擬化的KVM虛擬機(jī)的差異也就在這里。為了更加形象地說明KVM和QEMU間的關(guān)系,本文稱它為KVM線程,而將創(chuàng)建客戶機(jī)的應(yīng)用程序QEMU稱為QEMU進(jìn)程。QEMU應(yīng)用程序在創(chuàng)建或者說在加載一個Guest OS后,就轉(zhuǎn)換為KVM線程運(yùn)行。VCPU的創(chuàng)建、初始化、運(yùn)行以及退出處理都在KVM線程上下文中進(jìn)行,需要Kernel、User和Guest三種模式相互配合,其工作模型如圖3所示:從圖3可看出,KVM線程以ioctl的方式與KVM內(nèi)核模塊間進(jìn)行交互,指示KVM內(nèi)核模塊進(jìn)行VCPU的創(chuàng)建和初始化等操作,而KVM內(nèi)核模塊與客戶機(jī)之間通過VM Exit和VM entry操作進(jìn)行切換。初始化工作完成之后,KVM線程以ioctl的方式向KVM內(nèi)核模塊發(fā)出運(yùn)行VCPU的指示,后者執(zhí)行虛擬機(jī)進(jìn)入操作(VM entry),將處理器由Kernel模式切換到Guest模式,轉(zhuǎn)而運(yùn)行客戶機(jī)。但此時仍處于KVM線程上下文中,且正在執(zhí)行ioctl系統(tǒng)調(diào)用的kernel模式處理程序??蛻魴C(jī)在運(yùn)行過程中,如發(fā)生異?;蛲獠恐袛嗟仁录?,或執(zhí)行I/O操作,可能導(dǎo)致虛擬機(jī)退出操作(VMexit),將處理器狀態(tài)由Guest模式切換回Kernel模式。KVM內(nèi)核模塊檢查發(fā)生VM exit的原因,如果VM exit由I/O操作導(dǎo)致,則執(zhí)行系統(tǒng)調(diào)用返回操作,將I/O操作交給處于User模式的QEMU進(jìn)程來處理,這時QEMU會創(chuàng)建一個新的QEMU線程來完成這些I/O處理,之后再次執(zhí)行ioctl,指示KVM將處理器切換到Guest模式,恢復(fù)客戶機(jī)的運(yùn)行;如果VM exit由其它原因?qū)е?,則由KVM內(nèi)核模塊負(fù)責(zé)處理,并在處理后切換處理器到Guest模式,恢復(fù)客戶機(jī)的運(yùn)行。由以上分析可知,KVM虛擬化技術(shù)中物理CPU核的隔離實(shí)現(xiàn),與KQEMU應(yīng)用程序、KVM線程、異步IO事件處理這三方面有著密切的聯(lián)系。
關(guān)于虛擬機(jī)CPU進(jìn)程隔離實(shí)現(xiàn),在KVM虛擬機(jī)運(yùn)行的過程中,與虛擬機(jī)處理器緊密相關(guān)的重要數(shù)據(jù)結(jié)構(gòu)VMCS保存在內(nèi)存中,包含了虛擬CPU的相關(guān)寄存器的內(nèi)容和虛擬CPU相關(guān)的控制信息,每個VMCS對應(yīng)一個虛擬CPU。但VMCS具有“遷移性”,使用時需要與物理CPU綁定。例如,某個VMCS先和物理CPU0綁定,并在某個時刻解除綁定關(guān)系,下一個時刻可能會重新綁定到物理CPU1上。在任意給定時刻,VMCS與物理CPU是一對一的綁定關(guān)系,即一個VMCS只能與一個物理CPU綁定。因此,多核條件下要實(shí)現(xiàn)Guest OS在一個虛擬的單核平臺上運(yùn)行,就需要考慮KQEMU應(yīng)用程序、KVM線程、異步IO事件處理與CPU的綁定關(guān)系。利用CPU的親和性(Affinity),通過設(shè)置這三方面的Affinity屬性,可以將Guest OS進(jìn)程綁定到指定的核上運(yùn)行,從而實(shí)現(xiàn)虛擬的單核平臺。例如,在創(chuàng)建虛擬機(jī)時將兩個Guest OS進(jìn)程綁定到指定的CPU核上,使其在整個運(yùn)行期間不發(fā)生遷移,如圖4所示:根據(jù)KVM原理和機(jī)制的分析,可以通過以下方案實(shí)現(xiàn)綁定操作:修改、優(yōu)化KQEMU源代碼,生成特定的KVM虛擬機(jī)。在創(chuàng)建客戶機(jī)的時候?qū)崿F(xiàn)綁定,使客戶機(jī)只能在指定核上的運(yùn)行,不發(fā)生遷移。本方法是基于Qemu源代碼的修改,綁定時機(jī)實(shí)現(xiàn)過程也簡單明了。
關(guān)于處理器隔離的實(shí)現(xiàn),Linux的線程在核內(nèi)是以輕量級進(jìn)程的形式存在的,而實(shí)現(xiàn)是在核外。它擁有獨(dú)立的進(jìn)程表項,其創(chuàng)建、刪除等操作都是在核外POSIX thread庫中進(jìn)行。與fork()調(diào)用創(chuàng)建一個進(jìn)程的方法不同,pthread_create()創(chuàng)建的線程并不具備與主線程同樣的執(zhí)行序列,而是使其運(yùn)行start_routine()函數(shù)。因此,用fork創(chuàng)建的父子進(jìn)程之間的Affinity具有繼承性,而調(diào)用pthread_create()創(chuàng)建的父子進(jìn)程之間則沒有這種繼承性,KQEMU和KVM之間則是后者的情況。因此,僅通過設(shè)置KQEMU的Affinity屬性不能實(shí)現(xiàn)KVM虛擬機(jī)處理器的隔離。需分為兩部分處理:①從啟動QEMU的命令獲取cpuid參數(shù)。這需要對KQEMU源代碼進(jìn)行修改,增加-cpuid的命令選項,完成對參數(shù)的解析以及相關(guān)的綁定操作。主要涉及KQEMUOption、KQEMU_options等幾個選項變量。②根據(jù)解析獲得的cpuid參數(shù),對KQEMU應(yīng)用進(jìn)程KVM線程、異步IO事件處理線程運(yùn)用Linux內(nèi)核的Affinity機(jī)制進(jìn)行綁定,實(shí)現(xiàn)對處理器的隔離。圖5是以雙核處理器為例實(shí)現(xiàn)KVM虛擬機(jī)綁定的主要過程。
關(guān)于實(shí)驗結(jié)果與分析,需要驗證的是客戶機(jī)的創(chuàng)建、客戶機(jī)的運(yùn)行,以及客戶機(jī)的異步IO事件處理。例如,本實(shí)驗中使用的測試平臺是:處理器是intel(R)CoreTMi3-6100U CPU 2.30GHz,內(nèi)存為DDR3-1600 2G,操作系統(tǒng)內(nèi)核版本是Linux-4.0.33。GuestOS運(yùn)行測試程序是計算Fibonacci前35項和,每計算一次休眠15毫秒。執(zhí)行命令qemu-system-x86_64Guestos.img–m512–cpuid 1,在啟動Guest OS時指定創(chuàng)建Guest OS進(jìn)程的處理器參數(shù)cpuid,使創(chuàng)建客戶機(jī)的進(jìn)程在指定的核1運(yùn)行。用top命令的p和H參數(shù),觀察KVM虛擬機(jī)運(yùn)行時的進(jìn)程號和線程號。例如t1時刻為“19:33:34”,QEMU進(jìn)程號為3905,KVM線程號為3906,異步IO事件處理線程號為3910。例如t2時刻為“20:43:20”,KQEMU進(jìn)程號為3905,KVM線程號為3906,異步IO事件處理線程號為4212。此時線程號為3910的aio線程消失,動態(tài)產(chǎn)生aio線程4212。根據(jù)Linux內(nèi)核的PID命名規(guī)則可知,PID逐漸遞增,aio線程的產(chǎn)生是一個動態(tài)過程,根據(jù)Guest OS的需要而產(chǎn)生。經(jīng)過長時間的實(shí)驗觀察,雖然運(yùn)行Guest OS時CPU核1的利用率達(dá)到94.7%左右,KVM虛擬機(jī)始終保持在指定的核1運(yùn)行,即使核0十分空閑,仍不會發(fā)生遷移??梢酝ㄟ^taskset命令查看這三個進(jìn)程的Affinity值,得到進(jìn)一步的驗證,當(dāng)Affinity值為2(即0x00000010),表示相應(yīng)進(jìn)程或線程運(yùn)行在核1上。
請參考圖6,圖6為本發(fā)明所提供的一種基于KVM虛擬化技術(shù)的處理器隔離裝置的結(jié)構(gòu)示意圖,該裝置包括:
修改模塊101,用于通過修改qemu源碼生成對應(yīng)的KVM虛擬機(jī);
綁定模塊102,用于當(dāng)創(chuàng)建客戶機(jī)時,將KVM虛擬機(jī)與客戶機(jī)進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行。
可見,該裝置通過修改qemu源碼生成特定的KVM虛擬機(jī),在創(chuàng)建客戶機(jī)的時候?qū)崿F(xiàn)綁定,使客戶機(jī)只能在指定核上的運(yùn)行,不發(fā)生遷移,實(shí)現(xiàn)了對處理器的隔離,達(dá)到最大化利用處理器資源,提高虛擬化CPU的效率,實(shí)現(xiàn)充分利用處理器的資源。
基于上述裝置,具體的,修改模塊包括:
修改單元,用于修改qemu源碼;
解析單元,用于增加-cpuid的命令選項,完成對參數(shù)的解析以及綁定操作,生成對應(yīng)的KVM虛擬機(jī)。
進(jìn)一步的,綁定模塊,用于當(dāng)創(chuàng)建客戶機(jī)時,將KVM虛擬機(jī)與客戶機(jī)進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行,包括:綁定模塊,用于當(dāng)創(chuàng)建客戶機(jī)時,根據(jù)解析獲得的cpuid參數(shù),對KQEMU應(yīng)用進(jìn)程、KVM線程、異步IO事件處理線程運(yùn)用linux內(nèi)核的Affinity機(jī)制進(jìn)行綁定,使客戶機(jī)在KVM虛擬機(jī)中指定的處理器核上運(yùn)行。
進(jìn)一步的,所述裝置還包括:配置模塊,用于當(dāng)運(yùn)行多個客戶操作系統(tǒng)Guest OS時,通過配置CPU參數(shù)將各個Guest OS運(yùn)行在不同的處理器核上。
以上對本發(fā)明所提供的一種基于KVM虛擬化技術(shù)的處理器隔離方法及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。