2005-06-08 21:18:27余強

Unix核心 介紹_Shiau Yong-Ching

發信人: syc@cc.ntu.edu.tw (Shiau Yong-Ching), 看板: Linux
標 題: Unix核心 介紹
發信站: National Taiwan University (Wed Jul 9 23:23:08 1997)


在出國前, 送給陪伴我大學四年的TAnet & UNIX...


UNIX Internals

The New Fronters

導讀

"UNIX系統的安裝數已經成長到10個,
預料此數字會持續增加中"
-- Ken Thompson和Dennis Ritchie
於UNIX程式設計師手冊第二版
1972年6月12日

討論UNIX的書籍很多,但是絕大部分都只是討論如何使用,討論UNIX程式設計的書不
多,而介紹UNIX系統核心的書則是更少了..以下是幾本有名的書:

* Bach的The Design of the UNIX Operating System, 1986 --討論System V
Release 2
* Leffler等人, The Design and Implementation of the 4.3BSD UNIX
Operating System, 1988 -- 討論4.3BSD UNIX
* Goodheart和Cox, The Magic Garden Explained, 1994 -- 討論System V
Release 4.0

然而,這些書都只是針對單獨的/特定的UNIX系統所寫的,很少給讀者一個整體的
觀點. 而Uresh Vahalia的UNIX Internals -- The New Frontiers這本書
則是從一個宏觀的角度來看Unix系統.在本書中,作者討論了商業界,學術界
的各種UNIX系統,詳細的介紹了各系統的演算法,並對各系統的優缺點作了
詳細而且客觀的比較,實在是系統管理員,程式設計師,電腦玩家認識各家
UNIX核心最好的讀物.

本書是以介紹UNIX System V Release 4.2為主,並旁徵博引其他各家的UNIX,
以討論其中利弊得失.出版日期是1996,是介紹UNIX核心的最新參考資料.

我的讀後感是沒有基礎會讀起來很辛苦.有UNIX的使用,管理以及程式設計的經驗
是必須的,建議Bach的The Design of the UNIX Operating
System也先讀過,那麼讀這本
書就駕輕就熟了.

本文依序介紹本書中精采的部分,也就是大部分UNIX愛好者想要了解的部分,以饗宴
那些無法讀原文書,或者沒有時間專研Unix核心者.對於讀者的程度沒有特定的假設.
介紹的深度也是隨興的,請各位多多包涵.


Chapter 1 Introduction

失落的UNIX

本書對各家的UNIX皆有涉獵,唯獨IBM的AIX則是幾乎支字未提.如果你
是AIX的支持者,那麼本書可能會讓你失望,因為AIX好像對UNIX核心的
發展不具影響力.同樣的, HP-UX也是一樣. 唯一你會知道的,大概是
這兩個UNIX皆屬於System V家族的著名UNIX.

本書寫作應在1995年左右,然而1995,1996是UNIX變動最大的一年,有許
多的UNIX廠商更新了他們陳舊的UNIX系統,幾乎都是向SVR4看齊,所以
沒有提到他們, 應該影響不大吧, 或許他們沒有什麼特殊的技術,也就是
比較平庸:p, 也可能是因為他們比較不開放,跟學術界不太打交道的緣故吧...

本章最重要的內容是UNIX的歷史,不過由於1995/96變化太大了,有些東西
來不及走進歷史 :)

本書常常提到的UNIX系統有正宗的UNIX System V Release 4.x,
UNIX最大的非主流派BSD UNIX 4.x (基本上是4.3, 4.4)以及UNIX的傳人,
Carnegie-Mellon大學的Mach (ch發k的音,唸Mac).再來就是佔有率最高的
UNIX--Sun的SunOS以及Solaris. Digital Equipment Corporation(簡稱
Digital,或DEC) 的OSF/1,現在改名叫Digital UNIX,則是因為
使用了Mach核心而沾了不少光,曝光率大增.

綜觀全書, Sun 可以說是最有研發實力的UNIX廠商,實在不可輕忽.

歷史課

1960年代末期,Bell Telephone Laboratories, General Electric 和
Massachusetts Institude of Technlogy合作研發一個多使用者的作
業系統, Multics.此計劃於1969年三月取消. 取消後的故事大家有點
熟,又有點不熟,這裡把key part點出來:

* Ken Thompson在DEC PDP-7上寫了個叫Space Travel的電玩.
* PDP-7欠缺程式發展環境,so, Ken Thompson + Dennis Ritchie寫了UNIX出來.
* Ken Thompson寫了B語言(由BCPL演化而來的直譯語言)
* Dennis Ritchie把B改成了著名的C語言.
* 1973年11月Unix version 4,使用C語言改寫而成.

Unix的第一篇Paper "The UNIX Time Sharing System"由Ken Thompson和Dennis
Ritchie
提出,在1973年十月the ACM Symposium on OS (SOSP)中提出來.而在次年七月的
the Communications of the ACM發表.這是UNIX與外界的第一次接觸.

UNIX免費流傳的原因

