Linux的主要特点及结构

Linux的主要特点

  作为一个操作系统,Linux几乎满足当今Unix操作系统的所有要求,因此,它具有Unix操作系统的基本特征。
1.符合POSIX 1003.1标准
   POSIX 1003.1标准定义了一个最小的Unix操作系统接口,任何操作系统只有符合这一标准,才有可能运行Unix程序。Unix具有丰富的应用程序,当今绝 大多数操作系统都把满足POSIX 1003.1标准作为实现目标,Linux也不例外,它完全支持POSIX 1003.1标准。

2.支持多用户访问和多任务编程
  Linux是一个多用户操作系统,它允许多个用户同时访问系统而不会造成用户之间的相互干扰。另外,Linux还支持真正的多用户编程,一个用户可以创建多个进程,并使各个进程协同工作来完成用户的需求。

3.采用页式存储管理
  页式存储管理使Linux能更有效地利用物理存储空间,页面的换入换出为用户提供了更大的存储空间。

4.支持动态链接
   用户程序的执行往往离不开标准库的支持,一般的系统往往采用静态链接方式,即在装配阶段就已将用户程序和标准库链接好,这样,当多个进程运行时,可能会 出现库代码在内存中有多个副本而浪费存储空间的情况。Linux 支持动态链接方式,当运行时才进行库链接,如果所需要的库已被其它进程装入内存,则不必再装入,否则才从硬盘中将库调入。这样能保证内存中的库程序代码是 唯一的。

5.支持多种文件系统
  Linux能支持多种文件系统。目前支持的文件系统有:EXT2、EXT、XIAFS、 ISOFS、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、AFFS。Linux最 常用的文件系统是EXT2,它的文件名长度可达255字符,并且还有许多特有的功能,使它比常规的Unix文件系统更加安全。

6.支持TCP/IP、SLIP和PPP
  在Linux中,用户可以使用所有的网络服务,如网络文件系统、远程登录等。SLIP和PPP能支持串行线上的TCP/IP协议的使用,这意味着用户可用一个高速Modem通过电话线连入Internet网中。

除了上述基本特征外, Linux还具有其独有的特色:

   支持硬盘的动态Cache 这一功能与MS-DOS中的Smartdrive相似。所不同的是,Linux能动态调整所用的Cache存储器的大小,以适合当前存储器的使用情况,当 某一时刻没有更多的存储空间可用时,Cache将被减少,以增加空闲的存储空间,一旦存储空间不再紧张,Cache的大小又将增加。

   支持不同格式的可执行文件 Linux具有多种模拟器,这使它能运行不同格式的目标文件。其中,DOS(DOSEMU)和MS-Windows(WINE),iBCS2模拟器能运行 SCO Unix的目标程序。(iBCS2模拟器不是Linux标准核心的一部分,但可从ftp.informatik.huberlin.de: /pub/os/linux下载)

Linux的结构

Linux的主要构成 :
  Linux主要由存储管理、进程管理、文件系统、进程间通信等几部分组成,在许多算法及实现策略上,Linux借鉴了Unix的成功经验,但也不乏自己的特色。

