首页 理论教育 Linux简介:嵌入式系统应用

Linux简介:嵌入式系统应用

时间:2023-11-23 理论教育 版权反馈
【摘要】:由于Unix 具有丰富的应用程序,当今绝大多数操作系统都将满足POSIX 1003.1标准作为实现目标,Linux 也不例外,它完全支持POSIX 1003.1 标准。3)采用页式存储管理与大多数操作系统一样,Linux 支持页式存储管理。其原理与嵌入式Linux 内核功能定制是一致的,这样做是为了使用的通用性。这样就方便了高级用户对Linux 的特殊需求。

Linux简介:嵌入式系统应用

Linux 最初是在1991 年由一名芬兰学生Linus Torvalds 开发的,早期的Linux 不成熟、性能较低,后来一个由Linus Torvalds 领导的内核开发小组对Linux 内核进行了完善。 这使Linux 在短期内就成为一个稳定、成熟的操作系统。 Linux 的开发都是在GNU 组织的GPL(GNU Public License)的版权控制下进行的,因此Linux 内核的所有源代码都采取开放源码的方式。 由于其开放性,Linux 吸引了大批软件编程人员,并逐步形成了数以千万计的开发、应用群体,这使Linux 很快就成长为了一个可以与微软Windows 相抗衡的操作系统。 Linux 是开放源代码的操作系统,实现了真正的多任务、多用户环境,并且对硬件配置的要求相当低,支持多种处理器。

(1)Linux 的基本特征

Linux 是个人计算机和工作站上的类UNIX 操作系统。 它继承了UNIX 的基本特征且在许多方面都超过了UNIX 的性能。 它具有以下基本特征:

1)符合POSIX 1003.1 标准

POSIX 1003.1 标准定义了一个最小的Unix 操作系统接口,只有符合这一标准,才可以运行Unix 程序。 由于Unix 具有丰富的应用程序,当今绝大多数操作系统都将满足POSIX 1003.1标准作为实现目标,Linux 也不例外,它完全支持POSIX 1003.1 标准。 另外,Linux 还增加了部分System V 和BSD 的系统接口,使得Unix System V 和BSD 上的程序能直接在Linux 上运行,从而使Linux 成为一个完善的Unix 程序开发系统。

2)支持多用户访问和多任务编程

Linux 是一个真正的多用户、多任务操作系统,它不仅允许多个用户同时访问系统且不会造成用户之间的相互干扰,而且每一个用户可以创建多个进程,并使各个进程协同工作来完成用户的需求。

3)采用页式存储管理

与大多数操作系统一样,Linux 支持页式存储管理。 它能使Linux 能更有效地利用物理存储空间,页面的换入换出为用户提供了更大的存储空间。

4)支持动态链接

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

5)支持多种文件系统

Linux 能支持多种文件系统,常见的文件系统有:EXT、EXT2、XIAFS、ISOFS、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT 和JFFS。 Linux 最常用的文件系统是EXT2,它是EXT 文件的改进版本,它的文件名长度可达255 字符,支持最大可达4 000 GB的磁盘分区。 它使用了块组的概念,一个块组就对应一个逻辑文件系统,这样使数据的读写更快、文件系统不易产生碎片且系统变得更安全可靠。

6)支持TCP/IP、SLIP 和PPP

在Linux 中,用户可以使用所有的网络服务,如网络文件系统、远程登录等。 Linux 支持Internet 使用的互联网参考模型TCP/IP 协议,通过配置可以使用户畅游Internet。 SLIP(Serial Line Internet Protocol 串行线路互联网络协议)和PPP(Point to Point Protocol 点对点协议)能支持串行线上的TCP/IP 协议的使用,使用户可用一个高速Modem 通过电话线连入Internet网中。

(2)Linux 的组成部分

Linux 一般有四个主要部分:内核、Shell、文件结构和实用工具。 为了对Linux 的内核进行“量体裁衣”(这是嵌入式的特点),下面将介绍Linux 内核编译。 其原理与嵌入式Linux 内核功能定制是一致的,这样做是为了使用的通用性。

1)Linux 内核

内核包括内核抽象和对硬件资源的间接访问,它负责管理内存、管理磁盘上的文件,负责启动系统并运行程序,负责从网络上接收和发送数据包,接收用户的命令并去执行,等等。 内核程序执行效率的高低、稳定与否直接影响到整个操作系统的运行状况,因而它是操作系统的灵魂。 简而言之,内核实际上是从抽象的资源操作到具体硬件操作细节之间的接口。

2)Linux Shell

Shell 是系统的用户界面,提供了用户与内核进行交互命令接口。 它接收用户输入的命令并将它送入内核去执行。

事实上Shell 是一个命令解释器,它负责解释由用户输入的命令并且将它们送到内核,是环绕在内核外层的操作系统和用户间的接口(shell 即“外壳”),而且Shell 有自己的编程语言来编辑命令,它允许用户编写由shell 命令组成的程序。 Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell 程序和其他应用程序达到的效果是一样的。 这样就方便了高级用户对Linux 的特殊需求。

Linux 提供了像Microsoft Windows 那样的可视化的图形用户界面(GUI)——X Window。它提供了许多窗口管理器,其操作就像Windows 一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。 现在比较流行的窗口管理器是KDE 和GNOME。

Linux 的用户界面或Shell 可以自行配置,以满足不同Linux 用户的不同需要。 与Linux一样,Shell 也有多种版本,目前Shell 主要有下列版本:

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

②BASH:是GNU 的Bourne Again Shell,是GNU 操作系统上默认的shell。

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

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

3)Linux 文件结构

