带着问题学习(操作系统)
- 软件的运行环境指的什么?
- Windows的应用程序能够在Linux下运行吗?
- Java虚拟机是什么原理?
伟大的操作系统
在X86电脑出现之前,不同类型的电脑中的CPU指令是不同的,所以当时写的应用程序只能在一种类型甚至一台电脑上运行。
- 克服硬件差异性:微软设计了叫做MS-DOS的操作系统(最开始的MS-DOS也可以认为是一个软件,它相当于一个壳),我们只需要编写符合MS-DOS规则的程序,就能够在所有安装了MS-DOS电脑上运行我们编写的程序,达到了克服硬件之间的差异性的目的,能够更好的驾驭我们的程序。
- 提供统一接口:操作系统为我们提供了标准的API,拿着这些API接口,
- 伪跨平台:目前主要的操作系统有Windows、Linux以及Mac,而这三种操作系统之间是有很大差别的,最主要是体现在API函数接口的不同。这些API的不同,就会导致应用程序在编写起来变得比较麻烦,所以,如果想让我们的应用程序能够在上面三个操作系统上运行,就需要进行三次编译,每一次都会产生一个native code(本地代码)机器码。
我们在编写源代码的时候,需要对操作系统进行判断,然后写出相对应的API,那么编译器在编译的时候,就会根据不同的草错系统编译出相应的native code机器码。所以我们写的源代码达到了一次编写,处处编译,处处运行的目的。这只是一个简单的编程技法,并没有什么难度。
交叉编译,顾名思义,我们可以在一个平台下面编译出其它平台下面可以运行的程序,这需要用到交叉编译器,其实对于编程人员来说更是没有什么技术含量。
我们知道操作系统下面的硬件是各种各样的,然后将各种各样的硬件统一成一个标准的接口,达到了一次编写程序,各个硬件上运行的目的。那么我们可以想象得出,是否有一个标准的软件或什么,将Windows、Linux以及mac这三种平台再封装一下,达到一次编写程序、一次编译、处处运行的目的呢?当然有,那就是著名的Java虚拟机和dot net框架,这样的跨平台是一个伪跨平台,因为还是需要在操作系统上安装Java虚拟机或者dot net 框架的软件。 - BIOS及引导:BIOS存储在计算机主板中,它主要的一个作用是对计算机硬件的检测(比如键盘、内存、硬盘等),另一个主要功能是对操作系统进行引导,能够让操作系统运行起来。
网友评论