一、Linux之父——林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)
Linux操作系统最初是在1991年10月份由芬兰赫尔辛基大学的在校生Linus Torvalds所发布,最初被发布的LINUX0.02版本因其高质量的代码与开放源代码,迅速引起了一大批黑客的加入,而今虽然有数百计的 Linux发布版,但都依然统一使用Linus Torvalds.开发/维护的系统内核,Linux是具有类似Unix的程序界面与操作方法且继承了其稳定性(通常运行几年都不会宕机)。
二、什么是Linux
Linux 可大致划分为以下四部分:
1、Linux 内核
2、GNU 工具
3、图形化桌面环境
4、应用软件
1、Linux内核
Linux系统的核心是 内核 。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,
并根据需要执行软件。
内核主要负责以下四种功能:
1.1、系统内存管理
操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可
以创建和管理虚拟内存(即实际并不存在的内存)。
内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为 交换空间 ( swap space)。内核不
断地在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为它拥有比物
理内存更多的可用内存。
内存存储单元按组划分成很多块,这些块称作页面 ( page )。内核将每个内存页面放在物理
内存或交换空间。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存内,哪些页面
被换到了磁盘上。
内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间
区域(称为 换出 , swapping out )——即使还有可用内存。当程序要访问一个已被换出的内存页
面时,内核必须从物理内存换出另外一个内存页面给它让出空间,然后从交换空间换入请求的内
存页面。显然,这个过程要花费时间,拖慢运行中的进程。只要 Linux 系统在运行,为运行中的
程序换出内存页面的过程就不会停歇。
1.2、软件程序管理
Linux操作系统将运行中的程序称为 进程 。进程可以在前台运行,将输出显示在屏幕上,也
可以在后台运行,隐藏到幕后。内核控制着 Linux 系统如何管理运行在系统上的所有进程。
内核创建了第一个进程(称为 init 进程 )来启动系统上所有其他进程。当内核启动时,它会
将 init 进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一
块专有区域来存储该进程用到的数据和代码。
一些 Linux 发行版使用一个表来管理在系统开机时要自动启动的进程。在 Linux 系统上,这个
表通常位于专门文件 /etc/inittab 中。
Linux操作系统的 init 系统采用了运行级。运行级决定了 init 进程运行 /etc/inittab 文件或
/etc/rcX.d 目录中定义好的某些特定类型的进程。 Linux 操作系统有 5 个启动运行级。
运行级为 1 时,只启动基本的系统进程以及一个控制台终端进程。我们称之为 单用户 模式。
单用户模式通常用来在系统有问题时进行紧急的文件系统维护。显然,在这种模式下,仅有一个
人(通常是系统管理员)能登录到系统上操作数据。
标准的启动运行级是3 。在这个运行级上,大多数应用软件,比如网络支持程序,都会启动。
另一个 Linux 中常见的运行级是 5 。在这个运行级上系统会启动图形化的 X Window 系统,允许用
户通过图形化桌面窗口登录系统。
Linux系统可以通过调整启动运行级来控制整个系统的功能。通过将运行级从 3 调整成 5 ,系
统就可以从基于控制台的系统变成更先进的图形化 X Window 系统。
1.3、硬件设备管理
内核的另一职责是管理硬件设备。任何Linux 系统需要与之通信的设备,都需要在内核代码
中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之
间交换数据。在 Linux 内核中有两种方法用于插入设备驱动代码:
①编译进内核的设备驱动代码
② 可插入内核的设备驱动模块
以前,插入设备驱动代码的唯一途径是重新编译内核。每次给系统添加新设备,都要重新编
译一遍内核代码。随着 Linux 内核支持的硬件设备越来越多,这个过程变得越来越低效。不过好
在 Linux 开发人员设计出了一种更好的将驱动代码插入运行中的内核的方法。
开发人员提出了内核模块的概念。它允许将驱动代码插入到运行中的内核而无需重新编译内
核。同时,当设备不再使用时也可将内核模块从内核中移走。这种方式极大地简化和扩展了硬件
设备在 Linux 上的使用。
Linux 系统将硬件设备当成特殊的文件,称为 设备文件 。设备文件有 3 种分类:
1、字符型设备文件:
字符型设备文件是指处理数据时每次只能处理一个字符的设备。大多数类型的调制解调器和 终端都是作为字符型设备文件创建的。
2、块设备文件:
块设备文件是指处理数据时每次能处理大块数据的设备, 比如硬盘。
3、 网络设备文件:
网络设备文件是指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设
备。这个回环设备允许 Linux 系统使用常见的网络编程协议同自身通信。
1.4、文件系统管理
不同于其他一些操作系统,Linux 内核支持通过不同类型的文件系统从硬盘中读写数据。除
了自有的诸多文件系统外, Linux 还支持从其他操作系统(比如 Microsoft Windows )采用的文件
系统中读写数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。表 1-1 列出了
Linux 系统用来读写数据的标准文件系统。
2.核心GNU工具
GNU项目的主旨在于为 Unix 系统管理员设计出一套类似于 Unix 的环境。这个目标促使该项目
移植了很多常见的 Unix 系统命令行工具。供 Linux 系统使用的这组核心工具被称为 coreutils ( core
utilities)软件包。GNU coreutils软件包由三部分构成:用以处理文件的工具、用以操作文本的工具、用以管理进程的工具。
GNU/Linux shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文
件以及运行在 Linux 系统上的进程的途径。 shell 的核心是命令行提示符。命令行提示符是 shell 负责
交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。
shell包含了一组内部命令,用这些命令可以完成诸如复制文件、移动文件、重命名文件、显
示和终止系统中正运行的程序等操作。 shell 也允许你在命令行提示符中输入程序的名称,它会将
程序名传递给内核以启动它。
你也可以将多个shell 命令放入文件中作为程序执行。这些文件被称作 shell 脚本 。你在命令行
上执行的任何命令都可放进一个 shell 脚本中作为一组命令执行。这为创建那种需要把几个命令放
在一起来工作的工具提供了便利。
3.Linux 桌面环境
在Linux 的早期( 20 世纪 90 年代初期),能用的只有一个简单的 Linux 操作系统文本界面。这
个文本界面允许系统管理员运行程序,控制程序的执行,以及在系统中移动文件。
完成工作的方式不止一种,Linux 一直以来都以此而闻名。在图形化桌面上更是如此。 Linux
有各种图形化桌面可供选择。常见桌面有如下几种
1. X Window 系统
2. KDE 桌面
3. GNOME 桌面
4. Unity 桌面
5. 其他桌面