关于虚拟机的事!!

作者&投稿:刘疮 (若有异议请与网页底部的电邮联系)
关于虚拟机问题~

建议使用iso镜像文件来安装,启动系统时载入镜像文件,虚拟机会找到加载的iso镜像文件并当成光驱来引导,也可以将镜像文件刻录成光盘来用,记住虚拟机启动时加载物理光驱,也就是实体机上的光驱,不用给虚拟机下的硬盘来分区,可以在进入虚拟机系统后再来分区。

你好!
虚拟机只有在打开的时候会占用系统的内存,不用的时候还是由系统支配的。卸载虚拟机后,如果没删除安装的系统存放位置的文件,那部分空间是不会自动还原的,要找到并删除它才可以。

什么是虚拟机?

虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件。这里所指的是后者。
虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。

Java虚拟机

一、什么是Java虚拟机

Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

1.为什么要使用Java虚拟机

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

2.谁需要了解Java虚拟机

Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说,则必须深刻理解Java虚拟机的规范。另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。

3.Java虚拟机支持的数据类型

Java虚拟机支持Java语言的基本数据类型如下:

byte://1字节有符号整数的补码
short://2字节有符号整数的补码
int://4字节有符号整数的补码
long://8字节有符号整数的补码
float://4字节IEEE754单精度浮点数
double://8字节IEEE754双精度浮点数
char://2字节无符号Unicode字符

几乎所有的Java类型检查都是在编译时完成的。上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。操作这些原始数据类型数据的字节码(指令)本身就已经指出了操作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其操作数类型别是int、long、float和double。虚拟机没有给boolean(布尔)类型设置单独的指令。boolean型的数据是由integer指令,包括integer返回来处理的。boolean型的数组则是用byte数组来处理的。虚拟机使用IEEE754格式的浮点数。不支持IEEE格式的较旧的计算机,在运行Java数值计算程序时,可能会非常慢。

虚拟机支持的其它数据类型包括:
object//对一个Javaobject(对象)的4字节引用
returnAddress//4字节,用于jsr/ret/jsr-w/ret-w指令
注:Java数组被当作object处理。

虚拟机的规范对于object内部的结构没有任何特殊的要求。在Sun公司的实现中,对object的引用是一个句柄,其中包含一对指针:一个指针指向该object的方法表,另一个指向该object的数据。用Java虚拟机的字节码表示的程序应该遵守类型规定。Java虚拟机的实现应拒绝执行违反了类型规定的字节码程序。Java虚拟机由于字节码定义的限制似乎只能运行于32位地址空间的机器上。但是可以创建一个Java虚拟机,它自动地把字节码转换成64位的形式。从Java虚拟机支持的数据类型可以看出,Java对数据类型的内部格式进行了严格规定,这样使得各种Java虚拟机的实现对数据的解释是相同的,从而保证了Java的与平台无关性和可
移植性。

二、Java虚拟机体系结构

Java虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。这五部分是Java虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。

1.Java指令集

Java虚拟机支持大约248个字节码。每个字节码执行一种基本的CPU运算,例如,把一个整数加到寄存器,子程序转移等。Java指令集相当于Java程序的汇编语言。
Java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个操作数,提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成。

虚拟机的内层循环的执行过程如下:

do{
取一个操作符字节;
根据操作符的值执行一个动作;
}while(程序未结束)

由于指令系统的简单性,使得虚拟机执行的过程十分简单,从而有利于提高执行的效率。指令中操作数的数量和大小是由操作符决定的。如果操作数比一个字节大,那么它存储的顺序是高位字节优先。例如,一个16位的参数存放时占用两个字节,其值为:

第一个字节*256+第二个字节字节码指令流一般只是字节对齐的。指令tabltch和lookup是例外,在这两条指令内部要求强制的4字节边界对齐。

2.寄存器

Java虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。

Java虚拟机的寄存器有四种:
pc:Java程序计数器。
optop:指向操作数栈顶端的指针。
frame:指向当前执行方法的执行环境的指针。
vars:指向当前执行方法的局部变量区第一个变量的指针。

