细说Linux
扫描二维码
随时随地手机看文章
我们经常糊涂地将Linux内核与Linux操作系统区分开。对 Redhat、CentOS和Ubuntu更加晕头转向。 今天,我们介绍Linux操作系统的相关概念、开发历史和总体架构。
什么是Linux及内核
在1991年,有个名为Linus Torvalds的学生在互联网上发布了一个名为Linux的操作系统。说它是操作系统是因为它实现了对计算机核心硬件的管理。但是它有不能称为一个真正的或者说可用于生产的操作系统,因为它只实现了对计算机资源的简单管理(也就是实现了一个操作系统内核),却没有编译工具等其它操作系统必备的工具集成到其中。
在Linux的早期,Linux这个名词其实就是Linux操作系统内核的简称。Linux内核并非操作系统而是实现了对计算机硬件的管理,是操作系统的基座,通常包括如下几个方面:
内存管理进程管理,其实就是对CPU的管理设备管理,例如鼠标,键盘等文件管理,也就是对硬盘等存储设备的管理,抽象为文件系统网络设备管理,网络设备可以看作一个特例
由于Linux内核开源且免费的特点,越来越多的公司和个人参与到Linux内核的开发当中。而且很多开源项目也移植到Linux之上,这样Linux逐渐丰满起来。
慢慢的,很多公司在Linux内核的基础上增加了开发工具和应用软件,将Linux内核和这些用户态的软件打包成为一个操作系统安装镜像,这个系统称为Linux操作系统,或者称为Linux发行版。这个Linux操作系统就好像Windows系统一样,普通用户可以使用它进行日常工作。
Linux发行版很多,比如我们见的比较多的有Ubuntu、Redhat和Suse等等,非常之多。对于传统概念,操作系统应该是一个具备完整功能的系统,它不仅仅包括内核,还要包括很多应用软件。因此,后来逐渐将Linux的含义由Linux转换为Linux操作系统,而Linux的内核则用"Linux内核"作为称呼,以便于进行区分。
Linux操作系统及各种发行版
前面我们简要的介绍了Linux操作系统、内核和发行版。对于Linux操作系统来说,其本身是一个整体,包括Linux内核、系统库和系统程序,Linux内核是其最基础的部分,它实现了对硬件资源的管理,并且提供了使用这些硬件资源的通用接口。
自1991年发布LInux内核来,很多公司加入其中,在内核的基础上构建了自己的操作系统版本,比如Redhat、Debian和Suse等等。如图2是从1991年到2007年间Linux发行版的演化情况(高清图请私信, linuxtl)。可以看出,到2007年已经有不少于20个发行版了。
Linux发行版很多,下面简单的介绍比较流行的发行版。
Redhat发行版
Red HatLinux是由Red Hat公司发布的一个Linux发行版。Red Hat Linux可算是一个“中年”的Linux发布包,其1.0版本于1994年11月3日发布。Red Hat Linux应该是业界应用最多的操作系统了,很多其它发行版都是基于该发行版,例如CentOS和Oracle Linux等等。
CentOS发行版
CentOS发行版是一个Red Hat LInux的开源版本。它是来自于Red Hat Linux依照开放源代码规定释出的源代码所编译而成。由于Red Hat Linux本身是一个商业操作系统,因此很多企业在使用是存在诸多不便,这些企业就转移到CentOS上来。
Red Hat和CentOS等操作系统发行版主要应用在企业服务中,更多的应用在服务端业务中,比如Web服务和云计算等等。
Ubuntu发行版
Ubuntu最早是一个基于Dibian的桌面版发行版。Ubuntu基本上可以代替Windows实现日常办公,因为其发行版中包含日常办公常用的所有软件,比如邮件客户端,开源Office套件等等我们能想到的工具。而且这些工具都是免费的。
下面是Ubuntu桌面版的一个桌面截图,可以看出其跟Windows或则MacOS很像,美观度也是很赞的。
Ubuntu发展很快,目前除了桌面版外还有服务版和云计算版等其它版本,几乎涵盖了所有的应用领域。
Suse发行版
Suse是德国 SuSE Linux AG公司发行维护的Linux发行版,是属于此公司的注册商标。第一个版本出现在1994年年初,也是比较早的发行版之一。2004年这家公司被Novell公司收购。
我们只介绍了比较主流的发行版。Linux的发行版还很多,很难全部介绍。最后我们总结一下几个关键发行版的时间线以及Linux社区的比较重要的几个大事件,具体如图所示。当然,这里面不仅仅包括Linux操作系统本身,还包括编译器和Git版本控制工具等等。
Linux操作系统整体架构
前面我们介绍了操作系统不仅仅包含内核,内核只是操作系统的基础,实现了对硬件资源的管理。操作系统的组件通常包括如下几部分:
操作系统内核系统库系统工具集基于上述关键组件,用户可以使用该操作系统,或者基于该操作系统开发自己的应用程序。如图4为Linux操作系统架构简图。从这张图中我们可以看出操作系统与硬件及应用软件间的关系。下面我们分别介绍一下各部分含义和作用。
Linux内核(Kernel)
内核时操作系统最核心,最基础的部分。它实现了对计算机硬件的管理,并且对上层提供接口。这里的接口包括开发接口和管理接口等等。通常来说有两者类型的操作系统内核,它们是微内核和宏内核。
微内核,正如其名字一样,它只包含最基础的功能特性。在微内核操作系统中只提供了非常简单的软件,包括内存管理,进程管理和进程通信等等特性。
宏内核,宏内核不仅仅提供内存管理、进程管理和通信的特性,还包含很多驱动程序。而且,这些驱动程序通常是可以动态的加载和卸载。
系统库
操作系统不能自嗨,其最重要的是为上层提供抽象的接口,这样开发人员才能开发应用程序,从而利用计算机资源。其中系统库就是操作系统提供的抽象接口,也就是开发接口或者系统API。类似的接口很多,比如访问文件系统的API,网络套接字API或者进程管理API等等。
系统程序(工具集)
系统工具集其实就是操作系统自带的一些软件。这些软件主要实现对操作系统的管理和监控等功能。比如对操作系统网络状态的查看(ifconfig),磁盘格式化和磁盘负载监控等等。类似的工具很多,本文不再赘述。
上面只是简单的介绍了一下Linux操作系统的几个核心组件,其实Linux的整体架构要复杂的多。单纯从Linux内核的角度,它要管理CPU、内存、网卡、硬盘和输入输出等设备,因此内核本身分为进程调度,内存管理,虚拟文件系统,网络接口等4个核心子系统。