zoukankan      html  css  js  c++  java
  • Linux(一):Linux操作系统

    Linux(一):Linux操作系统

    对于我们编程人员来讲,linux对于我们几乎已经是像windows对于普通用户一样,好像和同行交流说不会linux就像说不会用计算机一样羞耻。这里打算从头开始温故一遍linux的知识,仅是对个人的知识积累。

    Linux的由来

    开始记录之前,先回顾一个基本的概念,什么是操作系统?

    (手残作图,凑合着看……)

    操作系统的边界,是在计算机硬件之上,应用程序之下那部分,而我们平常所说的广义 linux,泛指的是内核部分,因为Linux被编写之初,仅仅是一个”驱动386所有硬件“的程序而已,只不过在后来的开源道路上,有很多既骚又优秀的程序员们呕心沥血,对其进行丰富,扩展,才有了现在的乌班图,红帽等等具体的操作系统。

    Linux之前的历史:

    早期计算机并不是现在这么普及,只有军事或者科研单位才有资格配备这种设备,在那个时候,写程序是件非常痛苦的事情,那时候的计算机,并没有现代化的输入系统和显示设备,那时候设计程序,只能将程序的信息打在读卡纸面上,再用读卡机将信息输入到计算机中,而且那时候的计算机,数量极少,而用的人又非常的多,人们想使用,只能排队等候。于是,这个时候,麻省理工学院发展了【兼容分时系统】,它可以让大型主机通过提供终端机以联机的方式进入主机,来利用主机的资源进行运算工作。它这个【兼容分时系统】可以算是近代操作系统的始祖。他可以让多个使用者在某一个段时间内分别使用CPU的资源,感觉上会觉得大家是同时使用计算机资源,事实是cpu在每个使用者的工作之间来回切换。

    就在这个时候,大神 Ken Thompson因为自己需要,就针对手上一部由DEC公司推出的PDP-7进行操作系统核心程序的撰写,好巧不巧,他的妻儿于八月份要外出探亲,Thompson便利用这个珍贵的一个月,用汇编语言(Assembler)写出了一组核心程序,同时包含一组核心工具程序,以及一个小小的文件系统,那个系统,就是后来鼎鼎大名的Unix的原型 !这个小小的文件系统有两个核心的概念:

    1、所有的程序或系统装置都是文件

    2、不管构建编辑器还是附属文件,所写的程序只有一个目的,即要有效的完成目标

    这第一条概念在后续的linux的发展中至关重要。

     

    由于Thompson写的这套系统十分好用,后来Thompson便与Ritchie合作,使用高级语言C语言重新改写这个系统的核心,最终命名为Unix,并正式发版。由于使用C语言为高级语言,相对于汇编需要与硬件的密切配合,Unix与硬件相关性就没有那么大了,这使得Unix具有了很高的可移植性,至此,操作系统的最初完整体登上舞台。

     

    Linux的诞生

    1981年,IBM公司推出了风靡全球的微型计算机——IBM PC。以后10年间,微型计算机的操作系统一直由微软公司的磁盘操作系统DOS主宰。此时,计算机硬件价格虽然逐年下降,但是软件价格仍然居高不下。苹果公司的MACS操作系统,可以说是当时性能最好的操作系统,但其天价高得没人能够轻易靠近。 当时的另一个计算机技术阵营就是UNIX环境,然而UNIX操作系统的经销商们把价格抬得极高,PC机用户根本无法涉足。不仅如此,获贝尔实验室授权、在大学中用于教学的UNIX源代码一直被小心地守卫者,不许公开。对于广大的PC用户,软件行业的供应商们始终没有给出有效的解决办法。

    “山穷水尽疑无路,柳暗花明又一村。”正当人们陷入困境时,计算机软件界出现了MINIX操作系统。与此同时,一本描述MINIX操作系统设计和实现原理的技术书也由AST公司推出。由于这本书写得非常详细,叙述得有条有理,于是,全世界的计算机爱好者几乎都开始阅读这本书,从中理解和学习操作系统的工作原理。包括后来的Linux操作系统的创始者、芬兰科学家林纳斯·托瓦尔兹也曾读过这本书。

    林纳斯从小就是一个不折不扣的计算机迷,也是一个自学成才的计算机“黑客”。1990年,他进入了芬兰赫尔辛基大学计算机科学系读书,当时陪伴他的是一台1984年制造的计算机。这个21岁的芬兰年轻人喜欢研究计算机技术,测试计算机的性能和操作权限。但当时,他缺少一个专业级的操作系统。幸好后来学校安装了一台运行Ultrix的MicroVAX计算机,但这台计算机只能容纳16个用户同时使用,为了上机,他有时不得不排队等候。  在学校上机需要长时间排队等待,林纳斯为了能更好地学习计算机知识,一气之下,干脆使用自己的圣诞节压岁钱和贷款,购买了一台386兼容电脑,同时从美国邮购了一套MINIX系统软件。就在等待MINIX软件的日子里,林纳斯认真学习了有关Intel 80386处理器的指令系统和其他硬件知识。为了能通过Modem拨号连接到学校的主机上,他使用汇编语言并利用80386处理器的多任务特性,编制出一个终端仿真程序。 

    此后,为了将自己原来计算机上的软件复制到新电脑上,他还为软盘驱动器、键盘等硬件设备编制出相应的驱动程序。通过学习和编程,他认识到MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统。在实践中林纳斯已积累了一些类似于操作系统的硬件设备驱动程序的代码。考虑到MINIX的诸多限制,他开始有了编制一个新操作系统的想法。

     此时GNU计划正在推进。所谓GNU,即是GNU's NOT UNIX免费软件。GNU计划是由自由软件基金会的董事长于1984年发起的。该计划要把UNIX系统的不足之处进行改进,使它成为一个优良的操作系统,并允许所有计算机用户自由地获得这个系统,免费获得这个系统的源代码,允许相互自由拷贝,用户在使用GNU软件的时候都能理直气壮地认为自己使用的是正版软件。GNU计划已经开发出许多工具软件,其中最受期盼的是GNU C编辑器。虽然GNU的免费操作系统HURD在开发中,但林纳斯已经等不及了。他通过修改终端仿真程序和硬件驱动程序,开始编制起自己的操作系统来。刚开始,他的目的很简单,只是为了学习Intel 386体系结构在保护模式运行方式下的编程技术。但随着林纳斯工作的深入,却完全改变了他的初衷。根据林纳斯在comp.os.minix新闻组上发布的消息,我们可以知道,他逐步从学习MINIX系统阶段发展到开发自己的系统的过程。从1991年4月起,林纳斯几乎花费全部时间研究MINIX—386系统,并且尝试着移植GNU的软件到该系统上。同年4月13日,他曾在comp.os.minix上发布消息,说自己成功地将bash移植到MINIX上,而且已经爱不释手,不能离开这个shell软件了。

    到了1991年10月5日,林纳斯在网上发布消息,正式向外宣布他自己开发的内核系统诞生了。他把内核代码放在当时芬兰最大的FTP网站的名为Linux,意为“林纳斯的Minix操作系统”的目录中,向全世界公布。岂知后来人们干脆就把他写的这个开源操作系统称为Linux。他在网上发布的这个消息,可以称为是Linux的诞生宣言,至今仍广为流传。消息发布日在10月5日,对Linux社区来说,是一个特殊的日子,许多后来的Linux新版本都选择在这个日子发布。

     

    到1994年发表Linux1.0的正式核心时候,大家要林纳斯设计一只吉祥物。他突然想到小时候去动物园被一只企鹅追着满地打滚还被咬一口的往事。  既然想不出其他吉祥物,干脆就将这支企鹅拿来当吉祥物算了。所以,这只企鹅就是现在我们常常看到的Linux的吉祥物。

    十几年过去了,经过时间的检验,Linux已经成为最近几年来最受瞩目的操作系统之一。它之所以会受到如此瞩目,是因为它在各方面都有自己的优势。  免费是Linux的最大优势所在,任何人都可以免费的使用或者是在修改其中的原始代码。这就是所谓的“开放性架构”,它对科学界来说是相当重要的。因为很多工程师由于特殊需求,常常需要修改系统的原始码,使该系统符合自己的需求。同时,由于Linux操作系统的良好性能,人们无需购买UNIX或者微软的操作系统而花费大量的钞票。

    除了免费,Linux对于硬件配备的需求低廉。如今的操作系统对硬件的要求越来越高,而Linux是基于X386开发的,因此任何X386或者是以上的机器都能运行起来。随着硬件的淘汰率不断提高,人们只需将手中一些过时的零件组装一下,就可以运行Linux操作系统了。

    虽然Linux的运行环境对硬件要求很低,但是它的功能并不会输给一些大型的UNIX工作站,因此,近年来越来越多的公司、团体或个人投入这一操作系统的开发与整合工作。Linux操作系统已经可以独立完成几乎所有的工作站火服务器的服务了,例如邮件、网站、代理服务等。

    与传统的Windows系统不同,Linux主机上可以同时允许多人同时工作,并且资源的分配较为公平,且比起传统Windows的单人假多任务系统要稳定得多。例如,你可以在一部Linux主机上面规划出不同等级的使用者,而且每个使用者登入系统时的工作环境都可以不相同,此外,还可以允许不同的使用者在同一个时间登入主机,同时使用主机的资源。

    正是因为Linux本身具有这么多的优点,因此当微软的操作系统逐步一统天下之时,Linux被用来与微软对抗,但是最终,因为其缺乏一个强大的引领者,所以在冲击微软在PC端的操作系统霸主地位时并没有成功,但是此时,刚刚崛起的谷歌把自己的搜索引擎完全建立在Linux之上。到了移动互联网时代,完全建立在Linux之上的谷歌安卓系统终于把微软打败。

  • 相关阅读:
    用java抓取网页信息!
    WPF之Binding对数据的转换(第五天)
    WPF读书笔记 x名称空间详解(第二天)
    WPF的UI布局(Layout)WPF读书笔记(第三天)
    WPF 数据绑定Bingding基础(第四天)
    WPF读书笔记(第一天)
    HelloWin程序(窗口与消息)
    django创建数据库表方法
    OpenSSH利用处理畸形长度密码造成的时间差,枚举系统用户(CVE20166210)
    ldap匿名访问测试脚本
  • 原文地址:https://www.cnblogs.com/TheGCC/p/14100016.html
Copyright © 2011-2022 走看看