0 开篇
(1)应用的运行环境,指的是什么?
操做系统和计算机自己(硬件)的种类
(2)Macintosh用的操做系统(MacOS),在AT兼容机上能运行吗?
没法运行
(3)Windows上的应用,在MacOS上能运行吗?
没法运行
(4)FreeBSD提供的Ports,指的是什么?
经过使用源代码来提供应用,并根据运行环境进行整合编译,从而得以在该环境下运行的机制
(5)在MacOS上能够利用的Windows环境模拟器称为何?
Virtual PC for Mac
(6)Java虚拟机的功能是什么?
运行Java应用的字节代码
1 运行环境=操做系统+硬件
咱们在下载软件的时候,一般都会看到“运行环境”这一项。包括操做系统和计算机硬件两项。这就是所说的运行环境,其决定了程序的运行环境。CPU只能即便其自身固有的机器语言,不一样的CPU能解释的机器语言的种类也是不一样的。
机器语言的程序称为本地代码(native code)。程序员用C语言等编写的程序,在编写截断仅仅是文本文件。文本文件在任何环境下都能显示和编辑。咱们称之位源代码,经过对源代码进行编译,就能够获得本地代码。
2 Windows克服了CPU意外的硬件差别
计算机的硬件并不只仅是由CPU构成的,还包括用于存储程序指令和数据的内存,以及经过I/O链接的键盘、显示器、硬盘、打印机等外围设备。
Windows操做系统对克服这些硬件构成的差别作出了很大贡献。
在Windows的应用软件中,键盘输入、显示器输出等并非直接向硬件发送指令,而是经过向Windows发送指令来间接实现的。所以,程序员就不用注意内存和I/O地址的不一样构成了。由于Windows操做的是硬件而非应用软件,并且针对不一样的机型,这些硬件的构成也是有差别的。不过Windows自己则须要为不一样的机型分别提供专用的版本。
目前来讲,即使是Windows,也依然没法吸取CPU类型的差别。java
3 不一样操做系统的API不一样
一样机型的计算机,可安装的操做系统类型也会有多重选择。例如,AT兼容机的状况下,出Windows以外,还能够采用Unix系列的Linux及FreeBSD等多个操做系统。固然,应用软件则必须根据不一样的操做系统类型来专门开发。CPU的类型不一样,所对应的机器语言也不一样,一样的道理,操做系统的类型不一样、应用程序向操做系统传递指令的途径也是不一样的。
应用程序向操做系统传递指令的途径称为API。由于不一样操做系统的API是由差别的,所以,将一样的应用程序移植到其余才作系统时,就必需要重写应用中利用到的API部分,像键盘输入、鼠标输入、显示器输出、文件输入输出等同外围设备进行输入输出操做的功能,都是经过API提供的。
在同类型操做系统下,无论硬件如何,API基本上灭有差异,于是,针对某特定操做系统的API所编写的程序,在任何硬件上均可以运行。固然,因为CPU种类不一样,机器语言也不相同,所以本地代码也是不一样的。这种状况下,就须要利用可以生成各CPU专用的本地代码的编译器,来对源代码进行从新编译了。
程序(本地代码)的运行环境是由操做系统和硬件来决定的。
4 FreeBSD Port帮你轻松使用源代码
既然CPU类型不一样会致使一样的本地代码没法重复利用,那为什么不直接把源代码分发给程序呢?
Unix系列操做系统FreeBSD中,存在一种名为Ports的机制。该机制可以结合当前运行的硬件环境来编译应用的源代码,进而获得能够运行的本地代码系统。若是目标应用的源代码没有在硬件上的话,Ports就会自动使用FTP链接到相关站点来下载代码。
5 利用虚拟机得到其余操做系统环境
即便不经过移植,咱们也可使用虚拟机软件进行运行。虚拟机我想你们都是用过的,这里很少加介绍。
6 提供相同运行环境的Java虚拟机
除虚拟机的方法以外,还有一种方法可以提供不依赖于特定硬件及操做系统的程序运行环境,那就是Java。
使用Java编写的程序,编译后生成的并非特定CPU使用的本地代码,而是名为字节代码的程序。字节代码的运行环境就称为Java虚拟机。Java虚拟机是一边把Java字节代码逐一转换成本地代码一边运行的。
例如:在使用用于AT兼容机的Java编译器和Java虚拟机的状况下,编译器会将程序员编写的源代码(sample.java)转换成字节代码(sample。class)。而Java虚拟机(java.exe)则会把字节代码变换成x86系列系列CPU适用的本地代码,而后由x86系列CPU负责实际的处理。
在程序运行时,将编译后的字节代码转换成本地代码,这样的操做方法看上去有些迂回,但由此能够实现一样的字节代码在不一样的环境下运行。若是可以结合各类类型的操做系统和硬件作成Java虚拟机,那么,一样字节代码的应用就能够在任何环境下运行。
另外一点就是运行速度的问题。Java虚拟机每次运行时都要把字节代码变换成本机代码,这一机制是形成运行速度慢的缘由。程序员
7 BIOS和引导
程序的运行环境中,存在着名为BIOS(Baisc Input/Output System)的系统。BIOS存储在ROM中,是预先内置在计算机主机内部的程序。BIOS除了键盘、磁盘、显卡等基本控制程序外,还有启动“引导程序”的功能。引导程序是存储在启动驱动器起始区域的小程序。操做系统的启动驱动器通常是硬盘,不过有时也能够是CD-ROM或软盘。
开机后,BIOS会确认硬件是否正常运行,没有问题的话就会启动引导程序。引导程序的功能是把在硬盘灯记录的OS加载到内存中运行。虽然启动应用是OS的功能,但OS并不能自动启动本身,而是经过引导程序来启动。