回覆列表
  • 1 # 熱愛工作的小樂子

    對於“作業系統”這個概念,如果我們翻閱各種書本教材,或者藉助度娘,或者帶著梯子去見G哥哥,都會得到類似於下面文字一樣的說明:

    能夠幫助人類操作硬體裝置(包括計算機、伺服器、網路裝置、工業裝置等等),並使這些裝置能夠為人類服務,達到人類預期的目的的軟體,都可以稱之為“作業系統”,其英文為“Operation System”。

    說白了,就是能夠幫助我們操作機器呀,裝置呀等等的軟體,都可以稱為“作業系統”。不過既然小樂子的目(獵)標(物)是那些萌萌的小白程式設計師,那我們所說的作業系統,當然就是應用於現代桌面計算機、伺服器、網路裝置、智慧移動裝置等領域的“作業系統”啦。

    不過有一點希望大家要注意,其實計算機作業系統可並不是隨著“計算機”的發明而一起被髮明出來的哦。世界上第一臺計算機,現在普遍認為是一臺名字叫做“ENIAC”的裝置。

    ENIAC沒有確切的中文詞彙與之對應,大家都習慣音譯成“埃尼阿克”,矮油,怎麼聽起來這麼像二次元萌妹子的名字呢~我馬上就想到了各種各樣的“電腦娘”...

    好了好了,不腦補了。ENIAC這臺計算機,說起來真嚇人,重達30多噸,佔地面積170多平方米,最初的用處其實是用來計算炮彈的彈道軌跡的。

    看來果然戰爭才是催生科技發展的最重要的源動力呢。

    從那個時候開始的很長一段時間內,計算機都是靠操作人員手工去操作的,透過撥動大量的物理開關來完成計算。嗯...怎麼感覺這麼像我們老祖宗留下來的算盤呢~

    後來嘛,大家發現光靠手動去撥動一個一個開關這可不行啊,這不是累傻小子嘛,而且當操作人員在進行手工操作的時候,計算機的核心計算部件(就是類似於後來的CPU的東西)其實啥事兒也沒幹,就在乾等著。

    所以呢,大家就動腦筋,想把一些工作自動化,另一方面也讓計算部件不要那麼空閒,提高利用率。於是呢最早的作業系統就被設計出來啦。

    其實最早的所謂“作業系統”,用現在的說法,被稱為“批處理”系統。所謂的“批處理”系統,就如同它的字面意思,能夠批次地處理操作人員的計算請求。

    最初的批處理系統被稱為“聯機批處理”系統,這時候的計算機,由輸入裝置、磁帶機、計算單元和輸出裝置組成。操作人員需要把打孔紙帶,也就是最早的“二進位制程式”送到輸入裝置中,輸入裝置會將這些紙帶上的二進位制資訊轉存到磁帶機上,然後計算單元就逐一從磁帶機上獲取要計算的內容,經過計算後,自動將結果輸出到輸出裝置上。

    聽起來是不是特別的傻?如果操作人員手腳慢一點,計算單元還是要等待大量的時間,等待資料輸入操作全部完成之後才可以開始工作。這種現象有一種比較裝逼的說法,就是“高速主機與低速外設之間的矛盾”。

    所以呢,大家就改造了一下這種系統,把輸入輸出裝置獨立出來,再搞一臺副主機專門用來處理輸入輸出裝置上的資訊,而原來的計算主機呢,就與這臺副主機進行資料互動。由於這臺“副主機”被設計成專門用於處理輸入和輸出,所以它的執行速度會比較快,整套系統的效率就優於之前的“聯機批處理”模式,大家管這套系統叫做“離線批處理”。

    但是呢,在這種情況下,核心的計算單元仍然每次只能執行一條計算指令。最基本的計算效率仍然很低下。那是的計算機設計人員就又聚攏起來開動腦筋啦,於是“多道程式系統”就被設計出來了。

    所謂的“多道程式系統”,理解起來也很簡單。就是同時把幾條需要計算的程式都放入到記憶體模組中。當計算模組在計算第一道程式的時候,輸入和輸出模組可以來處理第二道程式。就是這麼簡單,所有的計算機裝置模組都儘可能地不要空閒下來。

    嗯嗯,但是啊,人類總是很喜歡折騰的。這時候計算機操作員們發現,每次當自己需要使用計算機的時候,總是要等著另一個操作員先用完,自己才能去使用。這種“獨佔性”令人很不爽,就好像大家在醫院裡排隊看病一樣,排隊1小時,看病5分鐘。

    所以呢,大家又設計出了“分時系統”。在分時系統中,“時間片”的概念被首次引入併成功實施了。我們之前一直說的“計算單元”,現在終於可以被稱為是現代“CPU”了。在分時系統中,每一個計算機操作員都擁有自己的一套輸入輸出裝置,這些裝置都連線到同一個CPU上。CPU每次在很短的一小段時間內(即一個時間片),只處理某一個使用者的某一道程式的某一個不可再劃分的原子操作,就這樣不斷的切換,形成所謂的“分時操作”。而由於這個時間片對人類來說非常短暫,幾乎很難察覺到,所以對於計算機操作員來講,彷彿這一刻計算機被自己獨佔使用一樣。

    再後來呢,大家改進了分時系統,讓它能夠更好地響應一些實時的操作,比如戰場上的部隊正等著用高射炮去打落飛機(咳咳...),敵方的飛機飛得很快,總是在不斷變化位置,所以計算機在計算彈道的時候就必須快速,於是“實時系統”就被設計出來了。從字面上我們已經很容易理解了,這時候的作業系統已經開始追求極致高效和快速了。

    再後來嘛,現代化的通用作業系統就出現啦。其實早期被大規模應用的商業作業系統,大多是Unix,同期也有一些免費開源的類Unix系統出現在市場上。

    其實一開始Unix並不叫這個名字,而是叫做“Unics”哦,大家不知道吧~~

    最早的時候,在大名鼎鼎的“貝爾實驗室”裡,小夥伴們正在醞釀一個“多使用者、多工、多層次”的作業系統開發計劃。所謂的“多使用者、多工、多層次”,在老外的原話裡,其實就是“multi user,multi processor,multi level”這三個英文片語。有那麼多的“multi”,所以大家就把它叫做“multics”作業系統,全稱是“Multiplexed Information and Computing Service”,翻譯成中文也就是“多路資訊及計算服務”作業系統。

    這項計劃是從1965年左右開始的,一直到1969年左右,都沒有什麼太好的進展結果,大家都覺得進度太慢了,所以逐漸也就對這項計劃不怎麼在意了。

    時間就這麼來到了1970年。這一年可是值得在計算機發展史上被隆重記錄的一年哦。這一年,貝爾實驗室裡一個名叫“Ken Thompson”的人,嗯...讓小樂子找找,就是下面這個人啦:

    好吧,其實這傢伙的照片在網上很容易找得到。嗯...這個造型並不是小樂子喜歡的型別呢~~瞧這一臉油膩的大鬍子,負分滾粗~

    不對不對,我們還是說回正事兒。這位大鬍子爺爺看到了實驗室裡閒著沒人用的一臺“PDP-7”電腦,恩,就是下圖裡這臺:

    於是Ken大爺就在這臺電腦上自己瞎折騰起來了。由於當時這臺電腦最多隻能支援兩個使用者同時使用,所以這位大爺和他的同事們就戲稱這套系統為“UNiplexed Information and Computing Service”,簡稱就是“Unix”啦。

    霍霍霍~各位萌新們,你們現在知道為什麼在計算機系統中,所有的時間計算方式都是從1970年1月1日開始計算的了吧。

    到了第二年,也就是1971年,Ken大爺又從實驗室裡申請到了新的計算機裝置,這一年被認為是Unix的正式第一版出現了。然後兩年後,大爺和他的同事開始嫌棄組合語言用起來很麻煩,想自己研究一門更高階的程式語言。於是就有了B語言,但是大爺的一位名叫“Dennis Ritchie”的同事覺得B語言還是用著不痛快,於是就有了大名鼎鼎的C語言。那一年是1973年,而這位Dennis Ritchie也被大家稱為了“C語言之父”。

    對了對了,這位Dennis Ritchie現在經常和Ken Thompson一起,雙雙被稱為Unix之父。嘖嘖~兩位爸爸~~

    不知道各位萌新程式設計師們對Unix留存怎樣的印象,其實我們日常熟知的蘋果電腦所採用的MacOS作業系統就是一個基於Unix所開發的作業系統,大家也可以直接認為MacOS就是一個Unix。

    除此之外,如果大家在很多企業級或政府客戶的生產環境下工作過,一定也會聽說過“藍色巨人”IBM研發的伺服器作業系統AIX,這套作業系統也是Unix系的。另外比較有名的還有Sun公司研發的Solaris系統和惠普的UX系統。

    故事說到這裡,終於Linux和它的創始人——Linus Benedict Torvalds。要登場啦。

    提起Liuns這個人,在程式設計師界可謂是無人不知無人不曉呢。這位大神最近幾年又一次大火,得益於git。提起git,就不得不提github,這可是全球規模最大的同性交友平臺呢,嘻嘻嘻~

    不過呢,這個不是我們今天要討論的話題。其實在git之前,Linus的出名完全是因為他創造了Linux作業系統,他本人也因此被稱為“Linux之父”。甚至在早些年的公開場合,他本人宣稱自己除了會寫Linux核心原始碼之外,不會寫任何其它的程式碼。而江湖上還有和他有關的另一個傳聞,那就是無論哪家計算家大廠,無論開給他多高的工資,都沒法撬動他去上班。

    當然了,傳言歸傳言,小樂子也懶得去查資料證實,不過Linus大爺的照片還是要拿出來給大家看一看的:

    沒錯,就是照片裡這個人啦。相信大家也在網路上看了無數次這張照片啦。不過當年Linus究竟是為什麼會去創造出Linux呢?為什麼Linux和Linus就只差了一個字母呢?

    彆著急,小樂子這就開始進入講故事模式啦。

    首先呢,這位目前生活和工作在美國的老外,其實是一個出生在芬蘭的人,但是呢嚴格意義上來說他本人是屬於芬蘭的“少數民族”,傳言是芬蘭瑞典人。天哪,是不是有點亂?

    年輕時代的Linus畢業於大名鼎鼎的赫爾辛基大學計算機系,是個不折不扣科班出身的程式設計師哦。

    在他念大學期間,幾乎所有的計算機都是使用Unix作業系統。大家窩在黑黑的螢幕前,在Unix終端上透過命令列來操作計算機。但是那個時候的計算機已經不再是單機系統了,而是具備了非常完備的網路功能了。青蔥少年的Linus就經常透過Unix的終端命令來連線到學校的主機,從學校主機上下載一些資料呀、郵件呀之類的,不知道有沒有下載一些嘿嘿嘿的東西呢?嘿嘿嘿~~~

    當時的Linus對Unix作業系統有著十分濃厚的興趣,很想自己也能在Unix上開發一點兒程式。於是他就挑選了一款叫做“Minix”的類Unix作業系統來做一些嘗試性的開發。

    為什麼會挑選這個作業系統呢,因為這個作業系統在當時就是開源的哦,而且這個系統的命名,其實就是來自於“Mini Unix”,嗯,大家可以理解為一個精簡版的Unix作業系統啦。

    可是,精簡版畢竟是缺少很多東西,Linus越用越不爽。

    要說Linus還真是個典型的程式設計師,身上與身具來有著一股折騰精神。為了用起來更方便,就自己嘗試著開發一些用來訪問計算機磁碟和檔案的小程式,而這些小程式,被人們稱為“shell”或是“shell指令碼”,至於什麼是“shell”,小樂子就先在這裡賣個關子啦,知道的大牛們可別說出來,萌新小夥伴們也彆著急,下次我就會告訴大家啦。

    當時的Linus根本也沒想到自己寫的這些小程式,會逐漸逐漸演變成最初的Linux系統核心。

    時間長了,他就開始嘗試著整理自己所編寫的那些小程式。這一整理可不要緊,他發現自己寫的小程式放在一起,差不多就是一個基本的作業系統了。

    這下可了不得,於是Linus就在當時的Minix網路社群上開了個帖子,對網友們說:“嘿朋友們,我自己寫了一個shell,嗯嗯,功能很強大,該有的都有了,再過不久我就準備自己釋出一個作業系統了,這個作業系統啊,可了不得啦,它是這樣這樣和那樣那樣的,巴拉巴拉巴拉...”。那時是上世紀末,1991年。

    小夥伴們,要知道那會兒能上網的人,可都是些計算機技術高手啊,而且Linus可是把這條訊息釋出在Minix社群上的喲。大家一下就炸開鍋了,奔走相告,都等著這個“題主”更新後文呢。當然了,也是有人對Linus冷嘲熱諷的。不過很快這些人可就後悔啦。因為沒過多久,Linus就發表了第一個版本,當時他把這個作業系統叫做“Freax”,意為“Free Unix”,即“不要錢的Unix”。

    至於現在的名稱“Linux”,最早的時候只是一個內部暱稱而已,其實就是來自Linus自己的名字啦。但是也不知道哪天開始,所有的人都用這個名稱來稱呼這個新的作業系統了,既然這樣,那乾脆就這麼叫吧。

    然後呢,其實Linux能夠飛速發展,其實得意於Linus本人的懶惰。他當時覺得,自己一個人去完善這個作業系統簡直是太累了。於是他就這麼把這個作業系統的核心原始碼公佈在了網路上。這也就是Linux開源的由來了。

    再後來就了不得了,加入到這個作業系統中的程式設計師越來越多。僅僅在3年後,也就是1994年,Linux的第一個正式版“v1.0”釋出了。小夥辦們可別小看這個“1.0”哦,要知道,Linux核心的大版本更新可不像現在某些國內大廠的產品那樣,到今天為止,Linux核心的大版本也才剛剛更新到“4.x”哦。要說原因嘛,還是因為Linus本人啦。雖然他在網路上公佈了核心原始碼,但是他對篩選大家所提交的新原始碼可是非常謹慎,甚至是苛刻的。凡是不入他法眼的原始碼,都不會被他合併到Linux核心中。

    咱們岔開一下話題,現在老有很多不負責任的媒體,對外宣揚git僅僅就靠一個週末就被編寫出來了,還有不少萌新們幫著一起使勁吹噓。其實大家仔細想想啊,Linus可是從90年代開始就在不斷地從全世界各地的程式設計師那裡接收和管理大家提交上來的不同版本Linux原始碼了哎,還要嚴格區分這些不同版本的原始碼之間的區別,還要從中挑選一些好的功能,合併到Linux核心中。一直從事著這些工作的Linus,要是沒有一個好用的程式碼版本管理工具,怎麼可能忙得過來呢?與其說git是“一個週末”就被開發出來的,不如說是一個典型的厚積薄發的產品呢。

    好啦好啦,我們回到Linux的話題吧。剛才說到1994年,Linux釋出了1.0版本,就在第二年,也就是1995年,大名鼎鼎的“紅帽”就成立啦。歷史的巨輪就這樣滾動起來嘍~嘻嘻~

    現在Linux還是被大規模應用在企業級領域,但是近幾年來已經有很多不錯的桌面版本出現啦。國內最知名的可能有Deepin,和各種打著“麒麟”旗號的版本啦。

  • 2 # 北航秦曾昌

    說起Linux作業系統的發展史,首先要提到的就是Unix作業系統。在1965,美國貝爾實驗室的肯·湯普森以BCPL語言為基礎,設計出了簡單且很接近硬體的B語言,用它編寫出了第一個Unix作業系統。當時B語言的跨平臺性比較差,所以肯·湯普和他的朋友一起設計了一種新的語言,也就是現在的C語言。1973年初,C語言的主體完成之後,他們就開始迫不及待的用它重寫了現在大名鼎鼎的Unix作業系統。

    後來因為AT&T(通用電氣)政策的改變,將Unix的原始碼私有化,不許大學再使用Unix原始碼。塔能鮑姆教授由於教學的需求,便自行開發出了與Unix相容的作業系統,將其命名為Minix。因為Minix只用於教學,其功能並不強,因此出生於芬蘭的林納斯·託瓦茲,利用Gun的bash當做開發環境gcc當做編譯工具,編寫了Linux核心。一開始,Linux並不能相容Unix,即Unix上面的應用程式不能在Linux上面執行,因為Unix是遵循POSIX規範的,因此林納斯·託瓦茲修改了Linux,使其能夠遵循POSIX規範。Linux是一款完全免費的作業系統,使用者可以任意修改它的原始碼,因此越來越多的程式設計師加入到對Linux系統的修改工作當中,Linux系統的功能變得越來越強大。簡單來說,先有了Unix系統,然後再有了Minix,Linux則是在Minix的基礎上開發出來的。

    Linux的應用非常廣泛,大體可以分為以下幾種:

    1)個人桌面領域的應用

    這個領域是傳統Linux應用最薄弱的環節,多年來一直被window所壓制。但近年來,隨著ubuntu、fedora等優秀桌面環境的興起,以及各大硬體廠商對於Linux系統的支援加大,Linux在個人桌面領域的佔有率在逐漸的提高。

    2)伺服器領域

    Linux在伺服器領域的應用是其重要的分支。尤其是近些年來,Linux伺服器市場得到了飛速的提升,在高階領域的應用尤為廣泛。典型的代表有:Redhat公司的AS系列、完全開源的debian系列以及suse Enterprise 11系列等等。

    3)嵌入式領域

    因為Linux執行穩定、對網路的良好支援性、低成本,並且可以根據需要對軟體進行裁剪,核心最小可以達到幾百KB等特點,使得近年來,Linux系統在嵌入式領域的應用也得到了飛速的提高。例如數字電視、網路電話、智慧手機、PDA等都是其應用領域。

  • 中秋節和大豐收的關聯?
  • 大腦分泌多巴胺後,我們會感到快樂,為什麼人會想要快樂?