注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)網(wǎng)絡(luò)與數(shù)據(jù)通信網(wǎng)絡(luò)服務(wù)UNIX系統(tǒng)編程:通信、并發(fā)與線程

UNIX系統(tǒng)編程:通信、并發(fā)與線程

UNIX系統(tǒng)編程:通信、并發(fā)與線程

定 價(jià):¥198.00

作 者: (美)Kay Robbins(凱·羅賓斯),Steve Robbins(斯蒂芬·羅賓斯)
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787121340352 出版時間: 2018-05-01 包裝:
開本: 16開 頁數(shù): 896 字?jǐn)?shù):  

內(nèi)容簡介

  本書是基于新UNIX標(biāo)準(zhǔn)的完備參考書,對UNIX編程要點(diǎn)進(jìn)行清晰易懂的介紹,從說明系統(tǒng)調(diào)用的短小代碼段開始,逐漸過渡到用于技能提升的實(shí)際項(xiàng)目。作者深入探討通信、并發(fā)和線程問題,對復(fù)雜概念(如信號和并發(fā))進(jìn)行全面解讀,覆蓋文件、信號、信號量、POSIX線程和客戶機(jī)-服務(wù)器通信等內(nèi)容;提供大量實(shí)例、練習(xí),以及針對性項(xiàng)目及其參考答案。全書第一部分介紹UNIX基礎(chǔ)知識,包括文件、進(jìn)程和特殊文件等;第二部分介紹信號和定時器;第三部分介紹信號量和進(jìn)程同步;第四部分介紹通信話題。本書適合作為高等院校計(jì)算機(jī)專業(yè)的教材,也可供軟件開發(fā)人員參考使用。

作者簡介

  Kay Robbins 和 Steve Robbins,是美國麻省理工學(xué)院博士,現(xiàn)任德州大學(xué)圣安東尼奧分校計(jì)算機(jī)科學(xué)系講師?!禪NIX系統(tǒng)編程: 通信、并發(fā)與線程》(UNIX Systems Programming: Communication, Concurrency and Threads)是他們的代表作。譯者師蓉,譯有《完美Java(第6版)》、《信息架構(gòu):大型網(wǎng)站W(wǎng)eb設(shè)計(jì)(第4版)》《像富人一樣思考》《故事場景摩天樓》《互聯(lián)網(wǎng)領(lǐng)導(dǎo)思維》《斷點(diǎn):互聯(lián)網(wǎng)進(jìn)化啟示錄》《游戲編程**指南》《Unity 3.x游戲開發(fā)實(shí)例》《iPhone應(yīng)用用戶體驗(yàn)設(shè)計(jì)實(shí)戰(zhàn)與案例》《社交網(wǎng)站界面設(shè)計(jì)》等書。

圖書目錄

