注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡操作系統(tǒng)其他操作系統(tǒng)UNIX系統(tǒng)編程(原書第2版)

UNIX系統(tǒng)編程(原書第2版)

UNIX系統(tǒng)編程(原書第2版)

定 價:¥78.00

作 者: (美)Kay A.Robbins,(美)Steven Robbins著;陳涓,趙振平譯;陳涓譯
出版社: 機械工業(yè)出版社
叢編項: 計算機科學叢書
標 簽: UNIX

ISBN: 9787111161905 出版時間: 2005-05-01 包裝: 平裝
開本: 26cm 頁數(shù): 656 字數(shù):  

內(nèi)容簡介

  本書是UNIX系統(tǒng)編程的經(jīng)典教材,并基于最新的UNIX標準進行了更新,其內(nèi)容完全覆蓋文件、信號、POSIX線程、UDP、Web和客戶機-服務器等相關內(nèi)容,并對通信、并發(fā)和多線程問題進行了透徹的研究,對復雜的概念進行了全面、完善以及明晰的解釋,并以此而聞名。本書不僅提供了大量實例和練習,還專門設計了有針對性的項目,并給出了參考答案,幫助讀者理解相關的概念,增強應用能力。本書適合作為高等院校計算機專業(yè)教材,也可供軟件開發(fā)人員參考。本書前言前言:本書是1995年PrenticeHall出版的《PracticalUNIXProgramming:AGuidetoCommunication,ConcurrencyandMultithreading》的第2版。為了更好地反映本書的內(nèi)容,我們修改了書名(英文版)。同上一版相比,除了書名,我們還對許多地方進行了修改。因特網(wǎng)已經(jīng)成為計算和社會領域中的一個主導因素。我們的個人信息聯(lián)網(wǎng)了,我們的軟件經(jīng)常會受到攻擊。因此,編寫正確的代碼顯得更加重要。在新的版本中,我們盡量去生成能夠正確地處理錯誤和特殊情況的代碼。我們知道,只是聲稱“處理了所有的錯誤”,卻在給出的代碼示例中省略掉錯誤處理,是沒有什么說服力的。但是,錯誤處理使代碼變得更加復雜,我們想盡力使代碼清晰一些。本書對前一版的另一個重大改進就是采用了單一UNIX規(guī)范,在本書中我們稱之為POSIX。我們再也不用為選用哪個廠商的庫函數(shù)而發(fā)愁了—現(xiàn)在已有正式的版本了。在編寫本書的過程中,我們盡了最大的努力來遵循這個標準。本書與眾不同之處是含有練習和項目章。實際上,本書就是從一個項目手冊發(fā)展而來的,這個項目手冊是美國國家科學基金課題(NationalScienceFoundationGrant)的一部分。在完成這個項目的初期開發(fā)之后,我們逐漸認識到:完成這個項目所需的資料分散在很多地方—通??梢栽谀切┨峁┝舜罅考毠?jié)但很少進行概念描述的參考書中找到這些資料。這樣,這本書就逐步演變成一本基于最新UNIX標準的完備的參考書了。本書分為四個部分,每個部分中都包括一些主題章和項目章。主題章以循序漸進的方式涵蓋了特定的資料,其中有很多例子和小練習。本書還針對進程管理、并發(fā)和通信過程中的很多基本概念提供了編程練習(即項目章)。這些編程練習和傳統(tǒng)科學課程中的實驗作用相當。只有通過實踐,才能真正理解書中的概念。這些練習的難度由淺入深,很多練習都只要不到100行的代碼就可以實現(xiàn)。下表對本書的結(jié)構(gòu)進行了總結(jié)。有14個主題章,這些主題章與8個項目章相互獨立。第一次通讀本書時可以略過項目章。項目章通過開發(fā)一個擴展的應用將幾個主題章中的資料整合起來。這些項目包含兩個層面:除了說明編程思想之外,還引導讀者去理解與應用相關的更高級的主題。這些項目都是分階段設計的,大多數(shù)完整的實現(xiàn)都只需要幾百行代碼。由于不需要編寫大量的代碼,因此讀者可以將注意力集中在對概念的理解而不是代碼的調(diào)試上。為了簡化編程,我們提供了網(wǎng)絡通信和日志輸出的庫。對專業(yè)的程序員來說,主題章結(jié)尾處的練習提供了基本的練習內(nèi)容。通常,使用本書的教師可以在一個學期的課程中挑選幾個練習和一個項目章讓學生們實現(xiàn)。每個項目都有很多變化,因此這些項目可以在多個學期中反復使用。讀者可以選擇不同的方式來讀這本書。第一部分中的主題章是學習本書其他部分的基礎。讀完第一部分的主題章之后,讀者就可以按任意的順序來學習第二部分到第四部分了。但后繼各章結(jié)尾處有關交互(例如,線程是怎樣與信號交互的)的討論除外。我們假定讀者是一名很好的C程序員,盡管不一定是UNIXC的程序員。讀者應該熟悉C語言編程和基本的數(shù)據(jù)結(jié)構(gòu)。如果你剛剛接觸UNIX,附錄A中給出了程序開發(fā)的一些必備知識。本書中包括標準函數(shù)的概要,在“概要”的右下角列出了用來說明函數(shù)的相關標準。知識的更新如此之快,然而書的內(nèi)容卻是有限的。我們歡迎讀者給我們提出意見和建議。讀者可以給我們發(fā)電子郵件authors@usp.cs.utsa.edu。我們盡了最大的努力來編寫一本無差錯的書。但是,如果你是第一個向我們指出某個錯誤的人,我們會在本書的網(wǎng)站上向你表示誠摯的謝意。我們在Web站http://usp.cs.utsa.edu/usp上提供了與本書相關的信息。本書包含的所有代碼都可以從這個Web站點上下載。譯者序:本書是一本介紹UNIX系統(tǒng)的工作原理以及學習UNIX系統(tǒng)程序編寫方法的經(jīng)典教材。對于程序員來說,本書同樣是一本不可多得的案頭必備參考書。讀者在掌握了操作系統(tǒng)、C語言以及計算機網(wǎng)絡的基本知識后學習本書,會發(fā)現(xiàn)本書將使讀者對UNIX系統(tǒng)的理解登上一個新的高度,并將讀者編寫多線程和網(wǎng)絡通信程序的能力提高到一個新的境界。本書有以下幾個突出特點:其一,在講述基本概念時,本書圍繞主題設計了大量實例程序和練習來加深讀者對概念的理解;其二,在各部分的最后,作者精心設計了生動有趣的項目來總結(jié)各部分的主要內(nèi)容。這些項目,例如破解命令解釋程序、WWW重定向、因特網(wǎng)音頻廣播、服務器性能等的取材都有很強的實際應用背景,稍加完善就是一個可用的程序;其三,本書采用了最新的UNIX標準:SingleUNIXSpecification,并在書中加入了大量的最新信息,如火星探路者中的優(yōu)先級反轉(zhuǎn)缺陷等。另外,本書各章末尾處的擴展閱讀也給讀者指出了相關領域經(jīng)典的或最新的參考資料并進行了細致的評價,對讀者進一步研究提供了很好的指導。如果您希望了解并掌握操作系統(tǒng)接口及其工作原理,我們相信本書將是一本合適的教材及參考書;如果您已經(jīng)具備了初步的UNIX程序編寫能力,本書將會引領您進入系統(tǒng)程序編寫者的行列;如果您已經(jīng)是一個熟練的系統(tǒng)程序員了,本書豐富的內(nèi)容實例、充實的知識架構(gòu)也一定會讓您對計算機系統(tǒng)的理解有新的升華。本書的第20、21、22章由趙振平翻譯,其他部分由陳涓翻譯。郭傳雄和趙振平校閱了全書。致謝我們非常感謝MikeSpeciner和BobLynch,他們通讀了全部手稿,并提出了很多有益的建議。我們尤其要對MaryLouNohr細心睿智的編輯工作表示感謝。我們還要對NealWagner和RadiaPerlman給予的鼓勵和建議表示感謝。從1988年至今(2003年),我們?yōu)榇髮W本科生和研究生開設了操作系統(tǒng)課程,本書中很多資料都曾作為這些教學課程的一部分使用。學習此課程的學生們都經(jīng)歷了書稿發(fā)展的不同階段,并對不斷出現(xiàn)的項目進行了實際的測試。他們提供的程序故障、注釋、抱怨和建議都使本書更加出色,并且使我們對這些主題之間的相互聯(lián)系有了更深刻的認識。在早期書稿中發(fā)現(xiàn)錯誤的學生有JosephBell、CarlosCardenas、IgorGrinshpan、JasonJendrusch和JamesManion。我們要感謝美國國家科學基金會通過NSF-ILI授權(quán)的USE-0950497對我們組建實驗室提供的支持,這樣我們才有機會去開展最初的課程,而這些課程正是本書的基礎。NSF(DUE-975093、DUE-9752165和DUE-0088769)還為開發(fā)那些用來探索和分析操作系統(tǒng)概念的工具提供了支持。我們要感謝PrenticeHall的編輯GregDoench在整個過程中為我們提供的指導,還要感謝我們的出版編輯WilliamMara使此書得以出版。我們用對本書進行了排版,的制作者提供了可以免費使用的軟件,我們還要向他們表達我們的謝意。我們特別要感謝我們的家人,他們給了我們無限的愛和支持,尤其要感謝我們的孩子Nicole和Thomas,他們對這項艱巨的任務表示了熱情和理解。