Java虚拟机

Java虚拟机是栈式的,它不定义或使用寄存器来传递或接受参数,其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)。
所有寄存器都是32位的。

3.栈

Java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区。

(1)局部变量区 每个Java方法使用一个固定大小的局部变量集。它们按照与vars寄存器的字偏移量来寻址。局部变量都是32位的。长整数和双精度浮点数占据了两个局部变量的空间,却按照第一个局部变量的索引来寻址。(例如,一个具有索引n的局部变量,如果是一个双精度浮点数,那么它实际占据了索引n和n+1所代表的存储空间。)虚拟机规范并不要求在局部变量中的64位的值是64位对齐的。虚拟机提供了把局部变量中的值装载到操作数栈的指令,也提供了把操作数栈中的值写入局部变量的指令。

(2)运行环境区 在运行环境中包含的信息用于动态链接,正常的方法返回以及异常传播。

·动态链接
运行环境包括对指向当前类和当前方法的解释器符号表的指针,用于支持方法代码的动态链接。方法的class文件代码在引用要调用的方法和要访问的变量时使用符号。动态链接把符号形式的方法调用翻译成实际方法调用,装载必要的类以解释还没有定义的符号,并把变量访问翻译成与这些变量运行时的存储结构相应的偏移地址。动态链接方法和变量使得方法中使用的其它类的变化不会影响到本程序的代码。

·正常的方法返回
如果当前方法正常地结束了,在执行了一条具有正确类型的返回指令时,调用的方法会得到一个返回值。执行环境在正常返回的情况下用于恢复调用者的寄存器,并把调用者的程序计数器增加一个恰当的数值,以跳过已执行过的方法调用指令,然后在调用者的执行环境中继续执行下去。

·异常和错误传播
异常情况在Java中被称作Error(错误)或Exception(异常),是Throwable类的子类,在程序中的原因是:①动态链接错,如无法找到所需的class文件。②运行时错,如对一个空指针的引用

·程序使用了throw语句。
当异常发生时,Java虚拟机采取如下措施:
·检查与当前方法相联系的catch子句表。每个catch子句包含其有效指令范围,能够处理的异常类型,以及处理异常的代码块地址。
·与异常相匹配的catch子句应该符合下面的条件:造成异常的指令在其指令范围之内,发生的异常类型是其能处理的异常类型的子类型。如果找到了匹配的catch子句,那么系统转移到指定的异常处理块处执行;如果没有找到异常处理块,重复寻找匹配的catch子句的过程,直到当前方法的所有嵌套的catch子句都被检查过。
·由于虚拟机从第一个匹配的catch子句处继续执行,所以catch子句表中的顺序是很重要的。因为Java代码是结构化的,因此总可以把某个方法的所有的异常处理器都按序排列到一个表中,对任意可能的程序计数器的值,都可以用线性的顺序找到合适的异常处理块,以处理在该程序计数器值下发生的异常情况。
·如果找不到匹配的catch子句,那么当前方法得到一个"未截获异常"的结果并返回到当前方法的调用者,好像异常刚刚在其调用者中发生一样。如果在调用者中仍然没有找到相应的异常处理块,那么这种错误传播将被继续下去。如果错误被传播到最顶层,那么系统将调用一个缺省的异常处理块。
(3)操作数栈区 机器指令只从操作数栈中取操作数,对它们进行操作,并把结果返回到栈中。选择栈结构的原因是:在只有少量寄存器或非通用寄存器的机器(如Intel486)上,也能够高效地模拟虚拟机的行为。操作数栈是32位的。它用于给方法传递参数,并从方法接收结果,也用于支持操作的参数,并保存操作的结果。例如,iadd指令将两个整数相加。相加的两个整数应该是操作数栈顶的两个字。这两个字是由先前的指令压进堆栈的。这两个整数将从堆栈弹出、相加,并把结果压回到操作数栈中。

