《【基础】Linux系统结构详解.docx》由会员分享,可在线阅读,更多相关《【基础】Linux系统结构详解.docx(9页珍藏版)》请在第一文库网上搜索。
1、【基础】Linux系统结构详解没关注?伸出手指点这里-Linux系统一般有4个主要部分:内核、sheik文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。1. linux 内核内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图:系统调用接口 : SCI层提供了某些机制执行从用户空间到内核的函数调用。这个接口依赖于体系结构,甚至在相
2、同的处理器家族内也是如此。SCI实际上是一个非常有用的函数调用多路复用和多路分解服务。在./linux/kernel中您可以找到SCI的实现,并在./linux/arch中找到依赖于体系结构的部分。1.内存管理对任何一台计算机而言,其内存以及其它资源都是有限的。为了让有限的物理内存满足应用程序对内存的大需求量,Linux采用了称为虚拟内存的内存管理方式。Linux将内存划分为容易处理的内存页(对于大部分体系结构来说都是4KB )。Linux包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。不过内存管理要管理的可不止4KB缓冲区。Linux提供了对4KB缓冲区的抽内核通过SCI提供了
3、一个应用程序编程接口( API)来创建一个新进程(fork、exec 或 Portable Operating System Interface POSIX函数),停止进程(kill, exit),并在它们之间进行通信和同步(signal或者POSIX机制)。3 .文件系统和DOS等操作系统不同,Linux操作系统中单独的文件系统并不是由驱动器号或驱动器名称(如A:或C:等)来标识的。相反,和UNIX操作系统一样,Linux操作系统将独立的文件系统组合成了一个层次化的树形结构,并且由一个单独的实体代表这一文件系统。Linux将新的文件系统通过一个称为挂装或挂上的操作将其挂装到某个目录上,从而让
4、不同的文件系统结合成为一个整体。Linux操作系统的一个重要特点是它支持许多不同类型的文件系统。Linux中最普遍使用的文件系统是Ext2 ,它也是Linux 土生土长的文件系统。但Linux也能够支持FAT、VFAT、FAT32、MINIX等不同类型的文件系统,从而可以方便地和其它操作系统交换数据。由于Linux支持许多不同的文件系统,并且将它们组织成了一个统一的虚拟文件系统.虚拟文件系统(VirtualFileSystem,VFS ):隐藏了各种硬件的具体细节,把文件系统操作和不同文件系统的具体实现细节分离了开来,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件
5、系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。虚拟文件系统(VFS )是Linux内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。VFS在SCI和内核所支持的文件系统之间提供了一个交换层。即VFS在用户和文件系统之间提供了一个交换层。VFS在用户和文件系统之间提供了一个交换层:在VFS上面,是对诸如open、close, read和write之类的函数的一个通用API抽象。在VFS下面是文件系统抽象,它定义了上层函数的实现方式。它们是给定文件系统(超过50个)
6、的插件。文件系统的源代码可以在./linux/fs中找到。文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要时就可用)优化了对物理设备的访问。缓冲区缓存之下是设备驱动程序,它实现了特定物理设备的接口。因此,用户和进程不需要知道文件所在的文件系统类型,而只需要象使用Ext2文件系统中的文件一样使用它们。4 .设备驱动程序设备驱动程序是Linux内核的主要部分。和操作系统的其它部分类似,设备驱动程序运行在高特权级的处理器环境中,从而可以直接对硬件进行操作,但正因为如此,任何一个设备驱动程序的错误都可
7、能导致操作系统的崩溃。设备驱动程序实际控制操作系统和硬件设备之间的交互。设备驱动程序提供一组操作系统可理解的抽象接口完成和操作系统之间的交互,而与硬件相关的具体操作细节由设备驱动程序完成。一般而言,设备驱动程序和设备的控制芯片有关,例如,如果计算机硬盘是SCSI硬盘,则需要使用SCSI驱动程序,而不是IDE驱动程序。5 .网络接口( NET)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。众所周知,TCP/IP协议是Internet的标准协议,同时也是事实上的工业标准。Linux的网络实现支持BSD套接字,支持
8、全部的TCP/IP协议。Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。1.2 . linux shelshell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。目前主要有下列版本的shell。1 . Bourne Shell :是贝尔实验室开发的。2 . BASH :是GNU的Bourne Again S
9、hell z是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shelL3 . Korn Shell :是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。4 .C Shell :是SUN公司Shell的BSD版本。3 . linux文件系统文件系统是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如 EXT2、EXT3、FAT、FAT32、VFAT 和 ISO9660。3.1 文件类型Linux下面的文件类型主要有:1)普通文件:C语言元代码、SHELL脚本、二进制的可执行文件等。分为纯文本和二进制。2
10、)目录文件:目录,存储文件的唯一地方。3)链接文件:指向同一个文件或目录的的文件。4)设备文件:与系统外设相关的,通常在/dev下面。分为块设备和字符设备。5 )管道(FIFO)文件:提供进程通信的一种方式6 )套接字(socket)文件:该文件类型与网络通信有关可以通过Is -I, file, stat几个命令来查看文件的类型等相关信息。3.2 Linux 目录文件结构是文件存放在磁盘等存贮设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。Linux使用标准的目录结构,在安装的时候,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定
11、了每个目录的作用和其中的文件类型。完整的目录树可划分为小的部分,这些小部分又可以单独存放在自己的磁盘或分区上。这样,相对稳定的部分和经常变化的部分可单独存放在不同的分区中,从而方便备份或系统管理。目录树的主要部分有root, /usr、/var、/home等(图2 )。这样的布局可方便在Linux计算机之间共享文件系统的某些部分。Linux采用的是树型结构。最上层是根目录,其他的所有目录都是从根目录出发而生成的。微软的DOS和windows也是采用树型结构,但是在DOS和windows中这样的树型结构的根是磁盘分区的盘符,有几个分区就有几个树型结构,他们之间的关系是并列的。最顶部的是不同的磁盘
12、(分区),如:C , D , E , F等。但是在linux中,无论操作系统管理几个磁盘分区,这样的目录树只有一个。从结构上讲,各个磁盘分区上的树型目录不一定是并列的。3.3 Linux磁盘分区一、主分区,扩展分区和逻辑分区:linux分区不同于windows,硬盘和硬盘分区在Linux都表示为设备.硬盘分区一共有三种:主分区,扩展分区和逻辑分区。硬盘的分区主要分为主分区(Primary Partion)和扩展分区(Extension Partion)两种,主分区和扩展分区的数目之和不能大于四个。主分区(Primary Partion):可以马上被使用但不能再分区。扩展分区(Extension
13、 Partion):必须再进行分区后才能使用,也就是说它必须还要进行二次分区。逻辑分区(Logical Partion):由扩展分区建立起来的分区。逻辑分区没有数量上限制。扩展分区只不过是逻辑分区的容器,实际上只有主分区和逻辑分区进行数据存储。二、Linux下硬盘分区的标识硬盘分区的标识一般使用/dev/hda-zX或者/dev/sda-zX来标识,其中a-z代表硬盘号,X代表硬盘内的分区号。整块硬盘分区的块号标识:Linux下用hda、hdb、sda. sdb等来标识不同的硬盘;其中:IDE 接口硬盘:表示为/dev/hda1、/dev/hdb .;SCSI接口的硬盘、SATA接口的硬盘表示
14、为/dev/sda、/dev/sdb;硬盘内的分区:如果X的值是1到4,表示硬盘的主分区(包含扩展分区);逻辑分区从是从5开始的,比如/dev/hda5肯定是逻辑分区了 ;例如:用hdak hda2、hda5、hda6来标识不同的分区。其中,字母a代表第一块硬盘,b代表第二块硬盘,依此类推。而数字1代表一块硬盘的第一个分区、2代表第二个分区,依次类推。1到4对应的是主分区(Primary Partition)或扩展分区(Extension Partition)o从5开始,对应的都是硬盘的逻辑分区(LogicalPartition)o 一块硬盘即使只有一个主分区,逻辑分区也是从5开始编号的,这点
15、应特别注意。总结:一个硬盘分区首先要确认在哪个硬盘,然后再确认它所在硬盘内的哪个分区。对于/dev/hda类似的表示方法,也并不陌生吧;我们在Linux通过fdisk -I就可以查到硬盘是/dev/hda还是/dev/hdb ;rootlocalhost # fdisk -IDisk /dev/hda: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/hda1 * 1 970 7791493+ 7 HPFS/NTFS/dev/hda2 971 9729 70356667+ 5 Extended/dev/hda5 971 291 5 1 5623181 b W95 FAT32/dev/hda6 2916 4131 9767488+ 83