zoukankan      html  css  js  c++  java
  • Linux是什么

    一、Linux是什么

      Linux是运行在计算机上的,所以它必是一个软件,并且这个软件是操作系统而非应用程序。

    【关于操作系统】

    计算机是由一堆硬件所组成的,为了更有效地控制这些硬件资源,于是乎就产生了操作系统。

    操作系统:①有效地控制这些硬件资源的分配;②提供计算机需要的功能(如网络功能);③提供一整组系统调用接口来给软件程序员开发用,这是为了给程序员提供更容易开发软件的环境。

      因为Linux是一套操作系统,则Linux就是内核系统调用接口那两层(可参考上篇博客中的图)。

      我们知道内核与硬件的关系十分紧密,并且早期的Linux是针对386来开发的,由于Linux只是一套操作系统并不含有其他的应用程序,因此很多工程师在下载了Linux内核并且实际安装之后,就只能看着计算机开始运行了。接下来这些高级工程师为了自己的需求,再在Linux上面安装它们所需要的软件。

      Torvalds先生在写出Linux的时候,该内核仅能“驱动386所有的硬件”而已,即所谓的“让386计算机开始运行,并且等待用户指令输入”而已。事实上,当时能够在Linux上面跑的软件还很少嘞!

      由于不同硬件的功能函数并不相同(例如IBM的Power CPU与Intel的x86架构),所以同一套操作系统无法在不同的硬件平台上面运行。例如,在x86上跑的那套操作系统就不能在Power CPU上运行,如果我们要使这套系统能够在Power CPU上运行,就得要将该操作系统进行修改(参考硬件的功能函数并修改我们的操作系统程序代码)。

      Linux是Open Source(开放源代码)的操作系统,所以它的程序代码可以被修改进而可以在各种机器上面运行。

      Linux提供了一个完整的操作系统当中最底层的硬件控制资源管理的完整框架,这个架构是沿袭Unix良好的传统而来的,所以相当稳定并且功能强大。此外,由于这个优良的架构可以在个人计算机(x86系统)上面跑,所以很多的软件开发者渐渐将他们的工作重心转移到这个架构上面,因此Linux操作系统也有很多的应用软件。

      虽然Linux仅是其内核与内核提供的工具,不过由于内核、内核工具与这些软件开发者提供的软件的整合,使得Linux成为一个更完整的、功能强大的操作系统。

    二、Torvalds的Linux开发

    1. Minix

      Linus Torvalds(托瓦兹)很小便接触了汇编语言,这是一种直接与芯片“对谈”的程序语言,也就是低级语言。托瓦兹大学期间接触到了Unix操作系统,但他那个大学只有一部最新的Unix系统,同时仅提供16个终端机。早期的计算机仅有主机具有运算功能,终端机仅负责提供输入/输出而已。这种情况下,托瓦兹光是等待使用Unix的时间就很耗时。为此,托瓦兹不禁想到:“我何不自己搞一部UNIX来玩?”

      然而,要写内核程序,谈何容易。不过当时有一个与UNIX类似的Minix系统,它不仅与UNIX完全兼容,还可以在Intel386机器上运行。于是,托瓦兹在购买了最新的Intel386的个人计算机后,就立即安装了Minix操作系统。由于Minix这个操作系统是有附上源码的,所以托瓦兹也经由这个源码学习到了很多的内核程序设计的设计概念!

    2. 初次释出Linux 0.02

      托瓦兹发现Minix虽然很棒,但是发布者不愿意进行功能的加强,这导致工程师在操作系统功能上面欲求不满。这使托瓦兹萌发了新的想法:“我何不自己来改写一个我想要的操作系统?”

      于是,托瓦兹便开始了内核程序的编写。

      编写程序需要:①能够进行工作的环境;②可以将源码编译成为可执行文件的编译程序。好在有GNU项目提供的bash工作环境软件以及gcc编译程序等自由软件,托瓦兹才得以顺利编写内核程序。

      托瓦兹参考Minix的设计理念与书上的程序代码,然后仔细研究出386个人计算机的性能优化,然后使用GNU的自由软件将内核程序代码与386紧紧地结合在一起,最终写出他所需要的内核程序。

      这个小玩意竟然真的可以在386上面顺利地运行,还可以读取Minix的文件系统。不过还不够,托瓦兹希望这个程序可以获得大家的一些修改建议,于是他将这个内核放置在网络上供大家下载,同时贴了一则消息:“他说,他完成了一个小的操作系统,这个内核是用在386机器上的,同时,他真的仅是为了好玩,并非想要做一个跟GNU一样大的项目!另外,他希望能够得到更多人的建议与回馈来开发这个操作系统!” 这则新闻引起很多人的注意,他们也去托瓦兹提供的网站上下载了这个内核来安装。有趣的是,因为托瓦兹放置内核的那个FTP网站的目录为Linux,所以大家便称这个内核为Linux了。

    注意:此时的Linux就是那个Kernel,另外,托瓦兹所丢到该目录下的第一个内核版本为0.02。

      此刻,托瓦兹将一些能够在UNIX上面运行的软件拿来在Linux上运行。不过,他发现有很多软件并不能在Linux这个内核上运行。这个时候,他选择了修改Linux,让Linux符合软件能够运作的规范。

      于是托瓦兹开始参考标准的POSIX规范。

    POSIX是可携式操作系统接口的缩写,重点在于规范内核与应用程序之间的接口,这是由美国电气与电子工程师学会(IEEE)所发布的一项标准!

      这个正确的决定让Linux在起步的时候体质比别人优良,因为POSIX标准主要是针对UNIX与一些软件运行时候的标准规范,只要依据这些标准规范来设计内核与软件,理论上,就可以搭配在一起执行了。而Linux的开发就是依据这个POSIX的标准规范,UNIX上的软件也是遵循这个规范来设计的,如此一来,就很容易让UNIX上的软件在Linux上运行了。

    3. 虚拟团队的产生

      尽管托瓦兹将发布的Linux内核放置在FTP上面,并告知大家新的版本信息,等到用户下载了这个内核并且安装之后,如果发生问题,或者是由于特殊要求需要某些硬件的驱动程序,那么这些用户就会主动反馈给托瓦兹,在托瓦兹能够解决的问题范围内,他都能很快地进行Linux内核的更新与排错。但是,托瓦兹总是有些硬件无法取得,那么他自然无法帮助进行驱动程序的编写与相关软件的改良。这个时候,就会有些志愿者站出来说:“这个硬件我有,我来帮忙写相关的驱动程序。”

      因为Linux的内核是Open Source的,志愿者很容易就能够跟随Linux的原本设计框架,并且写出兼容的驱动程序或者软件。对于志愿者写完的驱动程序与软件,托瓦兹首先会将该驱动程序/软件带入内核中,并且加以测试。只要测试可以运行,并且没有什么主要的大问题,那么他就会很乐意将这些程序代码加入内核中。

      总之,托瓦兹对于Linux内核所欠缺的项目,他总是持“先求有且能运行,再求进一步改善”的心态!这让Linux用户与志愿者得到相当大的鼓励!因为Linux的进步太快了,用户要求虚拟内存,结果不到一个星期推出的新版Linux就有了!这不得不让人佩服!

      因为存在这种随时都有程序代码加入的状况,于是Linux便逐渐开发成具有模块的功能,即将某些功能独立于内核外,在需要的时候才加载到内核中。如此一来,如果有新的硬件驱动程序或者其他协议的程序代码进来时,就可以模块化,这大大增加了Linux内核的可维护能力!

    内核是一组程序,如果这组程序每次加入新功能都得要重新编译与改版的话会如何?想象一下,如果你只是换了显卡就得要重新安装新的Windows操作系统,会不会傻眼?模块化之后,原本的内核程序不需要变动,你可以直接将它想成是“驱动程序”即可。

    【内核功能细部分工开发阶段】

      后来,因为Linux内核加入了太多的功能,光靠托瓦兹一个人进行内核的实际测试并加入内核源程序实在太费力,于是就有很多朋友站出来帮忙完成这个前置作业!这些重要的助手会先将志愿者的修补程序或者新功能的程序代码进行测试,并且将结果上传给托瓦兹看,让托瓦兹作最后内核加入的源码的选择与整并!

      这群素未谋面的虚拟团队们在1994年终于完成了Linux的内核正式版Version 1.0,这一版本同时还加入了X Window System的支持。又于1996年完成了2.0版。

      由于Linux是托瓦兹针对386机器写的,所以跟386硬件的相关性很强。所以,早期的Linux确实是不具有移植性的。不过,大家知道Open Source的好处就是:可以修改程序代码去适合作业的环境。因此,在1994年后,Linux便被开发到很多的硬件上面去了!目前,除了x86之外,IBM、HP、Sun等公司的硬件也都有被Linux所支持。

    4. Linux的内核版本

      Linux的内核编号类似于如下格式:2.6.18-92.e15(主版本.次版本.释出版本-修改版本)

      如前所述,因为开发Linux内核太频繁了,但对于一般家庭计算机或企业单位应用的话,常变动的内核并不适合。因此,托瓦兹便将内核的开发趋势分为两股,并根据这两个内核的开发分别给予不同的内核编号:

    • 主、次版本为奇数:开发中版本

      如2.5.xx,这种内核版本主要用在测试与开发新功能,所以通常这种版本只有内核开发工程师会使用。如果有新增的内核程序代码,会加到这种版本中,等到众多工程师测试没问题后,才加入下一版的稳定内核中。

    • 主、次版本为偶数:稳定版本

      如2.6.xx,等到内核功能开发成熟后会加到这类的版本中,主要用在一般家庭计算机以及企业版本中。重点在于提供用户一个相对稳定的Linux作业环境平台。 

    5. Linux distributions

      由托瓦兹负责开发的Linux仅具有Kernel与Kernel提供的工具,再加上很多的软件已经可以在Linux上运行了,因此,“Linux+各种软件”就可以完成一个相当完整的操作系统了。不过,当时一般用户尚没有能力使用到Linux。

      为了让用户能够接触到Linux,很多商业公司就将Linux Kernel(含tools)与可运行的软件集成起来,加上自己具有创意的工具程序,这个工具程序可以让用户以光盘、DVD或者通过网络直接安装/管理Linux系统。这个“Kernel + Softwares + Tools”的可完全安装的系统,我们称之为Linux distribution,一般中文翻译成可完全安装套件,或者Linux发布商套件等,如下图所示:

    由于Linux内核是由黑客工程师写的,要由源码安装到x86计算机上面成为可执行的二进制文件,这个过程不是人人都会的,所以早期确实只有工程师对Linux有兴趣。一直到一些团队与商业公司将Linux内核配合自由软件,并提供完整的安装程序,且制成DVD/光盘后,使得一般用户也能够安装Linux并使用。

      由于GNU的GPL授权并非不能从事商业行为,于是很多商业公司便专门来销售Linux distribution。而鉴于Linux的GPL版权声明,因此,商业公司所销售的Linux distribution通常也都可以从Internet上下载。

      每个Linux distributions使用的都是Kernel都是Linux官网发布的,所以各大Linux distributions的唯一差别可能就是其开发者自家所开发出来的管理工具以及套件管理的模式。所以说,我们可以根据自己使用Linux的目的选择相应的版本(比如我用于个人的桌面计算机,我就选择Ubuntu)。

    三、Linux的特色

    1.Linux的特色

    自由与开放的使用与学习环境:因为Linux是基于GPL的授权之下,所以它是自由软件,也就是任何人都可以自由使用或者修改其中的源码。

    配置需求低廉:Linux对系统硬件要求很低。

    内核功能强大而稳定:Linux功能并不会输给一些大型的UNIX工作站,甚至IBM与Sun公司都有推出Linux服务器。

    独立作业:由于很多的软件套件都在Linux这个操作系统上面进行开发与测试,因此Linux已经可以独立完成几乎所有的工作站或服务器的服务(例如Web, Mail, FTP等)。

      总结一下,Linux的几个闪光点:①它是“Free”的,就是可以自由取得的操作系统;②它是开放性的系统,也就是能随时取得程序的源码(这对于程序开发工程师很重要);③它功能很强大;④它对硬件的需求很低。

    2. 关于授权

      现在市面上的自由软件(有些收钱)、专利软件(有些免费)难以分辨,我们接下来仅谈一下两种授权模式。

    【Open Source(开放源码)】

      软件以Open Source的方式发布时,表示除了可执行的软件本身外,一定伴随着源码的释出。

    【Close Source】

      相对于Open Source的软件会释出源码,Close Source的程序则仅推出可执行的二进制程序而已。

      这种软件的优点是有专人维护,我们无需改动它。这也是所谓商业软件(Copyright)常见的软件出售方式。

    四、温故知新

    • 计算机主要以二进制为单位,而目前常用的磁盘容量单位为B,其换算单位为1B = 8bit,其他的以1024为其倍数,如1GB = 1024MB等。
    • 操作系统主要用于管理与驱动硬件,因此必须要能够管理内存、管理设备、负责进程管理以及系统调用等。因此,只要能够让硬件准备妥当,就是一个很棒的操作系统。
    • 操作系统的重点仅在驱动与管理硬件,而在使用硬件时,就得需要通过应用软件或者是shell的功能,来调用操作系统操纵硬件工作。因此,目前操作系统除了上述功能外,通常已经包含了日常工作所需的应用软件在内了。
    • UNIX的前身是由贝尔实验室的Ken Thompson利用汇编语言写成的,后来在1971~1973年间由Dennis Ritchie以C程序语言进行改写,才称为UNIX。
    • 1984年由Richard Stallman提倡GNU项目,倡导自由软件(Free Software),强调其软件可以自由地取得、复制、修改与再发行,并规范出GPL授权模式,任何GPL软件均不可单纯仅销售其软件,也不可修改软件授权。
    • 1991年由Linus Torvalds开发出Linux操作系统。简而言之,Linux成功的地方主要在于Minix(UNIX)、GNU、Internet、POSIX及虚拟团队的产生。
    • Linux本身就就是个了不起的操作系统,其开发网站设立在http://www.kernel.org,我们称Linux操作系统最底层的数据为“内核”(Kernel)。
    • 目前Linux内核的开发分为两种版本,分别是稳定版本的偶数版,如2.6.x;另一种是开发中版本的奇数版,如2.5.x 。
    • Linux distributions是“Linux Kernel + Free Software + Documentations(Tools) + 可完全安装的程序”所制成的一套完整的系统。

     

  • 相关阅读:
    使用nacos遇到的一些问题
    nodejs连接redis集群
    redis集群部署
    mongodb集群部署
    Mongodb删除重复数据
    docker exception
    .NET Code WebApi CentOS部署
    .NET Core 在Visual Studio Code的基本操作命令
    Mongodb对内嵌数组的增删改
    System.Web.Optimization
  • 原文地址:https://www.cnblogs.com/xzxl/p/7455728.html
Copyright © 2011-2022 走看看