轉(zhuǎn)載自鮮棗課堂
今天這篇文章,我們來聊聊 操作系統(tǒng)( Operating System ) 。
說到操作系統(tǒng),大家都不會(huì)陌生。我們天天都在接觸操作系統(tǒng)——用臺(tái)式機(jī)或筆記本電腦,使用的是windows和macOS系統(tǒng);用手機(jī)、平板電腦,則是android(安卓)和iOS系統(tǒng)。
如果是從事信息通信行業(yè),還經(jīng)常會(huì)和ubuntu、CentOS、Fedora這樣的Linux系統(tǒng)打交道。
其實(shí),操作系統(tǒng)的種類極多,遠(yuǎn)遠(yuǎn)不止我們知道的這些。
從使用場(chǎng)景來看,操作系統(tǒng)大致可以分為桌面操作系統(tǒng)、服務(wù)器操作系統(tǒng)、移動(dòng)終端操作系統(tǒng)、嵌入式操作系統(tǒng)、物聯(lián)網(wǎng)操作系統(tǒng)、云操作系統(tǒng)等類別。
如下表所示:
那么,操作系統(tǒng)究竟是什么?
從本質(zhì)來看,操作系統(tǒng)其實(shí)就是一套軟件。
它屬于底層軟件,可以說是一個(gè)大管家,專門負(fù)責(zé)把所有的硬件和上層軟件(中間件、數(shù)據(jù)庫(kù)、應(yīng)用程序等)管理和連通起來,并進(jìn)行資源調(diào)配,完成用戶下達(dá)的任務(wù)。
操作系統(tǒng)包攬了很多底層的復(fù)雜工作,大大簡(jiǎn)化了應(yīng)用軟件的開發(fā)難度。
比如說,我開發(fā)一個(gè)視頻播放器,就不需要寫那些底層硬件代碼。
操作系統(tǒng)還有一個(gè)重要作用,就是方便用戶使用。
用戶有了操作系統(tǒng),就能更好地管理計(jì)算機(jī),進(jìn)行人機(jī)交互(下達(dá)命令,查詢結(jié)果和狀態(tài))。
新手學(xué)習(xí)操作系統(tǒng),最麻煩的是認(rèn)名字和認(rèn)類別。接下來,小棗君就從時(shí)間線的角度,對(duì)所有的操作系統(tǒng)關(guān)系進(jìn)行一下梳理。
操作系統(tǒng)的誕生
操作系統(tǒng)這個(gè)東西,并不是計(jì)算機(jī)誕生時(shí)就有的。
1946年2月,在美國(guó)的賓夕法尼亞大學(xué)誕生了世界上第一臺(tái)電子計(jì)算機(jī),它的名稱叫 ENIAC (埃尼阿克)。
ENIAC是由大量的電子管(真空管)組成,體積極為龐大,占地170平方米,重達(dá)30噸,耗電174千瓦。在算力上,它可以實(shí)現(xiàn)每秒5000次的加法運(yùn)算。
這種早期的計(jì)算機(jī),既沒有顯示器,也沒有鍵盤,更沒有鼠標(biāo),全部都是 人工操作 。
在使用時(shí),專職操作員將運(yùn)算信息記錄在穿孔卡帶上。系統(tǒng)啟動(dòng)后,讀取卡帶信息,然后進(jìn)行運(yùn)算,最后輸出結(jié)果。
穿孔卡帶
計(jì)算機(jī)的速度快,人的速度慢。所以,計(jì)算機(jī)經(jīng)常處于等待狀態(tài),等待操作員的輸入。
這嚴(yán)重耽誤了計(jì)算效率,浪費(fèi)時(shí)間,也浪費(fèi)錢(電費(fèi))。于是,到了20世紀(jì)50年代,開始出現(xiàn)了 批處理系統(tǒng) (batch processing)。
批處理系統(tǒng)中,操作員把用戶提交的作業(yè)進(jìn)行分類,把一批作業(yè)編成一個(gè)“作業(yè)執(zhí)行序列”。每一批作業(yè),都由專門編制的監(jiān)督程序(monitor)自動(dòng)依次處理。
這個(gè)“監(jiān)督程序”,就是操作系統(tǒng)的雛形。它標(biāo)志著操作系統(tǒng)的誕生(1955年)。
最早使用批處理系統(tǒng)的,是第二代通用計(jì)算機(jī),代表產(chǎn)品是IBM的1401和7094等。
批處理雖然提升了效率,但仍存在缺陷。
例如,當(dāng)作業(yè)進(jìn)行I/O(輸入/輸出)操作時(shí),主機(jī)會(huì)等待操作完成,造成自身空閑。再例如,計(jì)算機(jī)只能同時(shí)運(yùn)行一個(gè)批處理任務(wù),效率還是太低。
到了60年代,集成電路技術(shù)高速發(fā)展,我們有了更快的處理器、更大的內(nèi)存、更豐富的I/O設(shè)備。同時(shí),通道和中斷技術(shù)出現(xiàn),開始允許系統(tǒng)執(zhí)行“掛起”操作。
于是,就有了 “多道程序系統(tǒng)” 。
簡(jiǎn)單來說,計(jì)算機(jī)系統(tǒng)從串行變成了并行,可以同時(shí)運(yùn)行多個(gè)任務(wù)(多個(gè)程序放入內(nèi)存,交替在CPU中運(yùn)行,共享硬軟件資源)。
多道程序系統(tǒng)大幅提升了計(jì)算機(jī)的工作效率。再后來,系統(tǒng)又支持了多個(gè)用戶同時(shí)使用。于是,就變成了“多用戶+多任務(wù)”的系統(tǒng),稱為 “分時(shí)系統(tǒng)” 。
“分時(shí)”和我們通信領(lǐng)域的“時(shí)分復(fù)用”有點(diǎn)像,就是把處理機(jī)的運(yùn)行時(shí)間分成很短的時(shí)間片,按時(shí)間片輪流分配給各個(gè)作業(yè)使用。
再后來,技術(shù)又繼續(xù)演進(jìn)。終于,我們有了時(shí)效性更強(qiáng)的 “實(shí)時(shí)操作系統(tǒng)” 。這種系統(tǒng),就非常接近于現(xiàn)代操作系統(tǒng)的概念了。
█UNIX的誕生
1964年,美國(guó)電話電報(bào)公司(AT&T)、通用電器公司(GE)及麻省理工學(xué)院(MIT)合作,提出了一個(gè)超級(jí)分時(shí)操作系統(tǒng)的開發(fā)計(jì)劃。
這個(gè)計(jì)劃,被命名為Multics OS。Multics是“MULTiplexed Information and Coputing System(多路信息與計(jì)算系統(tǒng))”的意思。
當(dāng)時(shí),他們打算借助這個(gè)系統(tǒng),打造一臺(tái)能夠連接1000臺(tái)終端、滿足300人同時(shí)在線的計(jì)算機(jī)。
這個(gè)計(jì)劃持續(xù)了五年,并沒有達(dá)到既定目標(biāo)。于是,1969年,隸屬AT&T公司的貝爾實(shí)驗(yàn)室(Bell Labs)宣布退出。
貝爾實(shí)驗(yàn)室退出之后,相關(guān)的項(xiàng)目組成員就閑了下來。其中就有一個(gè)人,名字叫做 肯·湯普森 (Ken Thompson)。
肯·湯普森此前在Multics上開發(fā)了一款名叫"星際旅行(Space Travel)" 的游戲。退出Multics項(xiàng)目后,肯·湯普森就沒辦法繼續(xù)玩這個(gè)游戲了。
于是,他突發(fā)奇想,打算在一臺(tái)空閑的PDP-7(DEC公司生產(chǎn)的一種小型計(jì)算機(jī),性能很低)上,開發(fā)一個(gè)簡(jiǎn)單操作系統(tǒng),運(yùn)行這個(gè)游戲。
1969年8月,肯·湯普森趁著妻子回家探親,用了1個(gè)月的時(shí)間,使用匯編語言,寫出了一個(gè)簡(jiǎn)版的Multics系統(tǒng)(包括一組內(nèi)核程序,一些內(nèi)核工具程序,以及一個(gè)小的文件系統(tǒng))。
實(shí)驗(yàn)室的同事們,將這個(gè)系統(tǒng)戲稱為Unics。Uni作為前綴,是“單一、一個(gè)”的意思。Unics,對(duì)應(yīng)Multics,是“單路信息與計(jì)算系統(tǒng)”的意思。
后來,大家又取其諧音,直接稱其為 “Unix” 。
一邊工作一邊下棋的肯·湯普森
基于匯編語言編寫的Unics,硬件通用性差,沒法移植到其它機(jī)器上運(yùn)行。因此,肯·湯普森嘗試使用BCPL、PASCAL語言進(jìn)行重寫。但是,效果并不理想。
這時(shí),他的同事 丹尼斯.里奇 (Dennis Ritchie)站了出來。
丹尼斯.里奇在BCPL語言(也就是B語言)的基礎(chǔ)上,開發(fā)了一套新的語言,也就是后來如日中天的 C語言 (按字母表順序,B之后就是C)。
不久后,丹尼斯.里奇用C語言重寫Unics成功。就這樣,Unix操作系統(tǒng)正式誕生了。
正在操作DEC PDP-11計(jì)算機(jī)的 肯·湯普森(坐者)和丹尼斯.里奇(站者)
1973年,丹尼斯·里奇和肯·湯普森正式發(fā)表論文,宣布了Unix的存在。消息引起很大反響,很多人都期望學(xué)習(xí)和研究Unix。
貝爾實(shí)驗(yàn)室(AT&T)推出了Unix之后,因?yàn)槭苊绹?guó)政府反壟斷制裁的原因,并不能對(duì)它進(jìn)行銷售。所以,他們只能將Unix無償提供給所有人學(xué)習(xí)。
又過了一段時(shí)間,AT&T發(fā)布了Unix系統(tǒng)第5版,并授權(quán)給教育機(jī)構(gòu)使用。1975年,他們第一次以2萬美元的價(jià)格,授權(quán)企業(yè)使用Unix第6版。
這期間,很多企業(yè)和機(jī)構(gòu)開始打Unix的主意。
1977年,伯克利大學(xué)的研究生比爾·喬伊(Bill Joy),將Unix程序整理到磁帶上,推出了BSD版本。BSD,就是Berkeley Software Distribution(伯克利軟件發(fā)行版)。
1978年,SCO(一家服務(wù)器系統(tǒng)軟件供應(yīng)商)包裝發(fā)行了商用版的Unix。
目前公認(rèn)的最完美版本,是1979年發(fā)行的System V7。這個(gè)版本也被Unix玩家們稱為“最后一個(gè)真正的UNIX”。
1980年,美國(guó)國(guó)防高級(jí)研究計(jì)劃局(DARPA)準(zhǔn)備制定TCP/IP協(xié)議,選擇了與BSD合作。這大大刺激了Unix的發(fā)展和普及。
后來,丹尼斯·里奇和肯·湯普森被譽(yù)為Unix之父和C語言之父。1983年,他們二人都獲得了圖靈獎(jiǎng)。
在System V7推出之后,AT&T發(fā)布新的使用條款,將Unix源代碼私有化。Unix開始走向了商業(yè)閉源之路。
很多公司,都推出了自己的Unix系統(tǒng)分支。比較有名的,是Sun公司的Solaris、IBM公司的AIX、惠普公司的HP-UX,以及由BSD版本發(fā)展起來的FreeBSD。
Solaris這個(gè)系統(tǒng),小棗君非常熟悉。當(dāng)年我就是通過Solaris學(xué)會(huì)的Unix。它的穩(wěn)定性極高,主要用在SUN公司的服務(wù)器(V240/V440等)上,CPU都是完全不一樣的,叫做SPARC。
FreeBSD的應(yīng)用范圍就廣多了。它在BSD許可協(xié)議下發(fā)布,由來自世界各地的志愿者開發(fā)和維護(hù),允許任何人隨意使用和發(fā)行(在保留版權(quán)和許可協(xié)議信息的前提下)。
蘋果公司的OS X,就是基于FreeBSD的。
詳細(xì)的Unix閉源分支我就不多說了,發(fā)一張圖,大家可以參考:
█ ** Linux的誕生**
Unix開始收費(fèi)和商業(yè)閉源之后,引起了一個(gè)大叔的不滿。這個(gè)大叔,名叫 理查德·馬修·斯托曼 (Richard Matthew Stallman)。
理查德·馬修·斯托曼
1984年,他發(fā)起了自由軟件體系GNU(GNU is not unix),模仿Unix的界面和使用方式,重新開發(fā)一個(gè)開源的版本。他還組織成立了FSF(Free Software Foundation,自由軟件基金會(huì)),起草了GPL(GeneralPublicLicense,通用公共許可證)。
GNU著名的牛頭logo
斯托曼的做法,具有劃時(shí)代的意義。他開創(chuàng)了開源軟件的黃金時(shí)代。
所有GPL協(xié)議下的自由軟件,都必須遵循“Copyleft(非版權(quán))"原則——
即:自由軟件,允許用戶自由拷貝、修改和銷售。但是,對(duì)其源代碼的任何修改,都必須向所有用戶公開。
到上世紀(jì)90年代初,GNU項(xiàng)目已經(jīng)開發(fā)出許多高質(zhì)量的免費(fèi)軟件,其中包括有名的emacs編輯系統(tǒng)、bash shell程序、gcc系列編譯程序、gdb調(diào)試程序等等。
這些都為后來Linux的誕生創(chuàng)造了條件。
Unix源代碼私有化之后,在大學(xué)中不再允許使用Unix源代碼。
1987年,荷蘭阿姆斯特丹自由大學(xué)計(jì)算機(jī)系的 安德魯· 塔能鮑姆教授(Andrew S. Tanenbaum,也譯為譚寧邦),為了能在課堂上教授操作系統(tǒng)課程,決定在不使用任何AT&T源代碼的前提下,自行開發(fā)與Unix兼容的操作系統(tǒng)。
安德魯·塔能鮑姆
他將這個(gè)系統(tǒng)稱為 MINIX ,也就是mini-UNIX(小型UNIX)的意思。
MINIX的主要工作平臺(tái),是IBM PC及其兼容機(jī)。這款PC搭載了英特爾公司的16位處理器——Intel 8080。
開發(fā)出MINIX之后,塔能鮑姆教授并沒有對(duì)它進(jìn)行大規(guī)模推廣。而且,他認(rèn)為這個(gè)系統(tǒng)只是用于教育目的,所以也沒有進(jìn)行深入開發(fā)。
他甚至還不允許別人加入代碼(估計(jì)是怕侵權(quán)Unix),這就更加限制了MINIX的發(fā)展和普及。
1991年,正在芬蘭赫爾辛基大學(xué)求學(xué)的 林納斯·托瓦茲 (Linus Torvalds),對(duì)Unix產(chǎn)生濃厚興趣,嘗試借助MINIX完成一些日常工作。
MINIX的功能太弱,無法滿足林納斯的需求。于是,他利用GNU的bash當(dāng)做開發(fā)環(huán)境,gcc當(dāng)做編譯工具,成功編寫出了擁有10000行代碼的 Linux內(nèi)核(Linux kernel) 。
此時(shí)的林納斯,只有21歲!
林納斯·托瓦茲
林納斯的Linux內(nèi)核基于POSIX(Portable Operating System Interface for Computing Systems,可移植操作系統(tǒng)接口)標(biāo)準(zhǔn),能夠與絕大多數(shù)Unix操作系統(tǒng)兼容。
他在發(fā)布時(shí),選擇了遵循GPL協(xié)議和GNU宗旨,所以,正式發(fā)布時(shí),命名為“GNU/linux”。
Linux的吉祥物是企鵝(英文名: Tux)
因?yàn)榱旨{斯小時(shí)候被企鵝咬過,印象非常深刻
Linux和Unix的關(guān)系
這里,我要特別說明一下,Linux和Unix的關(guān)系。
很多人覺得,Linux就是Unix,這顯然是不對(duì)的。由上面的介紹可以看出,Linux是開源自由軟件,而Unix是對(duì)源代碼實(shí)行知識(shí)產(chǎn)權(quán)保護(hù)的傳統(tǒng)商業(yè)軟件。兩者是完全不同的東西。
那么,Linux是不是類Unix(Unix-like)系統(tǒng)呢?
嚴(yán)格來說,也不行。
Linux只是風(fēng)格上和Unix很像,但它并不含有Unix的代碼。UNIX的源代碼,為SCO公司所有。UNIX的商標(biāo)權(quán)和標(biāo)準(zhǔn)認(rèn)定權(quán),屬于OPENGROUP所有。
真正意義上的類Unix系統(tǒng),必須要通過官方認(rèn)證(例如蘋果的MacOS)。而Linux并沒有。
Linux的發(fā)行版
大家注意,林納斯1991年開發(fā)的,并不是一個(gè)操作系統(tǒng),而是一個(gè)內(nèi)核。
后來,全球開發(fā)者(開源社區(qū)、企業(yè)、個(gè)人等)對(duì)內(nèi)核代碼進(jìn)行大量的修改和補(bǔ)充,加入GUI(圖形界面)、應(yīng)用等部分,才形成了相應(yīng)的 Linux操作系統(tǒng)發(fā)行版 ,也就是真正的操作系統(tǒng)。
這些發(fā)行版分為社區(qū)版和商業(yè)版。社區(qū)版數(shù)量較多,開發(fā)和維護(hù)的主體是開源社區(qū)。商業(yè)版數(shù)量較少,是在社區(qū)版的基礎(chǔ)上進(jìn)一步優(yōu)化而來。
值得一提的是,發(fā)行版之間也有復(fù)雜的衍生關(guān)系。也就是說,發(fā)行版可以構(gòu)建在另一個(gè)發(fā)行版之上。
一些大家可能比較熟悉的發(fā)行版,包括:Ubuntu、Debian、Centos、Fedora、 Redhat Linux、Slackware、Turbolinux、Mandrake、SUSE、紅旗、麒麟等。
Slackware和Debian是最早期的兩個(gè)發(fā)行版,創(chuàng)建于1993年。
Debian的后代分支比較龐大。除了Debian本身之外,這個(gè)分支的主要代表還有Ubuntu(構(gòu)建在Debian之上)、LinuxMint(構(gòu)建在Ubuntu之上)、Kali Linux。
Redhat,也就是大家很熟悉的紅帽系列。它的主要發(fā)行版是Red Hat Enterprise Linux(RHEL),針對(duì)企業(yè)客戶。
CentOS是RHEL源代碼再編譯的產(chǎn)物,修正了不少Bug,穩(wěn)定性更強(qiáng)。
除了RHEL之外,Redhat還向社區(qū)提供另一個(gè)免費(fèi)發(fā)行版,即Fedora。
這些發(fā)行版的具體關(guān)系和發(fā)布時(shí)間,如下圖所示:
上面這些操作系統(tǒng),小棗君基本都用過。2005年我剛工作的時(shí)候,用的是Debian、RHEL、Solaris。后來,開始用Fedora。再后來,是CentOS。剛開始的使用,很難受,不適應(yīng)。但是一旦用習(xí)慣了,就覺得很爽。
2020年底,紅帽公司宣布陸續(xù)停止維護(hù)CentOS,后續(xù)將無法獲得官方升級(jí)和補(bǔ)丁。雖然比較可惜,但也給國(guó)產(chǎn)操作系統(tǒng)帶來了機(jī)會(huì),我們以后會(huì)講。
█ ** 未完待續(xù)……**
-
Linux
+關(guān)注
關(guān)注
87文章
11232瀏覽量
208949 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6747瀏覽量
123201 -
UNIX
+關(guān)注
關(guān)注
0文章
296瀏覽量
41423
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論