作業系統與c語言

王滔發表於2016-04-04
 
以下是根據看書後的理解做的總結:
 
最早,unix是使用匯編編寫,但是非常簡單。後來覺得彙編,換種機器又得重新用另外一種機器彙編重寫,太麻煩。於是想設計一種通用的語言,到各種機器上都能執行 當時發明了b語言,但是b語言並不成功(據說是很多缺陷,缺乏資料結構),後來者在此基礎上改進,發明了c語言。使用c語言重寫unix,後來c語言就成為一種編寫作業系統的語言了。當時有c語言編譯器,使得轉化成機器語言很容易。

現在終於明白了,為什麼以前看的資料說:c語言是為了編寫Unix作業系統而發明的語言。 當時其實存在了這個作業系統,但問題是它使用匯編編寫,移植到新機器又得重新寫用新的彙編實現。後來有了c語言這樣通用的語言、
 
為什麼作業系統的編寫,一部分還要使用匯編呢?

因為硬體,兩臺電腦的硬碟不可能完全一樣的方式工作,驅動程式是用c編寫,驅動編譯好後放到新機器無法工作的,所以要重新寫,只能用對應機器的彙編編寫。

Unix的網路的發明,原來都是出於解決實際問題需要產生。

最初發明是在一臺廢棄的pdp-7上。後來unix都是執行在pdp-11上。
當時要把unix移植到一種新型機器interdata上,當時pdp-7在一樓,interdata在五樓,每次都要編譯好後,去五樓的interdata機器上除錯,這樣折騰了幾個月後,感覺很麻煩。於是發明的網路。這個時候是區域網。
 
現在明白posix的真實含義了:
pos是可移植作業系統的簡稱。ix是unix的後面兩個字母。合起來就是可移植的unix系統。
posix實際上是一個標準。並不是指特定的東西。就是工業界的iso9001標準,iso9001是一個標準。
posix標準,是為了給所有市面上大家開發的unix制定一個標準。之所以要制定一個標準約束。因為,每個人是可以拿到原始碼進行修改,於是當時的unix版本很多。於是迫切地需要一種統一的標準。
 
 
unix的開源過程是怎樣的?
當時,貝爾實驗室的發明了unix。在一臺廢棄的pdp-7機器上。後來公開發布了unix的論文。使得許多大學紛紛向實驗室索要unix的拷貝。
當時貝爾實驗室的母公司-AT&T,因為受到壟斷法的管制,是不能經營計算機業務的。所以他們願意大學支付適當的費用獲取unix的原始碼。後來一些商業公司願意花錢購買unix的原始碼進行修改,修改成自己的版本來發布。當時其實微軟也花錢購買了unix,以xenix的名義出售版本7好幾年了。
 
AT&T公司後來釋出unix版本,進行商業化(因為通過了政府的拆分,允許設立子公司來經營計算機業務)。但是失敗了,沒有受到市場很大的反響。最終在1993年決定賣給novell,novell在1995年又賣給了santa cruz operation公司。
那個時候很多公司擁有了unix的許可證。
 
 
linux的出生
 
當時有minix。這個系統是一個類unix系統。它的特點是,微核心。如何解釋這種微核心呢?
 
當時的很多人要求在minix上增加功能,得不到響應。越來越不滿。當時又沒有freebsd。
 
後來,當時的linux作者,就參考了minix的原始碼,對它進行了重構一次。唯一不同的是,它是使用整體設計方式。搞不清楚是怎麼樣的。是開發作業系統的方式不同。
 
1991年的時候釋出一個版本。
 
加州大學伯利克分校早期獲得了unix第6個版本的原始碼,他們自己修改原始碼進行釋出,這就是著名的freebsd系統。
 

相關文章