CN101506793B - 在动态虚拟记忆中运行操作系统 - Google Patents
在动态虚拟记忆中运行操作系统 Download PDFInfo
- Publication number
- CN101506793B CN101506793B CN2006800556016A CN200680055601A CN101506793B CN 101506793 B CN101506793 B CN 101506793B CN 2006800556016 A CN2006800556016 A CN 2006800556016A CN 200680055601 A CN200680055601 A CN 200680055601A CN 101506793 B CN101506793 B CN 101506793B
- Authority
- CN
- China
- Prior art keywords
- virtual
- memory
- virtual disk
- disk driver
- storage medium
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种方法可让操作系统的系统映像在存储介质中启动和运行,这启动映象可包含有空白的或存储着数据或程序文件的磁盘空间,这存储介质包括但不限于内部物理记忆或内存RAM;通过这方法在操作系统启动时从系统记忆池中分配出的虚拟记忆可用作映射以便在设备中的操作系统存取该种存储介质;这设备包括计算机系统或由计算机控制的设备或由操作系统控制的设备。
Description
技术领域
本发明涉及到在设备中运行操作系统,这些设备包括计算机系统或由计算机所控制的设备或由操作系统所控制的设备。这里提到的这些设备以下统称设备。
本发明尤其涉及到可以应用这一发明的操作系统;本发明是一种方法,能在计算机可执行程序或是操作系统可执行指令或程序中实施,使操作系统能在虚拟系统记忆地址空间上运行,能动态映射到存储介质上,例如但不限于内部物理记忆或内部随机存取记忆,以下称为内存RAM,这些存储介质是在可运行有关操作系统的设备之内或可被这些设备所存取的。
在此关联下,它使以下现象成为可能:在可运行相关操作系统的设备中,使用虚拟磁盘驱动在虚拟系统记忆中启动并运行操作系统,虚拟系统记忆是被动态的映射到存储介质以便存取。
技术背景
因为微软视窗是如今最流行的操作系统,这里把它作为示例说明本发明是如何执行的。本发明同样可以被运用在其它有相类设计的操作系统之上。
通常,操作系统是从本地计算机系统或是由操作系统所控制的设备内部的IDE/SCSI硬盘上启动和运行、或是在网络计算机的网络文件服务器上启动并运行。有一些其它尝试试图以其它方式运行操作系统。以使用微软视窗为例,在网址http://www.ct.heise.de/ct/english/99/11/206/,Tobias Remberg和Hajo Schulz提出了创建一个能运行整个微软98视窗的可启动CD的解决方案。此外,微软视窗的预装环境目前同样可以运行在活CD或DVD中,或从硬盘加载并运行在内存盘中。所以从本地IDE/SCSI硬盘、CD/DVD、USB存储设备、网络文件服务器、手提设备中启动并在内存中运行微软视窗已成为普遍现象。
所以,只要有时间和意愿,通过设计并实现相应的启动设备驱动用以访问有关类型存储介质,微软视窗就可以从更多种存储介质中启动。要用特定类型的存储介质,这并不限于计算机系统的内存,用以存储并启动特定版本的微软视窗的系统映像,例如微软视窗xp和2000,这须要设计并实现有关的启动设备驱动,使到存储介质,例如内存RAM,可以被操作系统存取作为启动及以后所用;这可通过在系统记忆地址池中分配虚拟记忆,并把虚拟记忆映射到内存RAM的存储空间来达成。
发明内容
可以存储在如内存RAM这种存储介质上,并用以启动运行操作系统的操作系统映像的大小通常是受到以下的限制,即可从系统记忆地址池中所能分配出的虚拟记忆大小。例如,微软公司本身实现了能在RAM中启动和运行的微软视窗XP版本,称为嵌入式XP,其大小限制为512MB。这可以从微软公司的官方网址看到:
http://msdn.microsoft.com/library/dfault.asp?url=/library/en-us/dnxpespl/html/winxpfaq.asp
它说明SDI(系统发配映像)必须在小于500MB的目标分区中创建,相关文档引用如下:“把目标分区导入SDI之内。目标分区是一种典型的SDI磁盘分区,由SDI装载器装载,并被磁盘管理控制台格式化。分区大小必须小于500M”。
这最大尺寸的限制取决于使用的静态映射方式把在系统记忆地址池中分配出的系统记忆映射到计算机系统的内存RAM的存储地址空间。对于32位的系统来说,在系统记忆地址池中可分配出并可被虚拟磁盘启动设备驱动所利用的虚拟记忆的是大尺寸是介于780MB和790MB之间。
在系统记忆地址池中分配出的虚拟记忆以静态映射方式在内存RAM中建立启动虚拟磁盘用以启动操作系统,其最大的尺寸是决定于启动时可从系统记忆地址池中分配出的虚拟内存的最大值。对于32位微软视窗XP,范围在780MB到790MB之间。
32位微软视窗XP需要最小为1.4GB的硬盘分区才可完全安装。所以将整个系统映像完全存储到没有使用压缩NTFS分区格式,大小在780MB到790MB之间的内存RAM虚拟磁盘是相当困难的。所以,需要缩小系统映像的大小并因此裁减了它的功能。
此外,如果操作系统的系统映像占用了在内存RAM中的启动虚拟磁盘的所有空间,那么启动虚拟磁盘就没有空间可用以安装有用的应用程序。这样就须要用其他物理存储介质例如硬盘作为替代之用。这就使移动无盘计算机不太可能成为一种使用。
更甚者,如果可从系统记忆地址池中分配出的虚拟记忆全被用于创建启动内存盘,那么就没有什么空余的系统记忆可给予需要系统记忆的驱动或程式使用。
32位微软视窗XP能在安装了4GB物理RAM的计算机上运行,这已经被测试通过了。如上描述在内存RAM中以静态映射虚拟记忆的方式建立起的启动虚拟磁盘无法尽量利用4GB的物理内存RAM来运行基于内存盘的操作系统并受到上述的限制。例如,使用微软公司的嵌入式XP,只能使用一个大约为500MB大小的启动内存盘,即使计算机中安装了4GB RAM。这令人很失望。
对上描述问题的技术解决方案是把从系统记忆地址池分配出来的虚拟记忆,以动态映射方式,在启动时,映射到存储介质的存储地址空间,这些介质如内存RAM,用以创建启动虚拟磁盘,让它可以充分使用安装在计算机系统的内存RAM。
以动态方式把虚拟记忆映射到存储介质的不同地址空间,例如内部物理记忆或内存RAM,以及将虚拟记忆分页的内容内外交换,变成物理存储介质(如硬盘)上的交换文档,是一项很有名的技术被广泛运用到如LINUX,微软视窗等操作系统,目的是解决操作系统或应用程序因各种目的,在使用内部物理记忆或内存RAM时遇到内存不足的问题。
还有一些例子以动态方式把虚拟记忆映射到外围设备中的外部物理记忆,目的是节省系统记忆的使用,例如用以驱动图形卡,就如美国专利,专利号7065630,名为“动态创建或删除在外围设备记忆里的物理-虚拟地址映射”。
但现今为止并没有任何介绍关于如何以动态方式把虚拟记忆映射到包括但不限于内存RAM的存储介质上,用以启动并运行操作系统,并且可以克服上述的技术问题。这种类型的存储介质,以后称为虚拟映像存储介质,是在启动时可以被操作系统存取,并且可让从操作系统的系统记忆中分配出的虚拟记忆映射于其上面的。
基本上,本发明揭示了包括以下步骤的方法,以解决以上提到的技术问题:
(1)启动设备并把启动映像,也就是所涉及到的操作系统的可启动系统映像,包括任何其他用到的应用程序和数据文件,保存到存储介质,即虚拟映射存储介质;这介质是在操作系统启动时可被操作系统存取并且可让从操作系统的系统记忆中分配出的虚拟记忆映射于其上面的。
(2)在虚拟映射存储介质上启动相关的操作系统,并执行计算机可执行指令或操作系统可执行程序,例如这里描述的虚拟磁盘驱动,用以动态地把从操作系统的系统记忆地址池中分配出的虚拟记忆映射到虚拟映射存储介质的存储地址空间。这样在设备中运行的操作系统可存取该虚拟映射存储介质,并利用虚拟磁盘驱动所创建的虚拟磁盘启动并运用其内的启动映象。
以微软视窗XP/2000家族的操作系统为例,上述步骤(1)可进一步以如下子步骤说明:
(1)(a)设备加电起动;
(1)(b)设备的BIOS或启动代码进行POST测试,然后启动代码把控制传递到启动磁盘或是传递到设备中的启动设备的启动存储介质上面的MBR。
(1)(c)MBR装载启动管理程序;
(1)(d)启动管理程序装载或拷贝启动映像到虚拟映射存储介质,这里所指的是内存RAM里的一段存储空间;
(1)(e)启动管理程序接着修改INT 13以及BIOS磁盘访问程序,这样实模式下的程序可以,像在正常的硬盘上一样,存取在虚拟映射存储介质上的启动映像。可以实行以上步骤的启动管理程序举例来说明包括在独立设备上使用的grub4dos和syslinux连同memdisk,或在网络设备上使用的pxe-grub4dos和pxelinux连同memdisk。
沿用以上的举例,上述步骤(2)可进一步以如下子步骤说明:
(2)(a)启动管理程序把控制传递予操作系统的启动装载程序,即这个例子中的操作系统,如微软视窗2000/XP家族的操作系统内的NT装载程序,ntldr。
(2)(b)操作系统的启动装载程序读取启动配置信息,例如NT装载程序读取boot.ini,然后使用指定的设置装载操作系统的内核。在这一阶段,磁盘的读取仍然使用INT 13。
(2)(c)操作系统的内核,例如NT内核,进行初始化,并装载在启动时所需要装载的服务,其中包括为了访问虚拟映射存储介质所需要的虚拟磁盘驱动,用以创建包含启动映像的虚拟磁盘。
(2)(d)操作系统内核装载的启动服务开始初始化。在一个阶段,虚拟磁盘驱动进行初始化;为了进行间接动态映射,虚拟磁盘驱动为缓冲需要创建了记忆缓冲,然而若使用直接动态映射,则不需要缓冲。初始化后,虚拟磁盘驱动开始处理如下的进程:把从操作系统的系统记忆地址池中分配出的虚拟记忆动态映射到虚拟映射存储介质的存储地址空间。这样在设备中运行的操作系统可存取该虚拟映射存储介质,并利用虚拟磁盘驱动所创建的虚拟磁盘启动并运用其内的启动映象。
(2)(e)操作系统的内核,例如NT内核,开始装载其它的系统服务。在这一阶段,虚拟磁盘驱动已启动并运行,并处理所有对创建在虚拟映射存储介质上包含了启动映像的虚拟磁盘的磁盘访问。对于内核而言,此虚拟磁盘就如硬盘一样。
成熟的操作系统,例如微软视窗和Linux等,通常设计有内建的可执行程序或记忆管理功能,来管理虚拟系统记忆与物理记忆之间的映射。以32位微软视窗2000/XP家族的操作系统为例,该系统具有4G的虚拟系统记忆空间来使用。通常,低端的2G为用户进程所保留;高端的2G为内核使用,并被平分成两部分,1G用于如dlls的共享代码,1G用于有内核特权的驱动。所以可以被内核驱动使用的虚拟系统记忆是有限的。如果由虚拟磁盘驱动管理的启动映像尺寸太大,这样就没有足够虚拟系统记忆来进行静态的一对一的映射。为解决这个问题,必须进行虚拟系统记忆与物理记忆之间的动态映射。使用动态映射的方法,一个有限大小的虚拟系统记忆地址空间可以被用来存取无限大小的虚拟映射存储介质的地址空间,例如内部物理记忆。
有许多种实现动态映射的方式。将要提到的两种动态映射方法是用于阐明如何使用动态映射去解决以上提到的技术问题。这里描述的每个动态映射方法,在实施上都可以有些微的差异,可供实施者选择。所以以下就不必对此进行详尽的描述,但披露了足够详尽的细节,说明大体上动态映射是可以如何去实施并被本发明所用,令熟悉此技术领域的人员,可根据个别实施细节,实施本发明。
关于如何实施虚拟磁盘驱动,用以管理动态映射的过程,把从操作系统的系统记忆地址池中分配出的虚拟记忆动态映射到虚拟映射存储介质的存储地址空间,以便在设备中运行的操作系统可存取该虚拟映射存储介质,并利用虚拟磁盘驱动所创建的虚拟磁盘启动并运用其内的启动映象这一事情上,上述步骤(2)(d)可进一步以如下两个动态映射方法加以说明:即直接动态映射和间接动态映射。所以上述步骤(2)(d)可分支出步骤(3)(a),即直接动态映射方法,和步骤(3)(b),即间接动态映射方法。
步骤(3)(a),即实施直接动态映射,利用虚拟磁盘驱动存取包含着启动映像的虚拟磁盘,这一步骤可细分为以下子步骤:
(3)(a)(i)当内核读或写虚拟磁盘时,它传递给虚拟磁盘驱动,一个线性地址,这个线性地址是从虚拟磁盘起始点开始算起的偏移地址,它是由高层文件系统驱动计算的,以及传递一个字节数量和一个系统输出缓冲;
(3)(a)(ii)在虚拟磁盘驱动内,记忆块是一个基本的使用单元,它的大小可以根据选择来配置。虚拟磁盘驱动转换线性地址为块索引和块偏移,可根据如下公式计算:
块索引=线性地址DIV块大小
块偏移=线性地址MOD块大小
(3)(a)(iii)虚拟磁盘驱动在映射表中查找块索引。这个进程可以用一个认为合适的算法,例如一个合适的Hasing杂溱法来提高性能;
(3)(a)(iv)如果能发现匹配,虚拟磁盘驱动从映射表中提取虚拟记忆地址,然后跳过步骤(3)(a)(v),(3)(a)(vi),(3)(a)(vii)并直接执行步骤(3)(a)(viii)。如果没有发现匹配,则执行步骤(3)(a)(v)。
(3)(a)(v)虚拟磁盘驱动在映射表中查找一个空白区间。如果找到,跳过步骤(3)(a)(vi)并执行步骤(3)(a)(vii)。如果没找到,直接执行步骤(3)(a)(vi)。
(3)(a)(vi)虚拟磁盘驱动通过释放一个最不需要用的虚拟到物理的映射,从而识别并清空出在映射表中的一个空白区间。虚拟磁盘驱动通过调用记忆管理功能来释放映射,记忆管理功能通常是由操作系统提供的。鉴别那一个区间可被清空所用的算法可以根据认为合适的原理来加以选择,这些原理如Least Recently Used最不近用原理,Least FrequentlyUsed最不常用原理,First-In-First-Out先进先出原理等。
(3)(a)(vii)虚拟磁盘驱动使用操作系统提供的记忆管理功能,在虚拟记忆和物理记忆之间创建映射,这个映射由块索引指定,采用公式如下:
物理记忆地址=虚拟磁盘盘基地址+块索引×块大小
映射值存储在新发现或清空的区间。通过上述的记忆管理功能返回的全新虚拟记忆地址将会在步骤(3)(a)(viii)中使用;
(3)(a)(viii)对于读操作,在加了块偏移后,虚拟磁盘驱动从虚拟记忆地址复制数据到系统输出缓冲。对于写操作,在加了块偏移后,虚拟磁盘驱动从系统输出缓冲复制数据到虚拟记忆地址。如果读或写包含和越过块边界,只有当前块中的字节被读或写,当前块即是由块索引所指定的那一块。然后,块索引加一,然后程序处理返回到步骤(3)(a)(iii)并继续执行,直到完成读取或写入所有的字节。
虚拟磁盘驱动同样可以使用间接动态映射。间接动态映射是上述步骤(3)(a)中描述的直接动态映射的变异。相对直接动态映射而言,它需要多分配一些记忆缓冲来存放经常被存取的记忆块内容,用以调整直接动态映射的处理过程。子步骤(3)(b),即以间接动态映射方式,通过虚拟磁盘驱动来存取包含了启动映像的虚拟磁盘,可以实施如下:
(3)(b)(i)当内核读或写虚拟磁盘时,它传递给虚拟磁盘驱动,一个线性地址,这个线性地址是从虚拟磁盘起始点开始算起的偏移地址,它是由高层文件系统驱动计算的,以及传递一个字节数量和一个系统输出缓冲;
(3)(b)(ii)在虚拟磁盘驱动内,记忆块是一个基本的使用单元,它的大小可以根据选择来配置。虚拟磁盘驱动转换线性地址为块索引和块偏移,可根据如下公式计算:
块索引=线性地址DIV块大小
块偏移=线性地址MOD块大小
(3)(b)(iii)虚拟磁盘驱动在映射表中查找块索引。这个进程可以用一个认为合适的算法,例如一个合适的Hasing杂溱法来提高性能;
(3)(b)(iv)如果能发现匹配,虚拟磁盘驱动从映射表中提取记忆缓冲地址,然后跳过步骤(3)(b)(v),(3)(b)(vi),(3)(b)(vii)并直接执行步骤(3)(b)(viii)。如果没有发现匹配,则执行步骤(3)(b)(v)。
(3)(b)(v)虚拟磁盘驱动在映射表中查找一个空白区间。如果找到,跳过步骤(3)(b)(vi)并执行步骤(3)(b)(vii)。如果没找到,直接执行步骤(3)(b)(vi)。
(3)(b)(vi)虚拟磁盘驱动在映射表中识别并释放一个最不需要用的区间。鉴别那一个区间可被释放所用的算法可以根据认为合适的原理来加以选择。这些原理如Least Recently Used最不近用原理,LeastFrequently Used最不常用原理,First-In-First-Out先进先出原理等。如果识别出要被释放的区间内的记忆缓冲被标记为肮脏,记忆缓冲的内容要被写回到虚拟映射存储介质,在这例子即虚拟磁盘映象的物理记忆,如果目标区间没有标记为肮脏,则不需要这样的写操作。虚拟磁盘驱动通过执行如下子步骤进行这个写操作:
在第一子步骤,根据目标区间的块索引计算物理地址。公式如下:
物理记忆地址=虚拟磁盘盘基地址+块索引×块大小
在第二子步骤,虚拟磁盘驱动使用操作系统提供的记忆管理功能创建一个虚拟到物理记忆的映射;
在第三子步骤,虚拟磁盘把目标区间的记忆缓冲内的数据写进由上述(3)(b)(vi)的第二子步骤所产生的虚拟记忆地址内。
最后,虚拟磁盘驱动释放由上述(3)(b)(vi)的第二子步骤所创建的虚拟到物理映射。
(3)(b)(vii)虚拟磁盘驱动使用操作系统提供的记忆管理功能,在虚拟记忆和物理记忆之间创建映射,这个映射由当前块索引指定,采用公式如下:
物理记忆地址=虚拟磁盘盘基地址+块索引×块大小
虚拟磁盘驱动从虚拟地址读数据到记忆缓冲,然后释放映射;和
(3)(b)(viii)对于读操作,在加了块偏移后,虚拟磁盘驱动从记忆缓冲复制数据到系统输出缓冲。对于写操作,在加了块偏移后,虚拟磁盘驱动从系统输出缓冲复制数据到记忆缓冲,然后标记记忆缓冲为肮脏。如果读或写包含和越过块边界,只有当前块中的字节被读或写,当前块即是由块索引所指定的那一块。然后,块索引加一,程序处理返回到步骤(3)(b)(iii)并继续执行,直到完成读取或写入所有的字节。
如果设备中的虚拟映射存储介质是内部物理内存,步骤(3)(b)中描述的间接动态映射方式比对步骤(3)(a)中描述的直接动态映射方式来说,作为一种解决办法显然不如后者并有点多余。然而,若虚拟映射存储介质是一种非用作缓冲用途的存储介质,并且通过用间接动态映射比用直接动态映射可以更快地存取启动映像的话,那么使用带有缓冲功能的间接动态映射比使用没有缓冲功能的直接动态映射会是一个更好的选择。
本发明使以下现象成为可能:即在设备,包括计算机系统或计算机操控的设备或操作系统操控的设备中运行相关的操作系统时,操作系统可以利用虚拟映射存储介质并启动和运行其上的操作系统映像,包括空白的或含有数据或含有应用程序文件的磁盘空间。
举一个例子,带有一些数据文件、应用程序和空白磁盘空间的完整版微软视窗XP系统映像,可存放于最大可能尺寸的启动内存盘上被启动并运行,没有因此而用尽,其他设备驱动或操作系统在运行其他应用程序时,所须的系统记忆。这样在任何地方使用带有如4G RAM的无盘无线UMPC将成为可能。在基于内存盘的无硬盘UMPC中,使用操作系统并且不用硬盘,可以节省电源损耗和硬盘的磨损,保护硬盘免受病毒侵害,在内存中即时更新一个干净的操作系统映像作为使用,并增加移动性和便利性等。
这同样可以应用在内存RAM以外的其他存储介质上来启动操作系统;这些存储介质,即虚拟映射存储介质,是可以在启动时被相关的操作系统来存取,并可以让操作系统把从系统记忆中分配出来的虚拟记忆映射其上。其他有关虚拟映射存储介质的例子将会再在后来的发明模式一节作出介绍说明。
具体实施方式
现时,执行本发明的最佳模式是采用内部物理内存作为虚拟映射存储介质,使用直接动态映射来存取设备中的启动映像。
IBM已经获得美国专利,US专利号No.7017024,名为“无系统记忆的数据处理系统”。在这项IBM发明中,通过硬件加以实现,使在数据处理系统中得以不用以物理内存形式存在的系统记忆,这系统记忆是被虚拟在硬盘之上。在其中一个体现当中,在虚拟系统记忆地址与硬盘物理地址之间的多对一映射射是被允许的。按照这种方式,硬盘现时就可以用于在这项IBM发明之前的传统数据处理系统中,作为普通物理内存使用。所以,以上描述的直接动态映射和间接动态映射的方法可以被应用到这项IBM发明所提到的硬盘之上,用以在动态虚拟记忆中运行相关的操作系统。
这样,硬盘充当系统记忆时的运行速度会比物理内存要慢,但作为补偿,这项IBM发明通过使用硬件实现虚拟记忆管理功能,提供了速度改进。另一方面,将DRAM硬盘,即动态随机存取记忆硬盘,综合到IBM发明中,速度可以进一步提高。就是说,DRAM模块可被用作为存储介质,替代了传统的非易挥发硬盘作为硬盘之用。例如,Giga-byte技术有限公司公开了一项称作I-RAM卡的产品。和以上提到的IBM发明一起实施本发明,并使用DRAM硬盘,可以极大提高存取启动映像的速度用以运行设备中的操作系统。无论是以非易挥发或DRAM硬盘的形式,这就可以并更加灵活地提供更多的和更容易扩展的系统记忆。
在动态虚拟记忆中运行操作系统可被应用于所有类型的设备中,包括计算机系统或计算机控制的设备或操作系统控制的设备。本发明可以在类如普通桌面PC,笔记本PC,UMPCs,即超移动个人计算机,中实施。就像在上一节发明模式中描述一样,它甚至可以被应用到采用前叙的IBM发明的设备中,其中的系统记忆已被虚拟化到硬盘中。在所有上述的设备中实施本发明可给予这些设备在有利的作用一节中所提及的好处。
Claims (5)
1.一种能在计算机可执行程序中实施的方法,通过把虚拟系统记忆映射在存储介质上用以启动启动映像,在此的存储介质包括但不限于内部物理记忆,启动映像为相关操作系统的可启动映像;这种存储介质,在下面称为虚拟映射存储介质,在设备启动时可被操作系统存取,并且让从操作系统的系统记忆中分配出的虚拟记忆映射于其上面;这设备包括计算机系统或由计算机所控制的设备或由操作系统所控制的设备;此方法包括以下步骤:
(1)启动设备,存储启动映像到虚拟映射存储介质;
(2)在虚拟映射存储介质中启动操作系统,并执行计算机可执行程序,这在后面称为虚拟磁盘驱动,用以把从操作系统系统记忆池中分配出的虚拟记忆动态地映射于虚拟映射存储介质的存储地址空间之上,这使得在设备中运行的操作系统可利用虚拟映射存储介质启动和运用在由已装载的虚拟磁盘驱动所创建的虚拟磁盘内的启动映像。
2.根据权利要求1所述的方法,其特征是:所述步骤(1)包括以下步骤:
(1.1)设备加电启动;
(1.2)设备的启动代码进行POST测试,然后启动代码把控制传递到启动磁盘的MBR或是传递到设备中的启动设备的启动存储介质上面的MBR;
(1.3)MBR装载启动管理程序;
(1.4)启动管理程序装载或拷贝启动映像到虚拟映射存储介质;
(1.5)启动管理程序修改INT 13以及BIOS磁盘访问程序,这样实模式程序存取虚拟映射存储介质中的启动映像。
3.根据权利要求1所述的方法,其特征是:所述步骤(2)包括以下步骤:
(2.1)启动管理程序把控制传递给操作系统的启动装载程序;
(2.2)操作系统的启动装载程序读取启动配置信息,然后使用指定的设置装载操作系统内核;
(2.3)操作系统内核进行初始化,并装载在启动时所需要的服务,包括存取虚拟映射存储介质的虚拟磁盘驱动,用以创建虚拟磁盘来包含存储其上的启动映像;
(2.4)操作系统内核所装载的启动服务开始初始化;在这个阶段,虚拟磁盘驱动进行初始化,并管理从操作系统系统记忆池中分配出的虚拟记忆以动态方式映射到虚拟映射存储介质的过程,这使得在设备中运行的操作系统可利用虚拟映射存储介质启动和运用在由已装载的虚拟磁盘驱动所创建的虚拟磁盘内的启动映像;
(2.5)操作系统内核开始装载其它系统服务,虚拟磁盘驱动处理所有在包含了启动映像的虚拟映射存储介质上建立的虚拟磁盘的存取。
4.一种能在计算机可执行程序中实施的方法,以虚拟磁盘驱动的方式,直接动态地把虚拟系统记忆地址空间映射到虚拟映射存储介质上的物理记忆地址空间,用以运行在设备中映射到虚拟映射存储介质上的虚拟系统记忆地址空间内的启动映像;这种直接动态映射方法包括以下步骤:
(1)虚拟磁盘初始化;当内核对虚拟磁盘进行读或写时,它把线性地址、读写的一个字节数量和一个系统输出缓冲传递给虚拟磁盘驱动;其中,线性地址是从虚拟磁盘起始点开始算起的偏移地址,它是由高层文件系统驱动计算的;
(2)在虚拟磁盘驱动内,记忆块是一个基本的使用单元,它的大小根据选择来配置;虚拟磁盘驱动转换线性地址为块索引和块偏移,根据如下公式计算:
块索引=线性地址DIV块大小;
块偏移=线性地址MOD块大小;
(3)虚拟磁盘驱动运用一个认为合适的算法,在映射表中查找块索引;
(4)如果发现匹配,虚拟磁盘驱动从映射表中提取虚拟记忆地址,然后跳过步骤(5),(6),(7)并直接执行步骤(8);如果没有发现匹配,则执行步骤(5);
(5)虚拟磁盘驱动在映射表中查找一个空白区间;如果找到,跳过步骤(6)并执行步骤(7);如果没找到,直接执行步骤(6);
(6)虚拟磁盘驱动通过释放一个最不需要用的虚拟记忆到物理记忆的映射,从而识别并清空出在映射表中的一个空白区间;虚拟磁盘驱动通过调用记忆管理功能来释放映射;鉴别哪一个区间可被清空所用的算法根据认为合适的原理来加以选择
(7)虚拟磁盘驱动使用记忆管理功能,在虚拟记忆和物理记忆之间创建映射,这个映射由块索引指定,采用公式如下:
物理记忆地址=虚拟磁盘盘基地址+块索引×块大小
映射值存储在新发现或清空的区间;通过上述的记忆管理功能返回的全新虚拟记忆地址将会在步骤(8)中使用;和
(8)对于读操作,在加了块偏移后,虚拟磁盘驱动从虚拟记忆地址复制数据到系统输出缓冲;对于写操作,在加了块偏移后,虚拟磁盘驱动从系统输出缓冲复制数据到虚拟记忆地址;如果读或写包含和越过块边界,只有当前块中的字节被读或写,当前块即是由块索引所指定的那一块;然后,块索引加一,然后程序处理返回到步骤(3)并继续执行,直到完成读取或写入所有的字节。
5.一种能在计算机可执行程序中实施的方法,以虚拟磁盘驱动的方式,间接动态地把虚拟系统记忆地址空间映射到虚拟映射存储介质上的物理记忆地址空间,用以运行在设备中映射到虚拟映射存储介质上的虚拟系统记忆地址空间内的启动映像;这种间接动态映射方法包括以下步骤:
(1)虚拟磁盘驱动初始化,并为缓冲需要创建记忆缓冲;当内核读或写虚拟磁盘时,它把线性地址、读写的一个字节数量和一个系统输出缓冲传递给虚拟磁盘驱动;其中,线性地址是从虚拟磁盘起始点开始算起的偏移地址,它是由高层文件系统驱动计算的;
(2)在虚拟磁盘驱动内,记忆块是一个基本的使用单元,它的大小根据选择来配置;虚拟磁盘驱动转换线性地址为块索引和块偏移,根据如下公式计算:
块索引=线性地址DIV块大小;
块偏移=线性地址MOD块大小;
(3)虚拟磁盘驱动运用一个认为合适的算法,在映射表中查找块索引;
(4)如果发现匹配,虚拟磁盘驱动从映射表中提取记忆缓冲地址,然后跳过步骤(5),(6),(7)并直接执行步骤(8);如果没有发现匹配,则执行步骤(5);
(5)虚拟磁盘驱动在映射表中查找一个空白区间;如果找到,跳过步骤(6)并执行步骤(7);如果没找到,直接执行步骤(6);
(6)虚拟磁盘驱动在映射表中识别并释放一个最不需要用的区间;鉴别哪一个区间可被释放所用的算法根据认为合适的原理来加以选择;如果识别出要被释放的区间内的记忆缓冲被标记为肮脏,记忆缓冲的内容要被写回到虚拟映射存储介质;虚拟磁盘驱动通过执行如下子步骤进行写操作:
在第一子步骤,根据目标区间的块索引计算物理地址;公式如下:
物理记忆地址=虚拟磁盘盘基地址+块索引×块大小
在第二子步骤,虚拟磁盘驱动使用记忆管理功能创建一个虚拟到物理记忆的映射;
在第三子步骤,虚拟磁盘驱动把目标区间的记忆缓冲内的数据写进由上述的第二子步骤所产生的虚拟记忆地址内;
最后,虚拟磁盘驱动释放由上述第二子步骤所创建的虚拟记忆到物理记忆的映射;
(7)虚拟磁盘驱动使用记忆管理功能,在虚拟记忆和物理记忆之间创建映射,这个映射由当前块索引指定,采用公式如下:
物理记忆地址=虚拟磁盘盘基地址+块索引×块大小
然后虚拟磁盘驱动从虚拟记忆地址读数据到记忆缓冲,然后释放映射;和
(8)对于读操作,在加了块偏移后,虚拟磁盘驱动从记忆缓冲复制数据到系统输出缓冲;对于写操作,在加了块偏移后,虚拟磁盘驱动从系统输出缓冲复制数据到记忆缓冲,然后标记记忆缓冲为肮脏;如果读或写包含和越过块边界,只有当前块中的字节被读或写,当前块即是由块索引所指定的那一块;然后,块索引加一,程序处理返回到步骤(3)并继续执行,直到完成读取或写入所有的字节。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2006/052913 WO2008023220A1 (en) | 2006-08-23 | 2006-08-23 | Running operating system on dynamic virtual memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101506793A CN101506793A (zh) | 2009-08-12 |
CN101506793B true CN101506793B (zh) | 2012-09-05 |
Family
ID=38008062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800556016A Active CN101506793B (zh) | 2006-08-23 | 2006-08-23 | 在动态虚拟记忆中运行操作系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8495350B2 (zh) |
CN (1) | CN101506793B (zh) |
WO (1) | WO2008023220A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8131986B2 (en) * | 2006-09-29 | 2012-03-06 | Lenovo (Singapore) Pte. Ltd. | System and method for boot loading of programs within a host operating environment having one or more linked guest operating systems |
US20090103404A1 (en) * | 2007-10-22 | 2009-04-23 | Chai-Chang Chiu | Optic disk drive power management method for computer system |
US9032243B2 (en) * | 2010-01-27 | 2015-05-12 | International Business Machines Corporation | Target operating system and file system agnostic bare-metal restore |
WO2012015431A1 (en) * | 2010-07-30 | 2012-02-02 | Hewlett-Packard Development Company, L.P. | Computer system and method for sharing computer memory |
CN109088951A (zh) * | 2011-01-05 | 2018-12-25 | 飞比特网络股份有限公司 | 存储卡装置 |
CN102609214A (zh) * | 2011-01-21 | 2012-07-25 | 鸿富锦精密工业(深圳)有限公司 | 将biosrom模拟成磁盘的的系统及方法 |
CN102693138A (zh) * | 2011-03-24 | 2012-09-26 | 国民技术股份有限公司 | 一种在系统引导阶段访问硬件设备的方法 |
CN102467404A (zh) * | 2011-10-14 | 2012-05-23 | 海尔集团技术研发中心 | 一种基于物理内存实现软件快速切换的方法及装置 |
US9235427B2 (en) * | 2012-02-29 | 2016-01-12 | Red Hat Israel, Ltd. | Operating system load device resource selection |
CN103942162B (zh) | 2014-05-14 | 2020-06-09 | 清华大学 | 在存储器中进行多访问的方法、装置和存储系统 |
US10754829B2 (en) * | 2017-04-04 | 2020-08-25 | Oracle International Corporation | Virtual configuration systems and methods |
US11175860B2 (en) | 2017-12-14 | 2021-11-16 | Hewlett-Packard Development Company, L.P. | Virtual memories to load operating systems |
CN108959124A (zh) * | 2018-05-04 | 2018-12-07 | 广东睿江云计算股份有限公司 | 基于动态缓冲的虚拟机磁盘复制过程写入方法及装置 |
JP7067270B2 (ja) * | 2018-05-25 | 2022-05-16 | 富士通株式会社 | 情報処理装置,ロードプログラムおよびロード方法 |
CN110928682B (zh) * | 2019-11-13 | 2023-06-09 | 深圳国微芯科技有限公司 | 外部设备访问计算机内存的方法 |
CN111352703B (zh) * | 2020-03-06 | 2023-09-08 | 网易(杭州)网络有限公司 | 一种数据处理的方法及装置、电子设备、存储介质 |
CN113849428A (zh) * | 2020-06-28 | 2021-12-28 | 华为技术有限公司 | 共享内存权限配置方法,内存单元和系统 |
CN111796882A (zh) * | 2020-07-21 | 2020-10-20 | 北京联想软件有限公司 | 电子设备系统处理方法、装置及电子设备 |
CN115480925B (zh) * | 2022-10-31 | 2023-03-10 | 北京网藤科技有限公司 | 基于动态内存机制的主机加固方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN86108127A (zh) * | 1986-01-16 | 1987-07-29 | 国际商用机器公司 | 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法 |
CN1415089A (zh) * | 2000-01-06 | 2003-04-30 | 陈锦夫 | 基于内存盘运行微软视窗95/98/me的方法 |
CN1504880A (zh) * | 2002-11-29 | 2004-06-16 | 联想(北京)有限公司 | 运用Linux完成操作系统自动安装的方法 |
CN1781091A (zh) * | 2003-05-02 | 2006-05-31 | 伊金耐勒股份有限公司 | 用于虚拟化包括bios运行时间服务的基本输入/输出系统(bios)的系统和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5655113A (en) * | 1994-07-05 | 1997-08-05 | Monolithic System Technology, Inc. | Resynchronization circuit for a memory system and method of operating same |
JP4433401B2 (ja) * | 2004-12-20 | 2010-03-17 | レノボ シンガポール プライヴェート リミテッド | 情報処理システム、プログラム、及び情報処理方法 |
US9003000B2 (en) * | 2006-07-25 | 2015-04-07 | Nvidia Corporation | System and method for operating system installation on a diskless computing platform |
-
2006
- 2006-08-23 WO PCT/IB2006/052913 patent/WO2008023220A1/en active Application Filing
- 2006-08-23 CN CN2006800556016A patent/CN101506793B/zh active Active
- 2006-08-23 US US12/310,182 patent/US8495350B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN86108127A (zh) * | 1986-01-16 | 1987-07-29 | 国际商用机器公司 | 在多任务虚拟存储器虚拟计算机型数据处理系统中控制输入输出存取的方法 |
CN1415089A (zh) * | 2000-01-06 | 2003-04-30 | 陈锦夫 | 基于内存盘运行微软视窗95/98/me的方法 |
CN1504880A (zh) * | 2002-11-29 | 2004-06-16 | 联想(北京)有限公司 | 运用Linux完成操作系统自动安装的方法 |
CN1781091A (zh) * | 2003-05-02 | 2006-05-31 | 伊金耐勒股份有限公司 | 用于虚拟化包括bios运行时间服务的基本输入/输出系统(bios)的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101506793A (zh) | 2009-08-12 |
US8495350B2 (en) | 2013-07-23 |
WO2008023220A1 (en) | 2008-02-28 |
US20090259836A1 (en) | 2009-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101506793B (zh) | 在动态虚拟记忆中运行操作系统 | |
US10970203B2 (en) | Methods and apparatus for compressed and compacted virtual memory | |
JP5284946B2 (ja) | Nandフラッシュメモリを用いた直接ブート構成 | |
CA2643332C (en) | Describing and querying discrete regions of flash storage | |
US7424601B2 (en) | Methods and systems for running multiple operating systems in a single mobile device | |
US7386653B2 (en) | Flash memory arrangement | |
US6778974B2 (en) | Memory device and method for reading data stored in a portion of a memory device unreadable by a file system of a host device | |
US20080005527A1 (en) | Controlling memory access in a multi-booting system | |
US8060669B2 (en) | Memory controller with automatic command processing unit and memory system including the same | |
US20080162917A1 (en) | Multi-Platform Portable-Booting Systems and Architectures | |
US7861074B2 (en) | Electronic systems using flash memory modules as main storage and related system booting methods | |
US20110035543A1 (en) | Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive | |
CN1936866A (zh) | 具有资料还原功能的闪存记忆体存储机制 | |
JP4308152B2 (ja) | メモリを予約するための方法、システム、および製品 | |
KR101392062B1 (ko) | 고속 컴퓨터 시스템 파워 온 및 파워 오프 방법 | |
EP3769202B1 (en) | Hybrid memory system | |
CN1573747A (zh) | 阴影分页 | |
EP3869343B1 (en) | Storage device and operating method thereof | |
CN101788913B (zh) | 具有内建双可被隐藏操作装置的计算机系统 | |
CN101373457B (zh) | Windows环境下一种基于USB设备的硬盘写保护锁的方法 | |
CN101604253A (zh) | 计算机系统及启动方法 | |
CN202257359U (zh) | 一种独立无盘个人智能处理设备及其系统 | |
KR20050120660A (ko) | 오프셋에 의해 공유 메모리에 데이터를 어드레스하는 방법 | |
KR101120956B1 (ko) | 휴대용 멀티-플랫폼 부팅시스템과 아키텍쳐 | |
KR20060095133A (ko) | 비휘발성 메모리에 저장된 시스템 프로그램을 구동시키는방법 |
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 |