2007 年開(kāi)始系統(tǒng)地學(xué)習(xí) Shell 編程,并在蘭大開(kāi)源社區(qū)寫(xiě)了序列文章。
在編寫(xiě)《Shell 編程范例》文章的《進(jìn)程操作》一章時(shí),為了全面了解進(jìn)程的來(lái)龍去脈,對(duì)程序開(kāi)發(fā)過(guò)程的細(xì)節(jié)、ELF 格式的分析、進(jìn)程的內(nèi)存映像等進(jìn)行了全面地梳理,后來(lái)搞得“雪球越滾越大”,甚至脫離了 Shell 編程關(guān)注的內(nèi)容。所以想了個(gè)小辦法,“大事化小,小事化了”,把涉及到的內(nèi)容進(jìn)行了分解,進(jìn)而演化成另外一個(gè)完整的序列。
2008 年 3 月 1 日,當(dāng)初步完成整個(gè)序列時(shí),做了如下的小結(jié):
到今天,關(guān)于"Linux 下 C 語(yǔ)言開(kāi)發(fā)過(guò)程"的一個(gè)簡(jiǎn)單視圖總算粗略地完成了,從寒假之前的一段時(shí)間到現(xiàn)在過(guò)了將近一個(gè)月左右吧。寫(xiě)這個(gè)主題的目的源自“Shell 編程范例之進(jìn)程操作”,當(dāng)寫(xiě)到這一章時(shí),突然對(duì)進(jìn)程的由來(lái)、本身和去向感到“迷惑不解”。所以想著好好花些時(shí)間來(lái)弄清楚它們,現(xiàn)在發(fā)現(xiàn),這個(gè)由來(lái)就是這里的程序開(kāi)發(fā)過(guò)程,進(jìn)程來(lái)自一個(gè)普通的文本文件,在這里是 C 語(yǔ)言程序,C 語(yǔ)言程序經(jīng)過(guò)編輯、預(yù)處理、編譯、匯編、鏈接、執(zhí)行而成為一個(gè)進(jìn)程;而進(jìn)程本身呢?當(dāng)一個(gè)可執(zhí)行文件被執(zhí)行以后,有了 exec 調(diào)用,被程序解釋器映射到了內(nèi)存中,有了它的內(nèi)存映像;而進(jìn)程的去向呢?通過(guò)不斷地執(zhí)行指令和內(nèi)存映像的變化,進(jìn)程完成著各項(xiàng)任務(wù),等任務(wù)完成以后就可以退出了(exit)。
這樣一份視圖實(shí)際上是在寒假之前繪好的,可以從下圖中看到它;不過(guò)到現(xiàn)在才明白背后的很多細(xì)節(jié)。這些細(xì)節(jié)就是這個(gè)序列的每個(gè)篇章,可以對(duì)照“視圖”來(lái)閱讀它們。
目前整個(gè)序列大部分都已經(jīng)以 Blog 的形式寫(xiě)完,大體結(jié)構(gòu)目下:
更新時(shí)間:2008-2-22
第二部分:《匯編和鏈接》(更新時(shí)間:2008-2-22)
更新時(shí)間:2008-2-15
第二部分(討論進(jìn)程的內(nèi)存分布情況)(更新時(shí)間:2008-6-1)
更新時(shí)間:2008-2-21
更新時(shí)間:2008-2-26
更新時(shí)間:2008-2-23
考慮到整個(gè) Linux 世界的蓬勃發(fā)展,Linux 和 C 語(yǔ)言的應(yīng)用環(huán)境越來(lái)越多,相關(guān)使用群體會(huì)不斷增加,所以最近計(jì)劃把該序列重新整理,以自由書(shū)籍的方式不斷更新,以便惠及更多的讀者。
打算重新規(guī)劃、增補(bǔ)整個(gè)序列,并以開(kāi)源項(xiàng)目的方式持續(xù)維護(hù),并通過(guò) 泰曉科技|TinLab.org 平臺(tái)接受讀者的反饋,直到正式發(fā)行出版。
自由書(shū)籍將會(huì)維護(hù)在 泰曉科技 的項(xiàng)目倉(cāng)庫(kù)中。項(xiàng)目相關(guān)信息如下:
歡迎大家指出本書(shū)初稿中的不足,甚至參與到相關(guān)章節(jié)的寫(xiě)作、校訂和完善中來(lái)。
如果有時(shí)間和興趣,歡迎參與。可以通過(guò) 泰曉科技 聯(lián)系我們,或者直接關(guān)注微博@泰曉科技并私信我們。
更多建議: