一種用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開(kāi)了一種用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法及系統(tǒng),所述的方法包含:步驟101)在互不相交的處理器核心上分別運(yùn)行Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)步驟102)首先,Linux操作系統(tǒng)接收位于其上的應(yīng)用層的請(qǐng)求信息,并將請(qǐng)求信息封裝成SCSI命令字;然后,Linux操作系統(tǒng)指定讀取或?qū)懭霐?shù)據(jù)的設(shè)備LUN信息,設(shè)置用于建立Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)之間的數(shù)據(jù)通道和操作通道的核間消息;最后,Linux操作系統(tǒng)將包含SCSI命令字的核間消息發(fā)送至實(shí)時(shí)操作系統(tǒng);步驟103)實(shí)時(shí)操作系統(tǒng)接收核間消息,并將核間消息包含的SCSI命令采用iSCSI協(xié)議進(jìn)行處理,再將處理后的得到的iSCSI數(shù)據(jù)包提交給實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧,由TCP/IP協(xié)議棧完成iSCSI磁盤陣列數(shù)據(jù)的發(fā)送和接收。
【專利說(shuō)明】—種用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于多核處理器和異構(gòu)操作系統(tǒng)的iSCSI發(fā)起端實(shí)現(xiàn)方法,具體涉及一種用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,傳統(tǒng)單核處理器在功耗、并發(fā)、散熱等方面暴露出的問(wèn)題日益嚴(yán)重,已經(jīng)不能滿足各類網(wǎng)絡(luò)應(yīng)用對(duì)處理器性的迫切需求,因此具有較低功耗、更高并發(fā)性能的多核處理器被更多的用于計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用中。由于多核處理器由物理并行的多個(gè)處理核心構(gòu)成,因此相對(duì)傳統(tǒng)的單核處理器就有更強(qiáng)的并發(fā)性,同時(shí)低頻率的處理核心可以更加簡(jiǎn)單的集成到同一顆處理器中,并能較好的控制功耗發(fā)熱等問(wèn)題,因此多核處理器相對(duì)傳統(tǒng)通用處理器的優(yōu)勢(shì)正在逐漸擴(kuò)大。所以,計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)中開(kāi)始廣泛的使用多核處理器來(lái)搭建各類高性能的網(wǎng)絡(luò)應(yīng)用。
[0003]在各類網(wǎng)絡(luò)視頻應(yīng)用中,磁盤陣列設(shè)備都是資源存儲(chǔ)中心的核心組成部分,尤其是iSCSI磁盤陣列以其使用簡(jiǎn)單、性能突出等特性得到更加廣泛的應(yīng)用,所以在基于多核處理器為計(jì)算中心、基于iSCSI磁盤陣列為存儲(chǔ)中心的新型視頻類應(yīng)用系統(tǒng)中,如何合理的結(jié)合多核處理器和iSCSI磁盤陣列,并有效的提高系統(tǒng)的整體性能,是增強(qiáng)網(wǎng)絡(luò)視頻應(yīng)用系統(tǒng)服務(wù)質(zhì)量的關(guān)鍵之一?,F(xiàn)有技術(shù)對(duì)iSCSI磁盤陣列的訪問(wèn)需要根據(jù)SCSI子系統(tǒng)生產(chǎn)的SCSI命令字,并通過(guò)iSCSI協(xié)議進(jìn)行封裝,最終通過(guò)TCP/IP協(xié)議棧實(shí)現(xiàn)iSCSI Host端和iSCSI Target端的高效數(shù)據(jù)交互,而操作系統(tǒng)上的SCSI子系統(tǒng)由多個(gè)組成部分,因此SCSI命令執(zhí)行流程冗余繁雜,會(huì)造成多核處理器處理資源的浪費(fèi),而多核處理器的實(shí)時(shí)執(zhí)行環(huán)境執(zhí)行效率較高,但是沒(méi)有操作系統(tǒng)中各種功能的支持,無(wú)法直接實(shí)現(xiàn)SCSI命令、iSCSI協(xié)議的處理和執(zhí)行,因此需要有效的整合多核處理器上Linux操作系統(tǒng)和實(shí)時(shí)執(zhí)行環(huán)境的優(yōu)勢(shì)和特點(diǎn),提高SCSI命令的處理效率。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于,為克服上述問(wèn)題,本發(fā)明提供一種用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法及系統(tǒng)。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的系統(tǒng),所述系統(tǒng)包含:
[0006]運(yùn)行于互不相交的處理器核心上的分別獨(dú)立管理不同內(nèi)存空間的Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng);
[0007]所述Linux操作系統(tǒng)包含:上層應(yīng)用層和Linux SCSI子系統(tǒng);且所述Linux SCSI子系統(tǒng)從上向下依次包含:
[0008]SCSI較高層,該層用于接受來(lái)自其上層的請(qǐng)求并將其轉(zhuǎn)換成SCSI請(qǐng)求,完成SCSI命令并將狀態(tài)信息通知上層;[0009]SCSI中間層,該層用于提交SCSI命令;
[0010]Linux側(cè)交互接口,用于實(shí)現(xiàn)Linux SCSI子系統(tǒng)較低層的功能,所述較低層功能包含:接收中間層的SCSI命令字,以及將iSCSI子系統(tǒng)的處理結(jié)果返回給中間層,并負(fù)責(zé)與實(shí)時(shí)操作系統(tǒng)側(cè)交互接口進(jìn)行核間信息交互;
[0011]所述實(shí)時(shí)操作系統(tǒng)從上向下依次包含:
[0012]實(shí)時(shí)操作系統(tǒng)側(cè)交互接口,用于與Linux側(cè)交互接口進(jìn)行核間信息交互;
[0013]iSCSI處理模塊,用于負(fù)責(zé)iSCSI協(xié)議的處理;
[0014]TCP/IP協(xié)議棧,用于負(fù)責(zé)實(shí)現(xiàn)iSCSI磁盤陣列數(shù)據(jù)的收發(fā);
[0015]其中,所述的核間信息用于建立Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)之間的數(shù)據(jù)通道和操作通道。
[0016]上述實(shí)時(shí)操作系統(tǒng)側(cè)交互接口進(jìn)一步包含:
[0017]接收模塊,用于接收來(lái)自Linux側(cè)交互接口的多核核間消息;和
[0018]解析和調(diào)用模塊,用于解析出SCSI中間層提交的SCSI命令,并調(diào)用iSCSI處理模塊進(jìn)行處理。
[0019]上述TCP/IP協(xié)議棧用于實(shí)現(xiàn)TCP/IP協(xié)議族中2-4層協(xié)議的處理;且該協(xié)議棧提供接口供上層應(yīng)用使用,iSCSI子系統(tǒng)通過(guò)這些接口實(shí)現(xiàn)數(shù)據(jù)的收發(fā)。
[0020]基于上述系統(tǒng),本發(fā)明提供了一種用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法,該方法基于位于多核處理器上的異構(gòu)操作系統(tǒng),所述的方法包含:
[0021]步驟101)首先,Linux操作系統(tǒng)接收位于其上的應(yīng)用層的請(qǐng)求信息,并將請(qǐng)求信息封裝成SCSI命令字;然后,Linux操作系統(tǒng)指定讀取或?qū)懭霐?shù)據(jù)的設(shè)備LUN信息,設(shè)置用于建立Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)之間的數(shù)據(jù)通道和操作通道的核間消息;最后,Linux操作系統(tǒng)將包含SCSI命令字的核間消息發(fā)送至實(shí)時(shí)操作系統(tǒng);
[0022]步驟102)實(shí)時(shí)操作系統(tǒng)接收核間消息,并將核間消息包含的SCSI命令采用iSCSI協(xié)議進(jìn)行處理,再將處理后的得到的iSCSI數(shù)據(jù)包提交給實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧,由TCP/IP協(xié)議棧完成iSCSI磁盤陣列數(shù)據(jù)的發(fā)送和接收。
[0023]上述核間消息包含七個(gè)字段,具體格式為:
[0024]第一個(gè)字段為發(fā)送消息的核標(biāo)識(shí),第二個(gè)字段為接收消息的核標(biāo)識(shí),第三個(gè)字段為SCSI命令,第四個(gè)字段為SCSI命令參數(shù),第五個(gè)字段為操作執(zhí)行返回結(jié)果,第六個(gè)字段為數(shù)據(jù)塊指針,第七個(gè)字段為預(yù)留的狀態(tài)位;
[0025]所述發(fā)送消息的核標(biāo)識(shí),用于指定由多核處理器的哪個(gè)核發(fā)送上層應(yīng)用的讀或?qū)懙恼?qǐng)求消息;
[0026]所述接收消息的核標(biāo)識(shí),用于指定由多核處理器的哪個(gè)核接收核間消息;
[0027]所述SCSI命令參數(shù),用于指定SCSI命令所需要的參數(shù);
[0028]所述操作執(zhí)行返回結(jié)果,用于表示實(shí)時(shí)操作系統(tǒng)解析出SCSI命令后調(diào)用iSCSI協(xié)議處理后的返回值。
[0029]當(dāng)上層應(yīng)用發(fā)起讀取iSCSI磁盤陣列數(shù)據(jù)操作時(shí),所述步驟101)進(jìn)一步包含:
[0030]步驟101-1) Linux操作系統(tǒng)上的應(yīng)用程序提交磁盤讀命令,經(jīng)過(guò)Linux操作系統(tǒng)的SCSI子系統(tǒng)中SCSI較高層和SCSI中間層的處理后到達(dá)Linux側(cè)交互接口 ;
[0031]步驟101-2)Linux側(cè)交互接口將磁盤讀命令封裝成SCSI命令字,指定讀取數(shù)據(jù)的設(shè)備LUN和讀取數(shù)據(jù)的長(zhǎng)度;
[0032]步驟101-3) Linux側(cè)交互接口填寫核間消息,根據(jù)Linux側(cè)交互接口所在核填寫發(fā)送消息核標(biāo)示,根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口所在核填寫接收消息核標(biāo)示,根據(jù)操作類型填寫SCSI命令和SCSI命令參數(shù),清除操作執(zhí)行返回結(jié)果,申請(qǐng)存放讀取結(jié)果的內(nèi)存塊,并將內(nèi)存塊的物理地址填寫到內(nèi)存塊指針中,完成上述操作后將核間消息發(fā)送給實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口。
[0033]上述步驟102)進(jìn)一步包含:
[0034]步驟102-1)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口接收核間消息,并將SCSI命令和SCSI命令參數(shù)傳遞給實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊;
[0035]步驟102-2)實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊完成iSCSI協(xié)議處理后將iSCSI數(shù)據(jù)包提交給實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧;
[0036]步驟102-4)實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧完成iSCSI數(shù)據(jù)的發(fā)送,并等待iSCSI磁盤陣列的返回結(jié)果;
[0037]步驟102-5)實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧接收iSCSI磁盤陣列的數(shù)據(jù),并將數(shù)據(jù)返回給實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊,實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊根據(jù)核間消息中的數(shù)據(jù)塊指針將數(shù)據(jù)寫入數(shù)據(jù)塊中,并將返回結(jié)果返回給實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口;
[0038]步驟102-6)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口填寫核間消息,根據(jù)Linux側(cè)交互接口所在核填寫接收消息核標(biāo)示,根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口所在核填寫發(fā)送消息核標(biāo)識(shí),填寫操作執(zhí)行返回結(jié)果,完成上述操作后將核間消息發(fā)送給Linux側(cè)交互接口 104 ;
[0039]步驟102-7) Linux側(cè)交互接口解析核間消息,將核間消息中的返回結(jié)果和數(shù)據(jù)塊8中的數(shù)據(jù)返回給Linux操作系統(tǒng)中的應(yīng)用程序。
[0040]當(dāng)上層應(yīng)用發(fā)起寫入iSCSI磁盤陣列數(shù)據(jù)操作時(shí),所述步驟101)進(jìn)一步包含:
[0041]步驟101-a) Linux操作系統(tǒng)上應(yīng)用程序提交磁盤寫命令,經(jīng)過(guò)Linux操作系統(tǒng)的SCSI子系統(tǒng)中SCSI較高層和SCSI中間層的處理后到達(dá)Linux側(cè)交互接口 ;
[0042]步驟101_b)LinuX側(cè)交互接口將磁盤寫命令封裝成SCSI命令字,指定寫入數(shù)據(jù)的設(shè)備LUN ;
[0043]步驟101-c) Linux側(cè)交互接口填寫核間消息,根據(jù)Linux側(cè)交互接口所在核填寫發(fā)送消息核標(biāo)識(shí),根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口所在核填寫接收消息核標(biāo)示,根據(jù)操作類型填寫SCSI命令和SCSI命令參數(shù),清除操作執(zhí)行返回結(jié)果,申請(qǐng)存放寫入數(shù)據(jù)的內(nèi)存塊,并將內(nèi)存塊的物理地址填寫到內(nèi)存塊指針中,完成上述操作后將核間消息發(fā)送給實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106 ;
[0044]上述步驟102)進(jìn)一步包含:
[0045]步驟102-a)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口接收核間消息,并將SCSI命令和SCSI命令參數(shù)傳遞給實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊;
[0046]步驟102-b)實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊完成iSCSI協(xié)議處理后將iSCSI數(shù)據(jù)包提交給實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧;
[0047]步驟102-c)實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧完成iSCSI數(shù)據(jù)的發(fā)送,并等待iSCSI磁盤陣列的返回結(jié)果;
[0048]步驟102-d)實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧接收iSCSI磁盤陣列的返回結(jié)果,并將返回結(jié)果返回給實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊,實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊處理返回結(jié)果,并將返回結(jié)果返回給實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 ;
[0049]步驟102-e)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口填寫核間消息,根據(jù)Linux側(cè)交互接口所在核填寫接收消息核標(biāo)識(shí),根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口所在核填寫發(fā)送消息核標(biāo)識(shí),填寫操作執(zhí)行返回結(jié)果,完成上述操作后將核間消息發(fā)送給Linux側(cè)交互接口 ;
[0050]步驟102-f) Linux側(cè)交互接口解析核間消息,將核間消息中的返回結(jié)果返回給Linux操作系統(tǒng)中的應(yīng)用程序。
[0051]與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)優(yōu)勢(shì)在于:
[0052]本發(fā)明提供的一種基于多核處理器和異構(gòu)操作系統(tǒng)的iSCSI發(fā)起端實(shí)現(xiàn)方法,通過(guò)該方法實(shí)現(xiàn)iSCSI協(xié)議棧的卸載,并保持對(duì)上層應(yīng)用兼容的SCSI調(diào)用接口,以實(shí)現(xiàn)高效快捷的iSCSI磁盤陣列操作和iSCSI磁盤陣列數(shù)據(jù)處理。
【專利附圖】
【附圖說(shuō)明】
[0053]圖1是本發(fā)明基于多核處理器和異構(gòu)操作系統(tǒng)的iSCSI發(fā)起端實(shí)現(xiàn)方法結(jié)構(gòu)圖。
[0054]圖2是本發(fā)明基于多核處理器和異構(gòu)操作系統(tǒng)的iSCSI發(fā)起端實(shí)現(xiàn)方法中各個(gè)模塊交互時(shí)使用的消息體結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0055]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。
[0056]本發(fā)明提供的一種基于多核處理器和異構(gòu)操作系統(tǒng)的iSCSI發(fā)起端實(shí)現(xiàn)方法,由Linux側(cè)交互接口、實(shí)時(shí)操作系統(tǒng)側(cè)交互接口、iSCSI處理模塊和TCP/IP協(xié)議棧完成iSCSI發(fā)起端的全部處理工作,操作系統(tǒng)之間和各個(gè)模塊之間使用核間消息通信。其特征是:Linux側(cè)交互接口運(yùn)行于Linux操作系統(tǒng)上,實(shí)現(xiàn)Linux SCSI子系統(tǒng)較低層的功能,并負(fù)責(zé)與實(shí)時(shí)操作系統(tǒng)交互接口進(jìn)行交互;實(shí)時(shí)操作系統(tǒng)交互接口運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,負(fù)責(zé)與Linux側(cè)交互接口交互;iSCSI處理模塊運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,負(fù)責(zé)iSCSI協(xié)議的處理;TCP/IP協(xié)議棧運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,負(fù)責(zé)實(shí)現(xiàn)iSCSI數(shù)據(jù)的收發(fā)。
[0057]Linux側(cè)交互接口實(shí)現(xiàn)Linux SCSI子系統(tǒng)較低層的功能,接收Linux SCSI子系統(tǒng)中間層的SCSI命令,并將SCSI命令封裝成多核核間消息,發(fā)送給實(shí)時(shí)操作系統(tǒng)側(cè)交互接□。
[0058]實(shí)時(shí)操作系統(tǒng)側(cè)交互接口運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,負(fù)責(zé)接收來(lái)自Linux側(cè)交互接口的多核核間消息,解析出Linux SCSI子系統(tǒng)中間層提交的SCSI命令,并調(diào)用iSCSI處理模塊進(jìn)行處理。
[0059]iSCSI處理模塊運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,負(fù)責(zé)iSCSI協(xié)議的處理,并調(diào)用實(shí)時(shí)操作系統(tǒng)的TCP/IP協(xié)議棧與iSCSI target進(jìn)行網(wǎng)絡(luò)通信。
[0060]TCP/IP協(xié)議棧運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,實(shí)現(xiàn)了現(xiàn)有技術(shù)中Linux操作系統(tǒng)上TCP/IP協(xié)議棧的全部功能,并使用核間通訊機(jī)制和多核處理器提供的TCP/IP加速功能實(shí)現(xiàn)高速的iSCSI數(shù)據(jù)收發(fā)功能。
[0061]Linux側(cè)交互接口和實(shí)時(shí)操作系統(tǒng)側(cè)交互接口通過(guò)多核核間消息建立數(shù)據(jù)和操作通道;消息中包含七個(gè)字段,第一個(gè)字段為發(fā)送消息的核標(biāo)識(shí),第二個(gè)字段為接收消息的核標(biāo)識(shí),第三個(gè)字段為SCSI命令,第四個(gè)字段為SCSI命令參數(shù),第五個(gè)字段為操作執(zhí)行返回結(jié)果,第六個(gè)字段為數(shù)據(jù)塊指針,第七個(gè)字段為預(yù)留的狀態(tài)位。發(fā)送消息的核標(biāo)識(shí)用于指定由多核處理器的哪個(gè)核發(fā)送該消息。接收消息的核標(biāo)識(shí)用于指定由多核處理器的哪個(gè)核接收該消息。
[0062]SCSI命令是Linux SCSI子系統(tǒng)中間層向下提交給Linux側(cè)交互接口的,主要包括以下命令:Test unit ready、Inquiry、Request sense、Read capacity、Read 和 Write。
[0063]各個(gè)命令所需要的參數(shù)具體如下:
[0064]Test unit ready命令包括需要檢查狀態(tài)設(shè)備的LUN標(biāo)志;
[0065]Inquiry命令包括需要查詢摘要信息設(shè)備的LUN標(biāo)志;
[0066]Request sense命令包括需要查詢sense數(shù)據(jù)設(shè)備的LUN標(biāo)志;
[0067]Read capacity命令包括需要查詢最大容量設(shè)備的LUN標(biāo)志;
[0068]Read命令包括讀的數(shù)據(jù)長(zhǎng)度,讀數(shù)據(jù)存儲(chǔ)的內(nèi)存的物理地址以及所讀數(shù)據(jù)在磁盤上的位置信息;
[0069]Write命令包括寫的數(shù)據(jù)長(zhǎng)度,寫數(shù)據(jù)存儲(chǔ)的內(nèi)存的物理地址以及所寫數(shù)據(jù)在磁盤上的位置信息;
[0070]各個(gè)命令的返回結(jié)果具體如下:
[0071]Test unit ready命令的執(zhí)行結(jié)果,包括狀態(tài)正常和錯(cuò)誤報(bào)告;
[0072]Inquiry命令的執(zhí)行結(jié)果,包括SCSI標(biāo)志查詢數(shù)據(jù)結(jié)構(gòu)體;
[0073]Request sense命令的執(zhí)行結(jié)果,包括SCSI sense數(shù)據(jù)結(jié)構(gòu)體;
[0074]Read capacity命令的執(zhí)行結(jié)果,包括查詢?cè)O(shè)備最大容量信息的結(jié)構(gòu)體;
[0075]Read命令的執(zhí)行結(jié)果,包括執(zhí)行結(jié)果和數(shù)據(jù)地址、長(zhǎng)度的結(jié)構(gòu)體;
[0076]Write命令的執(zhí)行結(jié)果,包括執(zhí)行的結(jié)果和寫入長(zhǎng)度的結(jié)構(gòu)體。
[0077]實(shí)施例
[0078]實(shí)施例選用Cavium Networks公司的OCTEON系列處理器平臺(tái)。使用Linux操作系統(tǒng)111運(yùn)行Linux側(cè)交互接口 104,使用CaviumNetworks公司提供的簡(jiǎn)單執(zhí)行環(huán)境SE (Simple Executive)作為本發(fā)明中的實(shí)時(shí)操作系統(tǒng)110運(yùn)行實(shí)時(shí)操作系統(tǒng)側(cè)交互接口106、iSCSI處理模塊107和TCP/IP協(xié)議棧108。
[0079]Linux操作系統(tǒng)111和實(shí)時(shí)操作系統(tǒng)110所運(yùn)行的處理核心互不相交,且這2個(gè)操
作系統(tǒng)分別管理獨(dú)立、不重疊的內(nèi)存空間。
[0080]運(yùn)行于Linux操作系統(tǒng)111上的Linux側(cè)交互接口 104完成SCSI子系統(tǒng)中較低層的功能,并將SCSI命令字傳遞給實(shí)時(shí)操作系統(tǒng)110 ;實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106完成核間消息的交互功能;實(shí)時(shí)操作系統(tǒng)110上的iSCSI處理模塊107實(shí)現(xiàn)iSCSI協(xié)議棧的卸載和實(shí)際處理工作;實(shí)時(shí)操作系統(tǒng)110上的TCP/IP協(xié)議棧108實(shí)現(xiàn)iSCSI數(shù)據(jù)的高速收發(fā)。
[0081]Linux操作系統(tǒng)111上應(yīng)用程序發(fā)起iSCSI磁盤陣列讀取操作的步驟是:
[0082]Linux操作系統(tǒng)111上應(yīng)用程序提交磁盤Read命令,經(jīng)過(guò)Linux操作系統(tǒng)111的SCSI子系統(tǒng)101中SCSI較高層102和SCSI中間層103的處理后到達(dá)Linux側(cè)交互接口104。
[0083]Linux側(cè)交互接口 104將磁盤Read命令封裝成SCSI命令字,指定讀取數(shù)據(jù)的設(shè)備LUN和讀取數(shù)據(jù)的長(zhǎng)度等信息。
[0084]Linux側(cè)交互接口 104填寫核間消息,核間消息的構(gòu)成如圖2所示,根據(jù)Linux側(cè)交互接口 104所在核填寫發(fā)送消息核標(biāo)示201,根據(jù)實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106所在核填寫接收消息核標(biāo)示202,根據(jù)操作類型填寫SCSI命令203和SCSI命令參數(shù)204,清除操作執(zhí)行返回結(jié)果205,申請(qǐng)存放讀取結(jié)果的內(nèi)存塊208,并將內(nèi)存塊208的物理地址填寫到內(nèi)存塊指針206中,完成上述操作后將核間消息發(fā)送給實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106。
[0085]實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106接收核間消息,并將SCSI命令203和SCSI命令參數(shù)204傳遞給實(shí)時(shí)操作系統(tǒng)110上的iSCSI處理模塊107。
[0086]實(shí)時(shí)操作系統(tǒng)110上的iSCSI處理模塊107完成iSCSI協(xié)議處理后將iSCSI數(shù)據(jù)包提交給實(shí)時(shí)操作系統(tǒng)110上的TCP/IP協(xié)議棧108。
[0087]實(shí)時(shí)操作系統(tǒng)110上的TCP/IP協(xié)議棧108完成iSCSI數(shù)據(jù)的發(fā)送,并等待iSCSI磁盤陣列的返回結(jié)果。
[0088]實(shí)時(shí)操作系統(tǒng)110上的TCP/IP協(xié)議棧108接收iSCSI磁盤陣列的數(shù)據(jù),并將數(shù)據(jù)返回給實(shí)時(shí)操作系統(tǒng)110上的iSCSI處理模塊107,實(shí)時(shí)操作系統(tǒng)110上的iSCSI處理模塊107根據(jù)核間消息中的數(shù)據(jù)塊指針206將數(shù)據(jù)寫入數(shù)據(jù)塊208中,并將返回結(jié)果返回給實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106。
[0089]實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106根據(jù)實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106填寫核間消息,根據(jù)Linux側(cè)交互接口 104所在核填寫接收消息核標(biāo)示201,根據(jù)實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106所在核填寫發(fā)送消息核標(biāo)示202,填寫操作執(zhí)行返回結(jié)果205,完成上述操作后將核間消息發(fā)送給Linux側(cè)交互接口 104。
[0090]Linux側(cè)交互接口 104解析核間消息,將核間消息中的返回結(jié)果205和數(shù)據(jù)塊208中的數(shù)據(jù)返回給Linux操作系統(tǒng)111中的應(yīng)用程序。
[0091]Linux操作系統(tǒng)111上應(yīng)用程序發(fā)起iSCSI磁盤陣列寫入操作的步驟是:
[0092]Linux操作系統(tǒng)111上應(yīng)用程序提交磁盤Write命令,經(jīng)過(guò)Linux操作系統(tǒng)111的SCSI子系統(tǒng)101中SCSI較高層102和SCSI中間層103的處理后到達(dá)Linux側(cè)交互接口104。
[0093]Linux側(cè)交互接口 104將磁盤Write命令封裝成SCSI命令字,指定寫入數(shù)據(jù)的設(shè)
備LUN等信息。
[0094]Linux側(cè)交互接口 104填寫核間消息,根據(jù)Linux側(cè)交互接口 104所在核填寫發(fā)送消息核標(biāo)示201,根據(jù)實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106所在核填寫接收消息核標(biāo)示202,根據(jù)操作類型填寫SCSI命令203和SCSI命令參數(shù)204,清除操作執(zhí)行返回結(jié)果205,申請(qǐng)存放寫入數(shù)據(jù)的內(nèi)存塊208,并將內(nèi)存塊208的物理地址填寫到內(nèi)存塊指針206中,完成上述操作后將核間消息發(fā)送給實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106。[0095]實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106接收核間消息,并將SCSI命令203和SCSI命令參數(shù)204傳遞給實(shí)時(shí)操作系統(tǒng)110上的iSCSI處理模塊107。
[0096]實(shí)時(shí)操作系統(tǒng)110上的iSCSI處理模塊107完成iSCSI協(xié)議處理后將iSCSI數(shù)據(jù)包提交給實(shí)時(shí)操作系統(tǒng)110上的TCP/IP協(xié)議棧108。
[0097]實(shí)時(shí)操作系統(tǒng)110上的TCP/IP協(xié)議棧108完成iSCSI數(shù)據(jù)的發(fā)送,并等待iSCSI磁盤陣列的返回結(jié)果。
[0098]實(shí)時(shí)操作系統(tǒng)110上的TCP/IP協(xié)議棧108接收iSCSI磁盤陣列的返回結(jié)果,并將返回結(jié)果返回給實(shí)時(shí)操作系統(tǒng)110上的iSCSI處理模塊107,實(shí)時(shí)操作系統(tǒng)110上的iSCSI處理模塊107處理返回結(jié)果,并將返回結(jié)果返回給實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106。
[0099]實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106根據(jù)實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106填寫核間消息,根據(jù)Linux側(cè)交互接口 104所在核填寫接收消息核標(biāo)示201,根據(jù)實(shí)時(shí)操作系統(tǒng)110上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106所在核填寫發(fā)送消息核標(biāo)示202,填寫操作執(zhí)行返回結(jié)果205,完成上述操作后將核間消息發(fā)送給Linux側(cè)交互接口 104。
[0100]Linux側(cè)交互接口 104解析核間消息,將核間消息中的返回結(jié)果205返回給Linux操作系統(tǒng)111中的應(yīng)用程序。
[0101]總之,本發(fā)明提供的一種基于多核處理器和異構(gòu)操作系統(tǒng)的iSCSI initiator實(shí)現(xiàn)方法,具體是指在一顆多核處理器上同時(shí)運(yùn)行Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng),在Linux操作系統(tǒng)上保持iSCSI系統(tǒng)對(duì)Linux SCSI子系統(tǒng)的接口兼容,在實(shí)時(shí)操作系統(tǒng)上實(shí)現(xiàn)具體的iSCSI協(xié)議處理。方法包括:實(shí)現(xiàn)方法由Linux側(cè)交互接口、實(shí)時(shí)操作系統(tǒng)側(cè)交互接口、iSCSI處理模塊和TCP/IP協(xié)議棧組成;Linux側(cè)交互接口運(yùn)行于Linux操作系統(tǒng)上,完成Linux SCSI子系統(tǒng)較低層的功能,并提供Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)的交互功能;實(shí)時(shí)操作系統(tǒng)交互接口和iSCSI處理模塊運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,提供實(shí)時(shí)操作系統(tǒng)和Linux操作系統(tǒng)的交互功能。Linux側(cè)交互接口和實(shí)時(shí)操作系統(tǒng)側(cè)交互接口通過(guò)多核核間消息建立數(shù)據(jù)和信令通道。該iSCSI initiator的實(shí)現(xiàn)方法兼容了 Linux SCSI子系統(tǒng)接口,同時(shí)提供了高性能的iSCSI協(xié)議處理能力。,在本發(fā)明提供的方法中由Linux側(cè)交互接口、實(shí)時(shí)操作系統(tǒng)側(cè)交互接口、iSCSI處理模塊和TCP/IP協(xié)議棧完成iSCSI發(fā)起端的全部處理工作,操作系統(tǒng)之間和各個(gè)模塊之間使用核間消息通信。Linux側(cè)交互接口運(yùn)行于Linux操作系統(tǒng)上,實(shí)現(xiàn)Linux SCSI子系統(tǒng)較低層的功能,并負(fù)責(zé)與實(shí)時(shí)操作系統(tǒng)交互接口進(jìn)行交互;實(shí)時(shí)操作系統(tǒng)交互接口運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,負(fù)責(zé)與Linux側(cè)交互接口交互;iSCSI處理模塊運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,負(fù)責(zé)iSCSI協(xié)議的處理;TCP/IP協(xié)議棧運(yùn)行于實(shí)時(shí)操作系統(tǒng)上,負(fù)責(zé)實(shí)現(xiàn)iSCSI數(shù)據(jù)的收發(fā)。
[0102]最后所應(yīng)說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制。盡管參照實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
【權(quán)利要求】
1.一種用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的系統(tǒng),所述系統(tǒng)包含: 運(yùn)行于互不相交的處理器核心上的分別獨(dú)立管理不同物理內(nèi)存空間的Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng); 所述Linux操作系統(tǒng)包含:上層應(yīng)用層和Linux SCSI子系統(tǒng);且所述Linux SCSI子系統(tǒng)從上向下依次包含: SCSI較高層,該層用于接受來(lái)自其上層的請(qǐng)求并將其轉(zhuǎn)換成SCSI請(qǐng)求,完成SCSI命令并將狀態(tài)信息通知上層; SCSI中間層,該層用于提交SCSI命令; Linux側(cè)交互接口,用于實(shí)現(xiàn)Linux SCSI子系統(tǒng)較低層的功能,所述較低層功能包含:接收中間層的SCSI命令字,以及將iSCSI子系統(tǒng)的處理結(jié)果返回給中間層,并負(fù)責(zé)與實(shí)時(shí)操作系統(tǒng)側(cè)交互接口進(jìn)行核間信息交互; 所述實(shí)時(shí)操作系統(tǒng)從上向下依次包含: 實(shí)時(shí)操作系統(tǒng)側(cè)交互接口,用于與Linux側(cè)交互接口進(jìn)行核間信息交互; iSCSI處理模塊,用于負(fù)責(zé)iSCSI協(xié)議的處理; TCP/IP協(xié)議棧,用于負(fù)責(zé)實(shí)現(xiàn)iSCSI磁盤陣列數(shù)據(jù)的收發(fā); 其中,所述的核間信息 用于建立Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)之間的數(shù)據(jù)通道和操作通道。
2.根據(jù)權(quán)利要求1所述的用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的系統(tǒng),其特征在于,所述實(shí)時(shí)操作系統(tǒng)側(cè)交互接口進(jìn)一步包含: 接收模塊,用于接收來(lái)自Linux側(cè)交互接口的多核核間消息;和解析和調(diào)用模塊,用于解析出SCSI中間層提交的SCSI命令,并調(diào)用iSCSI處理模塊進(jìn)行處理。
3.根據(jù)權(quán)利要求1所述的用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的系統(tǒng),其特征在于,所述TCP/IP協(xié)議棧用于實(shí)現(xiàn)TCP/IP協(xié)議族中2-4層協(xié)議的處理;且該協(xié)議棧提供接口供上層應(yīng)用使用,iSCSI子系統(tǒng)通過(guò)這些接口實(shí)現(xiàn)數(shù)據(jù)的收發(fā)。
4.一種基于權(quán)利要求1-3所述系統(tǒng)的用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法,該方法基于位于多核處理器上的異構(gòu)操作系統(tǒng),所述的方法包含: 步驟101)首先,Linux操作系統(tǒng)接收位于其上的應(yīng)用層的請(qǐng)求信息,并將請(qǐng)求信息封裝成SCSI命令字;然后,Linux操作系統(tǒng)指定讀取或?qū)懭霐?shù)據(jù)的設(shè)備LUN信息,設(shè)置用于建立Linux操作系統(tǒng)和實(shí)時(shí)操作系統(tǒng)之間的數(shù)據(jù)通道和操作通道的核間消息;最后,Linux操作系統(tǒng)將包含SCSI命令字的核間消息發(fā)送至實(shí)時(shí)操作系統(tǒng); 步驟102)實(shí)時(shí)操作系統(tǒng)接收核間消息,并將核間消息包含的SCSI命令采用iSCSI協(xié)議進(jìn)行處理,再將處理后的得到的iSCSI數(shù)據(jù)包提交給實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧,由TCP/IP協(xié)議棧完成iSCSI磁盤陣列數(shù)據(jù)的發(fā)送和接收。
5.根據(jù)權(quán)利要求4所述的用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法,其特征在于,所述核間消息包含七個(gè)字段,具體格式為: 第一個(gè)字段為發(fā)送消息的核標(biāo)識(shí),第二個(gè)字段為接收消息的核標(biāo)識(shí),第三個(gè)字段為SCSI命令,第四個(gè)字段為SCSI命令參數(shù),第五個(gè)字段為操作執(zhí)行返回結(jié)果,第六個(gè)字段為數(shù)據(jù)塊指針,第七個(gè)字段為預(yù)留的狀態(tài)位;所述發(fā)送消息的核標(biāo)識(shí),用于指定由多核處理器的哪個(gè)核發(fā)送上層應(yīng)用的讀或?qū)懙恼?qǐng)求消息; 所述接收消息的核標(biāo)識(shí),用于指定由多核處理器的哪個(gè)核接收核間消息; 所述SCSI命令參數(shù),用于指定SCSI命令所需要的參數(shù); 所述操作執(zhí)行返回結(jié)果,用于表示實(shí)時(shí)操作系統(tǒng)解析出SCSI命令后調(diào)用iSCSI協(xié)議處理后的返回值。
6.根據(jù)權(quán)利要求5所述的用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法,其特征在于,當(dāng)上層應(yīng)用發(fā)起讀取iSCSI磁盤陣列數(shù)據(jù)操作時(shí),所述步驟101)進(jìn)一步包含: 步驟101-1) Linux操作系統(tǒng)上的應(yīng)用程序提交磁盤讀命令,經(jīng)過(guò)Linux操作系統(tǒng)的SCSI子系統(tǒng)中SCSI較高層和SCSI中間層的處理后到達(dá)Linux側(cè)交互接口 ; 步驟101-2)Linux側(cè)交互接口將磁盤讀命令封裝成SCSI命令字,指定讀取數(shù)據(jù)的設(shè)備LUN和讀取數(shù)據(jù)的長(zhǎng)度; 步驟101-3) Linux側(cè)交互接口填寫核間消息,根據(jù)Linux側(cè)交互接口所在核填寫發(fā)送消息核標(biāo)示,根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口所在核填寫接收消息核標(biāo)示,根據(jù)操作類型填寫SCSI命令和SCSI命令參數(shù),清除操作執(zhí)行返回結(jié)果,申請(qǐng)存放讀取結(jié)果的內(nèi)存塊,并將內(nèi)存塊的物理地址填寫到內(nèi)存塊指針中,完成上述操作后將核間消息發(fā)送給實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口。
7.根據(jù)權(quán)利要求6所述的用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法,其特征在于,所述步驟102)進(jìn)一步包含: 步驟102-1)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口接收核間消息,并將SCSI命令和SCSI命令參數(shù)傳遞給實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊; 步驟102-2)實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊完成iSCSI協(xié)議處理后將iSCSI數(shù)據(jù)包提交給實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧; 步驟102-4)實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧完成iSCSI數(shù)據(jù)的發(fā)送,并等待iSCSI磁盤陣列的返回結(jié)果; 步驟102-5)實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧接收iSCSI磁盤陣列的數(shù)據(jù),并將數(shù)據(jù)返回給實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊,實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊根據(jù)核間消息中的數(shù)據(jù)塊指針將數(shù)據(jù)寫入數(shù)據(jù)塊中,并將返回結(jié)果返回給實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口; 步驟102-6)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口填寫核間消息,根據(jù)Linux側(cè)交互接口所在核填寫接收消息核標(biāo)示,根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口所在核填寫發(fā)送消息核標(biāo)識(shí),填寫操作執(zhí)行返回結(jié)果,完成上述操作后將核間消息發(fā)送給Linux側(cè)交互接口 104 ; 步驟102-7) Linux側(cè)交互接口解析核間消息,將核間消息中的返回結(jié)果和數(shù)據(jù)塊8中的數(shù)據(jù)返回給Linux操作系統(tǒng)中的應(yīng)用程序。
8.根據(jù)權(quán)利要求5所述的用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法,其特征在于,當(dāng)上層應(yīng)用發(fā)起寫入iSCSI磁盤陣列數(shù)據(jù)操作時(shí),所述步驟101)進(jìn)一步包含: 步驟101-a)Linux操作系統(tǒng)上應(yīng)用程序提交磁盤寫命令,經(jīng)過(guò)Linux操作系統(tǒng)的SCSI子系統(tǒng)中SCSI較高層和SCSI中間層的處理后到達(dá)Linux側(cè)交互接口 ;步驟101-b)Linux側(cè)交互接口將磁盤寫命令封裝成SCSI命令字,指定寫入數(shù)據(jù)的設(shè)備LUN ; 步驟101-c) Linux側(cè)交互接口填寫核間消息,根據(jù)Linux側(cè)交互接口所在核填寫發(fā)送消息核標(biāo)識(shí),根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口所在核填寫接收消息核標(biāo)示,根據(jù)操作類型填寫SCSI命令和SCSI命令參數(shù),清除操作執(zhí)行返回結(jié)果,申請(qǐng)存放寫入數(shù)據(jù)的內(nèi)存塊,并將內(nèi)存塊的物理地址填寫到內(nèi)存塊指針中,完成上述操作后將核間消息發(fā)送給實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 106。
9.根據(jù)權(quán)利要求8所述的用于多核處理器高效訪問(wèn)iSCSI磁盤陣列的方法,其特征在于,所述步驟102)進(jìn)一步包含: 步驟102-a)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口接收核間消息,并將SCSI命令和SCSI命令參數(shù)傳遞給實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊; 步驟102-b)實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊完成iSCSI協(xié)議處理后將iSCSI數(shù)據(jù)包提交給實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧; 步驟102-c)實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧完成iSCSI數(shù)據(jù)的發(fā)送,并等待iSCSI磁盤陣列的返回結(jié)果; 步驟102-d)實(shí)時(shí)操作系統(tǒng)上的TCP/IP協(xié)議棧接收iSCSI磁盤陣列的返回結(jié)果,并將返回結(jié)果返回給實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊,實(shí)時(shí)操作系統(tǒng)上的iSCSI處理模塊處理返回結(jié)果,并將返回結(jié)果返回給實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口 ; 步驟102-e)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口填寫核間消息,根據(jù)Linux側(cè)交互接口所在核填寫接收消息核標(biāo)識(shí),根據(jù)實(shí)時(shí)操作系統(tǒng)上的實(shí)時(shí)操作系統(tǒng)側(cè)交互接口所在核填寫發(fā)送消息核標(biāo)識(shí),填寫操作執(zhí)行返回結(jié)果,完成上述操作后將核間消息發(fā)送給Linux側(cè)交互接口 ; 步驟102-f) Linux側(cè)交互接口解析核間消息,將核間消息中的返回結(jié)果返回給Linux操作系統(tǒng)中的應(yīng)用程序。
【文檔編號(hào)】G06F3/06GK103838516SQ201210484576
【公開(kāi)日】2014年6月4日 申請(qǐng)日期:2012年11月23日 優(yōu)先權(quán)日:2012年11月23日
【發(fā)明者】王勁林, 查奇文, 郭秀巖, 張武 申請(qǐng)人:中國(guó)科學(xué)院聲學(xué)研究所, 北京中科華影傳媒技術(shù)有限公司