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