<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 第四章-操作系統及項目開發雜談 在眾多的程序里,有一大類特殊的程序,它們就叫操作系統(OS: Operating System)。操作系統是最基礎的程序,它讓計算機: 1. 運行起來 1. 所有的硬件各就各位 1. 接受別的程序給予的指令 相應的,其它程序就叫應用程序。操作系統和應用程序的關系,就像人的基本意識和數學水平一樣。想讓一個連基本意識都沒有的人(譬如植物人)參加數高考——看來你和我都瘋了。一般的計算機都是硬件、操作系統和應用程序相互分離的,需要的時候分別安裝。有些特殊的設備直接把操作系統做在硬件里(比如嵌入式操作系統),比如各種電子游戲機,可以開機,但是要有游戲光盤或游戲卡才能玩,還有些計算機把操作系統和應用程序都做在一起,放在機器內部,N年前很流行的俄羅斯方塊掌上游戲機和電子寵物就是這樣的設備。 ### 操作系統漫談 [[1]](#) Long long ago, 就是上個世紀60 年代的美國一個春天啦,那個時代的計算機是個新鮮玩意,非常笨重,家庭用戶是沒有的,都是商用或者試驗,科學計算用的機器。你說你想買個電腦斗地主?把你賣給地主你也買不起呀。再說那時候的計算機不是隨便一個人就會用的,那時候的計算機使用的時候是由人來輸入一條條的指令來進行各種運算的。他們輸入的指令大約相當于現在的匯編指令,所以這個效率和操作難度有多高就可想而知了。 那時候計算機大都沒有什么操作系統,頂多有個批處理系統,可以把要輸入的指令記錄在某種媒介上(比如紙帶)一次性輸入進去,讓人們省去一條條重復輸入指令的麻煩。后來慢慢有了很簡單的操作系統,但并不像現在我們見到的操作系統這樣通用。這個時候,賣計算機的廠商要為每一型號的計算機設計不同的操作系統,一個程序如果在這個型號的計算機上寫好了,拿到其他型號的計算機上是運行不了的,因為這兩臺機器連操作系統都不一樣,怎么可能程序通用呢。計算機要是老這樣肯定是不行啦,否則你今天要玩斗地主,人家游戲公司就得專門派人到你家機器上現寫出一個來——因為不同型號的計算機上的操作系統不通用嘛。 這個斗地主的問題,終于還是被那個時代IT業界的大地主,藍色的IBM公司率先著手解決了。1964年他們公司推出了一個系列的大型機,用途、價位各不一樣,但他們上面運行的操作系統,都是System/360。(這360可不是賣鞋的,也不是跟QQ打架的那個)這一下獲得了很大的成功,因為省去了為每一臺電腦單獨編寫系統的成本嘛。直到今天,IBM 的大型機上依然可以運行這個360 系統,可見其當初設計時充分考慮的兼容性。然而我們要講的主角不是360,而是另一個偉大的操作系統。 那時候有個聚集了很多牛人的地方,叫做貝爾實驗室,是1925 年由AT&T 公司成立的。一幫頭腦發達四肢也不一定簡單的家伙整天聚在那里,研究新奇的東西,什么任意門啊,竹蜻蜓啊,記憶面包啊——呃……都不是他們發明的(發明這些的人是個日本科學家)。那貝爾實驗室那幫人研究什么呢?貝爾實驗室的工作可以大致分為三個類別:基礎研究,系統工程和應用開發。在基礎研究方面主要從事電信技術的基礎理論研究,包括數學、物理學、材料科學、行為科學和計算機編程理論,反正都是大學聽不懂的那幾門就對了。系統工程主要研究構成電信網絡的高度復雜系統。開發部門是貝爾實驗室最大的部門,負責設計構成貝爾系統電信網絡的設備和軟件。具體來說貝爾實驗室研究出來過的東西有晶體管、發光二極管、數字交換機、通信衛星、電子數字計算機、蜂窩移動通信、有聲電影、立體聲錄音,等等。(怎么樣,不比機器貓那些東西差吧?)通信網的許多重大發明都誕生自這里。 那時候還有個聚集了很多牛人的地方,叫做麻省理工學院(MIT),這是美國的一所綜合性私立大學,有「世界理工大學之最」的美名。從這里走出的牛人很多,到2009 年為止,先后有76 位諾貝爾獎得主,都曾經在麻省理工學院學習或者工作。麻省理工學院的自然及工程科學在世界上享有極佳的盛譽,其管理學、經濟學、哲學、政治學、語言學也同樣優秀。另外,麻省理工研發高科技武器和美國最高機密的林肯實驗室、領先世界一流的計算機科學及人工智能實驗室、世界尖端的媒體實驗室、和培養了許多全球頂尖首席執行官斯隆管理學院也都是麻省理工赫赫有名寶貴資產。有著毋庸置疑的實力,麻省理工自然非常不差錢,截至2008 年底麻省理工有101億美元的總資產,因為不差錢,于是該校對家庭年收入低于75000美元的學生一律免學費。 那時候,又有個聚集了很多牛人的地方。(哪那么多地方阿!)這地方是個公司,叫做通用電氣。這公司可是個大公司,當年是個賣燈泡的,他們的燈泡可非同一般,雖然不節能,雖然壽命不如現在的長,雖然價格比現在貴, 雖然外形也不一定好看,但是——他們是第一家賣燈泡的!因為他們的老大,就是大名鼎鼎的Thomas Edison。1876年,發明燈泡的愛迪生同學成立了愛迪生燈泡廠,為節約蠟燭和燈油做出了突出的貢獻,估計那年的五一勞動獎章肯定是他的了。到1890年,愛迪生同學將燈泡廠重組,成立的愛迪生通用電氣公司,到1892 年又與湯姆森-休斯頓電氣公司合并,成立了通用電氣公司。 好,時間到了1965 年,這三個聚集著不少牛人的地方有一天忽然想合作一把。于是,大名鼎鼎的貝爾實驗室,大名鼎鼎的麻省理工學院和大名鼎鼎的通用電氣公司一起開始了一個制作操作系統的計劃。為了結束長期以來計算機上面沒有統一的操作系統的混亂局面,他們決定要創造出一套**前無古人后無來者,上得廳堂,下得廚房,念天地之悠悠,獨愴然而泣下**的驚世駭俗的操作系統!具體來說吧,這個操作系統應該是一個支持多使用者、多任務、多層次的操作系統,因為這三多,所以這個操作系統就起名叫做——MULTICS。有了這三家的強強聯合,那開發的結果還用問么?這個MULTICS 操作系統的項目在1965 年成立,到了1969 年就... 被取消了。 咳咳,這個... 其實編寫操作系統也不是一件容易的事兒啦。畢竟道路是曲折滴,研究是辛苦滴,成績還是有滴,失敗捏... 也是可以原諒滴嘛。項目失敗了,大家都很沮喪。在這些沮喪的人中,Kenneth Lane Thompson只是很普通的一個——1943年出生在美國的新奧爾良,吃著烤翅長大的他沒有辜負養育他長大的父母和那些沒有了翅膀的雞。1960年,湯普遜考上了加州大學博克萊分校主修電氣工程,順利取得了電子工程碩士的學位。1966年,他加入了貝爾實驗室,參與了MULTICS項目。做項目是個很辛苦的事情,在疲勞的揉揉因熬夜而發紅的眼睛后,他很想能有個電腦游戲來玩玩。然而那時候別說超級瑪麗,連吃豆也沒有啊!所以湯普遜同學就自己編了一個游戲,叫做星際旅行。這個星際旅行跟星際爭霸那肯定是沒的比的了,不過在那時候已經算是很有吸引力了。這個游戲自然是被設計運行在MULTICS 系統上的,由于MULTICS系統還不完善,所以游戲運行的也不是很流暢,所以,能夠順暢的玩星際旅行,成為了湯普遜同學努力工作的動力。可是后來項目被干掉了,如果事情就這樣結束,那么湯普遜同學就再也不可能流暢的玩他的星際旅行了,這是多么遺憾的事情阿。可是現實是殘酷的,項目確實就是取消了,要想順暢的玩游戲怎么辦?老毛教導我們說:自己動手,豐衣足食。我估計湯普遜沒有背過毛澤東語錄,但是他用自己的行動證明了這兩句話的正確性。他在墻角淘換出一臺PDP-7 的機器,并且伙同其同事Dennis Ritchie,打算將星際旅行移植到這臺PDP-7上。當然,要想運行這游戲,還是得有個系統。有了固定的系統,那以后再編寫別的游戲就更方便了。可是系統從哪里來?MULTICS?已經停工了,并且這系統絕對不是兩個人可以搞定的。那怎么辦?還得自己動手!于是Ken Thompson 和Dennis Ritchie 再次發揚自己動手的精神,用匯編語言寫出來個系統,這就是最初的,非常簡陋的,UNIX 的前身。這個系統不像 MULTICS 那么牛,不支持很多的用戶,只能支持兩個用戶,(估計是為了避免做好了之后倆人搶機器玩的局面發生。也可能是為了以后倆人對戰?)支持的進程也有限,其他功能也都沒有MULTICS 設計的那么復雜。相對于那個MULTICS 系統——MULTiplexed Information and Computing System,Brian Kernighan開玩笑地戲稱他們的系統其實是:「UNiplexed Information and Computing System」,縮寫為「UNICS」。后來大家取其諧音,就誕生了UNIX 這個詞。這一年,已經是1970 年,史稱Unix元年。 直到現在,計算機中都是用1970年1月1日0點0分0秒為原點來記錄時間。(計算機中的時間記錄的是自1970年1月1日0點0分0秒開始,到現在經過的總秒數,再用這個秒數計算出年,月,日)后來,Brian Kernighan覺得用匯編寫的系統不好維護,于是... 他發明了C語言(符合大牛一切自己動手的風格),然后用C 語言又重寫了一遍。從此,Unix 走上了發展的快車道,并且一直用到現在。許多世界級的大服務器,用的都是Unix系統(其實就現在而言,很多服務器上是用的開源的Linux系統)。**而這一切的努力,就是為了玩個游戲。-_-b** ### 操作系統及平臺 總體而言,沒有操作系統的計算機,就像沒有意識的身體,是無法動彈的。 是不是覺得操作系統很酷?想不想自己寫一套?編寫操作系統要比通常想象的困難的多,它涉及到大量的背景知識和底層操作。所有連這本書都還不能消化的新手應該完全打消諸如自己制作操作系統的念頭,否則吐血身亡我可負責不起,有實力之后再來嘗試也不遲。 提供給鋼琴和手風琴的樂譜并不是完全一樣的,這是一種共識。為什么?——因為這是兩種不同的樂器。同樣,在這個世界上有很多種的計算機,他們相互之間的差別也很大。每一種計算機都需要操作系統,而某一款計算機可能有好幾種操作系統可以使用,就像我們可以說中文,也可以說英語。但也有可能它只能裝某幾種操作系統,比如Mac OS X就不是普通的電腦能原生支持的。**特定的計算機和特定的操作系統的組合,就被稱為平臺。**就像鋼琴曲不是給京韻大鼓使用的,對印度土著說中國成語也不會有什么好效果,編程通常都要針對某種平臺來做。有一些高級語言號稱能夠跨平臺——也就是可以在很多平臺下運行。跨平臺并不意味著在每一種平臺上都能運行,一般能支持一些主流平臺就可以稱為跨平臺。 如果你想要在編程上面有所成就,你不得不選定一個平臺深入地鉆研。個人認為,初學者不適宜同時在兩個完全性質不同的平臺上學習,不同的特性絕對會把你搞暈,在你確認掌握了一個之后再學習另一個,相互借鑒的作用才能體現出來。 ### Notes 1. [[1]]() 本節摘抄自《笨兔兔的故事》,如原作者覺得放這里不合適還請及時指出。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看