Linux是一个主要运行于PC机的UNIX克隆系统,它不仅具备UNIX系统的全部特征,而且与POSIX标准兼容。Linux的功能包括真正的多任务、虚拟内存、共享库、需求装载、共享的写时复制程序执行、优秀的内存管理以及TCP/IP网络支持等。它的发行遵守GNU的通用公共许可证。而Windows NT操作系统却和Linux有着完全不同的开发模式和发展历史。下面对两种操作系统进行一些比较。

  ■ 进程管理及调度:Linux开销较小
  在进程管理及调度方面,Linux是一个单块式的操作系统,操作系统通常在用户进程的内存空间内进行,可免去发生系统调用时的进程切换开销。Windows NT是一个准微内核操作系统,许多功能以单独的进程实现,从而提高了系统的模块化程度,但进程切换上的开销要大一些。

  Linux支持内核级的线程,但它将线程定义为进程的另一个“执行上下文”,从而简化了进程/线程之间的关系和调度程序的设计,它的线程库提供了和POSIX兼容的线程同步机制。Windows NT支持的线程是典型的进程/线程模型。它的线程同步机制和Linux类似。Linux中进程是基本的调度单位,它提供了三种调度策略。

  ■ 进程间通信机制:Linux更灵活
  在进程间通信机制上,Linux提供了标准的UNIX IPC机制,而Windows NT则在基本IPC机制的基础上,提供了许多直接面向应用程序的高级IPC机制。从本质上看,Linux的IPC机制接近于IPC原语,比较底层,提供了最大的灵活性,也可以在此基础上建立更加复杂的高级IPC机制,而Windows NT在原语级提供的IPC机制有管道、命名管道、消息传递、共享内存、信号量等。

  ■ 内存管理:Linux优于Windows NT
  在内存管理上,Linux 和Windows NT在面对相同的进程地址空间大小时,对内存布局的使用方式不同。Windows NT实际只为进程准备了2GB弱的可用虚拟地址空间,而Linux中的进程地址空间使用更灵活些。

  在虚拟内存的使用上,Linux内核为用户管理了非常多的细节问题,用户可以认为自己真正拥有4GB地址空间,而不用关心虚拟内存是否提交物理存储等问题。Windows NT则为程序员提供了多种虚拟内存使用方案,虽然这些方案的使用有些复杂,但却提供了一定程度上的灵活性。它也支持DOS和Win16程序的执行,但为了提供这种兼容性,它的内存管理付出了极高的性能代价。

  Linux 和Windows NT虽然均提供了内存共享技术,但它们的实现有些细微的差别。Linux提供给用户的接口非常简单,只需将自己的虚拟内存空间区域附加到共享内存对象之上。Windows NT则是通过内存映射文件提供共享内存机制,从使用上讲,略显复杂。

  Linux的内存交换管理灵活性很强,用户可以在普通的文件系统上建立“无洞”的文件作为交换空间,还可以使用多个交换文件,从而可以动态增加交换文件。它也提供了利用交换分区作为交换空间的方法,此方法是优选的交换空间方案。Windows NT的页面文件很难摆脱碎片化的危险,为了保证它采用无碎片的页面文件,必须采取一定的措施。

  Linux 和Windows NT在高速缓存的使用上有一些共同之处,均尽量采用系统的全部空闲RAM作为高速缓存区域,但Linux在高速缓存管理上有一些独到之处,这是它性能之所以高的根本原因所在。

  ■ 安全性:Linux具有一定优势
  在安全性方面,Linux采用的是UNIX在安全性方面成功的技术,尽管有一些安全漏洞,但因为设计上的开放性,这些漏洞能够在很快的时间内发现并得到解决。Windows NT虽然采用的ACL技术,更加复杂和严密,但因为其密码加密步骤过于简单,密码容易被破解。安全性设计上的不公开性也导致其有很多安全上的漏洞。
本站文章仅代表作者观点,本站仅传递信息,并不表示赞同或反对.转载本站点内容时请注明来自-Linux伊甸园。如不注明,将根据《互联网著作权行政保护办法》追究其相应法律责任。

--------------------next---------------------