Linux学习《解密之前世与今生》

    漆黑的夜里,室内的灯光白亮。静静的,理理思绪,想写点什么。享受着思考和兴奋。学习Linux系统有段时间,今天就和大家分享一下我的收获。

    在分享之前,提几个问题:

    第一:什么是Linux系统,它为什么会出现?

    第二:学习Linux系统,到底是学习些什么东西?

    OK,带着这几个问题,开始我们今天的解密之旅。

    最早计算机出现的时候是没有操作系统这么一说法的,后来人们发现,在使用计算机当中,人是最薄弱的一环,每一次为了让计算机运行程序,我们人需要把程序转换成机器可以理解的格式,而那个时候计算机的输入输出设备叫穿孔纸带。计算机运行很快,人在输入和读取结果是很慢。等磁带出现后,人们就想,把要运行的程序做成多个,然后顺序的放在磁带机上,让电脑能通过读磁带加载要运行的程序,这种叫做批处理系统(batch)。但是批处理系统有一个特性,计算机在某一时刻只能干一件事,单任务执行,cpu计算能力大量是闲置的。于是人们就想能不能多任务(multi tasks)执行,让计算机同一个时段运行多个程序。cpu只有一个,那么怎么让多个任务齐头并进呢?比如有三个任务,执行5秒钟第一个任务,不管有没有执行完,执行5秒钟第二个任务,接着执行5秒钟第三个任务,回过头来,第一个任务接着刚刚中断的位置继续执行。按时间切割cpu。为了让多任务跑起来,我们必须有个监控程序。

那时候就人在做这个项目,比如at&t的Bell实验室、MIT麻省理工人工智能实验室、GE通用电器(General Electric company)联合研发这么个监控程序,起名叫Multics(分时操作系统)。两到三年后,贝尔实验室撤出Multics计划,并召回工程师,其中有个叫肯.汤普森(ken Thompson),写了一个“star travel”游戏运行于Multics系统,贝尔实验室退出Multics计划后,肯.汤普森(ken Thompson)没有权限免费使用Multics系统,为了继续研究自己的“star travel”游戏,决定自己写一个系统,他创造出了名为Bon的程序语言,开发了UNiplexend Information and Computing System(UNICS系统)可执行PDP-7机器上,后来改称UNIX。1971年,肯.汤普森(ken Thompson)和丹尼斯.里奇(Dennis Ritch)对Bon语言改造发明C语言。1973年,肯.汤普森(ken Thompson)和丹尼斯.里奇(Dennis Ritch)用C重写UNIX,安装于PDP-11机器上。1974年,unix第一次公之于众。因为当时美国正在反垄断,所以很多大学和研究机构能免费拿到和研究unix,并主动将研究成果反馈给贝尔实验室。1976年,肯.汤普森(ken Thompson)去伯克利大学(Berkeley)支教。伯克利大学(Berkeley)有个著名的研究生比尔.乔伊(Bill joy)成了BSRG组织。1980年,美国国防部(DARPA)需要在unix上实现TCP/IP协议,将合同给了BSRG。1983年,TCP/IP正式诞生unix系统上。1981年,at&t分拆,贝尔实验室独立出来,要求所有使用unix系统的交版权费。1985年,MIT麻省理工的理查德.马修.斯托曼(Richard stallman)针对unix系统收费问题发起共产主义运动GNU,编写GNU通用公共许可证(GNU GPL)并成立自由软件基金会(Free software foundation)。1991年8月份,芬兰大学生林纳斯.托瓦兹(Linux Torvalds)宣布成立Linux,遵循GPL协议。

    内核(kernel):1.驱动底层硬件

                    2.把底层各硬件资源抽象成简单资源

                    3.管理各程序运行

    Linux就是种内核

    完整的OS:

        kernel+Application

    狭义的OS:

        kernel

    Linux系统:GNU/Linux

    操作系统功能:

        驱动程序

        进程管理

        安全

        网络功能

        内存管理

        文件系统

        。。。。

    Linux我想大家都知道很流行,那么我们要学习Linux系统,大概要学以下内容:

    1.Linux入门、Linux系统管理、Linux服务及安全管理

    2.Linux cluster(集群)

    3.Linux ops运维工具:ansible、puppet、saltstack、cobbler

    4.linux monitoring监控工具:zabbix

    5.shell脚本编程

    6.http服务、tomcat、mysql

    7.分布式存储系统:Mogilefs,clusterfs

    8.NoSQL:redis,mongodb

    9.虚拟化

    10.Docker(容器引擎):容器云

    11.elk stack(日志分析工具)elasticsearch,logstash,kibana

    12.大数据:hadoop

    13.系统优化

    14.python编程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章