转载

【连载】嵌入式Linux开发教程:Linux内核

第1章 Linux操作系统简介

本章导读: 本章首先对 Linux发展简史进行简要介绍,然后对Linux内核进行了介绍,重点介绍了Linux内核的特点和功能,接着对Linux发行版进行介绍,并列举了一些典型的发行版;最后对嵌入式Linux进行了简要介绍,包括嵌入式Linux的特点和产品形态。

1.1 Linux内核

1.1.1简介

Linux是全球最受欢迎的开源操作系统。它是一个由C语言编写的,符合POSIX标准的类UNIX系统。

词条POSIX

POSIX是Portable Operating System Interface的缩写,表示可移植操作系统接口,它规定了操作系统应该为应用编程提供的接口标准。

词条UNIX

UNIX是一个强大的多用户、多任务分时操作系统,支持多种处理器架构,于1969年在AT&T的贝尔实验室开发。UNIX是商业操作系统,需要收费。

20世纪九十年代,由于当时UNIX的商业化,Andrew Tannebaum教授开发了Minix操作系统,用于教学和科研,并发布在Internet上,免费给全世界的学生使用。Minix具有UNIX的很多特点,但是不完全兼容。1991年,芬兰大学生Linus Torvalds为了给Minix用户设计一个比较有效的UNIX PC版本,写了一个“类Minix”的操作系统,并发布到了Minix新闻组,在众多支持者的帮助下,Linus推出了Linux第一个稳定版本。1991年11月份,Linux 0.10版本推出,次年12月份,Linux 0.11版本推出,并在发布网上免费供人们使用。Linux 0.13版本发布时,Linux已经非常接近于一种可靠、稳定的操作系统,Linus决定将0.13版本改称为0.95版本,到1994年3月,Linux发布了1.0版本。

  • Linus当时提交到Minix新闻组的原名并不是Linux,而是Freax,取自“Free”和“Unix”两个单词,为“免费的Unix”之意。但当时的管理员并不喜欢“Freax”这个名称,并以“Linus’s Minix”之意,将Freax放到了一个名为“Linux”的目录下,之后便一直用Linux这个名称。

Linux诞生、发展和壮大于网络,目前依然掌控于Linux社区,遍布全球数以万计的黑客和志愿者参与Linux开发,也有商业公司为Linux贡献代码。Linux内核核心开发队伍的领导者目前是Linus本人。

Linus其人

Linus Torvalds(1969.12.28 - ),芬兰赫尔辛基人。在1991年他还是一名大学生的时候,开发了Linux操作系统,在众多黑客的帮助和他的主持下,Linux操作系统蓬勃发展,他本人至今依然是Linux内核项目的核心和领导人物。他本人获奖无数,主要有:

  • 2014年,Linus获得2014 IEEE计算机先驱奖; 
  • 2012年,芬兰千禧年科技奖; 
  • 2012年,首批入驻“互联网名人堂”; 
  • 2011年,首届ITechLaw成就奖; 
  • 2004年,被评为世界最有影响力的人之一; 
  • 1998年,电子前哨基金会先锋奖。 
  • 除Linux操作系统之外,Linus还创建了目前最流行的版本控制系统Git。

Linux遵循GPL协议,允许任何人对代码进行修改或发行,包括商业行为。只要其遵守该GPL协议,所有基于Linux的软件也必须以GPL协议的形式发表,并提供源代码。

词条GPL

通用公共许可证”。只有GPL英文原版才具有法律效力。

在软件中采用了使用GPL协议的产品,该软件产品也必须采用GPL协议,即必须开源,这是GPL所谓的“传染性”。

获取Linux内核源码的网址为: http://www.kernel.org ,在这里能够下载各版本的内核源码,包括测试版和最新稳定版。

Linux的吉祥物是一只名叫Tux的企鹅,看起来像穿了一件晚礼服的企鹅,如下图。

Linux吉祥物创作于1996年,据说Linus被澳大利亚国家动物园的一只小企鹅轻轻咬了一下,于是就有了用企鹅做吉祥物的想法。

Tux全称tuxedo,但大多数人更倾向于另一种说法,说是Tux名字来源于“Torvalds UniX”。

Linux发音[’li:nэks],这也是Linus本人的发音,在不同语言里发音有差异,国内很大一部分人发音[’li:njuks]。

1.1.2 特点

Linux内核的重要特点

Linux是一个开放自由的操作系统内核,具有一些鲜明的特点:

