在批處理時(shí)代及之前,程序必須排序執(zhí)行,被安排在同一臺(tái)機(jī)器的幾個(gè)程序很難直接通信,每個(gè)程序獨(dú)占一臺(tái)機(jī)器,只能和同時(shí)刻獨(dú)占別的機(jī)器的程序遠(yuǎn)程通信,類似于打電話,不能自己給自己打電話,因?yàn)樽约河肋h(yuǎn)占線,可以給別人打,但對方必須在線。
微時(shí)間片輪轉(zhuǎn)調(diào)度的現(xiàn)代操作系統(tǒng)制造了進(jìn)程(虛擬機(jī))假象,將多個(gè)程序拉到了同一個(gè)時(shí)空,每個(gè)程序獨(dú)占一個(gè)進(jìn)程,大家同時(shí)運(yùn)行在同一臺(tái)機(jī)器,彼此之間可隨時(shí)溝通,從此,一切皆可為進(jìn)程。這個(gè)意義非常重大。
TCP/IP 的胖端瘦網(wǎng)模型來源于此。
以往排隊(duì)執(zhí)行的程序可 “同時(shí)” 執(zhí)行,程序之間便可激烈碰撞出火花,相互配合,這也是 UNIX 本源組合小程序的哲學(xué)思想。批處理時(shí)代,將一個(gè)文件先送到一個(gè) egrep 程序里過濾,再通過網(wǎng)絡(luò)送到另一個(gè)主機(jī),是不可想象的。
交互變得多而復(fù)雜,主機(jī)越發(fā)擁擠,對外通信的程序共享物理資源,迫切需要一種良好的方式調(diào)度資源,為每一個(gè)程序的通信過程管理資源。這意味著網(wǎng)絡(luò)協(xié)議棧的端側(cè)在變胖。
終端不再功能固定,成了一個(gè)同時(shí)運(yùn)行多個(gè)程序的容器,每個(gè)終端接入網(wǎng)絡(luò)時(shí)的這些程序的通信行為不可預(yù)期,必須將接入和通信過程解耦,這意味著終端接入的時(shí)刻,網(wǎng)絡(luò)的核心是無感知的,換句話說,程序間的通信對于網(wǎng)絡(luò)必須無狀態(tài),這是瘦網(wǎng)的來源。
終端接入時(shí),僅分配一個(gè) IP 地址,只在程序需要通信的那一刻,才分配傳輸層以上資源,這是現(xiàn)在的方式。但在一開始,TCP 和 IP 是一個(gè)整體,端側(cè)沒有現(xiàn)在胖,網(wǎng)側(cè)沒有現(xiàn)在瘦,隨著系統(tǒng)的演進(jìn),端側(cè)越來越復(fù)雜,而網(wǎng)側(cè)越來越無力承受這種復(fù)雜,才終于成了現(xiàn)在 TCP/IP 胖端瘦網(wǎng)的樣子。
曾看過一個(gè)講分組交換網(wǎng)的論文,說是分組交換網(wǎng)的思想早已有之,但在終端 “通用計(jì)算機(jī)” 化后才開始有大發(fā)展,計(jì)算機(jī)科學(xué)的發(fā)展促進(jìn)了網(wǎng)絡(luò)通信,說的大致就是這個(gè)意思。
從經(jīng)濟(jì)學(xué)角度看,公共資源會(huì)隨著使用者的增多變得越發(fā)便宜,便宜意味著簡化,這里的公共資源是 IP 網(wǎng)絡(luò),使用者是 TCP/UDP…,復(fù)雜性會(huì)集中在主機(jī),集中在針對這些傳輸協(xié)議的管理上。
還是之前那個(gè)觀點(diǎn),超過一定閾值后,東西越多,管理起來越復(fù)雜,額外管理開銷越大。 dog250的博客
編者按:這種時(shí)候往往需要重新定義問題,抽象解決問題的新方案,否則就會(huì)一直內(nèi)卷下去。
韓信點(diǎn)兵,多多益善,現(xiàn)實(shí)中并不真實(shí)。
設(shè)想一場頭腦風(fēng)暴或者辯論,如果規(guī)定發(fā)言人必須一次性把要說的全部講完,一旦結(jié)束便不能再講,還能碰撞出什么新想法?恰恰是在同一時(shí)空中的實(shí)時(shí)交互才讓這些變得有趣并有益。時(shí)間片輪轉(zhuǎn)調(diào)度的現(xiàn)代操作系統(tǒng)給了程序在同一時(shí)空溝通碰撞的權(quán)利,而 TCP/IP 助力將這種權(quán)利延伸了互聯(lián)網(wǎng)的每一個(gè)角落。
現(xiàn)代操作系統(tǒng)的意義非常特殊,感覺比 TCP/IP 還更重要。網(wǎng)絡(luò)連接早已有之,從古羅馬道路到 20 世紀(jì)電話線,一直到 1960 年代的分組交換網(wǎng),但一直沒被大用,直到現(xiàn)代 UNIX 系統(tǒng)開始發(fā)展,TCP/IP 才終于"被迫"進(jìn)場。因?yàn)閼?yīng)用和數(shù)據(jù)同時(shí)開始爆發(fā)了,控制信令和數(shù)據(jù)開始變多,迫不及待需要傳輸?shù)搅硪粋€(gè)系統(tǒng),網(wǎng)絡(luò)才開始大發(fā)展。 dog250的博客
這一切的背后,就是多任務(wù)分時(shí)操作系統(tǒng),世界第一次有能力在 “同一時(shí)刻做很多不同的事情”,交互多了,可能性就多了,連鎖反應(yīng)來源于此。后面的事情大家都知道了。
dog250的博客
同樣一段時(shí)間做幾件不同的事,可以不同的方式進(jìn)行,可以一件事做完了再做另一件,按順序來,也可以將每件事情按照自己的邏輯分成不同步驟,輪轉(zhuǎn)不同事情的不同步驟,但這些都沒能將系統(tǒng)"現(xiàn)代化",現(xiàn)代化的根本在于"將每件事都分成了多個(gè)固定時(shí)間片的步驟",不再以事情為本,而以固定時(shí)間片為本,這就誕生了現(xiàn)代調(diào)度系統(tǒng),這是現(xiàn)代操作系統(tǒng)的現(xiàn)代之根,在這個(gè)機(jī)制下,虛擬內(nèi)存幾乎就是順?biāo)浦哿恕?/p>
dog250的博客
現(xiàn)實(shí)中,時(shí)間片并不固定,但這并不重要,因?yàn)檎{(diào)度器已經(jīng)和具體的任務(wù)解耦了,同樣的創(chuàng)舉來自分組交換,時(shí)間片統(tǒng)計(jì)復(fù)用,雖然可以強(qiáng)制規(guī)定每個(gè)報(bào)文固定大小從而占據(jù)固定時(shí)間片,但現(xiàn)實(shí)中報(bào)文在最大限制之下可以任意長,根本在于報(bào)文和時(shí)間解耦,而不再和連接關(guān)聯(lián),所以,所以最后,TCP 真是一個(gè)不合適的傳輸抽象,它明明是一個(gè)連接啊,從這里,你將能推論出 IP 一開始就是 TCP 的一部分,這個(gè)故事和現(xiàn)代操作系統(tǒng)是同一個(gè)故事。 dog250的博客
編輯:黃飛
?
電子發(fā)燒友App










評(píng)論