每个原始数据类型都有专门的指令对它们进行必须的操作。每个操作数在栈中需要一个存储位置,除了long和double型,它们需要两个位置。操作数只能被适用于其类型的操作符所操作。例如,压入两个int类型的数,如果把它们当作是一个long类型的数则是非法的。在Sun的虚拟机实现中,这个限制由字节码验证器强制实行。但是,有少数操作(操作符dupe和swap),用于对运行时数据区进行操作时是不考虑类型的。

4.无用单元收集堆

Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java语言具有无用单元收集能力:它不给程序员显式释放对象的能力。Java不规定具体使用的无用单元收集算法,可以根据系统的需求使用各种各样的算法。

5.方法区

方法区与传统语言中的编译后代码或是Unix进程中的正文段类似。它保存方法代码(编译后的java代码)和符号表。在当前的Java实现中,方法代码不包括在无用单元收集堆中,但计划在将来的版本中实现。每个类文件包含了一个Java类或一个Java界面的编译后的代码。可以说类文件是Java语言的执行代码文件。为了保证类文件的平台无关性,Java虚拟机规范中对类文件的格式也作了详细的说明。其具体细节请参考Sun公司的Java虚拟机规范。
回答者: 笑叹沧桑 - 举人 四级 12-15 22:27

--------------------------------------------------------------------------------

您觉得最佳答案好不好? 目前有 0 个人评价

50% (0)
50% (0)

其他回答 共 2 条

虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件。这里所指的是后者。
虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。

Java虚拟机

一、什么是Java虚拟机

Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

1.为什么要使用Java虚拟机

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

2.谁需要了解Java虚拟机

Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说,则必须深刻理解Java虚拟机的规范。另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。

3.Java虚拟机支持的数据类型

Java虚拟机支持Java语言的基本数据类型如下:

byte://1字节有符号整数的补码
short://2字节有符号整数的补码
int://4字节有符号整数的补码
long://8字节有符号整数的补码
float://4字节IEEE754单精度浮点数
double://8字节IEEE754双精度浮点数
char://2字节无符号Unicode字符

几乎所有的Java类型检查都是在编译时完成的。上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。操作这些原始数据类型数据的字节码(指令)本身就已经指出了操作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其操作数类型别是int、long、float和double。虚拟机没有给boolean(布尔)类型设置单独的指令。boolean型的数据是由integer指令,包括integer返回来处理的。boolean型的数组则是用byte数组来处理的。虚拟机使用IEEE754格式的浮点数。不支持IEEE格式的较旧的计算机,在运行Java数值计算程序时,可能会非常慢。

虚拟机支持的其它数据类型包括:
object//对一个Javaobject(对象)的4字节引用
returnAddress//4字节,用于jsr/ret/jsr-w/ret-w指令
注:Java数组被当作object处理。

虚拟机的规范对于object内部的结构没有任何特殊的要求。在Sun公司的实现中,对object的引用是一个句柄,其中包含一对指针:一个指针指向该object的方法表,另一个指向该object的数据。用Java虚拟机的字节码表示的程序应该遵守类型规定。Java虚拟机的实现应拒绝执行违反了类型规定的字节码程序。Java虚拟机由于字节码定义的限制似乎只能运行于32位地址空间的机器上。但是可以创建一个Java虚拟机,它自动地把字节码转换成64位的形式。从Java虚拟机支持的数据类型可以看出,Java对数据类型的内部格式进行了严格规定,这样使得各种Java虚拟机的实现对数据的解释是相同的,从而保证了Java的与平台无关性和可
移植性。

二、Java虚拟机体系结构

Java虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。这五部分是Java虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。

1.Java指令集

Java虚拟机支持大约248个字节码。每个字节码执行一种基本的CPU运算,例如,把一个整数加到寄存器,子程序转移等。Java指令集相当于Java程序的汇编语言。
Java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个操作数,提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成。

虚拟机的内层循环的执行过程如下:

do{
取一个操作符字节;
根据操作符的值执行一个动作;
}while(程序未结束)

由于指令系统的简单性,使得虚拟机执行的过程十分简单,从而有利于提高执行的效率。指令中操作数的数量和大小是由操作符决定的。如果操作数比一个字节大,那么它存储的顺序是高位字节优先。例如,一个16位的参数存放时占用两个字节,其值为:

第一个字节*256+第二个字节字节码指令流一般只是字节对齐的。指令tabltch和lookup是例外,在这两条指令内部要求强制的4字节边界对齐。

2.寄存器

Java虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。

Java虚拟机的寄存器有四种:
pc:Java程序计数器。
optop:指向操作数栈顶端的指针。
frame:指向当前执行方法的执行环境的指针。
vars:指向当前执行方法的局部变量区第一个变量的指针。

Java虚拟机

Java虚拟机是栈式的,它不定义或使用寄存器来传递或接受参数,其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)。
所有寄存器都是32位的。

3.栈

Java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区。

(1)局部变量区 每个Java方法使用一个固定大小的局部变量集。它们按照与vars寄存器的字偏移量来寻址。局部变量都是32位的。长整数和双精度浮点数占据了两个局部变量的空间,却按照第一个局部变量的索引来寻址。(例如,一个具有索引n的局部变量,如果是一个双精度浮点数,那么它实际占据了索引n和n+1所代表的存储空间。)虚拟机规范并不要求在局部变量中的64位的值是64位对齐的。虚拟机提供了把局部变量中的值装载到操作数栈的指令,也提供了把操作数栈中的值写入局部变量的指令。

(2)运行环境区 在运行环境中包含的信息用于动态链接,正常的方法返回以及异常传播。

·动态链接
运行环境包括对指向当前类和当前方法的解释器符号表的指针,用于支持方法代码的动态链接。方法的class文件代码在引用要调用的方法和要访问的变量时使用符号。动态链接把符号形式的方法调用翻译成实际方法调用,装载必要的类以解释还没有定义的符号,并把变量访问翻译成与这些变量运行时的存储结构相应的偏移地址。动态链接方法和变量使得方法中使用的其它类的变化不会影响到本程序的代码。

·正常的方法返回
如果当前方法正常地结束了,在执行了一条具有正确类型的返回指令时,调用的方法会得到一个返回值。执行环境在正常返回的情况下用于恢复调用者的寄存器,并把调用者的程序计数器增加一个恰当的数值,以跳过已执行过的方法调用指令,然后在调用者的执行环境中继续执行下去。

·异常和错误传播
异常情况在Java中被称作Error(错误)或Exception(异常),是Throwable类的子类,在程序中的原因是:①动态链接错,如无法找到所需的class文件。②运行时错,如对一个空指针的引用

·程序使用了throw语句。
当异常发生时,Java虚拟机采取如下措施:
·检查与当前方法相联系的catch子句表。每个catch子句包含其有效指令范围,能够处理的异常类型,以及处理异常的代码块地址。
·与异常相匹配的catch子句应该符合下面的条件:造成异常的指令在其指令范围之内,发生的异常类型是其能处理的异常类型的子类型。如果找到了匹配的catch子句,那么系统转移到指定的异常处理块处执行;如果没有找到异常处理块,重复寻找匹配的catch子句的过程,直到当前方法的所有嵌套的catch子句都被检查过。
·由于虚拟机从第一个匹配的catch子句处继续执行,所以catch子句表中的顺序是很重要的。因为Java代码是结构化的,因此总可以把某个方法的所有的异常处理器都按序排列到一个表中,对任意可能的程序计数器的值,都可以用线性的顺序找到合适的异常处理块,以处理在该程序计数器值下发生的异常情况。
·如果找不到匹配的catch子句,那么当前方法得到一个"未截获异常"的结果并返回到当前方法的调用者,好像异常刚刚在其调用者中发生一样。如果在调用者中仍然没有找到相应的异常处理块,那么这种错误传播将被继续下去。如果错误被传播到最顶层,那么系统将调用一个缺省的异常处理块。
(3)操作数栈区 机器指令只从操作数栈中取操作数,对它们进行操作,并把结果返回到栈中。选择栈结构的原因是:在只有少量寄存器或非通用寄存器的机器(如Intel486)上,也能够高效地模拟虚拟机的行为。操作数栈是32位的。它用于给方法传递参数,并从方法接收结果,也用于支持操作的参数,并保存操作的结果。例如,iadd指令将两个整数相加。相加的两个整数应该是操作数栈顶的两个字。这两个字是由先前的指令压进堆栈的。这两个整数将从堆栈弹出、相加,并把结果压回到操作数栈中。