1.存储管理 :

   Linux采用页式存储管理机制,每个页面的大小随处理机芯片而异。例如,Intel 386处理机页面大小可为4KB和2MB两种,而Alpha处理机页面大小可为8KB、16KB、32KB和64KB。页面大小的选择对地址变换算法和页 表结构会有一定的影响,如Alpha的虚地址和物理地址的有效长度随页面尺寸的变化而变化,这种变化必将在地址变换和页表项中有所反映。
  
   在Linux中,每一个进程都有一个比实际物理空间大得多的进程虚拟空间,为了建立虚拟空间和物理空间之间的映射,每个进程还保留一张页表,用于将本进 程空间中的虚地址变换成物理地址。页表还对物理页的访问权限作出了规定,定义了哪些页可读写,哪些页是只读页,在进行虚实变换时,Linux将根据页表中 规定的访问权限来判定进程对物理地址的访问是否合法,从而达到存储保护的目的。

  Linux存储空间分配遵循的是不到有实际需要的时候 决不分配物理空间的原则。当一个程序加载执行时,Linux只为它分配了虚空间,只有访问某一虚地址而发生了缺页中断时,才为它分配物理空间,这样就可能 出现某些程序运行完成后,其中的一些页从来就没有装进过内存。这种存储分配策略带来的好处是显而易见的,因为它最大限度地利用了物理存储器。

   尽管Linux对物理存储器资源的使用十分谨慎,但还是经常出现物理存储器资源短缺的情况。Linux有一个名为kswapd的进程专门负责页面的换 出,当系统中的空闲页面小于一定的数目时,kswapd将按照一定的淘汰算法选出某些页面,或者直接丢弃(页面未作修改),或者将其写回硬盘(页面已被修 改)。这种换出方式不同于较旧版本Unix的换出方式,它是将一个进程的所有页全部写回硬盘。相比之下,Linux的效率更高。

2.进程管理

   在Linux中,进程是资源分配的基本单位,所有资源都是以进程为对象来进行分配的。 在一个进程的生命期内,它会用到许多系统资源,会用CPU运行其指令,用存储器存储其指令和数据,它也会打开和使用文件系统中的文件,直接或间接用到系统 中的物理设备,因此,Linux设计了一系列的数据结构,它们能准确地描述进程的状态和其资源使用情况,以便能公平有效地使用系统资源。Linux的调度 算法能确保不出现某些进程过度占用系统资源而导致另一些进程无休止地等待的情况。

  进程的创建是一个十分复杂的过程,通常的做法需为子 进程重新分配物理空间,并把父进程空间的内容全盘复制到子进程空间中,其开销非常大。为了降低进程创建的开销,Linux采用了 Copyonwrite技术,即不拷贝父进程的空间,而是拷贝父进程的页表,使父进程和子进程共享物理空间,并将这个共享空间的访问权限置为只读。当 父进程和子进程的某一方进行写操作时,Linux检测到一个非法操作,这时才将要写的页进行复制。这一做法免除了只读页的复制,从而降低了开销。

3.文件系统 :

  Linux最重要的特征之一就是支持多个不同的文件系统,前面我们已经看到,Linux目前支持的文件系统多达十余种,随着时间的推移,这一数目还在不断增加。

   在Linux中,一个分离的文件系统不是通过设备标识(如驱动器号或驱动器名)来访问,而是把它合到一个单一的目录树结构中,通过目录来访问,这一点与 Unix十分相似。Linux用安装命令将一个新的文件系统安装到系统单一目录树的某一目录下,一旦安装成功,该目录下的所有内容将被新安装的文件系统所 覆盖,当文件系统被卸下后,安装目录下的文件将会被重新恢复。

  Linux最初的文件系统是Minix。该文件系统对文件限制过多,并 且性能低下,如文件名长度不能超过14个字符、文件大小不能超过64MB。为了解决这些问题,Linux的开发者们设计了一个Linux专用的文件系统 EXT。EXT对文件的要求放松了许多,但在性能上并没有大的改观,于是就有了后面的EXT2文件系统。EXT2文件系统是一个非常成功的文件系统,它无 论是对文件的限制还是在性能方面都大大优于EXT文件系统,所以,EXT2自从推出就一直是Linux最常用的文件系统。

  为了支持多种文件系统,Linux用一个被称为虚拟文件系统(VFS)的接口层将真正的文件系统同操作系统及系统服务分离开。VFS允许用户同时透明地安装多个不同的文件系统。
VFS掩盖了不同文件系统之间的差异,使所有文件系统在操作系统和用户程序看来都是等同的。

4.进程间通信:

  Linux提供了多种进程间的通信机制,其中,信号和管道是最基本的两种。除此以外,Linux也提供System V的进程间通信机制,包括消息队列、信号灯及共享内存。为了支持不同机器之间的进程通信,Linux还引入了BSD的Socket机制。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/rambler8139/archive/2006/10/09/1327181.aspx

你可能感兴趣的:(linux)