linux系统有什么用处(linux操作系统的特点)
我们经常傻傻的分不清楚linux内核和linux操作系统。对redhat、centos和ubuntu等更是稀里糊涂。今天我们介绍一下关于linux的相关概念、发展历史及linux操作系统的整体架构。
关于linux的技术及其它问题欢迎大家进圈子讨论,目前圈子是完全免费的!!!
由于普通文章无法修改,但技术文章不可避免的会出现一些错误,修改在所难免,因此本号稍后会将文章同步到专栏当中。专栏中的文章正确性更强,系统性也更强。
什么是linux及内核
在1991年,有个名为linus torvalds的学生在互联网上发布了一个名为linux的操作系统。说它是操作系统是因为它实现了对计算机核心硬件的管理。但是它有不能称为一个真正的或者说可用于生产的操作系统,因为它只实现了对计算机资源的简单管理(也就是实现了一个操作系统内核),却没有编译工具等其它操作系统必备的工具集成到其中。
图1 linus torvalds大神
在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个发行版了。
图2 linux发行版时间线
linux发行版很多,下面简单的介绍比较流行的发行版。
redhat发行版
red hat linux是由red hat公司发布的一个linux发行版。red hat linux可算是一个“中年”的linux发布包,其1.0版本于1994年11月3日发布。red hat linux应该是业界应用最多的操作系统了,很多其它发行版都是基于该发行版,例如centos和oracle linux等等。
图3 redhat发行版
centos发行版
centos发行版是一个red hat linux的开源版本。它是来自于red hat linux依照开放源代码规定释出的源代码所编译而成。由于red hat linux本身是一个商业操作系统,因此很多企业在使用是存在诸多不便,这些企业就转移到centos上来。
图4 centos发行版
red hat和centos等操作系统发行版主要应用在企业服务中,更多的应用在服务端业务中,比如web服务和云计算等等。
ubuntu发行版
ubuntu最早是一个基于dibian的桌面版发行版。ubuntu基本上可以代替windows实现日常办公,因为其发行版中包含日常办公常用的所有软件,比如邮件客户端,开源office套件等等我们能想到的工具。而且这些工具都是免费的。
图5 ubuntu发行版
下面是ubuntu桌面版的一个桌面截图,可以看出其跟windows或则macos很像,美观度也是很赞的。
图6 ubuntu桌面
ubuntu发展很快,目前除了桌面版外还有服务版和云计算版等其它版本,几乎涵盖了所有的应用领域。
suse发行版
suse是德国 suse linux ag公司发行维护的linux发行版,是属于此公司的注册商标。第一个版本出现在1994年年初,也是比较早的发行版之一。2004年这家公司被novell公司收购。
图7 suse发行版
我们只介绍了比较主流的发行版。linux的发行版还很多,很难全部介绍。最后我们总结一下几个关键发行版的时间线以及linux社区的比较重要的几个大事件,具体如图所示。当然,这里面不仅仅包括linux操作系统本身,还包括编译器和git版本控制工具等等。
图8 linux30件大事
linux操作系统整体架构
前面我们介绍了操作系统不仅仅包含内核,内核只是操作系统的基础,实现了对硬件资源的管理。操作系统的组件通常包括如下几部分:
- 操作系统内核
- 系统库
- 系统工具集
基于上述关键组件,用户可以使用该操作系统,或者基于该操作系统开发自己的应用程序。如图4为linux操作系统架构简图。从这张图中我们可以看出操作系统与硬件及应用软件间的关系。下面我们分别介绍一下各部分含义和作用。
图4 linux整体架构
linux内核(kernel)
内核时操作系统最核心,最基础的部分。它实现了对计算机硬件的管理,并且对上层提供接口。这里的接口包括开发接口和管理接口等等。通常来说有两者类型的操作系统内核,它们是微内核和宏内核。
微内核,正如其名字一样,它只包含最基础的功能特性。在微内核操作系统中只提供了非常简单的软件,包括内存管理,进程管理和进程通信等等特性。
宏内核,宏内核不仅仅提供内存管理、进程管理和通信的特性,还包含很多驱动程序。而且,这些驱动程序通常是可以动态的加载和卸载。
系统库
操作系统不能自嗨,其最重要的是为上层提供抽象的接口,这样开发人员才能开发应用程序,从而利用计算机资源。其中系统库就是操作系统提供的抽象接口,也就是开发接口或者系统api。类似的接口很多,比如访问文件系统的api,网络套接字api或者进程管理api等等。
系统程序(工具集)
系统工具集其实就是操作系统自带的一些软件。这些软件主要实现对操作系统的管理和监控等功能。比如对操作系统网络状态的查看(ifconfig),磁盘格式化和磁盘负载监控等等。类似的工具很多,本文不再赘述。
上面只是简单的介绍了一下linux操作系统的几个核心组件,其实linux的整体架构要复杂的多。单纯从linux内核的角度,它要管理cpu、内存、网卡、硬盘和输入输出等设备,因此内核本身分为进程调度,内存管理,虚拟文件系统,网络接口等4个核心子系统。
图5 linux子系统架构
由于篇幅有限,本文不可能对上述子系统进行更加详细的介绍。更多,更深入的介绍我们后面专门进行介绍。更多精彩内容请关注本号及圈子。