每个原始数据类型都有专门的指令对它们进行必须的操作。每个操作数在栈中需要一个存储位置,除了long和double型,它们需要两个位置。操作数只能被适用于其类型的操作符所操作。例如,压入两个int类型的数,如果把它们当作是一个long类型的数则是非法的。在Sun的虚拟机实现中,这个限制由字节码验证器强制实行。但是,有少数操作(操作符dupe和swap),用于对运行时数据区进行操作时是不考虑类型的。

4.无用单元收集堆

Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java语言具有无用单元收集能力:它不给程序员显式释放对象的能力。Java不规定具体使用的无用单元收集算法,可以根据系统的需求使用各种各样的算法。

5.方法区

方法区与传统语言中的编译后代码或是Unix进程中的正文段类似。它保存方法代码(编译后的java代码)和符号表。在当前的Java实现中,方法代码不包括在无用单元收集堆中,但计划在将来的版本中实现。每个类文件包含了一个Java类或一个Java界面的编译后的代码。可以说类文件是Java语言的执行代码文件。为了保证类文件的平台无关性,Java虚拟机规范中对类文件的格式也作了详细的说明。其具体细节请参考Sun

你一定接触过各种各样的虚拟机,Vmware,VirtualPC,甚至JVM或是VBRunDLL,等等等等,在数字的信息世界里虚拟和现实是如此的难解难分。

你一定接触过各种各样的虚拟机,Vmware,VirtualPC,甚至JVM或是VBRunDLL,等等等等,在数字的信息世界里虚拟和现实是如此的难解难分。

从这个开始,磁芯大战。
http://watercloud.nease.net/progbatt/cxdz1.0.zip
watercloud在这里定义了一个8k Byte地址空间的虚拟机,包含完整的运行系统,可以看作是一个最小的虚拟机。这是一个古老计算机游戏"磁芯大战"的一个实现版本,闲来无事作为桌面小游戏玩玩儿还是不错的。

LMX
多X虚拟
http://www.unixsp.com/index.php

cygwin 是个win下的unix虚拟机
http://www.cygwin.com

如果你不满足这个的话,那么看看这个,你的硬盘就一定开始狂转:
http://www.tik.ee.ethz.ch/~gfa/sim/applet.html
当然了,虽然这只是一个Java Applet,但它确实是一个完整的MIPS R3000 体系的实现!想想看,JVM虚拟机里的MIPS虚拟机,谁知道自己是狗狗?或是狗狗的一部分?

如果用上面一个让你心痛自己的硬盘了的话,那么就用这个吧:
http://www.dgate.org/vmips/index.shtml
VMips,另一个MIPS系统的实现,当然了,这个是C版本,可以编译运行在大多数Unix系统上。VMips提供了一个完整的MIPS体系指令集合,同样,可以在这个环境下用gcc做交叉编译,用gdb作交叉开发和调试...

VMips只能够支持Mips指令集,有点过时,也有点局限,Qemu就好一点了。
http://fabrice.bellard.free.fr/qemu/
Qemu支持x86 / ARM / Sparc / PowerPC四种指令集合,并且效率也比VMpis高一些;他支持两种运行模式-- Boot模式和User模式。在Boot模式下工作就如同Vmware那样,可以安装和引导一个完整系统,当前工作还不完善;而User模式下工作则表现得像Wine那样,可以直接在User空间运行一个其它硬件平台的程序,由Qemu做一个系统指令层转换。

作为MIPS平台学习,Qemu的使用稍显复杂。spim提供了一个更好的用户界面,并且能够运行在Unix/Windows/Dos下,同样完整地实现了MIPS R3000指令集,图形界面就如同大多数的调试工具一样使用,可以直接读取和解释MIPS R3000汇编指令。
http://www.cs.wisc.edu/~larus/spim.html