文件结构是文件存放在磁盘等文件存储设备上的组织方法,主要体现在对文件和目录的组织上。 目录提供了管理文件的一个方便而有效的途径。 用户能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度等。 在Linux 中,一个分离的文件系统不是通过设备标识(如驱动器号或驱动器名)来访问,而是将它合到一个单一的目录树结构中,通过目录来访问,这一点与Unix 十分相似。 Linux 目录采用多级树形结构,用户可以浏览整个系统,可以进入任何一个已授权允许进入的目录,访问那里的文件。 使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。 文件结构的相互关联性使共享数据变得容易,几个用户可以访问同一个文件。 Linux 是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时称为系统目录。

内核、Shell 和文件结构一起形成了基本的操作系统结构。 它们使得用户可以运行程序,管理文件以及使用系统。 此外,Linux 操作系统还有许多被称为实用工具的程序,辅助用户完成一些特定的任务。

4)Linux 实用工具

标准Linux 系统都有一套称为“实用工具”的程序,它们是专门提供某种服务的程序,例如,编辑器、执行标准的计算操作等。 用户也可以编程产生自己的工具。

实用工具通常有三类:(www.xing528.com)

①编辑器

编辑器用于编辑文件。 Linux 的编辑器主要有Ed、Ex、Vi 和Emacs。 Ed 和Ex 是行编辑器,Vi 和Emacs 是全屏编辑器。

②过滤器

过滤器用于数据的接收并过滤数据。 Linux 的过滤器读取从用户文件或其他地方的输入,检查和处理数据,然后输出结果,也就是对输入文件的数据进行了过滤。 过滤器的输入可以是一个文件,可以是用户从键盘输入的数据,还可以是另一个过滤器的输出。 Linux 有不同类型的过滤器,它们可以完成不同的功能。 有的过滤器用行编辑命令输出一个被编辑的文件,有的过滤器则按模式寻找文件并以这种模式输出部分数据,还有一些执行字处理操作,检测文件的格式,输出一个格式化的文件。 此外,用户可以编写自己的过滤器程序。

③交互程序

交互程序是用户与机器的通信接口,允许用户发送信息或接收来自其他用户的信息。Linux 是一个多用户系统,它可以和所有用户保持联系。 信息可以由系统上的不同用户发送或接收。 信息的发送有两种方式:一种方式是两个用户进行一对一地链接对话,另一种方式是一个用户与多个用户同时链接进行通信,即所谓“广播式通信”。

5)Linux 内核编译

由于源代码的开放性,在广大爱好者的支持下,Linux 内核版本不断更新。 新的内核修订了旧内核的bug,并增加了许多新的特性。 用户如果想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

更新的内核具有更好的进程管理能力,支持更多的硬件,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等。 因此,经常性地升级更新系统内核是使用Linux 的必要操作内容。

1)内核编译模式

要增加对某部分功能的支持(比如网络),可以将相应部分编译到内核中,也可以将该部分编译成模块,动态加载。 如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动就可以直接使用这部分功能;但这样会使内核变得庞大,无论是否需要这部分功能,它都会存在,这就是Windows 惯用的招数,建议经常使用的部分直接编译到内核中(比如网卡)。 如果编译成模块,就会生成对应的“.o”文件,在使用时可以动态加载,优点是不会使内核过分庞大,缺点是用户自己来调用这些模块。

Linux 内核版本发布的官方网站是http:∥www.kernel.org。 可以通过Intenet 下载并解压缩到指定的目录,然后进行编译工作。

2)内核编译

通常需要运行的第一个命令:

#cd /usr/src/linux

#make mrproper

该命令确保源代码目录下没有不正确的“.o”文件以及文件的互相依赖。 由于使用下载的完整的源程序包进行编译,所以本步骤可以省略。 而如果多次使用了这些源程序编译内核,最好要先运行一下这个命令。

确保/usr/include/目录下的asm、linux 和scsi 等链接是否指向了要升级的内核源代码。若没有这些链接,就需要手工创建,按照下面的步骤进行:

这是配置中非常重要的一部分。 删除/usr/include 下的asm、linux 和scsi 链接后,再创建新指向新内核源代码目录下的同名的目录的链接,这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。

接下来的内核配置过程比较烦琐,但是配置是否适当与日后Linux 的运行直接相关,在此不作介绍,详细请参见配置帮助文件。

配置内核可以根据需要使用下面的命令之一:

①#make config(基于文本的最为传统的配置界面,不推荐使用)

②#make menuconfig(基于文本选项的配置界面,字符终端下推荐使用)

③#make xconfig(基于图形窗口模式的配置界面,X Window 下推荐使用)

④#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)

四个命令中,make xconfig 的界面最为友好,如果可以使用X Window,就推荐使用这个命令。 make menuconfig 比make config 好一些,如果不能使用X Window,可以使用make menuconfig。

选择相应的配置时,有三种选择,它们各自代表的含义如下:

Y——将该功能编译进内核

N——不将该功能编译进内核

M——将该功能编译成在需要时可以动态插入到内核的模块

如果使用的是make xconfig,可以使用鼠标选择对应的选项。 如果使用的是make menuconfig,则需要使用空格键进行选取。 在每一个选项前都有个括号,但有的是中括号有的是尖括号,还有一种圆括号。 用空格键选择时,中括号里要么是空,要么是“*”,而尖括号里可以是空,“*”和“M”。 这表示前者对应的项要么不要,要么编译到内核里;后者则多了一种选择,可以编译成模块。 而圆括号的内容是要在所提供的几个选项中选择一项。

在编译内核的过程中,最繁杂的事就是配置工作,很多新手都不清楚到底该如何选取这些选项。 在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。 选择的原则是将与内核其他部分关系不大且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减少内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选,与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。 至于选项,因为比较复杂,编译时应视具体情况,参考帮助的内容再加以选择。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