作者簡介

  KayA.Robbins和StevenRobbins從麻省理工學院獲得博士學位。他們現(xiàn)任教于得克薩斯大學圣安東尼奧分校的計算機科學系。相關圖書數(shù)據(jù)倉庫(原書第3版)編譯原理并行計算導論(原書第2版)離散數(shù)學導學數(shù)據(jù)庫設計教程(第2版)3D游戲卷1實時渲染與軟件技術3D游戲卷2動畫與高級實時渲染技術數(shù)字圖像處理疑難解析現(xiàn)代信息檢索CAXA數(shù)控銑CAD/CAM技術C語言的科學和藝術計算機視覺信息系統(tǒng)原理:原書第6版計算機網(wǎng)絡系統(tǒng)方案(原書第3版)計算機科學概論(原書第2版)可擴展并行計算技術、結(jié)構(gòu)與編程數(shù)據(jù)庫原理、編程與性能Java面向?qū)ο蟪绦蛟O計教程嵌入式微控制器微機接口技術實驗教程神經(jīng)網(wǎng)絡原理(原書第2版)C++語言的設計和演化信息論、編碼與密碼學軟件需求組合數(shù)學(原書第4版)JAVA編程思想(第2版)數(shù)據(jù)庫系統(tǒng)導論并行程序設計數(shù)據(jù)庫與事務處理操作系統(tǒng)現(xiàn)代操作系統(tǒng)(第2版)計算機網(wǎng)絡:自頂向下方法與Internet特色(原書第3版)高級編譯器設計與實現(xiàn)3D計算機圖形學(原書第3版)C程序設計語言(第2版·新版)習題解答計算機網(wǎng)絡與因特網(wǎng)(原書第4版)人工智能:英文C++編程思想。第2卷:實用編程技術模式分析的核方法

