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編程

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