Windows是商业闭源操作系统的典型代表,而Linux是自由开源操作系统中的典型代表。二者在许多机制上都有所不同,是典型的异构操作系统。例如,在Windows操作系统中,提供给用户的编程接口被称为API(Application Programming Interface,应用程序编程接口),它是由操作系统实现的所有系统调用所构成的集合,而在Linux中,提供给用户的编程接口则是系统调用,从API的定义中可以看出,API是对系统调用的进一步封装。由于Windows和Linux同为操作系统,它们的存在都是为了弥补硬件和应用间的差距,因此尽管Windows和Linux之间存在差异,但仍然在大部分基本的功能实现上是对应的。例如,虽然在Linux中,基本执行单位是进程,而在Windows中,进程并不是基本的执行单位,它是容纳基本执行单位——线程的容器,但是在创建进程、终止进程、使用等待函数、退出进程等方面,Windows API所提供的功能是可以和Linux的系统调用直接映射的。
然而并非Windows中所有的功能实现都能在Linux中找到相应的对应实现,甚至可以说Windows中有很多功能在Linux中都没有明显的对应实现[117]。例如,在Windows中,内存管理强调由虚存管理和堆管理构成的两层结构,而在Linux中则并非如此;在Windows中,同步机制提供了“多对象同时等待和释放”这一避免死锁的功能,而在Linux中却找不到在语义上的相应实现。在Windows中,异步调用(asynchronous procedure call,APC)是通过线程的APC队列和线程的“可被警报的(Alertable)”状态相结合来实现的,即线程只有在进入“可被警报的”的状态或者是从挂起状态退出时才会执行APC,并且在没有进入这一状态时的APC会保存在APC队列中,而Linux中的信号机制则不具有这一特性。
在本节中,将分别从文件系统、内存管理、进程线程和同步这四大操作系统中最为基础且最为重要的四大功能模块入手进行分析,如图15 所示,建立两个操作系统之间系统调用的映射关系。(www.xing528.com)
图15 功能模块分解示意图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。