圖書目錄

第一部分  基礎知識
第1章  技術對程序的沖擊        1
1.1  變化中的術語        1
1.2  時間和速度        2
1.3  多道程序設計和分時        3
1.4  應用層的并發(fā)        5
1.4.1  中斷        5
1.4.2  信號        5
1.4.3  輸入和輸出        6
1.4.4  進程、線程和資源共享        6
1.4.5  共享內(nèi)存的多個處理器        6
1.4.6  網(wǎng)絡作為計算機        7
1.5  安全和容錯        7
1.6  侵入帶來的緩沖區(qū)溢出        8
1.6.1  緩沖區(qū)溢出的后果        9
1.6.2  緩沖區(qū)溢出與安全        10
1.7  UNIX標準        11
1.8  擴展閱讀        12
第2章  程序、進程和線程        14
2.1  程序怎樣轉(zhuǎn)換成進程        14
2.2  線程和執(zhí)行線程        15
2.3  程序映像的布局        15
2.4  庫函數(shù)調(diào)用        17
2.5  函數(shù)返回值和錯誤        20
2.6  參數(shù)數(shù)組        21
2.6.1  用makeargv創(chuàng)建參數(shù)數(shù)組        22
2.6.2  makeargv的實現(xiàn)        23
2.7  線程安全的函數(shù)        26
2.8  靜態(tài)變量的使用        28
2.9  靜態(tài)對象的結(jié)構(gòu)        29
2.10  進程環(huán)境        34
2.11  進程終止        36
2.12  練習:一個env工具        38
2.13  練習:消息日志        39
2.14  擴展閱讀        40
第3章  UNIX系統(tǒng)中的進程        41
3.1  進程標識        41
3.2  進程狀態(tài)        42
3.3  UNIX進程的創(chuàng)建與fork調(diào)用        44
3.4  wait函數(shù)        49
3.5  exec函數(shù)        55
3.6  后臺進程與守護進程        59
3.7  臨界區(qū)        61
3.8  練習:進程鏈        61
3.9  練習:進程扇        62
3.10  擴展閱讀        63
第4章  UNIX I/O        64
4.1  設備術語        64
4.2  讀和寫        64
4.3  打開和關閉文件        72
4.4  select函數(shù)        76
4.5  poll函數(shù)        82
4.6  文件表示        84
4.6.1  文件描述符        85
4.6.2  文件指針和緩沖        87
4.6.3  文件描述符的繼承        88
4.7  過濾器和重定向        92
4.8  文件控制        94
4.9  練習:原子日志        97
4.10  練習:cat工具        102
4.11  擴展閱讀        103
第5章  文件和目錄        104
5.1  UNIX文件系統(tǒng)導航        104
5.1.1  當前工作目錄        105
5.1.2  搜索路徑        108
5.2  目錄訪問        108
5.2.1  訪問文件狀態(tài)信息        110
5.2.2  確定文件的類型        113
5.3  UNIX文件系統(tǒng)的實現(xiàn)        113
5.3.1  UNIX文件的實現(xiàn)        114
5.3.2  目錄的實現(xiàn)        116
5.4  硬鏈接和符號鏈接        116
5.4.1  創(chuàng)建或刪除一個鏈接        117
5.4.2  創(chuàng)建和刪除符號鏈接        120
5.5  練習:which命令        125
5.6  練習:通知程序        125
5.7  練習:news biff程序        127
5.8  練習:遍歷目錄        128
5.9  擴展閱讀        130
第6章  UNIX特殊文件        131
6.1  管道        131
6.2  流水線        134
6.3  FIFO        137
6.4  管道與客戶機-服務器模型        140
6.5  終端控制        146
6.6  音頻設備        154
6.7  練習:音頻        158
6.8  練習:路障        160
6.9  練習:stty命令        161
6.10  練習:重溫客戶機-服務器        162
6.11  擴展閱讀        162
第7章  項目:令牌環(huán)        163
7.1  環(huán)形拓撲        163
7.2  環(huán)的形成        164
7.3  環(huán)的研究        169
7.4  簡單的通信        170
7.5  用令牌實現(xiàn)互斥        171
7.6  用投票實現(xiàn)互斥        172
7.7  匿名環(huán)中的領導者選舉        173
7.8  通信中使用的令牌環(huán)        174
7.9  應用流水線技術的預處理器        176
7.10  并行環(huán)算法        177
7.10.1  圖像過濾        178
7.10.2  矩陣乘法        179
7.11  彈性環(huán)        180
7.12  擴展閱讀        181
第二部分  異步事件
第8章  信號        183
8.1  信號的基本概念        183
8.2  產(chǎn)生信號        184
8.3  對信號掩碼和信號集進行操作        187
8.4  捕捉與忽略信號—sigaction        192
8.5  等待信號—pause、sigsuspend和sigwait        197
8.5.1  pause函數(shù)        197
8.5.2  sigsuspend函數(shù)        198
8.5.3  sigwait函數(shù)        204
8.6  信號處理:錯誤和異步信號安全        205
8.7  用siglongjmp和sigsetjmp進行程序控制        207
8.8  用異步I/O編程        209
8.9  練習:轉(zhuǎn)儲統(tǒng)計        218
8.10  練習:同時操作慢速設備        218
8.11  擴展閱讀        219
第9章  時間和定時器        220
9.1  POSIX時間        220
9.1.1  用從Epoch開始的秒數(shù)來表示時間        220
9.1.2  顯示日期和時間        221
9.1.3  用struct timeval來表示時間        223
9.1.4  使用實時時鐘        225
9.1.5  實耗時間和處理器時間的對比        227
9.2  睡眠函數(shù)        230
9.3  POSIX:XSI間隔定時器        231
9.4  實時信號        235
9.5  POSIX:TMR間隔定時器        238
9.6  定時器漂移、超限和絕對時間        242
9.7  擴展閱讀        250
第10章  項目:虛擬定時器        251
10.1  項目概述        251
10.2  簡單的定時器        253
10.3  對五個定時器中的一個進行設置        254
10.3.1  virtualtimers對象        254
10.3.2  hardwaretimer對象        256
10.3.3  主程序的實現(xiàn)        257
10.3.4  用show來置入定時器代碼        257
10.4  使用多個定時器        262
10.4.1  設置多個定時器        263
10.4.2  用多個定時器進行測試        264
10.5  多定時器的健壯實現(xiàn)        266
10.6  POSIX:TMR 定時器的實現(xiàn)        268
10.7  mycron,一個小型的任務調(diào)度工具        269
10.8  擴展閱讀        269
第11章  項目:破解命令解釋程序        270
11.1  建造一個簡單的命令解釋程序        270
11.2  重定向        274
11.3  流水線        275
11.4  前臺的信號處理        278
11.5  進程組、會話和控制終端        283
11.5.1  進程組        283
11.5.2  會話        284
11.6  ush中的后臺進程        287
11.7  作業(yè)控制        293
11.8  ush的作業(yè)控制        295
11.8.1  一個作業(yè)列表對象        295
11.8.2  ush中的作業(yè)列表        296
11.8.3  ush中的作業(yè)控制        297
11.8.4  等待流水線時的進程行為        297
11.9  擴展閱讀        298
第三部分  并      發(fā)
第12章  POSIX線程        299
12.1  監(jiān)視多個文件描述符的方法        299
12.2  使用線程來監(jiān)視多個文件描述符        300
12.3  線程管理        302
12.3.1  用ID引用線程        303
12.3.2  創(chuàng)建一個線程        304
12.3.3  分離和連接        305
12.3.4  退出和取消        306
12.3.5  向線程中傳遞參數(shù)并將值返回        309
12.4  線程安全        315
12.5  用戶線程和內(nèi)核線程        316
12.6  線程的屬性        318
12.6.1  線程狀態(tài)        319
12.6.2  線程棧        320
12.6.3  線程調(diào)度        321
12.7  練習:并行文件拷貝        324
12.8  擴展閱讀        325
第13章  線程同步        326
13.1  POSIX同步函數(shù)        326
13.2  互斥鎖        326
13.2.1  創(chuàng)建并初始化一個互斥量        327
13.2.2  銷毀一個互斥量        328
13.2.3  對互斥量的鎖定和解鎖        329
13.2.4  保護不安全的庫函數(shù)        330
13.2.5  對標志符和全局值的同步        331
13.2.6  使數(shù)據(jù)結(jié)構(gòu)成為線程安全的        335
13.3  最多一次和至少一次的執(zhí)行        336
13.4  條件變量        340
13.4.1  創(chuàng)建和銷毀條件變量        341
13.4.2  等待并通知條件變量        342
13.5  信號處理與線程        345
13.5.1  將信號定向到一個特定的線程中去        346
13.5.2  為線程屏蔽信號        346
13.5.3  為信號處理指定專用線程        347
13.6  讀者和寫者        349
13.7  strerror_r的實現(xiàn)        353
13.8  死鎖和其他比較麻煩的問題        354
13.9  練習:多個路障        355
13.10  擴展閱讀        356
第14章  臨界區(qū)和信號量        357
14.1  處理臨界區(qū)        357
14.2  信號量        359
14.3  POSIX:SEM 無名信號量        361
14.4  POSIX:SEM信號量操作        363
14.5  POSIX:SEM命名信號量        368
14.5.1  創(chuàng)建并打開命名信號量        368
14.5.2  關閉并刪除命名信號量        370
14.6  練習:許可證管理器        372
14.6.1  許可證對象        372
14.6.2  runsim主程序        373
14.6.3  對許可證管理器的擴展        373
14.7  擴展閱讀        373
第15章  POSIX IPC        374
15.1  POSIX:XSI進程間通信        374
15.1.1  標識并訪問IPC對象        374
15.1.2  從命令解釋程序中訪問POSIX:XSI IPC資源        375
15.2  POSIX:XSI信號量集        376
15.2.1  信號量集的創(chuàng)建        376
15.2.2  信號量集控制        378
15.2.3  POSIX信號量集操作        380
15.3  POSIX:XSI共享內(nèi)存        384
15.3.1  訪問一個共享的內(nèi)存段        385
15.3.2  共享內(nèi)存段的連接和分離        385
15.3.3  控制共享內(nèi)存        386
15.3.4  共享內(nèi)存實例        387
15.4  POSIX:XSI消息隊列        392
15.5  練習:POSIX無名信號量        398
15.6  練習:POSIX命名信號量        398
15.7  練習:用共享內(nèi)存實現(xiàn)管道        399
15.8  練習:用消息隊列實現(xiàn)管道        401
15.9  擴展閱讀        402
第16章  項目:生產(chǎn)者消費者同步        403
16.1  生產(chǎn)者-消費者問題        403
16.2  受互斥鎖保護的有限緩沖區(qū)        404
16.3  使用信號量的緩沖區(qū)實現(xiàn)        406
16.4  一個簡單的生產(chǎn)者-消費者問題        411
16.5  使用條件變量的有限緩沖區(qū)實現(xiàn)        414
16.6  帶有完成條件的緩沖區(qū)        414
16.7  并行文件拷貝        421
16.7.1  執(zhí)行并行文件拷貝的生產(chǎn)者        421
16.7.2  執(zhí)行并行文件拷貝的消費者        422
16.7.3  執(zhí)行并行文件拷貝的main程序        422
16.7.4  對并行文件拷貝的增強        422
16.8  線程化打印服務器        423
16.8.1  請求緩沖區(qū)        424
16.8.2  生產(chǎn)者線程        425
16.8.3  消費者線程        425
16.8.4  打印服務器        425
16.8.5  其他的增強功能        425
16.9  擴展閱讀        426
第17章  項目:非完全并行虛擬機        427
17.1  PVM的歷史、術語和結(jié)構(gòu)        427
17.2  非完全并行虛擬機        429
17.3  NTPVM項目概述        430
17.3.1  NEWTASK分組        432
17.3.2  DATA分組        432
17.3.3  DONE分組        433
17.4  調(diào)度程序的I/O和測試        433
17.4.1  用多個窗口進行測試        437
17.4.2  用遠程日志進行測試        439
17.5  沒有輸入的單任務        440
17.6  串行的任務        440
17.6.1  輸入線程        441
17.6.2  輸出線程        442
17.7  并發(fā)的任務        442
17.8  分組通信、廣播和路障        443
17.9  終止和信號        444
17.10  有序的消息傳遞        444
17.11  擴展閱讀        444
第四部分  通      信
第18章  面向連接的通信        445
18.1  客戶機-服務器模型        445
18.2  通信信道        446
18.3  面向連接的服務器策略        448
18.4  通用因特網(wǎng)通信接口        450
18.4.1  錯誤處理        452
18.4.2  讀和寫        452
18.5  不同服務器策略的UICI實現(xiàn)        452
18.6  UICI客戶機        455
18.7  UICI的套接字實現(xiàn)        459
18.7.1  socket函數(shù)        460
18.7.2  bind函數(shù)        460
18.7.3  listen函數(shù)        461
18.7.4  u_open的實現(xiàn)        462
18.7.5  accept函數(shù)        463
18.7.6  u_accept的實現(xiàn)        464
18.7.7  connect函數(shù)        465
18.7.8  u_connect的實現(xiàn)        466
18.8  主機名和IP地址        468
18.9  線程安全的UICI        475
18.10  練習:ping服務器        476
18.11  練習:音頻的傳輸        478
18.12  擴展閱讀        479
第19章  項目:WWW重定向        480
19.1  萬維網(wǎng)        480
19.2  統(tǒng)一資源定位符        481
19.3  HTTP入門        482
19.3.1  客戶請求        483
19.3.2  服務器響應        483
19.3.3  HTTP消息交換        484
19.4  Web通信模式        485
19.4.1  隧道        486
19.4.2  代理        487
19.4.3  高速緩存和透明性        488
19.4.4  網(wǎng)關        489
19.5  單連接的通過型監(jiān)視器        490
19.6  隧道服務器的實現(xiàn)        492
19.7  用于測試的服務器驅(qū)動程序        493
19.8  HTTP首部的解析        494
19.9  簡單的代理服務器        495
19.10  代理監(jiān)視器        496
19.11  代理高速緩存        499
19.12  門戶網(wǎng)關        499
19.13  用于負載平衡的網(wǎng)關        500
19.14  事后的調(diào)查分析        500
19.14.1  線程和時序錯誤        501
19.14.2  未捕捉到的錯誤和錯誤的退出        501
19.14.3  書寫風格和表示方法        502
19.14.4  拙劣的測試及結(jié)果的表示        502
19.14.5  編程錯誤和不好的風格        503
19.15  擴展閱讀        504
第20章  無連接通信和多播        505
20.1  無連接通信入門        505
20.2  無連接通信的簡化接口        506
20.2.1  主機名和u_buf_t 結(jié)構(gòu)        507
20.2.2  UICI UDP 的各種返回錯誤值        508
20.2.3  UDP 緩沖區(qū)大小與UICI UDP        508
20.3  簡單-請求協(xié)議        508
20.4  請求-應答協(xié)議        513
20.5  有超時和重試機制的請求-應答協(xié)議        517
20.6  請求-應答-確認協(xié)議        521
20.7  UICI UDP的實現(xiàn)        522
20.7.1  u_openudp的實現(xiàn)        522
20.7.2  sendto函數(shù)        523
20.7.3  u_sendto和u_sendtohost的實現(xiàn)        524
20.7.4  recvfrom函數(shù)        525
20.7.5  u_recvfrom和u_recvfromtimed的實現(xiàn)        526
20.7.6  主機名和u_buf_t        527
20.8  UDP和TCP的比較        528
20.9  多播        529
20.9.1  多播編址        530
20.9.2  u_join的實現(xiàn)        531
20.9.3  u_leave的實現(xiàn)        532
20.10  練習: UDP 端口服務器        532
20.11  練習: 無狀態(tài)文件服務器        533
20.12  擴展閱讀        535
第21章  項目:因特網(wǎng)音頻廣播        536
21.1  項目概述        536
21.2  音頻設備模擬        538
21.3  單節(jié)目和單接收者的UDP 實現(xiàn)        538
21.3.1    簡單實現(xiàn)        538
21.3.2  接收者如何終止        540
21.3.3  接收者進行緩沖以解決網(wǎng)絡延遲問題        541
21.3.4  接收者進行緩沖以解決亂序傳送的問題        542
21.4  多節(jié)目和多接收者的UDP 實現(xiàn)        545
21.4.1  多節(jié)目單接收者        545
21.4.2  多節(jié)目多接收者        546
21.5  音頻廣播的UDP 實現(xiàn)        546
21.6  音頻廣播的多播實現(xiàn)        547
21.7  TCP 實現(xiàn)的差異        548
21.7.1  單節(jié)目單接收者的TCP實現(xiàn)        548
21.7.2  多節(jié)目單接收者的TCP實現(xiàn)        549
21.7.3  音頻廣播的TCP 實現(xiàn)        549
21.8  通過瀏覽器接收流式音頻        551
21.8.1  使用瀏覽器助手程序        551
21.8.2  為Web服務器設置一個新的MIME類型        553
21.8.3  設置瀏覽器以支持新的MIME類型        553
21.8.4  創(chuàng)建Web頁面        553
21.8.5  使用預定義的MIME類型        553
21.9    擴展閱讀        554
第22章  項目:服務器性能        555
22.1  服務器性能的代價        555
22.2  服務器體系結(jié)構(gòu)        555
22.3  項目概述        559
22.4  單客戶端驅(qū)動程序        559
22.4.1  處理一個連接        559
22.4.2  響應編程        560
22.4.3  收集統(tǒng)計信息        560
22.4.4  對客戶端做測試        561
22.5  多客戶端驅(qū)動程序        561
22.6  實現(xiàn)每個請求一個線程和每個請求一個進程        563
22.7  多線程工作者池策略        564
22.8  使用有界緩沖的多線程工作者池        564
22.9  多進程工作者池        565
22.10  磁盤I/O的影響        565
22.11  性能研究        568
22.11.1  基線測量        568
22.11.2  波動性的根源        569
22.11.3  測量的各種錯誤        569
22.11.4  同步        571
22.11.5  很簡單的錯誤        572
22.11.6  該測量哪些項目        573
22.11.7  數(shù)據(jù)分析和表達        575
22.12  書寫報告        575
22.12.1  引言        575
22.12.2  設計、實現(xiàn)和測試        576
22.12.3  實驗        576
22.12.4  結(jié)果及分析        576
22.12.5  結(jié)論        577
22.12.6  參考文獻        577
22.13  擴展閱讀        577
附錄A  UNIX 基礎        578
附錄B  重啟庫        591
附錄C  UICI的實現(xiàn)        599
附錄D  日志函數(shù)        612
附錄E  POSIX擴展        626
參考文獻        628
程序索引        636
索引        639

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號