一、Windows操作系统克服了CPU以为的硬件差异
计算机的硬件并不仅仅是由CPU组成的,还包括用于存储程序指令的数据和内存,以及通过I/O连接的键盘、显示器、硬盘、打印机等外网设备
在Windows软件中,键盘输入、显示器输出等并不是直接向硬件发送指令。而是通过向Windows发送指令实现的。因此,程序员就不用注意内存和I/O地址的不同构成了。
Windows操作的是硬件而不是软件,软件通过操作Windows系统可以达到控制硬件的目的
二、不同操作系统的API差异性
接下来我们看一下操作系统的种类。同样机型的计算机,可安装的操作系统类型也会有多种选择。例如:AT兼容机除了可以安装Windows之外,还可以采用 Unix 系列的 Linux 以及 FreeBSD(也是一种Unix操作系统)等多个操作系统。当然,应用软件则必须根据不同的操作系统类型来专门开发。CPU的类型不同,所对应机器的语言也不同,同样的道理,操作系统的类型不同,应用程序向操作系统传递指令的途径也不同
应用程序向系统传递指令的途径称为 API(Application Programming Interface)。Windows 以及Linux操作系统的API,提供了任何应用程序都可以利用的函数组合。因为不同操作系统的API是有差异的。所以,如何要将同样的应用程序移植到另外的操作系统,就必须要覆盖应用所用到的API部分
键盘输入、鼠标输入、显示器输出、文件输入和输出等同外围设备进行交互的功能,都是通过API提供的
这也就是为什么 Windows 应用程序不能直接移植到Linux 操作系统上的原因,API差异太大了
在同类型的操作系统下,不论硬件如何,API几乎相同。但是,由于不同种类CPU的机器语言不同,因此本地代码也不尽相同
三、FreeBSD Port 帮你轻松使用源代码
既然CPU在不同会导致本地代码不同,那为何不将源代码直接发送给程序呢?Unix系列的 FreeBSD 操作系统就使用了这种方式
Unix系列操作系统 FreeBSD中,存在一种名为 Ports 的机制。该机制能够结合当前运行环境的硬件环境来编译应用的源代码,进而得到可以运行的本地代码。如果目标应用的源代码在硬件上找不到,Ports就会自动使用 FTP 连接到相应站点下载代码
FreeBSD 的 Ports机制:
全球很多站点都提供使用于 FreeBSD的应用源代码。通过使用 Ports 可以利用的程序源代码,大约有16000种。根据不同的领域进行分类,可以随时使用
FreeBSD上应用的源代码,大部分使用C语言来标注的 ,C编译器 可以结合 FreeBSD的运行环境来生成合适的本地代码
FTP(File Transfer Protocol)是连接到互联网上的计算机之间的传送文件的协议