專(zhuān)利名稱(chēng)::在多引導(dǎo)系統(tǒng)中控制存儲(chǔ)訪問(wèn)的制作方法
技術(shù)領(lǐng)域:
:本公開(kāi)涉及計(jì)算機(jī)系統(tǒng)的引導(dǎo),且一個(gè)特定的實(shí)現(xiàn)涉及在多引導(dǎo)系統(tǒng)中控制對(duì)存儲(chǔ)的訪問(wèn)。
背景技術(shù):
:當(dāng)計(jì)算機(jī)通電時(shí),將執(zhí)行稱(chēng)為引導(dǎo)序列的一系列操作以加載操作系統(tǒng)。在多引導(dǎo)系統(tǒng)中,一個(gè)以上的操作系統(tǒng)被存儲(chǔ)在計(jì)算機(jī)上,且用戶(hù)在引導(dǎo)序列期間選擇合適的操作系統(tǒng)來(lái)加載。
發(fā)明內(nèi)容根據(jù)一個(gè)一般的實(shí)現(xiàn),在多引導(dǎo)系統(tǒng)中通過(guò)分別在存儲(chǔ)介質(zhì)的第一和第二地址區(qū)存儲(chǔ)默認(rèn)操作系統(tǒng)("OS")和非默認(rèn)OS、并接收指示非默認(rèn)OS的選擇來(lái)執(zhí)行地址重新映射。接收訪問(wèn)第一地址區(qū)內(nèi)的預(yù)期地址處的數(shù)據(jù)的請(qǐng)求,并基于該選擇來(lái)計(jì)算在第二地址區(qū)內(nèi)的重新映射的地址。使用重新映射應(yīng)用程序,訪問(wèn)預(yù)期地址處的數(shù)據(jù)的請(qǐng)求變成訪問(wèn)第二地址區(qū)內(nèi)的重新映射的地址處的數(shù)據(jù)的請(qǐng)求。實(shí)現(xiàn)可以包括下列特征中的一個(gè)或多個(gè)。例如,可以接收訪問(wèn)重新映射的地址處的數(shù)據(jù)的請(qǐng)求??墒褂弥匦掠成鋺?yīng)用程序?qū)⒃撜?qǐng)求變成訪問(wèn)預(yù)期地址處的數(shù)據(jù)的請(qǐng)求??梢蕴峁?duì)在預(yù)期地址處或在重新映射的地址處的數(shù)據(jù)的訪問(wèn)。可以基于預(yù)期地址以及第一地址區(qū)的起始地址與第二地址區(qū)的起始地址之間的偏移量來(lái)計(jì)算重新映射的地址。重新映射應(yīng)用程序可以是過(guò)濾器驅(qū)動(dòng)程序??梢愿鶕?jù)選擇來(lái)引導(dǎo)非默認(rèn)OS,所述選擇可在引導(dǎo)過(guò)程期間接收,且可以是控制或菜單選擇或小鍵盤(pán)按壓。替換OS可以被存儲(chǔ)在存儲(chǔ)介質(zhì)的第三地址區(qū),且非默認(rèn)OS可以使用基本輸入/輸出系統(tǒng)("BIOS")來(lái)引導(dǎo)。所述選擇可以是用戶(hù)選擇或自動(dòng)選擇。根據(jù)另一個(gè)一般的實(shí)現(xiàn),用于在多引導(dǎo)系統(tǒng)中執(zhí)行地址重新映射的計(jì)算機(jī)應(yīng)用程序產(chǎn)品在計(jì)算機(jī)可讀介質(zhì)中被有形地具體化。該計(jì)算機(jī)應(yīng)用程序產(chǎn)品可用于使數(shù)據(jù)處理裝置執(zhí)行包括分別在存儲(chǔ)介質(zhì)的第一和第二地址區(qū)存儲(chǔ)默認(rèn)os和非默認(rèn)os、接收訪問(wèn)第一地址區(qū)內(nèi)的預(yù)期地址處的數(shù)據(jù)的請(qǐng)求、和接收指示非默認(rèn)os的選擇在內(nèi)的操作。該計(jì)算機(jī)應(yīng)用程序產(chǎn)品還可用于使數(shù)據(jù)處理裝置執(zhí)行包括根據(jù)選擇來(lái)計(jì)算在第二地址區(qū)內(nèi)的重新映射的地址。和使用重新映射應(yīng)用程序?qū)⒃L問(wèn)預(yù)期地址處的數(shù)據(jù)的請(qǐng)求變成訪問(wèn)第二地址區(qū)內(nèi)的重新映射的地址處的數(shù)據(jù)的請(qǐng)求在內(nèi)的操作。在附圖和以下說(shuō)明中展開(kāi)一個(gè)或多個(gè)實(shí)現(xiàn)的詳情。從說(shuō)明書(shū)和附圖以及權(quán)利要求書(shū)中其它特征將顯而易見(jiàn)。圖1是示例性計(jì)算機(jī)系統(tǒng)的內(nèi)部架構(gòu)的框圖。圖2示出己被分區(qū)以包括多個(gè)操作系統(tǒng)的示例性存儲(chǔ)介質(zhì)。圖3示出使用示例性存儲(chǔ)介質(zhì)來(lái)加載操作系統(tǒng)。圖4A到4C示出重新映射應(yīng)用程序的示例性操作。圖5和6是示出用于執(zhí)行地址重新映射的示例性過(guò)程的流程圖。圖7是示出用于執(zhí)行地址計(jì)算的示例性過(guò)程的流程圖。圖8是示出用于執(zhí)行地址重新映射的示例性過(guò)程的流程圖。在所有附圖中相同的標(biāo)號(hào)表示相對(duì)應(yīng)的部分。具體實(shí)施例方式圖1是一個(gè)示例性計(jì)算機(jī)系統(tǒng)的內(nèi)部構(gòu)架的框圖,該計(jì)算機(jī)系統(tǒng)包括與諸如軟盤(pán)驅(qū)動(dòng)器或光盤(pán)驅(qū)動(dòng)器之類(lèi)的可移動(dòng)介質(zhì)盤(pán)驅(qū)動(dòng)器102相接的中央處理單元("CPU")101。CPU101還與隨機(jī)存取存儲(chǔ)器("RAM")103、顯示器104和存儲(chǔ)BIOS105a的只讀存儲(chǔ)器("ROM")105相接。另外,CPU101與諸如鍵盤(pán)或鼠標(biāo)之類(lèi)的用戶(hù)輸入單元106、網(wǎng)絡(luò)接口107和硬盤(pán)驅(qū)動(dòng)器("HDD")109相接。當(dāng)計(jì)算機(jī)系統(tǒng)100通電時(shí),將執(zhí)行引導(dǎo)序列。在一個(gè)例子中,引導(dǎo)序列始于CPU101從ROM105執(zhí)行引導(dǎo)加載應(yīng)用程序或諸如BIOS105a等固件。BIOS105a的主要功能是準(zhǔn)備計(jì)算機(jī)系統(tǒng)100以使得存儲(chǔ)在諸如HDD109或可移動(dòng)介質(zhì)盤(pán)驅(qū)動(dòng)器102等各種媒體設(shè)備上的軟件應(yīng)用程序能加載,執(zhí)行,并承擔(dān)計(jì)算機(jī)系統(tǒng)100的控制。當(dāng)被調(diào)用時(shí),引導(dǎo)加載程序或BIOS105a在整個(gè)預(yù)先配置的存儲(chǔ)設(shè)備列表中進(jìn)行搜索直至找到存儲(chǔ)了至少一個(gè)操作系統(tǒng)的可引導(dǎo)存儲(chǔ)設(shè)備。如果可引導(dǎo)存儲(chǔ)設(shè)備被劃分成不同的邏輯部分(稱(chēng)為分區(qū)或地址區(qū)),則每一分區(qū)可以存儲(chǔ)不同的操作系統(tǒng)。例如,具有多個(gè)分區(qū)的HDD可以將幾個(gè)操作系統(tǒng)存儲(chǔ)在HDD的不同分區(qū)中,并且每個(gè)分區(qū)具有其自己的引導(dǎo)扇區(qū)。如果引導(dǎo)加載程序或BIOS105a找到可引導(dǎo)存儲(chǔ)設(shè)備,則加載并執(zhí)行該可引導(dǎo)存儲(chǔ)設(shè)備的第一引導(dǎo)扇區(qū)。在HDD的情形中,第一引導(dǎo)扇區(qū)稱(chēng)為主引導(dǎo)記錄("MBR")。弓l導(dǎo)加載程序或BIOS105a基于MBR來(lái)加載存儲(chǔ)了操作系統(tǒng)的分區(qū)的引導(dǎo)扇區(qū)中所存儲(chǔ)的數(shù)據(jù),并執(zhí)行該數(shù)據(jù)。各個(gè)分區(qū)的引導(dǎo)扇區(qū)稱(chēng)為巻引導(dǎo)扇區(qū)或巻引導(dǎo)記錄("VBR")。被加載的VBR包括加載和執(zhí)行存儲(chǔ)在VBR的分區(qū)處的操作系統(tǒng)的內(nèi)核的代碼。無(wú)論所加載的具體操作系統(tǒng)為何,BIOS105a均以獨(dú)立于操作系統(tǒng)的模式用相同的方式加載各操作系統(tǒng)。特別地,BIOS105a只需知道可引導(dǎo)分區(qū)的VBR的地址即可加載操作系統(tǒng)。例如,在訪問(wèn)VBR的存儲(chǔ)地址時(shí),無(wú)論該操作系統(tǒng)是MICROSOFT⑧磁盤(pán)操作系統(tǒng)(MS-DOS),MICROSOFTWINDOWS⑧操作系統(tǒng),LINUX⑧操作系統(tǒng)還是其它操作系統(tǒng),BIOS105a均以類(lèi)似方式加載操作系統(tǒng)。圖2示出已被分區(qū)成各存儲(chǔ)一操作系統(tǒng)的默認(rèn)分區(qū)202和非默認(rèn)分區(qū)203的示例性存儲(chǔ)介質(zhì)200。例如,默認(rèn)分區(qū)202可以存儲(chǔ)MICROSOFTWINDOWS⑧操作系統(tǒng),而非默認(rèn)分區(qū)203可以存儲(chǔ)LINUX⑧操作系統(tǒng)。HDD200的第一扇區(qū)存儲(chǔ)包括通過(guò)標(biāo)識(shí)默認(rèn)分區(qū)202和非默認(rèn)分區(qū)203的地址來(lái)輔助BIOS105a將默認(rèn)分區(qū)202和非默認(rèn)分區(qū)203中所存儲(chǔ)的操作系統(tǒng)加載到RAM103中的信息。在一個(gè)示例性實(shí)現(xiàn)中,MBR201占用一個(gè)512字節(jié)的扇區(qū),并且包括自身細(xì)分成用于保存分區(qū)專(zhuān)用信息的4個(gè)16個(gè)字節(jié)的段的64字節(jié)的分區(qū)表204。對(duì)于每一分區(qū),分區(qū)表204存儲(chǔ)包括指示該分區(qū)是否為可引導(dǎo)分區(qū)的引導(dǎo)標(biāo)志、該分區(qū)的第一個(gè)和最后一個(gè)扇區(qū)的柱面磁頭扇區(qū)地址、分區(qū)類(lèi)型、該分區(qū)中的第一扇區(qū)的邏輯塊地址、該分區(qū)中的扇區(qū)數(shù)、以及其它分區(qū)專(zhuān)用數(shù)據(jù)。MBR201使用能加載和執(zhí)行所期望的分區(qū)的VBR^諸如默認(rèn)分區(qū)202的VBR205和非默認(rèn)分區(qū)203的VBR206——的引導(dǎo)加載應(yīng)用程序207來(lái)將特定分區(qū)加載到RAM103中。引導(dǎo)加載應(yīng)用程序207可以被存儲(chǔ)在MBR201的前446個(gè)字節(jié)中。當(dāng)被執(zhí)行時(shí),引導(dǎo)加載應(yīng)用程序207掃描分區(qū)表204中的主要分區(qū)條目列表以找到可引導(dǎo)分區(qū),然后為所選擇的分區(qū)加載并運(yùn)行相應(yīng)的VBR。然后所加載的VBR繼續(xù)將所選操作系統(tǒng)的其余部分加載到存儲(chǔ)器中。分區(qū)表204存儲(chǔ)一個(gè)活動(dòng)可引導(dǎo)分區(qū)。由此,其余的分區(qū)被作為非活動(dòng)(或不可引導(dǎo))分區(qū)存儲(chǔ)在分區(qū)表204中。在圖2中,默認(rèn)分區(qū)202是活動(dòng)分區(qū),雖然在不同的例子中,非默認(rèn)分區(qū)203也可以是活動(dòng)分區(qū)。默認(rèn)分區(qū)202存儲(chǔ)由BIOS105a加載的默認(rèn)操作系統(tǒng),并且包括數(shù)個(gè)文件。特別地,默認(rèn)分區(qū)202包括含用于加載和執(zhí)行默認(rèn)分區(qū)202處所存儲(chǔ)的默認(rèn)操作系統(tǒng)的內(nèi)核的代碼的VBR205。另外,默認(rèn)分區(qū)202可以包括文件系統(tǒng)208和/或209,每一文件系統(tǒng)可以是例如新技術(shù)文件系統(tǒng)"NTFS"或文件分配表("FAT")文件系統(tǒng)。默認(rèn)分區(qū)202還可以存儲(chǔ)包括關(guān)于文件名、大小、起始扇區(qū)、文件屬性和/或起始簇號(hào)的信息的根目錄210以及包括默認(rèn)分區(qū)202中所存儲(chǔ)的實(shí)際數(shù)據(jù)文件的數(shù)據(jù)存儲(chǔ)空間211。非默認(rèn)分區(qū)203可以按與默認(rèn)分區(qū)202相似的方式存儲(chǔ)與非默認(rèn)操作系統(tǒng)相關(guān)的數(shù)據(jù)??梢允褂么鎯?chǔ)在MBR201中的信息來(lái)加載非默認(rèn)操作系統(tǒng)?;蛘撸悄J(rèn)分區(qū)203可以包括另外的MBR212,從而使用存儲(chǔ)在MBR212中的信息來(lái)加載默認(rèn)分區(qū)203中所存儲(chǔ)的操作系統(tǒng)。圖3示出使用示例性存儲(chǔ)介質(zhì)301通過(guò)引導(dǎo)加載程序或BIOS105a來(lái)加載操作系統(tǒng)。存儲(chǔ)介質(zhì)301可以是HDD109、可移動(dòng)介質(zhì)盤(pán)驅(qū)動(dòng)器102或任何其它存儲(chǔ)介質(zhì)。存儲(chǔ)介質(zhì)301被分區(qū)成使得它具有存儲(chǔ)不同操作系統(tǒng)的至少兩個(gè)不同存儲(chǔ)區(qū)。特別地,存儲(chǔ)介質(zhì)301至少包括第一分區(qū)302(在地址IOO至199之間)和第二分區(qū)303(在地址300至399之間)。BIOS105a咨詢(xún)存儲(chǔ)在存儲(chǔ)介質(zhì)301上的MBR區(qū)304(在地址0至99之間)中所存儲(chǔ)的MBR分區(qū)表以確定加載哪個(gè)操作系統(tǒng)。BIOS105a加載在MBR區(qū)304中所存儲(chǔ)的MBR分區(qū)表中被標(biāo)記成可引導(dǎo)的操作系統(tǒng)。BIOS105a訪問(wèn)存儲(chǔ)在存儲(chǔ)介質(zhì)301的可引導(dǎo)分區(qū)上的數(shù)據(jù)以加載操作系統(tǒng)。當(dāng)從第一分區(qū)302加載默認(rèn)操作系統(tǒng)時(shí),BIOS105a通過(guò)發(fā)出第一請(qǐng)求310("REQ—1")來(lái)訪問(wèn)存儲(chǔ)在該區(qū)中的數(shù)據(jù)。類(lèi)似地,當(dāng)從第二分區(qū)303加載非默認(rèn)操作系統(tǒng)時(shí),BIOS105a通過(guò)發(fā)出第二請(qǐng)求315("REQ一2")來(lái)訪問(wèn)存儲(chǔ)在該區(qū)中的數(shù)據(jù)。這些請(qǐng)求可以是讀或?qū)懪c存儲(chǔ)在相應(yīng)分區(qū)中的操作系統(tǒng)的加載相關(guān)聯(lián)的數(shù)據(jù)的請(qǐng)求。如上所述,BIOS105a從在存儲(chǔ)在MBR區(qū)304中的MBR分區(qū)表中被標(biāo)識(shí)成可引導(dǎo)的分區(qū)中加載引導(dǎo)扇區(qū)。因?yàn)橐淮螌⒁粋€(gè)可引導(dǎo)分區(qū)指示為活動(dòng)的,所以當(dāng)用戶(hù)試圖從非活動(dòng)區(qū)引導(dǎo)時(shí),MBR將改變,這給用戶(hù)帶來(lái)額外的不便并且增加了硬件沖突的機(jī)會(huì)。根據(jù)一個(gè)實(shí)現(xiàn),通過(guò)引入用于截取來(lái)自BIOS105a的從活動(dòng)的默認(rèn)分區(qū)訪問(wèn)數(shù)據(jù)的請(qǐng)求、從而透明地將請(qǐng)求重定向至非活動(dòng)的非默認(rèn)分區(qū)上所存儲(chǔ)的數(shù)據(jù)的重新映射應(yīng)用程序320來(lái)實(shí)現(xiàn)多引導(dǎo)。例如,重新映射應(yīng)用程序320可以將第一請(qǐng)求310和/或第二請(qǐng)求315變成諸如經(jīng)修訂的第一請(qǐng)求325("REQ—1—new")或經(jīng)修訂的第二請(qǐng)求330("REQ—2—new")等訪問(wèn)不同位置的請(qǐng)求。請(qǐng)求的變化對(duì)BIOS105a是透明的,從而當(dāng)BIOS105a發(fā)出從活動(dòng)分區(qū)加載操作系統(tǒng)的指令時(shí),操作系統(tǒng)實(shí)際上從非活動(dòng)分區(qū)加載。就這一點(diǎn)而言,在每次從非活動(dòng)的非默認(rèn)分區(qū)引導(dǎo)操作系統(tǒng)時(shí)用于存儲(chǔ)介質(zhì)301的MBR304是不改變的。在各種實(shí)現(xiàn)中,重新映射應(yīng)用程序320可以用非活動(dòng)、交換或取代模式操作,并且可以是添加了用于地址交換和地址取代的指令的固件、BIOS105a中的INT-13x處理程序的經(jīng)修改的應(yīng)用程序、ROM固件、MICROSOFTWINDOWS⑧操作系統(tǒng)中的過(guò)濾器驅(qū)動(dòng)程序、或命令接口程序。重新映射應(yīng)用程序320還可以被存儲(chǔ)在閃存中。圖4A示出重新映射應(yīng)用程序320在非活動(dòng)模式下的示例性操作。最初,BIOS105a發(fā)出訪問(wèn)在存儲(chǔ)在存儲(chǔ)介質(zhì)301上的預(yù)期地址401(在地址100至199之間)處的數(shù)據(jù)的第一請(qǐng)求310,其中預(yù)期地址401可以例如對(duì)應(yīng)于特定引導(dǎo)扇區(qū)的起始地址。在非活動(dòng)模式中,重新映射應(yīng)用程序320不改變來(lái)自BIOS105a的第一請(qǐng)求310中所請(qǐng)求的預(yù)期地址401。結(jié)果,當(dāng)BIOS105a請(qǐng)求對(duì)位于分區(qū)402中的預(yù)期地址401處的數(shù)據(jù)的訪問(wèn)時(shí),重新映射應(yīng)用程序320將經(jīng)修訂的第一請(qǐng)求325定向至第一請(qǐng)求310所請(qǐng)求的分區(qū)402中的同一地址。類(lèi)似地,當(dāng)BIOS105a使用第二請(qǐng)求315請(qǐng)求訪問(wèn)位于分區(qū)404中的預(yù)期地址403(在地址300至399之間)處的數(shù)據(jù)時(shí),重新映射應(yīng)用程序320將經(jīng)修訂的第二請(qǐng)求330定向至第二請(qǐng)求315所請(qǐng)求的分區(qū)404中的同一地址。圖4B示出重新映射應(yīng)用程序320在交換模式下的示例性操作。在此例中,當(dāng)BIOS105a發(fā)出訪問(wèn)存儲(chǔ)介質(zhì)301上的預(yù)期地址401(在地址100至199之間)處的數(shù)據(jù)的第一請(qǐng)求310時(shí),由重新映射應(yīng)用程序320修改第一請(qǐng)求以將經(jīng)修訂的第一請(qǐng)求325定向至分區(qū)404。類(lèi)似地,當(dāng)BIOS105a發(fā)出訪問(wèn)位于分區(qū)404中的預(yù)期地址403(在地址300至399之間)處的數(shù)據(jù)的第二請(qǐng)求315時(shí),由重新映射應(yīng)用程序320修改第二請(qǐng)求315以將經(jīng)修訂的第二請(qǐng)求330定向至分區(qū)402。實(shí)質(zhì)上是由重新映射應(yīng)用程序320將訪問(wèn)分區(qū)402和分區(qū)404的請(qǐng)求交換。因此,即使當(dāng)BIOS105a試圖從分區(qū)402訪問(wèn)數(shù)據(jù)時(shí),實(shí)際上是在從分區(qū)404訪問(wèn)數(shù)據(jù)。值得注意的是,數(shù)據(jù)在存儲(chǔ)介質(zhì)301上的實(shí)際位置保持不變。圖4C示出重新映射應(yīng)用程序320在取代模式下的示例性操作。在此例中,當(dāng)BIOS105a發(fā)出訪問(wèn)存儲(chǔ)介質(zhì)301上的預(yù)期地址401(在地址100至199之間)處的數(shù)據(jù)的第一請(qǐng)求310時(shí),由重新映射應(yīng)用程序320修改第一請(qǐng)求310,從而將經(jīng)修訂的第一請(qǐng)求325定向至分區(qū)404。然而,不同于交換模式,當(dāng)BIOS105a發(fā)出訪問(wèn)位于分區(qū)404中的預(yù)期地址403(在地址300至399之間)處的數(shù)據(jù)的第二請(qǐng)求315時(shí),重新映射應(yīng)用程序320將經(jīng)修訂的第二請(qǐng)求330定向至分區(qū)404。結(jié)果,訪問(wèn)分區(qū)402的請(qǐng)求實(shí)際上被取代,而訪問(wèn)分區(qū)404的請(qǐng)求保持不變。因?yàn)樵L問(wèn)分區(qū)402的請(qǐng)求被取代,所以分區(qū)402變成對(duì)BIOS105a不可訪問(wèn)。然而,數(shù)據(jù)在存儲(chǔ)介質(zhì)301上的實(shí)際位置保持不變,從而如果重新映射應(yīng)用程序320被禁用或如果操作模式被改變時(shí),BIOS105a將再次能訪問(wèn)分區(qū)402處的數(shù)據(jù)。雖然已就具有與存儲(chǔ)介質(zhì)相關(guān)聯(lián)的單個(gè)MBR的配置對(duì)圖3和4A到4C中的例子進(jìn)行了說(shuō)明,但是也可以有其它安排。例如,分區(qū)402和404還可以存儲(chǔ)各自的MBR。在這一實(shí)例中,使用存儲(chǔ)在與分區(qū)402相關(guān)聯(lián)的MBR中的信息來(lái)加載存儲(chǔ)在分區(qū)402中的操作系統(tǒng),并用存儲(chǔ)在與分區(qū)404相關(guān)聯(lián)的MBR中的信息來(lái)加載存儲(chǔ)在分區(qū)404中的操作系統(tǒng)。圖5是示出用于執(zhí)行地址重新映射的示例性過(guò)程500的流程圖。當(dāng)過(guò)程500開(kāi)始(S501)時(shí),默認(rèn)和非默認(rèn)操作系統(tǒng)("OS1"和"OS2")分別存儲(chǔ)在存儲(chǔ)介質(zhì)的第一和第二分區(qū)("Partition—A"和"Partition—B")上(S502)。在此例中,第一分區(qū)是活動(dòng)的可引導(dǎo)的分區(qū),且引導(dǎo)加載應(yīng)用程序或mos從第一分區(qū)加載默認(rèn)操作系統(tǒng)(S503)。一經(jīng)引導(dǎo),用戶(hù)就可以使用默認(rèn)操作系統(tǒng)來(lái)操作計(jì)算機(jī)系統(tǒng)(S504)。當(dāng)計(jì)算機(jī)系統(tǒng)再次被重新初始化或重新引導(dǎo)(S505)時(shí),用戶(hù)輸入命令以選擇操作系統(tǒng)(S506)。如果選擇了非默認(rèn)操作系統(tǒng),則由重新映射應(yīng)用程序320使用地址交換或地址取代來(lái)執(zhí)行地址重新映射(S508)。如果選擇了默認(rèn)操作系統(tǒng)(S507),則再次加載默認(rèn)操作系統(tǒng)(S503)。地址重新映射可以通過(guò)如以上參照?qǐng)D4B和4C所述的地址交換或地址取代來(lái)進(jìn)行。使用地址重新映射,引導(dǎo)加載程序或BIOS讀取第二分區(qū)的引導(dǎo)扇區(qū)的起始地址,并從第二分區(qū)加載非默認(rèn)操作系統(tǒng),但MBR本身保持不變(5509)。一經(jīng)加載,用戶(hù)就可以使用非默認(rèn)操作系統(tǒng)來(lái)操作計(jì)算機(jī)系統(tǒng)(5510),到此過(guò)程500結(jié)束(S511)。圖6是示出用于執(zhí)行地址重新映射的另一個(gè)示例性過(guò)程600的流程圖。當(dāng)過(guò)程600開(kāi)始(S601)時(shí),默認(rèn)和非默認(rèn)操作系統(tǒng)存儲(chǔ)在存儲(chǔ)介質(zhì)的第一和第二分區(qū)上(S602)。例如在引導(dǎo)或初始化期間,計(jì)算機(jī)系統(tǒng)檢測(cè)用戶(hù)是否選擇了非默認(rèn)操作系統(tǒng)(S603)。如果用戶(hù)未選擇非默認(rèn)操作系統(tǒng)(S604),則加載默認(rèn)操作系統(tǒng)(S605),且過(guò)程600結(jié)束(S606)。如果用戶(hù)選擇了非默認(rèn)操作系統(tǒng)(S604),則由重新映射應(yīng)用程序320執(zhí)行地址重新映射(S607)。地址重新映射可以通過(guò)如參照?qǐng)D4B和4C所述的地址交換或地址取代來(lái)執(zhí)行。引導(dǎo)加載程序或BIOS讀取第二分區(qū)的起始地址并加載非默認(rèn)操作系統(tǒng)(S608),且過(guò)程600結(jié)束(S606)。如果沒(méi)有接收到用戶(hù)命令(S604),則引導(dǎo)加載程序或BIOS從如在MBR中所指定的活動(dòng)分區(qū)加載默認(rèn)操作系統(tǒng)(S605)。圖7是示出用于執(zhí)行地址計(jì)算的示例性過(guò)程700的流程圖。地址重新映射可以通過(guò)如參照?qǐng)D4B和4C所述的地址交換或地址取代來(lái)執(zhí)行。在此例中,默認(rèn)和非默認(rèn)操作系統(tǒng)分別被存儲(chǔ)在存儲(chǔ)介質(zhì)的第一和第二分區(qū)中。當(dāng)過(guò)程700開(kāi)始(S701)時(shí),確定是使用用于地址重新映射的地址交換還是地址取代來(lái)進(jìn)行地址重新映射(S702)。如果要使用地址交換(S702)且重新映射應(yīng)用程序320接收到對(duì)第一分區(qū)中的地址的第一請(qǐng)求(S703),則重新映射應(yīng)用程序修改第一請(qǐng)求并生成用于訪問(wèn)第二分區(qū)中的地址的經(jīng)修訂的第一請(qǐng)求(S704)。根據(jù)經(jīng)修訂的請(qǐng)求來(lái)執(zhí)行讀或?qū)懖僮?S705),且過(guò)程700結(jié)束(S706)。在一個(gè)示例性實(shí)現(xiàn)中,重新映射應(yīng)用程序320使用如下的式(l)來(lái)計(jì)算重新映射的地址(S704):REMAPPED—ADDRESS=REQUESTED—ADDRESS-ADD—A+ADD—B(1)在式(1)中,ADD_A表示第一分區(qū)的起始地址,ADD—B表示第二分區(qū)的起始地址,REQUESTED—ADDRESS表示第一請(qǐng)求所請(qǐng)求的地址,而REMAPPED—ADDRESS表示經(jīng)修訂的第一請(qǐng)求的修改后的地址。如果要使用地址交換(S702)且重新映射應(yīng)用程序不是接收到第一請(qǐng)求(S703)而是接收到對(duì)第二分區(qū)中的地址的第二請(qǐng)求(S707),則重新映射應(yīng)用程序320修改第二請(qǐng)求并生成經(jīng)修訂的第二請(qǐng)求以訪問(wèn)第一分區(qū)中的地址(5708)。根據(jù)經(jīng)修訂的請(qǐng)求執(zhí)行讀或?qū)懖僮?S705),且過(guò)程700結(jié)束(S706)。在一個(gè)示例性實(shí)現(xiàn)中,重新映射應(yīng)用程序320使用如下的式(2)來(lái)計(jì)算重新映射的地址(S708):REMAPPED—ADDRESS=REQUESTED—ADDRESS+ADD—A-ADD—B(2)在式(2)中,ADD—A表示第一分區(qū)的起始地址,八00_8表示第二分區(qū)的起始地址,REQUESTED_ADDRESS表示第二請(qǐng)求所請(qǐng)求的地址,而REMAPPED—ADDRESS表示經(jīng)修訂的第二請(qǐng)求的修改后的地址。如果要使用地址交換(S702),且重新映射應(yīng)用程序不是接收到第一請(qǐng)求(S703)或第二請(qǐng)求(S707),則根據(jù)請(qǐng)求來(lái)執(zhí)行讀或?qū)懖僮?S705),且過(guò)程700結(jié)束(S706)。此特定操作的一個(gè)具體例子將發(fā)生在引導(dǎo)加載程序或BIOS發(fā)出訪問(wèn)第三分區(qū)的第三請(qǐng)求時(shí)。如果不使用地址交換(S702),則執(zhí)行地址取代。在此例中,訪問(wèn)第二分區(qū)的請(qǐng)求被取代為訪問(wèn)第一分區(qū)。因此,如果引導(dǎo)加載程序或BIOS發(fā)出訪問(wèn)第一分區(qū)的第一請(qǐng)求(步驟S709)時(shí),基于第一請(qǐng)求來(lái)執(zhí)行讀或?qū)懖僮?S705),且過(guò)程700結(jié)束(S706)。如果引導(dǎo)加載程序或BIOS發(fā)出訪問(wèn)第二分區(qū)的第二請(qǐng)求(S710),則重新映射應(yīng)用程序修改第二請(qǐng)求以通過(guò)諸如使用上述式(2)來(lái)計(jì)算訪問(wèn)第一分區(qū)的經(jīng)修訂的第二請(qǐng)求(S711)。根據(jù)經(jīng)修訂的第二請(qǐng)求來(lái)執(zhí)行讀或?qū)懖僮?S705),由此結(jié)束過(guò)程700(S706)。如果要使用地址取代(S702),且重新映射應(yīng)用程序不是接收到第一請(qǐng)求(5709)或第二請(qǐng)求(S710),則根據(jù)該請(qǐng)求來(lái)執(zhí)行讀或?qū)懖僮?步驟S705),且過(guò)程700結(jié)束(S706)。此特定操作的一個(gè)具體例子將發(fā)生在引導(dǎo)加載程序或BIOS發(fā)出訪問(wèn)第三分區(qū)的第三請(qǐng)求時(shí)。在另一個(gè)例子中,通過(guò)諸如使用上述式(l),訪問(wèn)第一分區(qū)的請(qǐng)求被取代為訪問(wèn)第二分區(qū)。圖8是示出用于在多引導(dǎo)系統(tǒng)中執(zhí)行地址重新映射的示例性過(guò)程800的流程圖。當(dāng)過(guò)程800開(kāi)始(S801)時(shí),默認(rèn)操作系統(tǒng)被存儲(chǔ)在存儲(chǔ)介質(zhì)的第一分區(qū)處(S802),而非默認(rèn)操作系統(tǒng)被存儲(chǔ)在第二分區(qū)處(S803)。引導(dǎo)加載應(yīng)用程序或BIOS根據(jù)主引導(dǎo)記錄來(lái)加載默認(rèn)操作系統(tǒng)(S804)。接收到訪問(wèn)存儲(chǔ)默認(rèn)OS的分區(qū)內(nèi)的預(yù)期地址處的數(shù)據(jù)的請(qǐng)求(S805),并接收到非默認(rèn)操作系統(tǒng)的選擇(S806)。計(jì)算在第二分區(qū)內(nèi)的重新映射的地址(S807)。例如,計(jì)算重新映射的地址可以包括基于預(yù)期地址以及第一地址區(qū)的起始地址與第二地址區(qū)的起始地址之間的偏移量來(lái)計(jì)算重新映射的地址。最后,重新映射應(yīng)用程序?qū)⒃L問(wèn)預(yù)期地址處的數(shù)據(jù)的請(qǐng)求變成訪問(wèn)重新映射的地址處的數(shù)據(jù)的請(qǐng)求(S808),且過(guò)程800結(jié)束(S809)。然后,可訪問(wèn)重新映射的地址處的數(shù)據(jù)。在一個(gè)例子中,改變?cè)L問(wèn)預(yù)期地址處的數(shù)據(jù)的請(qǐng)求還可包括地址取代,以使訪問(wèn)重新映射的地址處的數(shù)據(jù)的請(qǐng)求保持不變。在另一個(gè)例子中,改變?cè)L問(wèn)預(yù)期地址處的數(shù)據(jù)的請(qǐng)求還可以包括地址交換,以將訪問(wèn)重新映射的地址處的數(shù)據(jù)的請(qǐng)求變成訪問(wèn)預(yù)期地址處的數(shù)據(jù)的請(qǐng)求。另外,重新映射應(yīng)用程序可以是過(guò)濾器驅(qū)動(dòng)程序。圖8的方法還可以包括加載用于引導(dǎo)的非默認(rèn)操作系統(tǒng),或?qū)⒌谌齇S存儲(chǔ)在存儲(chǔ)介質(zhì)的第三地址區(qū)。諸如在引導(dǎo)期間,當(dāng)輸入了預(yù)定命令時(shí),可以執(zhí)行地址重新映射。預(yù)定命令可以包括功能鍵輸入和/或引導(dǎo)加載應(yīng)用程序的設(shè)置菜單中的選擇命令。下列表1到6包括用于執(zhí)行易失性或非易失性地址重新映射的示例性計(jì)算機(jī)代碼。當(dāng)使用易失性地址重新映射時(shí),重新映射在計(jì)算機(jī)系統(tǒng)在開(kāi)(ON)狀態(tài)時(shí)維持而在計(jì)算機(jī)被重新引導(dǎo)或重新初始化時(shí)被復(fù)位。另一方面,如果使用非易失性地址重新映射,則即使在計(jì)算機(jī)被系統(tǒng)重新引導(dǎo)或重新初始化之后重新映射也得以維持。當(dāng)執(zhí)行地址重新映射、特別是非易失性地址重新映射時(shí),可以創(chuàng)建與BIOS的接口。存在各種用于調(diào)用或與BIOS相接的方法,諸如通過(guò)使用未使用的軟件中斷(例如,INT15),或注冊(cè)和使用系統(tǒng)管理中斷("SMI")陷阱服務(wù)。地址重新映射可以如表6中所示地在開(kāi)機(jī)自檢("POST")處理或BIOS引導(dǎo)處理期間執(zhí)行。另外,任選ROM("OpROM")或過(guò)濾器驅(qū)動(dòng)程序可以被編程為執(zhí)行地址重新映射。在另一實(shí)現(xiàn)中,可以將兩個(gè)或兩個(gè)以上操作系統(tǒng)存儲(chǔ)在同一分區(qū)中,其中使用重新映射應(yīng)用程序320來(lái)實(shí)現(xiàn)從同一分區(qū)的多引導(dǎo)。在這一實(shí)例中,重新映射應(yīng)用程序320將來(lái)自引導(dǎo)加載應(yīng)用程序的請(qǐng)求重新定向至與當(dāng)IT活動(dòng)的"操作系統(tǒng)位于同一分區(qū)上的存儲(chǔ)區(qū)。然而,當(dāng)由重新映射應(yīng)用程序320重新定向時(shí),BIOS105a將從由重新映射應(yīng)用程序320指定的地址加載操作系統(tǒng)。此安排對(duì)于用戶(hù)希望在與當(dāng)前活動(dòng)的(例如引導(dǎo))操作系統(tǒng)相同的分區(qū)上存儲(chǔ)操作系統(tǒng)文件的備份的情況特別有用。在當(dāng)前活動(dòng)的操作系統(tǒng)的文件受損時(shí),用戶(hù)可以使用重新映射應(yīng)用程序320通過(guò)執(zhí)行地址取代來(lái)迫使BIOS105a加載該操作系統(tǒng)的備份版本。在引導(dǎo)處理期間,當(dāng)存儲(chǔ)在第一存儲(chǔ)區(qū)中的操作系統(tǒng)受損時(shí),重新映射應(yīng)用程序320可以用位于第二存儲(chǔ)區(qū)中的備份文件的地址取代受損文件的地址。因此,雖然備份的操作系統(tǒng)被存儲(chǔ)在與活動(dòng)的操作系統(tǒng)不同的分區(qū),但是BIOS105a也可以從相同分區(qū)加載備份的操作系統(tǒng)。備份的操作系統(tǒng)文件也可以被存儲(chǔ)在不同的分區(qū)上。另外,可以用各種方式觸發(fā)地址重新映射。例如,可使用功能鍵通過(guò)執(zhí)行BIOSPOST操作來(lái)實(shí)現(xiàn)地址重新映射。另外,可以從BIOS設(shè)置菜單中選擇地址重新映射以及特定類(lèi)型的地址重新映射(即,地址交換或地址取代)。已用特定的說(shuō)明性實(shí)現(xiàn)對(duì)各種安排進(jìn)行了說(shuō)明。應(yīng)理解而這些概念不限于上述實(shí)現(xiàn)而是可以進(jìn)行各種變更和修改。表1<table>tableseeoriginaldocumentpage15</column></row><table>表2<table>tableseeoriginaldocumentpage16</column></row><table>表3caseINT13_FORMATJENTOE_DISK_CYUNDER:〃0x07caseINT13JETURMX)ISiePARAMETERS:〃0x08pParam->AddressLBA=hddConvertCHSToLBA(pParam):break:caseINT13-CHECICEXTENSI0hLPRESENT:〃Ox"caseINT13_EXTENDEDJBA0:〃0x42caseINT13_EXTENDED_WRITE:〃0x43caseINT13^EXTENDECLV現(xiàn)PY-SECTOR:〃0x44default:breakiif(condition)switch(condiUon)caseCOND_SWAP:caseCOND_SWAP>NV:if(pParara->AddressLBA>BaseAddressRegionApParam->AddressLBA>BaseAddressRegionA+RegionLenBth))pParam-(pParam-pParam->BaseAdciressRegionA;〉BaseAddressR鄰ionB+Offset;>BaseAddresaRegionA〃我們?cè)趨^(qū)域A中,轉(zhuǎn)換到區(qū)域BQWORDOffset-pPar加-〉A(chǔ)ddressLBA-pParam->AddressLBA=pParam-elseif(i^aram->AddressLSA>=pParam-&&pParam->AddressLBA<=(pParam-表4<table>tableseeoriginaldocumentpage18</column></row><table>表5/Nvxxxx是非易失性存儲(chǔ),這在重新引導(dǎo)或關(guān)機(jī)之后仍可被維持NvEng紹ementNvCondtionNvBaseAddressRegionANvB站eAddr勸sRegionBNvR鄰ionLenffth/voidSwapCommand(SWAPJ^ARAM*pSParam)switch(pSPsram->coodUiorO{caseCOND一SWAP:NvEngagemerUbreak:caseCOND-SWAP-NV:cmosisVolatileK2;break;caseCOND一OVERRIDE:cmosEngagement1;bresk:caseCOND_OVERRIDENV:cmosIsVolatHe32;break;NvConditkm-pSParam->condition;NvBaseAddressRegionA=pSParam-〉BaseAddressRegionA;NvBaseAddressRegionB■pSParam->BaseAddressRegionB:NvRegionLengthpSParam—〉RegionLength;表6BiOa_POST()DISK<FARAMDiakPram:H,rewaretnltO:Fdi,klnirt&DiskParam);〃硬盤(pán)初始化〃初始化盤(pán)扇區(qū)和磁頭數(shù)iKNvConditi加NvBns詠mnt)〃交換或取代〃當(dāng)NvENGAGEMENT就在上一次為1時(shí),在下一POST中不執(zhí)行交換和取代,但當(dāng)NvENGAGEMENT大于2時(shí),交換和取代被維持,因?yàn)橹当痪S持直至下一交換和取代命令被輸入if(N必ngagem加ONvEngagement++:〃〃交換和取代所用的DISK一PARAM被初始化,并且當(dāng)INIT13調(diào)用發(fā)生時(shí),使用所初始化的基地址和長(zhǎng)度來(lái)執(zhí)行交換和取代〃DiakParam.condition■NvCondition:DiskP的iruBaseAddreuRegionA■N必aseAddr。saRegionA:DiskParantBaseAddressRegionB腸NvBasAddrsRegionB;DiskParaiTLSegionLength■NvRegi加Length:NvConditionCONDJ^ORMAL:NvEngagement■0;簡(jiǎn)9():〃BOOTTOOS…)權(quán)利要求1.一種在多引導(dǎo)系統(tǒng)中執(zhí)行地址重新映射的方法,所述方法包括分別在存儲(chǔ)介質(zhì)的第一和第二地址區(qū)存儲(chǔ)默認(rèn)操作系統(tǒng)(“OS”)和非默認(rèn)OS;接收指示所述非默認(rèn)OS的選擇;接收訪問(wèn)所述第一地址區(qū)內(nèi)的預(yù)期地址處的數(shù)據(jù)的請(qǐng)求;基于所述選擇計(jì)算在所述第二地址區(qū)內(nèi)的重新映射的地址;以及使用重新映射應(yīng)用程序,將訪問(wèn)所述預(yù)期地址處的數(shù)據(jù)的請(qǐng)求變成訪問(wèn)所述第二地址區(qū)內(nèi)的所述重新映射的地址處的數(shù)據(jù)的請(qǐng)求。2.如權(quán)利要求1所述的方法,其特征在于,還包括-接收訪問(wèn)所述重新映射的地址處的數(shù)據(jù)的請(qǐng)求;使用所述重新映射應(yīng)用程序?qū)⒃L問(wèn)所述重新映射的地址處的數(shù)據(jù)的請(qǐng)求變成訪問(wèn)所述預(yù)期地址處的數(shù)據(jù)的請(qǐng)求;以及提供對(duì)所述預(yù)期地址處的數(shù)據(jù)的訪問(wèn)。3.如權(quán)利要求1所述的方法,其特征在于,還包括接收訪問(wèn)所述重新映射的地址處的數(shù)據(jù)的請(qǐng)求;提供對(duì)所述重新映射的地址處的數(shù)據(jù)的訪問(wèn)。4.如權(quán)利要求1所述的方法,其特征在于,所述重新映射的地址是基于所述預(yù)期地址以及所述第一地址區(qū)的起始地址與所述第二地址區(qū)的起始地址之間的偏移量來(lái)計(jì)算的。5.如權(quán)利要求1所述的方法,其特征在于,所述重新映射應(yīng)用程序是過(guò)濾器驅(qū)動(dòng)程序。6.如權(quán)利要求1所述的方法,其特征在于,還包括根據(jù)所述選擇來(lái)引導(dǎo)所述非默認(rèn)OS。7.如權(quán)利要求1所述的方法,其特征在于,還包括在所述存儲(chǔ)介質(zhì)的第三地址區(qū)存儲(chǔ)替換OS。8.如權(quán)利要求1所述的方法,其特征在于,所述選擇是在引導(dǎo)過(guò)程期間接收的。9.如權(quán)利要求1所述的方法,其特征在于,所述選擇包括控制或菜單選擇或小鍵盤(pán)按壓。10.如權(quán)利要求l所述的方法,其特征在于,還包括使用基本輸入/輸出系統(tǒng)("BIOS")來(lái)引導(dǎo)所述非默認(rèn)OS。11.如權(quán)利要求l所述的方法,其特征在于,所述選擇是用戶(hù)選擇。12.如權(quán)利要求l所述的方法,其特征在于,所述選擇是自動(dòng)選擇。13.—種在計(jì)算機(jī)可讀介質(zhì)中被有形地具體化的用于在多引導(dǎo)數(shù)據(jù)處理裝置中執(zhí)行地址重新映射的計(jì)算機(jī)應(yīng)用程序產(chǎn)品,所述計(jì)算機(jī)應(yīng)用程序產(chǎn)品可用于使數(shù)據(jù)處理裝置執(zhí)行包括下列操作在內(nèi)的操作分別在存儲(chǔ)介質(zhì)的第一和第二地址區(qū)存儲(chǔ)默認(rèn)操作系統(tǒng)("OS")和非默認(rèn)OS;接收指示所述非默認(rèn)OS的選擇;接收訪問(wèn)所述第一地址區(qū)內(nèi)的預(yù)期地址處的數(shù)據(jù)的請(qǐng)求;基于所述選擇計(jì)算在所述第二地址區(qū)內(nèi)的重新映射的地址;以及使用重新映射應(yīng)用程序,將訪問(wèn)所述預(yù)期地址處的數(shù)據(jù)的請(qǐng)求變成訪問(wèn)所述第二地址區(qū)內(nèi)的所述重新映射的地址處的數(shù)據(jù)的請(qǐng)求。全文摘要在多引導(dǎo)系統(tǒng)中,通過(guò)分別在存儲(chǔ)介質(zhì)的第一和第二地址區(qū)存儲(chǔ)默認(rèn)操作系統(tǒng)(“OS”)和非默認(rèn)OS并接收指示非默認(rèn)OS的選擇來(lái)執(zhí)行地址重新映射。接收訪問(wèn)第一地址區(qū)中內(nèi)預(yù)期地址處的數(shù)據(jù)的請(qǐng)求,并基于該選擇來(lái)計(jì)算在所述第二地址區(qū)內(nèi)的重新映射的地址。使用重新映射應(yīng)用程序,將訪問(wèn)預(yù)期地址處的數(shù)據(jù)的請(qǐng)求變成訪問(wèn)第二地址區(qū)內(nèi)的重新映射的地址處的數(shù)據(jù)的請(qǐng)求。文檔編號(hào)G06F9/46GK101101557SQ20071000733公開(kāi)日2008年1月9日申請(qǐng)日期2007年1月24日優(yōu)先權(quán)日2006年7月3日發(fā)明者方有錫申請(qǐng)人:Lg電子株式會(huì)社