出版時間:2005-5 出版社:機(jī)械工業(yè)出版社 作者:羅賓斯 頁數(shù):656 譯者:陳涓
Tag標(biāo)簽:無
內(nèi)容概要
本書是UNIX系統(tǒng)編程的經(jīng)典教材,并基于最新的UNIX標(biāo)準(zhǔn)進(jìn)行了更新,其內(nèi)容完全覆蓋文件、信號、POSIX線程、UDP、Web和客戶機(jī)-服務(wù)器等相關(guān)內(nèi)容,并對通信、并發(fā)和多線程問題進(jìn)行了透徹的研究,對復(fù)雜的概念進(jìn)行了全面、完善以及明晰的解釋,并以此而聞名。本書不僅提供了大量實例和練習(xí),還專門設(shè)計了有針對性的項目,并給出了參考答案,幫助讀者理解相關(guān)的概念,增強(qiáng)應(yīng)用能力。本書適合作為高等院校計算機(jī)專業(yè)教材,也可供軟件開發(fā)人員參考。
作者簡介
Kay A.Robbins和Steven Robbins從麻省理工學(xué)院獲得博士學(xué)位。他們現(xiàn)任教于得克薩斯大學(xué)圣安東尼奧分校的計算機(jī)科學(xué)系。
書籍目錄
第一部分 基礎(chǔ)知識 第1章 技術(shù)對程序的沖擊 1.1 變化中的術(shù)語 1.2 時間和速度 1.3 多道程序設(shè)計和分時 1.4 應(yīng)用層的并發(fā) 1.5 安全和容錯 1.6 侵入帶來的緩沖區(qū)溢出 1.7 UNIX標(biāo)準(zhǔn) 1.8 擴(kuò)展閱讀 第2章 程序、進(jìn)程和線程 2.1 程序怎樣轉(zhuǎn)換成進(jìn)程 2.2 線程和執(zhí)行線程 2.3 程序映像的布局 2.4 庫函數(shù)調(diào)用 2.5 函數(shù)返回值和錯誤 2.6 參數(shù)數(shù)組 2.7 線程安全的函數(shù) 2.8 靜態(tài)變量的使用 2.9 靜態(tài)對象的結(jié)構(gòu) 2.10 進(jìn)程環(huán)境 2.11 進(jìn)程終止 2.12 練習(xí):一個env工具 2.13 練習(xí):消息日志 2.14 擴(kuò)展閱讀 第3章 UNIX系統(tǒng)中的進(jìn)程 …… 第4章 UNIX I/O 第5章 文件和目錄 第6章 UNIX特殊文件 第7章 項目:令牌環(huán) 第二部分 異步事件 第8章 信號 第9章 時間和定時器 第10章 項目:虛擬定時器 第11章 項目:破解命令解釋程序 第三部分 并發(fā) 第12章 POSIX線程 第13章 線程同步 第14章 臨界區(qū)和信號量 第15章 POSIX IPC 第16章 項目:生產(chǎn)者消費者同步 第17章 項目:非完全并行虛擬機(jī) 第四部分 通信 第18章 面向連接的通信 第19章 項目:WWW重定向 第20章 無連接通信和多播 第21章 項目:因特網(wǎng)音頻廣播 第22章 項目:服務(wù)器性能 附錄A UNIX 基礎(chǔ) 附錄B 重啟庫 附錄C UICI的實現(xiàn) 附錄D 日志函數(shù) 附錄E POSIX擴(kuò)展 參考文獻(xiàn) 程序索引 索引
媒體關(guān)注與評論
前言: 本書是1995年P(guān)rentice Hall 出版的《Practical UNIX Programming: A Guide to Communication, Concurrency and Multithreading》的第2版。為了更好地反映本書的內(nèi)容,我們修改了書名(英文版)。同上一版相比,除了書名,我們還對許多地方進(jìn)行了修改。 因特網(wǎng)已經(jīng)成為計算和社會領(lǐng)域中的一個主導(dǎo)因素。我們的個人信息聯(lián)網(wǎng)了,我們的軟件經(jīng)常會受到攻擊。因此,編寫正確的代碼顯得更加重要。在新的版本中,我們盡量去生成能夠正確地處理錯誤和特殊情況的代碼。我們知道,只是聲稱“處理了所有的錯誤”,卻在給出的代碼示例中省略掉錯誤處理,是沒有什么說服力的。但是,錯誤處理使代碼變得更加復(fù)雜,我們想盡力使代碼清晰一些。 本書對前一版的另一個重大改進(jìn)就是采用了單一UNIX規(guī)范,在本書中我們稱之為POSIX。我們再也不用為選用哪個廠商的庫函數(shù)而發(fā)愁了—現(xiàn)在已有正式的版本了。在編寫本書的過程中,我們盡了最大的努力來遵循這個標(biāo)準(zhǔn)。 本書與眾不同之處是含有練習(xí)和項目章。實際上,本書就是從一個項目手冊發(fā)展而來的,這個項目手冊是美國國家科學(xué)基金課題(National Science Foundation Grant)的一部分。在完成這個項目的初期開發(fā)之后,我們逐漸認(rèn)識到:完成這個項目所需的資料分散在很多地方—通??梢栽谀切┨峁┝舜罅考?xì)節(jié)但很少進(jìn)行概念描述的參考書中找到這些資料。這樣,這本書就逐步演變成一本基于最新UNIX標(biāo)準(zhǔn)的完備的參考書了。 本書分為四個部分,每個部分中都包括一些主題章和項目章。主題章以循序漸進(jìn)的方式涵蓋了特定的資料,其中有很多例子和小練習(xí)。本書還針對進(jìn)程管理、并發(fā)和通信過程中的很多基本概念提供了編程練習(xí)(即項目章)。這些編程練習(xí)和傳統(tǒng)科學(xué)課程中的實驗作用相當(dāng)。只有通過實踐,才能真正理解書中的概念。這些練習(xí)的難度由淺入深,很多練習(xí)都只要不到100行的代碼就可以實現(xiàn)。 下表對本書的結(jié)構(gòu)進(jìn)行了總結(jié)。有14個主題章,這些主題章與8個項目章相互獨立。第一次通讀本書時可以略過項目章。 項目章通過開發(fā)一個擴(kuò)展的應(yīng)用將幾個主題章中的資料整合起來。這些項目包含兩個層面:除了說明編程思想之外,還引導(dǎo)讀者去理解與應(yīng)用相關(guān)的更高級的主題。這些項目都是分階段設(shè)計的,大多數(shù)完整的實現(xiàn)都只需要幾百行代碼。由于不需要編寫大量的代碼,因此讀者可以將注意力集中在對概念的理解而不是代碼的調(diào)試上。為了簡化編程,我們提供了網(wǎng)絡(luò)通信和日志輸出的庫。對專業(yè)的程序員來說,主題章結(jié)尾處的練習(xí)提供了基本的練習(xí)內(nèi)容。通常,使用本書的教師可以在一個學(xué)期的課程中挑選幾個練習(xí)和一個項目章讓學(xué)生們實現(xiàn)。每個項目都有很多變化,因此這些項目可以在多個學(xué)期中反復(fù)使用。 讀者可以選擇不同的方式來讀這本書。第一部分中的主題章是學(xué)習(xí)本書其他部分的基礎(chǔ)。讀完第一部分的主題章之后,讀者就可以按任意的順序來學(xué)習(xí)第二部分到第四部分了。但后繼各章結(jié)尾處有關(guān)交互(例如,線程是怎樣與信號交互的)的討論除外。 我們假定讀者是一名很好的C程序員,盡管不一定是UNIX C的程序員。讀者應(yīng)該熟悉C語言編程和基本的數(shù)據(jù)結(jié)構(gòu)。如果你剛剛接觸UNIX,附錄A中給出了程序開發(fā)的一些必備知識。 本書中包括標(biāo)準(zhǔn)函數(shù)的概要,在“概要”的右下角列出了用來說明函數(shù)的相關(guān)標(biāo)準(zhǔn)。 知識的更新如此之快,然而書的內(nèi)容卻是有限的。我們歡迎讀者給我們提出意見和建議。讀者可以給我們發(fā)電子郵件authors@usp.cs.utsa.edu。我們盡了最大的努力來編寫一本無差錯的書。但是,如果你是第一個向我們指出某個錯誤的人,我們會在本書的網(wǎng)站上向你表示誠摯的謝意。我們在Web站http://usp.cs.utsa.edu/usp上提供了與本書相關(guān)的信息。本書包含的所有代碼都可以從這個Web站點上下載。 譯者序: 本書是一本介紹UNIX系統(tǒng)的工作原理以及學(xué)習(xí)UNIX系統(tǒng)程序編寫方法的經(jīng)典教材。對于程序員來說,本書同樣是一本不可多得的案頭必備參考書。讀者在掌握了操作系統(tǒng)、C語言以及計算機(jī)網(wǎng)絡(luò)的基本知識后學(xué)習(xí)本書,會發(fā)現(xiàn)本書將使讀者對UNIX系統(tǒng)的理解登上一個新的高度,并將讀者編寫多線程和網(wǎng)絡(luò)通信程序的能力提高到一個新的境界。 本書有以下幾個突出特點:其一,在講述基本概念時,本書圍繞主題設(shè)計了大量實例程序和練習(xí)來加深讀者對概念的理解;其二,在各部分的最后,作者精心設(shè)計了生動有趣的項目來總結(jié)各部分的主要內(nèi)容。這些項目,例如破解命令解釋程序、WWW重定向、因特網(wǎng)音頻廣播、服務(wù)器性能等的取材都有很強(qiáng)的實際應(yīng)用背景,稍加完善就是一個可用的程序;其三,本書采用了最新的UNIX標(biāo)準(zhǔn):Single UNIX Specification,并在書中加入了大量的最新信息,如火星探路者中的優(yōu)先級反轉(zhuǎn)缺陷等。另外,本書各章末尾處的擴(kuò)展閱讀也給讀者指出了相關(guān)領(lǐng)域經(jīng)典的或最新的參考資料并進(jìn)行了細(xì)致的評價,對讀者進(jìn)一步研究提供了很好的指導(dǎo)。 如果您希望了解并掌握操作系統(tǒng)接口及其工作原理,我們相信本書將是一本合適的教材及參考書;如果您已經(jīng)具備了初步的UNIX程序編寫能力,本書將會引領(lǐng)您進(jìn)入系統(tǒng)程序編寫者的行列;如果您已經(jīng)是一個熟練的系統(tǒng)程序員了,本書豐富的內(nèi)容實例、充實的知識架構(gòu)也一定會讓您對計算機(jī)系統(tǒng)的理解有新的升華。 本書的第20、21、22章由趙振平翻譯,其他部分由陳涓翻譯。郭傳雄和趙振平校閱了全書。 致謝 我們非常感謝Mike Speciner和Bob Lynch,他們通讀了全部手稿,并提出了很多有益的建議。我們尤其要對Mary Lou Nohr細(xì)心睿智的編輯工作表示感謝。我們還要對Neal Wagner和Radia Perlman給予的鼓勵和建議表示感謝。 從1988年至今(2003年),我們?yōu)榇髮W(xué)本科生和研究生開設(shè)了操作系統(tǒng)課程,本書中很多資料都曾作為這些教學(xué)課程的一部分使用。學(xué)習(xí)此課程的學(xué)生們都經(jīng)歷了書稿發(fā)展的不同階段,并對不斷出現(xiàn)的項目進(jìn)行了實際的測試。他們提供的程序故障、注釋、抱怨和建議都使本書更加出色,并且使我們對這些主題之間的相互聯(lián)系有了更深刻的認(rèn)識。在早期書稿中發(fā)現(xiàn)錯誤的學(xué)生有Joseph Bell、Carlos Cardenas、Igor Grinshpan、Jason Jendrusch和James Manion。我們要感謝美國國家科學(xué)基金會通過NSF-ILI授權(quán)的USE-0950497對我們組建實驗室提供的支持,這樣我們才有機(jī)會去開展最初的課程,而這些課程正是本書的基礎(chǔ)。NSF(DUE-975093、DUE-9752165和DUE-0088769)還為開發(fā)那些用來探索和分析操作系統(tǒng)概念的工具提供了支持。 我們要感謝Prentice Hall的編輯Greg Doench在整個過程中為我們提供的指導(dǎo),還要感謝我們的出版編輯William Mara使此書得以出版。我們用對本書進(jìn)行了排版,的制作者提供了可以免費使用的軟件,我們還要向他們表達(dá)我們的謝意。 我們特別要感謝我們的家人,他們給了我們無限的愛和支持,尤其要感謝我們的孩子Nicole和Thomas,他們對這項艱巨的任務(wù)表示了熱情和理解。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載