1956年AT&T受到反托拉斯法調查.調查期間AT&T與聯邦政府簽訂了一個協議,
不能經營與電話電報無關之業務.BTL隸屬於AT&T.

UNIX在SOSP發表後,學術界對UNIX及其原始碼索求不斷,所以AT&T便免費的
提供原始碼給學術界,此舉造成了UNIX的廣泛流傳.

Berkeley的Computer Science Research Group, CSRG對UNIX的發展做了很多的貢獻.
Berkeley的UNIX稱為BSD UNIX. BSD對UNIX的貢獻有virtual memory, TCP/IP, Fast
File System(FFS), reliable signals, socket介面.

4.4BSD把原來的VM換成Mach的VM,並引進了Logged File System. (LFS).
CSRG做完BSD4.4之後就關門大吉了.原因有:

* 補助的不足
* BSD的特色已經可以在商業系統上見到了(所以不用DIY了)
* 系統已經大到不是一個小組可以維護的程度了

有一家公司Berkeley Software Design, Inc.(BSDI)成立來繼續行銷4.4BSD,
從事商業行為.他們的BSD叫做BSD/386. BSDI宣稱BSD/386經過了Berkeley
的改寫,已經沒有AT&T的原始碼了.不過AT&T還是對Berkeley和BSDI提出告訴.
導火線是BSDI的電話: 1-800-ITS-UNIX.此一訴訟延後了4.4BSD的發表.
終於1994年二月四日,雙方達成和解,撤銷告訴. BSDI發表了不含AT&T宣稱
的原始碼的4.4BSD原始碼,稱為4.4BSD-Lite. 接下來的故事就是在網路上
的傳奇,你可以在386BSD的討論區看到.


UNIX System #

反拖拉司法調查結束後將AT&T拆成數個子公司, BTL改名為AT&T Bell Laboratories.
並且AT&T被允許進入電腦市場. AT&T發表的商業版UNIX計有System III,
System V, System V Release 2 (SVR2) System V Release 3, System V Release
4/4.2

System V引進了許多新的特色(相對於舊的UNIX),如regions架構的虛擬記憶體(和
BSD的不太相同), IPC, remote file sharing, shared libraries,
STREAMS架構等等.

UNIX的商業化

商業化的UNIX也為UNIX爭添不少特色,如SunOS的Network File System (NFS),
vnode/vfs interface支援多重檔案系統,一個新的VM架構(為SVR4所採用)
AIX是第一個支援journaling file system的商業UNIX. ULTRIX (DEC的舊UNIX)
是支援multiprocessor UNIX的先趨之一.

Mach

Mach是Carnegie-Mellon大學(CMU)的microkernel(微核心)作業系統.(1980年代)

隨著功能越來越多,UNIX也日漸龐大複雜而難以掌握, microkernel的概念就是
把Kernel去蕪存菁,僅留下重要的部分,其餘的功能都用user階層的程式(稱作
server)來達成就好了,藉此減低kernel的複雜度.

Mach設計目標有

* 與UNIX相容
* 在單處理器,多處理器上都能執行
* 適合分散式運算環境

最普遍的版本是Mach2.5,是許多商業UNIX如DEC OSF/1, NextStep的基礎.
Mach3.0才是真正純粹的完全Microkernel化版本.

標準何在

UNIX的標準就像他的版本一樣多.本小節仔細的介紹了各個標準與其命運.
討論到最新的資訊為Novell將UNIX商標賣給了X/Open,以及Sun Solaris 2.5版.

1986年IEEE指定了一個委員會制定了一個一個開放作業系統的標準,稱為
POSIX (Portable Operating Systems Interface,最後加上個X,為了好聽,也是因為
本質上是UNIX的標準).<-這是我聽說的,不是書上寫的.

X/Open是一個由國際性電腦廠商組成的機構,成立於1984.其目的比較務實,
不是為眾多的UNIX標準再添加一個.而是把重心放在匯集現有的標準,
整理出一個共通的環境.XPG (X/Open Portability Guide)就是他的大作.
目前UNIX這個商標應該是由X/Open所擁有.

除了標準以外,UNIX廠商也有合縱聯盟.

UI, Unix International,是AT&T和Sun為主的聯盟.主要的產物有SVR4和OpenLook.
OSF, Open Software Foundation為以IBM,DEC,HP為首的公司投資的子公司.
OSF對UNIX的貢獻有Motif標準,DCE (Distributed Computing Environment).

在NT出來攪局後,UI瓦解了,AT&T不要UNIX了(專心於他的plan9作業系統?),
SVR4的傳人變成了Sun的Solaris,不過Sun也不再堅持OpenLook,同時支援CDE
(Common Desktop Environment,講白話一點就是Motif).

Chapter 2 The Process and the Kernel

介紹Prcoess的各種資料結構與執行態,沒什麼特別的.等於是Unix Progarmming
的小複習.

比較特別的是vfork的描述.有些書會讓我們有在現代的UNIX下, vfork = fork with
copy on write的錯覺.實際上vfork後, child是和parent共用一塊定址空間(比較像
multi-threading), child可以修改parent的資料.
可能目前unix的語意和原始的vfork
不一樣了吧..