当前位置:松语文学 > 其他类型 >Linux实用培训教程合并版最新章节 > Linux实用培训教程合并版TXT下载
错误举报

第 32 章

  。Shell编程语言具有普通编程语

  言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有

  同样的效果。

  Linux提供了像Microsoft Windows那样的可视的命令输入界面--X Window的图形用户界面(GUI)。它提供

  了很多窗口管理器,其cāo作就象Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。现在比

  较流行的窗口管理器是KDE和GNOME。每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他

  们自己专门的Shell需要。同Linux本身一样,Shell也有多种不同的版本。

  目前主要有下列版本的Shell:

  Bourne Shell:是贝尔实验室开发的。

  BASH:是GNU的Bourne Again Shell,是GNUcāo作系统上默认的shell,大部分linux的发行套件使用的都是这

  种shell。

  Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。

  C Shell:是SUN公司Shell的BSD版本。

  网站:http://www.fywxw.com 88/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  Linux实用工具

  发布时间:2007-05-04 23:10:06

  标准的Linux系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算cāo作等

  。用户也可以产生自己的工具。实用工具可分三类:

  编辑器:用于编辑文件。

  过滤器:用于接收数据并过滤数据。

  jiāo互程序:允许用户发送信息或接收来自其他用户的信息。

  Linux的编辑器主要有:Ed、Ex、Vi和Emacs。Ed和Ex是行编辑器,Vi和Emacs是全屏幕编辑器。

  Linux的过滤器(Filter)读取从用户文件或其他地方的输入,检查和处理数据,然后输出结果。从这个意义

  上说,它们过滤了经过它们的数据。Linux有不同类型的过滤器,一些过滤器用行编辑命令输出一个被编辑的文

  件。另外一些过滤器是按模式寻找文件并以这种模式输出部分数据。还有一些执行字处理cāo作,检测一个文件

  中的格式,输出一个格式化的文件。 过滤器的输入可以是一个文件,也可以是用户从键盘键入的数据,还可以

  是另一个过滤器的输出。过滤器可以相互连接,因此,一个过滤器的输出可能是另一个过滤器的输入。在有些

  情况下,用户可以编写自己的过滤器程序。

  jiāo互程序是用户与机器的信息接口。Linux是一个多用户系统,它必须和所有用户保持联系。信息可以由系

  统上的不同用户发送或接收。信息的发送有两种方式,一种方式是与其他用户一对一地链接进行对话,另一种

  是一个用户对多个用户同时链接进行通讯,即所谓广播式通讯。

  网站:http://www.fywxw.com 89/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  Linux文件系统

  发布时间:2007-05-04 23:10:27

  文件结构是文件存放在磁盘等存储设备上的组织方法。一个文件系统的好坏主要体现在对文件和目录的组

  织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个目录切换到另一个目录,而且可以设置

  目录和文件的权限,设置文件的共享程度。

  使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。Linux目录采用多级

  树形结构,用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。

  文件结构的相互关联xìng使共享数据变得容易,几个用户可以访问同一个文件。Linux是一个多用户系统,cāo

  作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。

  内核,Shell和文件结构一起形成了基本的cāo作系统结构。它们使得用户可以运行程序,管理文件以及使用

  系统。此外,Linuxcāo作系统还有许多被称为实用工具的程序,辅助用户完成一些特定的任务。

  网站:http://www.fywxw.com 90/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  内核

  发布时间:2007-05-04 23:10:45

  内核、Shell、文件系统这三个部分构成了linux系统;

  Linux内核

  内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并

  把命令送给内核去执行。

  在dos系统下:内核command.com

  在windowscāo作系统中:NT核心

  在linuxcāo作系统中:kernel

  网站:http://www.fywxw.com 91/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  Linux内核结构详解

  Linux 内核源代码的结构

  发布时间:2007-05-04 23:11:11

  Linux内核源代码位于/usr/src/linux目录下。

  /include子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其他模块重建内核。

  /init 子目录包含了内核的初始化代码,这是内核工作的开始的起点。

  /arch子目录包含了所有硬件结构特定的内核代码。如:i386,alpha

  /drivers子目录包含了内核中所有的设备驱动程序,如块设备和SCSI设备。

  /fs子目录包含了所有的文件系统的代码。如:ext2,vfat等。

  /net子目录包含了内核的连网代码。

  /mm子目录包含了所有内存管理代码。

  /ipc子目录包含了进程间通信代码。

  /kernel子目录包含了主内核代码。

  网站:http://www.fywxw.com 92/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  Linux内核主要五个子系统详解

  发布时间:2007-05-04 23:11:37

  1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运

  行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行

  进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。

  2.内存管理(MM)允许多个进程安全的共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中

  运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,cāo作系统只是把当前使用的程序块保留在

  内存中,其余的程序块则保留在磁盘中。必要时,cāo作系统负责在磁盘和内存间jiāo换程序块。内存管理从逻辑

  上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的映shè和逻辑内存的对换;硬件相关的部分为

  内存管理硬件提供了虚拟接口。

  3.虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口

  ,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系

  统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

  4.网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网

  络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每

  一种可能的硬件设备都有相应的设备驱动程序。

  5.进程间通讯(IPC) 支持进程间各种通信机制。

  处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。一般情

  况下,当一个进程等待硬件cāo作完成时,它被挂起;当cāo作真正完成时,进程被恢复执行。例如,当一个进程

  通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被成功的发

  送出去以后,网络接口给进程返回一个代码,表示cāo作的成功或失败。其他子系统以相似的理由依赖于进程调

  度。

  网站:http://www.fywxw.com 93/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  各个子系统之间的依赖关系

  发布时间:2007-05-04 23:11:56

  进程调度与内存管理之间的关系:这两个子系统互相依赖。在多道程序环境下,程序要运行必须为之创建

  进程,而创建进程的第一件事情,就是将程序和数据装入内存。

  进程间通信与内存管理的关系:进程间通信子系统要依赖内存管理支持共享内存通信机制,这种机制允许

  两个进程除了拥有自己的私有空间,还可以存取共同的内存区域。

  虚拟文件系统与网络接口之间的关系:虚拟文件系统利用网络接口支持网络文件系统(NFS),也利用内存管

  理支持RAMDISK设备。

  内存管理与虚拟文件系统之间的关系:内存管理利用虚拟文件系统支持jiāo换,jiāo换进程(swapd)定期由调度

  程序调度,这也是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映shè被换出时,内存管理向文

  件系统发出请求,同时,挂起当前正在运行的进程。

  除了这些依赖关系外,内核中的所有子系统还要依赖于一些共同的资源。这些资源包括所有子系统都用到

  的过程。例如:分配和释放内存空间的过程,打印警告或错误信息的过程,还有系统的调试例程等等。

  网站:http://www.fywxw.com 94/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  系统数据结构

  发布时间:2007-05-04 23:12:18

  在linux的内核的实现中,有一些数据结构使用频度较高,他们是:

  task_struct.

  Linux内核利用一个数据结构(task_struct)代表一个进程,代表进程的数据结构指针形成了一个task数组(Linux

  中,任务和进程是相同的术语),这种指针数组有时也称为指针向量。这个数组的大小由NR_TASKS(默认为512)

  ,表明Linux系统中最多能同时运行的进程数目。当建立新进程的时候,Linux为新进程分配一个task_struct结构

  ,然后将指针保存在task数组中。调度程序一直维护着一个current指针,他指向当前正在运行的进程。

  Mm_struct

  每个进程的虚拟内存由一个mm_struct结构来代表,该结构实际上包含了当前执行映像的有关信息,并且包含了

  一组指向vm_area_struct结构的指针,vm_area_struct结构描述了虚拟内存的一个区域。

  Inode

  虚拟文件系统(VFS)中的文件、目录等均由对应的索引节点(inode)代表。每个VFS索引节点中的内容由文件系统

  专属的例程提供。VFS索引节点只存在于内核内存中,实际保存于VFS的索引节点高速缓存中。如果两个进程用

  相同的进程打开,则可以共享inade的数据结构,这种共享是通过两个进程中数据块指向相同的inode完成。

  网站:http://www.fywxw.com 95/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  Linux的具体结构

  发布时间:2007-05-04 23:12:38

  所谓具体结构是指系统实现的结构。

  Linux的具体结构类似于抽象结构,这种对应xìng是因为抽象结构来源于具体结构,我们的划分没有严格依照

  源代码的目录结构,且和子系统的分组也不完全匹配,但是,它很接近源代码的目录结构。

  尽管前面的讨论的抽象结构显示了各个子系统之间只有很少的依赖关系,但是具体结构的5个子系统之间

  有高度的依赖关系。我们可以看出,具体结构中的很多依赖关系并没有在抽象结构中出现。

  网站:http://www.fywxw.com 96/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程 第二部分作者:红联

  Linux内核源代码

  发布时间:2007-05-04 23:12:58

  目前,较新而又稳定的内核版本是2.4.x和2.6.x,因为版本不同稍有差别,因此如果你想让一个新的驱动程

  序既支持2.4.x,又支持2.6.x,就需要根据内核版本进行条件编译,要作到这一点,就要支持

  宏LINUX_VERSION_CODE,假如内核的版本用a.b.c来表示,这个宏的值就是216a+28b+c。要用到指定内核版本

  的值,我们可以用KERNEL_VERSION宏,我们也可以自己去定义它。

  对内核的修改用补丁文件的方式发布的。Patch实用程序用来用来对内核源文件进行一系列的修改。例如:

  你有2.2.9的源代码,但想移到2.2.10。就可以获得2.2.10的补丁文件,应用patch来修改2.2.9源文件。例如:

  $ cd /usr/src/linux

  $ patch -pl < patch-2.2.10

  网站:http://www.fywxw.com 97/153 制作于:2007-05-06 Powered by X-Space

  枫叶文学网www.fywxw.com

  枫叶文学网制作:Linux实用培训教程

  松语文学免费小说阅读_www.16sy.com