設置
上一章
下一章
返回
設置
前一段     暫停     繼續    停止    下一段

第209章 LINUX第一版

  linus發過來的源碼包,總共大概12000行代碼,他編寫這些代碼總共花費了十天左右的時間,要是算上之前為此而準備的時間,則至少還要加上一個月好看的:。3∴35686688而林鴻將這些代碼閱讀完畢,卻只花了大概三個小時就看完了。

  林鴻發現,里面很多地方都借鑒了minix的寫法,畢竟之前linus一直都在研究minix,從上面借鑒了不少特點和功能。例如,文件系統的結構。

  minix的文件系統是模仿unix來寫的,只有將文件系統實現了,才有可能對磁盤進行讀寫,可以說文件系統就是對磁盤的管理程序。雖然現在的linux并沒有涉及到磁盤的讀寫功能,但是這個一部分linus還是將其實現了出來。

  按照編程的慣例,通常第一個程序都是實現“hello,olrd”,linus也曾經在顯示器上打印過這個語句,但是他發給林鴻的這個版本的功能,已經不僅僅是這么簡單了。

  他在這個版本中實現了兩個重要的功能,即保護模式和多進程。

  這兩個特點是dos系統所不具備的,被視為現代操作系統的重要功能。

  “保護模式”是針對內存的一個說法。

  intel公司在1978年發布了一個16位的cpu,即8086,這個cpu是intel歷史上一個重要的里程碑,是奠定了intel在pc領域芯片的最最要的產品之一。

  8086cpu總有20根地址線,可以最大尋址2的16次方,也就是1mb的地址空間好看的:。

  這就是基于8086cpu的計算機所能支持的最大內存地址,這個模式被稱為“實模式”。dos系統就是工作在這個模式下。

  實模式只支持最多1mb的內存。就林鴻想要升級自己正在使用的這臺康柏計算機,在內存條上再加一條1mb的內存,dos系統也識別不出來,根本無濟于事,xing(圣王)能沒有任何提升。

  這是16位cpu的硬件結構所決定的,在當時1mb內存已經相當不錯。所有應用程序都足夠使用。

  不過,在電子領域,存在著“摩爾定律”,集成電路不斷迅速發展,很快8086cpu就無法滿足要求了。

  于是intel便在1985年推出了8086的升級版本80386。

  這一次,寄存器的位數被翻了一倍,從16位升級到32位。

  保護模式下,對內存的管理已經不再是以前的分段式結構。而是變成了分頁機制,這種機制有非常大的優點,可以讓內存管理xing(圣王)能得到極大的提升。

  但是,在計算機領域,有一種“向前兼容”的規則,也就是說,80386必須兼容8086cpu的機制,以前在那個上面能運行的程序。在升級后的cpu上也能運行。

所以在默認情況(求魔  )下,這個“保護模式”是沒有被打開來的,使用的還是“實模式”。

  而要想打開“保護模式”,則需要用代碼對第20號地址線進行操作,將其“喚醒”。它就是進入保護模式的守門人,必須通過它的同意才行。

  說起來簡單,但是整個過程具體實現起來卻是相當復雜的好看的:。

  這也是linus為什么花了這么長時間才最終將版編寫完畢的原因。

  他們想讓linux跟上時代的發展,讓linux未來的功能能夠和現在的這些最新操作系統相媲美,進入保護模式是必不可少的,因為只有進入了保護模式才能最大程度地發揮出80386cpu的最大xing(圣王)能。

  林鴻之前看《操作系統設計與實現》的時候,在這部分看得非常mi糊,專門還去查了不少資料。可是心中還是對這種機制有些想不通,為什么要這樣設計。

  但是,今天他看到了linus的實現代碼之后,頓時有一種突然頓悟的感覺。

  與平時編程的時候,不用去關心硬件底層結構不同,操作系統的底層代碼卻是和硬件緊密相連。最初的那boot和load兒程序,都必須用匯編才能勝任。jing確到cpu的某一個寄存器,也jing確到磁盤的某一個扇區。

  要想理解這些代碼,必須對cpu和磁盤的硬件結構了解得非常清楚。例如cpu有多少引腳,里面有多少個寄存器,每一個寄存器的作用又是什么。

  有著非常詳細地技術文檔。這么小小的一塊芯片,涉及到的技術資料卻是幾本厚厚的大部頭書籍。

  林鴻不得不感嘆。這小小的芯片之中,承載的卻是人類文明中最先進的知識結晶,將人類的智慧發揮到了極處,每一個引腳,沒一個寄存器都是經過了千百次不斷試驗之后才最終定下來的。

  林鴻按照linus在里面寫的說明文檔,將開發環境配置好,然后在minix平臺下對這份代碼進行了編譯。

  修復了幾個細小的bug之后,他最終將linux的鏡像文件給編譯出來了。

  他只有一臺計算機,所以最終只好將這個linux安裝在了本機上。

  當然,他使用的又是多系統安裝方式,其他兩個系統并沒有受到影響。

  重啟之后,他選擇了菜單,然后。

  顯示器上頓時閃現一連串的字符,不斷向上刷動。

  此刻,林鴻已經對計算機啟動的詳細過程有了非常深刻的認識,不再像以前那樣。根本不知道計算機到底在做什么。

  當電源開關被按下的時候,機器就開始通電,主板的控制芯片于是向cpu發送一個重置信號,將cpu恢復到最初始的狀態,當芯片組檢測到cpu上的供電穩定的時候,cpu就會開始工作。

  它要做的第一件事就是從內存中的0xffff0地址處讀取指令運行。

  而這個地址中。通常會有一個跳轉指令,跳轉到bios的自檢系統處,這個時候便開始了自檢過程。bios是主板廠商早就刷在了固件里面的一個系統,目的就是對硬件進行管理。

  自檢的目的,是為了檢測計算機各部分硬件是否正常,如果缺少或者有損壞的硬件,則啟動就會立刻被掛起。

  只有所有硬件檢測都被通過之后,才會最終跳轉到第一個扇區,讀取mbr,開始執行安裝在磁盤上的操作系統。

  而linus完成的功能。就是在讀取mbr之后,如何將操作系統加載到內存里面進行執行。

  這個過程很快,字符不斷向上刷新,硬件檢測很快結束,接著顯示屏一閃,頓時最頂部便出現了“aaaaaabbbb…”這樣的字符其他書友正在看:。

  看著顯示器上不斷出現的ab字符,林鴻知道,這一次啟動過程已經完畢。他已經看到了linus所編寫的功能。