最后,是本文重点推荐的东东: mips64emul
http://www.mdstud.chalmers.se/~md1gavan/mi...emul/index.html
mips64emul可以运行在大多数的Unix上,至少目前在Linux/netBSD host上运行得很好。可以模拟32/64位的MIPS CPU,支持netbsd, openbsd, linux, Ultrix, Irix的MIPS版本。支持boot模式安装系统和user模式直接运行elf/coff格式可执行文件。

支持模拟如下硬件平台:
DECstation:
NetBSD/pmax onto a harddisk image.
old OpenBSD kernel in a.out format.
Linux kernels for Mips R4000.
SGI:
NetBSD/sgimips.
Linux/SGI kernels for Mips R10000.
ARC:
NetBSD/arc.
An ARC linux kernel, ECOFF.
Cobalt:
NetBSD for Cobalt.
Linux for Cobalt.
Playstation 2:
NetBSD/playstation2.
Linux kernel (2.2.21-pre1-xr7).

配合gcc的mips交叉编译版本进行程序测试,表现还是很不错的。原则上使用VxWorks的MIPS版本作交叉开发应该也可以,过几天试试看。

这是今天爬行的一个笔记,本来是为了找一些MIPS平台交叉开发的资料。所以现在把这些东东记录在此,做一个Index。

mips64emul: MIPS R10k/12k模拟器(推荐)
http://www.mdstud.chalmers.se/~md1gavan/mi...emul/index.html

spim: 可在windows下运行的MIPS R3k模拟器(推荐)
http://www.cs.wisc.edu/~larus/spim.html

VMips: Mips R3k模拟器
http://www.dgate.org/vmips/

Qemu: MIPS R3k/ARM7|9/PowerPC模拟器
http://fabrice.bellard.free.fr/qemu/

历史悠久的PowerPC/Sparc/MIPS模拟器,可运行Irix 5/Solaris 2等等,可惜早已停止开发。
http://simos.stanford.edu/

Watercloud的磁芯大战,很精巧,可以作为学习或游戏。
http://watercloud.nease.net/progbatt/cxdz1.0.zip

如果你本来对embed或ARM体系开发有兴趣,可以看看这个国人开发的项目:
http://www.skyeye.org/
模拟了ARM7 CPU和开发版,兼容SA1100。

其它一些东东:

PearPC -PowerPC 模拟器

http://pearpc.sourceforge.net/