第一部分  基礎(chǔ)知識
第1章 技術(shù)對程序的影響 3
1.1術(shù)語的變化 3
1.2時間和速度 5
1.3多道程序設(shè)計(jì)和分時 6
1.4應(yīng)用層的并發(fā) 8
1.4.1中斷 8
1.4.2信號 9
1.4.3輸入和輸出 10
1.4.4進(jìn)程、線程和資源共享 10
1.4.5具有共享內(nèi)存的多個處理器 11
1.4.6網(wǎng)絡(luò)作為計(jì)算機(jī) 11
1.5安全和容錯 12
1.6非法入侵造成的緩沖區(qū)溢出 13
1.6.1緩沖區(qū)溢出的后果 14
1.6.2緩沖區(qū)溢出和安全 16
1.7UNIX標(biāo)準(zhǔn) 17
1.8延伸閱讀 19
第2章 程序、線程和進(jìn)程 21
2.1程序是如何成為進(jìn)程的 21
2.2線程和執(zhí)行線程 22
2.3程序映象的布局 23
2.4庫函數(shù)調(diào)用 26
2.5函數(shù)返回值和錯誤 29
2.6參數(shù)數(shù)組 31
2.6.1用makeargv函數(shù)創(chuàng)建一個數(shù)組 32
2.6.2makeargv函數(shù)的實(shí)現(xiàn) 34
2.7線程安全函數(shù) 38
2.8靜態(tài)變量的使用 40
2.9靜態(tài)對象的結(jié)構(gòu) 42
2.10進(jìn)程環(huán)境 48
2.11進(jìn)程終止 51
2.12練習(xí):一個env實(shí)用程序 54
2.13練習(xí):消息日志 55
2.14延伸閱讀 57
第3章 UNIX中的進(jìn)程 58
3.1進(jìn)程標(biāo)識符 58
3.2進(jìn)程狀態(tài) 60
3.3UNIX 進(jìn)程創(chuàng)建和fork函數(shù) 63
3.4wait函數(shù) 70
狀態(tài)值 76
3.5exec函數(shù) 77
3.6后臺進(jìn)程和守護(hù)進(jìn)程 83
3.7臨界區(qū) 86
3.8練習(xí):進(jìn)程鏈 87
3.9練習(xí):進(jìn)程扇 88
3.10延伸閱讀 89
第4章 UNIX I/O 90
4.1設(shè)備術(shù)語 90
4.2讀/寫 91
4.3打開和關(guān)閉文件 102
4.4select函數(shù) 107
4.5poll函數(shù) 116
4.6文件表示 119
4.6.1文件描述符 119
4.6.2文件指針和緩沖 122
4.6.3文件描述符的繼承 124
4.7過濾器和重定向 128
4.8文件控制 132
4.9練習(xí):原子日志 135
原子日志庫 139
4.10練習(xí):cat實(shí)用程序 141
4.11延伸閱讀 143
第5章 文件和目錄 144
5.1UNIX文件系統(tǒng)導(dǎo)航 144
5.1.1當(dāng)前工作目錄 145
5.1.2搜索路徑 150
5.2目錄訪問 151
5.2.1訪問文件狀態(tài)信息 153
5.2.2確定文件的類型 156
5.3UNIX文件系統(tǒng)實(shí)現(xiàn) 157
5.3.1UNIX文件實(shí)現(xiàn) 158
5.3.2目錄實(shí)現(xiàn) 161
5.4硬鏈接和符號鏈接 161
5.4.1創(chuàng)建或刪除一個鏈接 162
5.4.2創(chuàng)建和刪除符號鏈接 167
5.5練習(xí):which命令 172
5.6練習(xí):郵件通知程序 173
5.7練習(xí):新聞通知程序 176
5.8練習(xí):遍歷目錄 177
5.9延伸閱讀 179
第6章 UNIX特殊文件 180
6.1管道 180
6.2流水線 184
6.3FIFO 189
6.4管道與客戶機(jī)-服務(wù)器模型 193
6.5終端控制 200
規(guī)范和非規(guī)范的輸入處理 208
6.6音頻設(shè)備 212
6.7練習(xí):音頻 218
6.8練習(xí):屏障 220
6.9練習(xí):stty命令 221
6.10練習(xí):重提客戶機(jī)-服務(wù)器 222
6.11延伸閱讀 222
第7章 項(xiàng)目:令牌環(huán) 224
7.1環(huán)形拓?fù)?224
7.2環(huán)的形成 226
7.3環(huán)的探討 232
7.4簡單通信 234
7.5用令牌環(huán)實(shí)現(xiàn)互斥 235
7.6用投票實(shí)現(xiàn)互斥 237
7.7匿名環(huán)中的領(lǐng)導(dǎo)者選舉 238
7.8用于通信的令牌環(huán) 240
7.9流水線預(yù)處理機(jī) 242
7.10并行環(huán)算法 244
7.10.1圖像過濾 244
7.10.2矩陣乘法 247
7.11彈性環(huán) 248
7.12延伸閱讀 249
第二部分異步事件
第8章 信號 253
8.1信號的基本概念 253
8.2信號的產(chǎn)生 254
8.3對信號掩碼和信號集進(jìn)行操作 259
8.4捕獲和忽略信號―sigaction 266
8.5等待信號―pause、sigsuspend和sigwait 272
8.5.1pause函數(shù) 272
8.5.2sigsuspend函數(shù) 274
8.5.3sigwait函數(shù) 282
8.6處理信號:錯誤和異步信號安全 283
8.7用siglongjmp和sigsetjmp進(jìn)行程序控制 286
8.8使用異步I/O編程 288
8.9練習(xí):轉(zhuǎn)儲統(tǒng)計(jì) 300
8.10練習(xí):同時處理慢速設(shè)備 301
8.11延伸閱讀 301
第9章 時間和定時器 303
9.1POSIX時間 303
9.1.1用從Epoch開始的秒數(shù)表示時間 304
9.1.2顯示日期和時間 305
9.1.3使用struct timeval表示時間 308
9.1.4使用實(shí)時時鐘 311
9.1.5耗時和處理器時間的對比 313
9.2睡眠函數(shù) 316
9.3POSIX:XSI間隔定時器 319
9.4實(shí)時信號 323
9.5POSIX:TMR間隔定時器 328
9.6定時器漂移、溢出和絕對時間 333
9.7延伸閱讀 344
第10章 項(xiàng)目:虛擬定時器 345
10.1項(xiàng)目概述 345
10.2簡單的定時器 348
10.3對5個定時器中的一個進(jìn)行設(shè)置 351
10.3.1virtualtimers對象 351
10.3.2hardwaretimer對象 353
10.3.3主程序?qū)崿F(xiàn) 354
10.3.4用show譜寫定時器代碼 355
10.4使用多個定時器 361
10.4.1設(shè)置多個定時器 364
10.4.2用多個定時器進(jìn)行測試 365
10.5多定時器的健壯實(shí)現(xiàn) 369
10.6POSIX:TMR定時器的實(shí)現(xiàn) 371
10.7一個小型的cron工具mycron 372
10.8延伸閱讀 372
第11章 項(xiàng)目:破解shell 373
11.1構(gòu)建一個簡單的shell 373
11.2重定向 378
11.3流水線 382
11.4前臺的信號處理 385
11.5進(jìn)程組、會話和控制終端 391
11.5.1進(jìn)程組 391
11.5.2會話 393
11.6ush中的后臺進(jìn)程 396
11.7作業(yè)控制 403
11.8ush的作業(yè)控制 407
11.8.1一個作業(yè)列表對象 407
11.8.2ush中的作業(yè)列表 409
11.8.3ush中的作業(yè)控制 409
11.8.4等待流水線時的進(jìn)程行為 410
11.9延伸閱讀 411
第三部分并發(fā)
第12章 POSIX線程 415
12.1監(jiān)視文件描述符的方法 415
12.2使用線程監(jiān)視多個文件描述符 417
12.3線程管理 420
12.3.1用ID引用線程 421
12.3.2創(chuàng)建一個線程 422
12.3.3分離和連接 423
12.3.4退出和取消 426
12.3.5向線程傳遞參數(shù)并返回值 429
12.4線程安全 438
12.5用戶級線程 VS 內(nèi)核級線程 439
12.6線程屬性 442
12.6.1線程狀態(tài) 443
12.6.2線程棧 444
12.6.3線程調(diào)度 446
12.7練習(xí):并行文件復(fù)制 450
12.8延伸閱讀 451
第13章線程同步 452
13.1POSIX同步函數(shù) 452
13.2互斥鎖 453
13.2.1創(chuàng)建并初始化一個互斥量 454
13.2.2銷毀一個互斥量 455
13.2.3鎖定和解鎖互斥量 456
13.2.4保護(hù)不安全的庫函數(shù) 458
13.2.5同步標(biāo)志和全局值 459
13.2.6讓數(shù)據(jù)結(jié)構(gòu)成為線程安全的 465
13.3最多一次和至少一次的執(zhí)行 467
13.4條件變量 471
13.4.1條件變量的創(chuàng)建和銷毀 473
13.4.2等待并通知條件變量 475
13.5信號處理和線程 478
13.5.1將信號定向到一個特定的線程中 479
13.5.2為線程屏蔽信號 480
13.5.3信號處理的專用線程 480
13.6讀者和寫者 484
13.7strerror_r實(shí)現(xiàn) 489
13.8死鎖和其他討厭的問題 491
13.9練習(xí):多個屏障 492
13.10延伸閱讀 492
第14章臨界區(qū)和信號量 493
14.1臨界區(qū)的處理 493
14.2信號量 496
14.3POSIX:SEM匿名信號量 499
14.4POSIX:SEM信號量操作 501
14.5POSIX:SEM命名信號量 508
14.5.1創(chuàng)建并打開命名信號量 509
14.5.2關(guān)閉信號量并刪除其鏈接 512
14.6練習(xí):許可管理器 514
14.6.1license對象 515
14.6.2runsim主程序 515
14.6.3對許可管理器的擴(kuò)展 516
14.7延伸閱讀 516
第15章POSIX IPC 517
15.1POSIX:XSI進(jìn)程間通信 517
15.1.1標(biāo)識并訪問IPC對象 518
15.1.2在shell中訪問POSIX:XSI IPC資源 519
15.2POSIX:XSI信號量集 520
15.2.1信號量的創(chuàng)建 521
15.2.2信號量的控制 523
15.2.3POSIX信號量集操作 525
15.3POSIX:XSI共享內(nèi)存 532
15.3.1訪問共享內(nèi)存段 532
15.3.2共享內(nèi)存段的連接和分離 533
15.3.3控制共享內(nèi)存 534
15.3.4共享內(nèi)存示例 535
15.4POSIX:XSI消息隊(duì)列 541
訪問消息隊(duì)列 542
15.5練習(xí):POSIX匿名信號量 549
15.6練習(xí):POSIX命名信號量 550
15.7練習(xí):用共享內(nèi)存實(shí)現(xiàn)管道 551
15.8練習(xí):用消息隊(duì)列實(shí)現(xiàn)管道 554
15.9延伸閱讀 554
第16章項(xiàng)目:生產(chǎn)者-消費(fèi)者同步 555
16.1生產(chǎn)者-消費(fèi)者問題 555
16.2受互斥鎖保護(hù)的有界緩沖區(qū) 557
16.3使用信號量的緩沖區(qū)實(shí)現(xiàn) 560
16.4一個簡單的生產(chǎn)者-消費(fèi)者問題簡介 566
16.5使用條件變量的有界緩沖區(qū) 570
16.6帶有完成條件的緩沖區(qū) 571
16.7并行文件復(fù)制 580
16.7.1并行文件復(fù)制的生產(chǎn)者 580
16.7.2并行文件復(fù)制的消費(fèi)者 581
16.7.3并行文件復(fù)制的main程序 582
16.7.4并行文件復(fù)制的增強(qiáng) 582
16.8線程化打印服務(wù)器 583
16.8.1請求緩沖區(qū) 584
16.8.2生產(chǎn)者線程 585
16.8.3消費(fèi)者線程 586
16.8.4打印服務(wù)器 586
16.8.5其他增強(qiáng)功能 586
16.9延伸閱讀 587
第17章項(xiàng)目:非完全并行虛擬機(jī) 588
17.1PVM的歷史、術(shù)語和結(jié)構(gòu) 588
17.2非完全并行虛擬機(jī) 591
17.3NTPVM項(xiàng)目概述 593
17.3.1NEWTASK分組 596
17.3.2DATA分組 596
17.3.3DONE分組 597
17.4調(diào)度程序的I/O和測試 598
17.4.1用多個窗口測試 604
17.4.2用遠(yuǎn)程日志測試 605
17.5沒有輸入的單任務(wù) 607
17.6順序任務(wù) 608
17.6.1輸入線程 609
17.6.2輸出線程 610
17.7并發(fā)任務(wù) 611
17.8分組通信、廣播和屏障 611
17.9終止和信號 612
17.10有序的消息傳遞 613
17.11延伸閱讀 613
第四部分通信
第18章面向連接的通信 617
18.1客戶機(jī)-服務(wù)器模型 617
18.2通信信道 618
18.3面向連接的服務(wù)器策略 622
18.4通用因特網(wǎng)通信接口(UICI) 625
18.4.1處理錯誤 627
18.4.2讀和寫 627
18.5不同服務(wù)器策略的UICI實(shí)現(xiàn) 628
18.6UICI客戶機(jī) 631
18.7UICI的套接字實(shí)現(xiàn) 637
18.7.1socket函數(shù) 638
18.7.2bind函數(shù) 639
18.7.3listen函數(shù) 641
18.7.4u_open函數(shù)的實(shí)現(xiàn) 642
18.7.5accept函數(shù) 643
18.7.6u_accept函數(shù)的實(shí)現(xiàn) 645
18.7.7connect函數(shù) 646
18.7.8u_connect函數(shù)的實(shí)現(xiàn) 647
18.8主機(jī)名和IP地址 649
18.9線程安全的UICI 658
18.10練習(xí):ping服務(wù)器 661
18.11練習(xí):音頻的傳輸 662
18.12延伸閱讀 664
第19章項(xiàng)目:WWW重定向 665
19.1萬維網(wǎng) 665
19.2統(tǒng)一資源定位符(URL) 666
19.3HTTP入門 668
19.3.1客戶端請求 669
19.3.2服務(wù)器響應(yīng) 669
19.3.3HTTP消息交換 670
19.4Web通信模式 673
19.4.1隧道 673
19.4.2代理 674
19.4.3高速緩存和透明性 676
19.4.4網(wǎng)關(guān) 678
19.5單連接的通過型監(jiān)控 679
19.6隧道服務(wù)器的實(shí)現(xiàn) 682
19.7用于測試的服務(wù)器驅(qū)動程序 682
19.8HTTP頭解析 684
19.9簡單的代理服務(wù)器 686
19.10代理監(jiān)視器 688
19.11代理高速緩存 691
19.12門戶網(wǎng)站的網(wǎng)關(guān) 692
19.13用于負(fù)載平衡的網(wǎng)關(guān) 692
19.14事后的調(diào)查分析 693
19.14.1線程和計(jì)時錯誤 693
19.14.2未捕獲的錯誤和錯誤的退出 694
19.14.3書寫風(fēng)格和表示 695
19.14.4糟糕的測試和結(jié)果表示 696
19.14.5編程錯誤和不好的風(fēng)格 697
19.15延伸閱讀 698
第20章無連接通信和多播 699
20.1無連接通信簡介 699
20.2無連接通信的簡化接口 701
20.2.1主機(jī)名和u_buf_t結(jié)構(gòu) 703
20.2.2UICI UDP的返回錯誤 703
20.2.3UDP緩沖區(qū)大小和UICI UDP 703
20.3簡單-請求協(xié)議 704
20.4請求-應(yīng)答協(xié)議 710
20.5有超時和重試的請求-應(yīng)答 716
20.6請求-應(yīng)答-確認(rèn)協(xié)議 722
20.7UICI UDP的實(shí)現(xiàn) 723
20.7.1u_openudp函數(shù)的實(shí)現(xiàn) 723
20.7.2sendto函數(shù) 725
20.7.3u_sendto和 u_sendtohost函數(shù)的實(shí)現(xiàn) 726
20.7.4recvfrom函數(shù) 727
20.7.5u_recvfrom和u_recvfromtimed函數(shù)的實(shí)現(xiàn) 728
20.7.6主機(jī)名和u_buf_t 730
20.8UDP和TCP的比較 732
20.9多播 733
20.9.1多播尋址 733
20.9.2u_join函數(shù)的實(shí)現(xiàn) 735
20.9.3u_leave函數(shù)的實(shí)現(xiàn) 736
20.10練習(xí):UDP端口服務(wù)器 737
20.11練習(xí):無狀態(tài)文件服務(wù)器 738
遠(yuǎn)程文件服務(wù) 739
20.12延伸閱讀 740
第21章項(xiàng)目:互聯(lián)網(wǎng)廣播 741
21.1項(xiàng)目概述 741
21.2音頻設(shè)備模擬 744
21.3具有一個節(jié)目和一個接收者的UDP實(shí)現(xiàn) 744
21.3.1簡單實(shí)現(xiàn) 744
21.3.2接收者的終止 747
21.3.3接收者緩沖來處理網(wǎng)絡(luò)延遲 748
21.3.4接收者緩沖來處理亂序傳遞 751
21.4具有多個節(jié)目和接收者的UDP實(shí)現(xiàn) 754
21.4.1多個節(jié)目和單個接收者 754
21.4.2多個節(jié)目和多個接收者 755
21.5音頻廣播的UDP實(shí)現(xiàn) 756
21.6無線電廣播的多播實(shí)現(xiàn) 758
21.7TCP實(shí)現(xiàn)的差異 758
21.7.1單個節(jié)目和單個接收者的TCP實(shí)現(xiàn) 759
21.7.2多個節(jié)目和單個接收者的TCP實(shí)現(xiàn) 760
21.7.3無線電廣播的TCP實(shí)現(xiàn) 761
21.8通過瀏覽器接收流式音頻 764
21.8.1使用瀏覽器助手應(yīng)用程序 764
21.8.2在你的Web服務(wù)器中設(shè)置一種新的mime類型 765
21.8.3設(shè)置你的瀏覽器來處理新的mime類型 766
21.8.4創(chuàng)建Web頁面 766
21.8.5使用預(yù)定義的mime類型 767
21.9延伸閱讀 767
第22章項(xiàng)目:服務(wù)器性能 769
22.1服務(wù)器性能成本 769
22.2服務(wù)器架構(gòu) 770
22.3項(xiàng)目概述 774
22.4單客戶端驅(qū)動程序 775
22.4.1處理一個連接 775
22.4.2對響應(yīng)進(jìn)行編程 776
22.4.3收集統(tǒng)計(jì)信息 777
22.4.4測試客戶端 777
22.5多客戶端驅(qū)動程序 778
另一種多客戶端設(shè)計(jì) 781
22.6實(shí)現(xiàn)每個請求一個線程和每個請求一個進(jìn)程 781
22.7線程工作者池策略 782
22.8使用有界緩沖區(qū)的多線程工作者池 782
22.9進(jìn)程工作者池 783
22.10磁盤I/O的影響 783
22.11性能研究 787
22.11.1基線測量 787
22.11.2波動性的根源 788
22.11.3測量錯誤 789
22.11.4同步 792
22.11.5普通的錯誤 793
22.11.6要測量什么 794
22.11.7數(shù)據(jù)分析和表示 796
22.12報(bào)告撰寫 797
22.12.1引言 797
22.12.2設(shè)計(jì)、實(shí)現(xiàn)和測試 798
22.12.3實(shí)驗(yàn) 798
22.12.4結(jié)果和分析 799
22.12.5結(jié)論 799
22.12.6參考文獻(xiàn) 799
22.13延伸閱讀 800
附錄AUNIX基礎(chǔ) 801
附錄B重啟庫 819
附錄CUICI實(shí)現(xiàn) 829
附錄D日志函數(shù) 846
附錄EPOSIX擴(kuò)展 864
參考文獻(xiàn) 867

本目錄推薦

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