要是其他不懂技術的人看到這種情況(求魔  ),必定會對此嗤笑一聲,道:“這也叫操作系統?開玩笑吧!”

  實際上,當初linus將這個版本編寫出來之后,就興奮地叫來他的妹妹薩拉來觀看。這畢竟是他花費了極大的心思而編寫出來的作品,努力了這么久,終于成功了,自然想和其他人分享一下自己的喜悅。

  可是抱著泰迪熊的薩拉盯著顯示屏看了大約五秒之后,說了一聲“很好”,便面無表情地回到房間內和她的閨蜜煲電話粥去了。

  linus為此愣了半天,良久才反應過來,自己和不懂技術的人是完全沒有共同語言的。他竟然奢望自己的妹妹能夠看懂自己所做的努力和成果。這簡直太天真了。

  在對方眼中,這就是簡單的顯示了幾個字符,完全沒有什么特別之處,也完全不知道做這么一個功能到底有什么意義。

  不過,林鴻對此卻是知道,顯示屏上不斷交替顯示的ab字符,是由兩個進程打印在屏幕上的。也就是說,linus在這個版中,不但實現了保護模式,也將多任務管理的原型給做出來了。

  “厲害!”

  “很bāng!”

  這些都是林鴻對linus的評價。

  這部分內容,看起來雖然都能夠理解。但是林鴻知道,如果讓自己編寫出來。要花費的時間和jing力肯定比對方要多。并不是因為自己的技術不到家,而是自己在這方面的理解還不夠深刻,或者說,這方面的資料太少了,僅僅憑借一本《操作系統設計與實現》根本寫不出來,還涉及到其他很多知識的積累。

  平時林鴻看待計算機,是從宏觀的角度觀察和使用的,可是當他看到這個最原始的操作系統的時候,頓時有了一種在顯微鏡下觀察的感覺。

  所有的黑匣子都沒有了,他心中清楚地知道計算機下一步將要做什么,一切細節都一覽無余。

  此刻已經是凌晨兩點多,林鴻本來很想和linus溝通一下,可是對方此刻并不在線。

  于是,他心情ji動之下,便開始正式開始投入到linux的開發之中。

  他想要做的,就是將之前linus一直到minix中的bash,也就是外殼程序,移植到linux中。

  外殼程序非常重要,它可以說是所有程序之母,只有將它移植過來,才能夠順利地執行其他應用程序。

  bash本身就是一個開源的程序,可以從互聯網上,但是林鴻手中有它的源代碼,還是上次linus郵寄給他的。

  編寫這個,必須得實現一些操作系統的系統調用命令,例如顯示目錄“ls”命令,進入目錄“cd”命令,這些都是最基本的。

  系統調用有很多,林鴻暫時打算先將minix里面所支持的完成即可。其他的,以后再說。

  為了避免linus進行重復開發,他首先給對方發了一封email,然后便埋頭開發。

  移植的過程比想象當中的要難一點,不過好在linux使用的文件系統和minix是一樣的,在太陽在東方升起的時候,他已經將bash程序移植得差不多了。(

無線電子書    超腦黑客
上一章
書頁
下一章