bochs,历史悠久的X86模拟器(比Vmware还久),原来的Plex86,可运行Windows/Linux/*BSD/DOS,最大的优点是,OpenSource,Free。
http://bochs.sourceforge.net/

Vmware,可能是目前应用最广的虚拟机。
http://www.freedemon.org/download/VMware-w...-7568-Linux.rar
http://www.freedemon.org/download/VMware-w...568-Windows.rar

VirtualPC,Vmware目前和将来最强大的竞争对手。
http://www.microsoft.com/windowsxp/virtualpc/

twoostwo,另一个小巧的X86虚拟机,功能与vmware类似。
http://www.twoostwo.org/

simics,目前为止模拟系统类型最多的虚拟机,
http://www.freedemon.org/download/Virtutec...86-linux.tar.gz
http://www.freedemon.org/download/Virtutec...11-x86-in32.rar
支持 Alpha, ARM, IA-64, MIPS, PowerPC, SPARC V9, x86, and AMD64平台,不过它的速度可真的不是一般的慢,如果你的机器低于4个CPU,还是最好不要跑它了。

一张壮观截图:
http://www.virtutech.com/images/simics/ieee-snapshot-5.png

就是先在你的机子上装个虚拟机的软件(例如:VM),它可以虚拟一个系统,例如:我的系统是WIN2000,我装了VM,然后虚拟一个linux,这样我在WIN2000系统下也可以进入模拟的linux系统,也就是虚拟linux!但界面就跟进入真实的linux系统是一样的。可是却是在真实WIN环境下的虚拟linux!


关于虚拟机的事!!
Java虚拟机由于字节码定义的限制似乎只能运行于32位地址空间的机器上。但是可以创建一个Java虚拟机,它自动地把字节码转换成64位的形式。从Java虚拟机支持的数据类型可以看出,Java对数据类型的内部格式进行了严格规定,这样使得各种Java虚拟机的实现对数据的解释是相同的,从而保证了Java的与平台无关性和可 移植性。二、...

虚拟机卡是怎么回事,该如何解决?
解决方案:1、大家使用完虚拟机后,通常习惯挂起,因为关机需要时间,挂起相对快些。殊不知这样会在虚拟机的操作系统目录生成一个临时文件,用来保存当前系统的状态,扩展名为:vmem 2、使用完虚拟机后选择关闭客户机,不要选择挂起客户机。这样就不会卡了,我的电脑配置是英特尔 I7 CPU,16G内存,选择...

用虚拟机来干坏事,对方是不是不知道你的IP地址?
不是的不管是虚拟机还是路由器,接到外面的就一个IP地址,做坏事人家还是能查到的。

UTM虚拟机(QEMU for iOS)的二三事
USB设备、蓝牙和网络TAP模式方面,虽然Type C接口支持外接USB,蓝牙连接受限,网络TAP模式有助于实现独立IP,但在iOS上应用还有待突破。iOS14的更新虽然带来了新机遇,但UTM的完善仍面临诸多限制,尤其是旁加载和QEMU在iOS中的运行问题。总的来说,尽管UTM虚拟机在发展中面临技术瓶颈,但随着开源社区的努...

vm虚拟机蓝屏是怎么回事啊
虚拟机一进入就蓝屏可能由多种原因引起,以下是一些可能的原因及相应的解决方法:1. **虚拟机与主机系统不兼容**:如果虚拟机软件或硬件与主机系统不兼容,可能会导致蓝屏问题。解决方法是更新或升级虚拟机软件和硬件,并确保它们与主机系统完全兼容。2. **虚拟机设置错误**:虚拟机设置不正确,如CPU...

虚拟机是怎么回事?
1.虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件。 2.虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台上都提供给...

虚拟机可以做什么
问题七:虚拟机是干嘛的 装系统用的,做实验用的,搭建虚拟平台,可以模拟出来很多个系统 问题八:除了体验 OS X 系统,虚拟机还能做什么好玩的事 虚拟机还可以安 *** ack track5,然后可以检测一下邻居的wifi密码,然后测试嗅探一下各大网站的漏洞等安全性问题。问题九:IT达人入门必备技:虚拟...

虚拟机打不开是怎么一回事?
扩展包没有安装导致的,下文讲解操作步骤:工具/原料:Virtualbox虚拟机 windows10 管理10.0 1、点击“管理”。2、点击“全局设定”。3、点击“扩展”,点击“添加新包”图标。4、找到你下载的对应版本的扩展包即可。5、完成后,即可完美打开虚拟机。

虚拟机开不了机是怎么回事?
原因:BIOS中的设置不正确造成的。1、将鼠标光标放置于虚拟机上,会显示窗口,选择“电源”在选择“关闭”虚拟机;2、“关闭”了虚拟机后,再将鼠标光标放置于虚拟机上,在显示窗口选择“电源”然后再选择“打开电源时进入固件”;3、在打开的BIOS设置中,选择“Boot”下的选项“-Hard Drive”,按“...

虚拟机网络连接不上,怎么回事?
如果在安装VirtualBox后遇到网络连接问题,可能是由于VirtualBox网络设置不正确导致的。以下是一些可能的解决方法:1. 检查网络适配器设置:- 打开VirtualBox,选择要调整设置的虚拟机。- 点击“设置”按钮,进入虚拟机设置页面。- 在左侧导航栏中选择“网络”选项卡。- 确保网络适配器已启用,并选择正确的...

梅县18023477928: 关于虚拟机的事情我问一下 -
子哗蛇胆: 虚拟机的内存只有在虚拟机运行时才会被占用,关闭后即释放,不用卸载的.硬盘容量需要在删除后释放,卸载的是虚拟机操作系统,不是虚拟机,虚拟机是一组文件.你要理解一下虚拟机操作系统和虚拟机之间的关系,你把虚拟机操作系统想...

梅县18023477928: 关于虚拟机 -
子哗蛇胆: 首先你要装虚拟机软件,尽量放在英文目录下.我用的是VMWare6.5,以下以此为例.装完虚拟机后,打开虚拟机,1.点“新建虚拟机”,选“标准(推荐)”,“下一步next”,选“安装盘镜像文件”,按“浏览”选择你的ISO文件(如果你的...

梅县18023477928: 什么是虚拟机?虚拟机对现有的系统有什么危害? -
子哗蛇胆: 一、虚拟机可以随意在虚拟机内试用各种软件,上任意网站,运行任意病毒包括调试病毒,随意更改系统比如安装ios系统体验苹果的感觉,安装linuxUnix等等.然后只需要关闭虚拟机,所有的一切都恢复原样.而且按照现在主机的配置,运行虚拟机一点都不卡,非常流畅. 二、既然都是虚拟出来的系统.那么就没有最好的说法,哪个适合现在学习使用,就安装那个,以后熟练了可以随时删除更换. 三、推荐安装linux或者ios系统.体验下与win不同的感觉.

梅县18023477928: 虚拟机是干什么的? -
子哗蛇胆: 通过虚拟机软件,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等.对于你而言,它只是运行在你物理计算机上的一个应用程序,但是对于在虚拟机中运行的应用程序而言,它就是一台真正的计算机.因此,当我在虚拟机中进行软件评测时,可能系统一样会崩溃,但是,崩溃的只是虚拟机上的操作系统,而不是物理计算机上的操作系统,并且,使用虚拟机的“Undo”(恢复)功能,我可以马上恢复虚拟机到安装软件之前的状态.

梅县18023477928: 虚拟机是怎么回事,怎样安装,怎样运行,和真实的电脑有什么区别 -
子哗蛇胆: 很高兴看到这个问题前两天我才装的虚拟机,虚拟机就是在你原来系统上安装一个软件这个软件就是虚拟机,在这个软件里面可以新建系统,你选择好喜欢的系统就可以装了,可以是任何系统(MAC,linux,windows),然后就可以把这个虚拟机软件运行了,例如:我的笔记本是win7系统,然后装了个虚拟机在里面装了个xp.首先进入你的系统运行虚拟机,运行起来你会发现太棒了,虚拟机运行系统时就和真的一台电脑似的,有开机这个过程,不过你可以最大化最小化这个界面,开始干别的事情,等到虚拟机的系统进入界面了就可以用了.这个虚拟机有自己的一切,包括上网,就好像两台电脑通过一条网线上网. 如果还有别的问题可以hi我. 就到这里了

梅县18023477928: 什么是虚拟机,虚拟机的作用 -
子哗蛇胆: 简单的说,虚拟机其实就是一套软件,他模拟了整个一个实际计算机的功能,也就是一台计算机的所有硬件,都软件来虚拟化实现了,所以安装了虚拟机,你就算有了第二台电脑,需要你为他安装操作系统,为他安装程序你才能使用. 1. 是的...

梅县18023477928: 求一些关于虚拟机的知识
子哗蛇胆: 虚拟机 开放分类: 软件、电脑、应用软件、系统模拟 通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统.通过虚拟机软件,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就...

梅县18023477928: 关于虚拟机的 -
子哗蛇胆: 通过报错信息说明,你的workstation的权限设置有问题,可能和你操作系统有关.(个人建议你安装workstation,不要采用破解版或者绿色版) 但是你的authrization service没有启动,需要你到service中找到这个服务,并 启动该服务.如果启动失败,估计你需要卸载workstation后重新安装了.

梅县18023477928: 什么是虚拟机 -
子哗蛇胆: 简单来说就是一个虚拟的电脑...比如你想要在你的电脑装系统,你就可以在这个里面试手,然后再进行实体的装,就是给你提供一个模拟电脑的一个软件

梅县18023477928: 关于虚拟机的问题?? -
子哗蛇胆: 1.虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件. 2.虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域.它负责...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网