1. Linux是一个一体化内核;

注:“一体化内核”是也称“宏内核”,是相对于“微内核”而言的。几乎所有的嵌入式和实时系统都采用微内核,如VxWorks、uC/OS-II、PSOS等。

2. 可移植性强。尽管Linus最初只为在X86 PC上实现一个“类UNIX”,后来随着加入者的努力,Linux目前已经成为支持硬件平台最广泛的操作系统;

注:目前已经在X86、IA64、ARM、MIPS、AVR32、M68K、S390、Blackfin、M32R等众多架构处理器上运行。

3. 是一个可裁剪操作系统内核。Linux极具伸缩性,内核可以任意裁剪,可以大至几十或者上百兆,可以小至几百K,运行的设备从超级计算机、大型服务器到小型嵌入式系统、掌上移动设备或者嵌入式模块,都可以运行;

4. 模块化。Linux内核采用模块化设计,很多功能模块都可以编译为模块,可以在内核运行中动态加载/卸载而无需重启系统;

5. 网络支持完善。Linux内核集成了完整的POSIX网络协议栈,网络功能完善;

6. 稳定性强。运行Linux的内核的服务器可以做到几年不用复位重启;

7. 安全性好。Linux源码开放,由众多黑客参与Linux的开发,一旦发现漏洞都能及时修复;

8. 支持的设备广泛。Linux源码中,设备驱动源码占了很大比例,几乎能支持任何常见设备,无论是很老旧的设备还是最新推出的硬件设备,几乎都能找到Linux下的驱动。

Linux操作系统的特点

以Linux内核为核心的操作系统具有如下特点:

(1)开放性

遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。

词条OSI

OSI是Open System Interconnection的缩写,意为开放系统互联,该模型由ISO(国际标准化组织)制定。模型把网络通信分为7层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

词条ISO

ISO是International Organization for Standardization的缩写,即国际标准化组织,该组织是由国家标准化机构组成的世界范围的联合会,现有140个成员国。ISO中央办事机构设在瑞士的日内瓦。

(2)多用户

Linux操作系统是一个真正的多用户操作系统;系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源有特定的权限,互不影响。

经常有初学者将Linux的多用户与Windows的多用户弄混淆,实际上两者的差别是很大的。Windows桌面同一时刻只允许一个用户登录,其余用户必须锁定;而Linux则允许多个用户同时登录。

(3)多任务

多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问处理器。

多任务实际上很常见,例如我们在编写文档的时候,还可以一边听歌,甚至还可以从网上下载资料。这至少就有文档处理、音乐播放和网络下载三个任务,相互互不影响,并且是同时运行的。

(4)良好的用户界面

Linux向用户提供了两种界面:用户界面和系统调用。

Linux的传统用户界面是基于文本的命令行界面,即Shell,它既可以联机使用,又可存在文件上脱机使用。Shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。

Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。

系统调用是提供给用户编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用。系统通过这个界面为用户程序提供低级、高效率的服务。

(5)设备独立性

Linux操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。Linux的设备独立性使得它具有高度适应能力,能够适应随时增加支持新设备。

设备独立性主要是对应用程序开发者来说的。例如,对应用开发者来说,系统自带的串口与USB串口的操作方式是一样的,都是串口设备,而不用关心这个串口设备实际对应的物理硬件是什么。

现代计算机都实现了设备独立特性。

(6)完善的网络功能

Linux内置完整的POSIX网络协议栈,在通信和网络功能方面优于其它操作系统。Linux为用户提供了完善的、强大的网络功能:

支持Internet。Linux免费提供了大量支持Internet的软件,使得用户能用Linux与世界上的其他人通过Internet网络进行通信。

网络文件传输。用户能通过一些Linux命令完成内部信息或文件的传输。

远程访问功能。Linux系统既允许本身通过网络访问远程的系统,也允许远程系统通过网络访问自身。

(7)可靠的系统安全

Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,为网络多用户环境中的用户提供了必要的安全保障。

(8)模块化

运行时可以根据系统的需要加载程序而无需重启系统。Linux的模块化极大地提高了Linux的可裁剪性和灵活性。

(9)良好的可移植性

Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境和任何平台上运行。目前已经成为支持平台最广泛的操作系统。

Linux内核移植分3个层次:体系结构级别移植、处理器级别移植和板级移植。对大多数开发者而言,只需进行板级移植。

正文到此结束
Loading...