注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)深入理解計(jì)算機(jī)系統(tǒng)(英文版·第3版)

深入理解計(jì)算機(jī)系統(tǒng)(英文版·第3版)

深入理解計(jì)算機(jī)系統(tǒng)(英文版·第3版)

定 價(jià):¥239.00

作 者: [美] 蘭德爾 E.布萊恩特(Randal,E.,Bryant),大衛(wèi),R. ... 著
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 工學(xué) 教材 研究生/本科/??平滩?/td>

ISBN: 9787111561279 出版時(shí)間: 2017-04-01 包裝: 平裝
開本: 16開 頁數(shù): 1047 字?jǐn)?shù):  

內(nèi)容簡介

  本書是一本將計(jì)算機(jī)軟件和硬件理論結(jié)合講述的經(jīng)典教材,內(nèi)容涵蓋計(jì)算機(jī)導(dǎo)論、體系結(jié)構(gòu)和處理器設(shè)計(jì)等多門課程。本書*大的特點(diǎn)是為程序員描述計(jì)算機(jī)系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),通過描述程序是如何映射到系統(tǒng)上,以及程序是如何執(zhí)行的,使讀者更好地理解程序的行為,找到程序效率低下的原因。和第2版相比,本版內(nèi)容上*大的變化是,從以IA32和x86-64為基礎(chǔ)轉(zhuǎn)變?yōu)橥耆詘86-64為基礎(chǔ)。主要更新如下:· 基于x86-64,大量地重寫代碼,首次介紹對處理浮點(diǎn)數(shù)據(jù)的程序的機(jī)器級支持。· 處理器體系結(jié)構(gòu)修改為支持64位字和操作的設(shè)計(jì)?!?引入更多的功能單元和更復(fù)雜的控制邏輯,使基于程序數(shù)據(jù)流表示的程序性能模型預(yù)測更加可靠?!?擴(kuò)充關(guān)于用GOT和PLT創(chuàng)建與位置無關(guān)代碼的討論,描述了更加強(qiáng)大的鏈接技術(shù)(比如庫打樁)。· 增加了對信號處理程序更細(xì)致的描述,包括異步信號安全的函數(shù)等?!?采用*新函數(shù),更新了與協(xié)議無關(guān)和線程安全的網(wǎng)絡(luò)編程。

作者簡介

  Randal E. Bryant,1981年于麻省理工學(xué)院獲得計(jì)算機(jī)博士學(xué)位,1984年至今任教于卡內(nèi)基-梅隆大學(xué)?,F(xiàn)任卡內(nèi)基-梅隆大學(xué)計(jì)算機(jī)科學(xué)學(xué)院院長、教授,同時(shí)還受邀任教于電子和計(jì)算機(jī)工程系。他從事本科生和研究生計(jì)算機(jī)系統(tǒng)方面課程的教學(xué)近40年,和O’Hallaron教授一起在卡內(nèi)基-梅隆大學(xué)開設(shè)了15-213課程“計(jì)算機(jī)系統(tǒng)導(dǎo)論”,那便是本書的基礎(chǔ)。他還是ACM院士、IEEE院士、美國國家工程院院士和美國人文與科學(xué)研究院院士。其研究成果被Intel、IBM、Fujitsu和Microsoft等主要計(jì)算機(jī)制造商使用,他還因研究獲得過Semiconductor Research Corporation、ACM、IEEE頒發(fā)的多項(xiàng)大獎(jiǎng)。David R. O’Hallaron,卡內(nèi)基-梅隆大學(xué)電子和計(jì)算機(jī)工程系教授。在弗吉尼亞大學(xué)獲得計(jì)算機(jī)科學(xué)的博士學(xué)位,2007年-2010年為Intel匹茲堡實(shí)驗(yàn)室主任。他教授本科生和研究生的計(jì)算機(jī)系統(tǒng)方面的課程已有20余年,并和Bryant教授一起教授“計(jì)算機(jī)系統(tǒng)導(dǎo)論”課程。曾獲得卡內(nèi)基-梅隆大學(xué)計(jì)算機(jī)學(xué)院頒發(fā)的Herbert Simon杰出教學(xué)獎(jiǎng)。他主要從事計(jì)算機(jī)系統(tǒng)領(lǐng)域的研究,與Quake項(xiàng)目成員一起獲得過高性能計(jì)算領(lǐng)域中的*高國際獎(jiǎng)項(xiàng)——Gordon Bell獎(jiǎng)。他目前的工作重點(diǎn)是研究自動(dòng)分級(autograding)概念,即評價(jià)其他程序質(zhì)量的程序。

圖書目錄

Preface xix About the Authors xxxv
1 A Tour of Computer Systems 1
1.1 Information Is Bits + Context 3
1.2 Programs Are Translated by Other Programs into Different Forms 4
1.3 It Pays to Understand How Compilation Systems Work 6
1.4 Processors Read and Interpret Instructions Stored in Memory 7
1.5 Caches Matter 11
1.6 Storage Devices Form a Hierarchy 14
1.7 The Operating System Manages the Hardware 14
1.8 Systems Communicate with Other Systems Using Networks 19
1.9 Important Themes 22
1.10 Summary 27 Bibliographic Notes 28 Solutions to Practice Problems 28
Part I Program Structure and Execution
2 Representing and Manipulating Information 31
2.1 Information Storage 34
2.2 Integer Representations 59
2.3 Integer Arithmetic 84
2.4 Floating Point 108
2.5 Summary 126
Bibliographic Notes 127
Homework Problems 128
Solutions to Practice Problems 143
3 Machine-Level Representation of Programs 163
3.1 A Historical Perspective 166
3.2 Program Encodings 169
3.3 Data Formats 177
3.4 Accessing Information 179
3.5 Arithmetic and Logical Operations 191
3.6 Control 200
3.7 Procedures 238
3.8 Array Allocation and Access 255
3.9 Heterogeneous Data Structures 265
3.10 Combining Control and Data in Machine-Level Programs 276
3.11 Floating-Point Code 293
3.12 Summary 309
Bibliographic Notes 310
Homework Problems 311
Solutions to Practice Problems 325
4 Processor Architecture 351
4.1 The Y86-64 Instruction Set Architecture 355
4.2 Logic Design and the Hardware Control Language HCL 372
4.3 Sequential Y86-64 Implementations 384
4.4 General Principles of Pipelining 412
4.5 Pipelined Y86-64 Implementations 421
4.6 Summary 470
4.6.1 Y86-64 Simulators 472
Bibliographic Notes 473
Homework Problems 473
Solutions to Practice Problems 480
5 Optimizing Program Performance 495
5.1 Capabilities and Limitations of Optimizing Compilers 498
5.2 Expressing Program Performance 502
5.3 Program Example 504
5.4 Eliminating Loop Inef.ciencies 508
5.5 Reducing Procedure Calls 512
5.6 Eliminating Unneeded Memory References 514
5.7 Understanding Modern Processors 517
5.8 Loop Unrolling 531
5.9 Enhancing Parallelism 536
5.10 Summary of Results for Optimizing Combining Code 547
5.11 Some Limiting Factors 548
5.12 Understanding Memory Performance 553
5.13 Life in the Real World: Performance Improvement Techniques 561
5.14 Identifying and Eliminating Performance Bottlenecks 562
5.15 Summary 568
Bibliographic Notes 569
Homework Problems 570
Solutions to Practice Problems 573
6 The Memory Hierarchy 579
6.1 Storage Technologies 581
6.2 Locality 604
6.3 The Memory Hierarchy 609
6.4 Cache Memories 614
6.5 Writing Cache-Friendly Code 633
6.6 Putting It Together: The Impact of Caches on Program Performance 639
6.7 Summary 648
Bibliographic Notes 648
Homework Problems 649
Solutions to Practice Problems 660
Part II Running Programs on a System
7 Linking 669
7.1 Compiler Drivers 671
7.2 Static Linking 672
7.3 Object Files 673
7.4 Relocatable Object Files 674
7.5 Symbols and Symbol Tables 675
7.6 Symbol Resolution 679
7.7 Relocation 689
7.8 Executable Object Files 695
7.9 Loading Executable Object Files 697
7.10 Dynamic Linking with Shared Libraries 698
7.11 Loading and Linking Shared Libraries from Applications 701
7.12 Position-Independent Code (PIC) 704
7.13 Library Interpositioning 707
7.14 Tools for Manipulating Object Files 713
7.15 Summary 713
Bibliographic Notes 714
Homework Problems 714
Solutions to Practice Problems 717
8 Exceptional Control Flow 721
8.1 Exceptions 723
8.2 Processes 732
8.3 System Call Error Handling 737
8.4 Process Control 738
8.5 Signals 756
8.6 Nonlocal Jumps 781
8.7 Tools for Manipulating Processes 786
8.8 Summary 787
Bibliographic Notes 787
Homework Problems 788
Solutions to Practice Problems 795
9 Virtual Memory 801
9.1 Physical and Virtual Addressing 803
9.2 Address Spaces 804
9.3 VM as a Tool for Caching 805
9.4 VM as a Tool for Memory Management 811
9.5 VM as a Tool for Memory Protection 812
9.6 Address Translation 813
9.7 Case Study: The Intel Core i7/Linux Memory System 825
9.8 Memory Mapping 833
9.9 Dynamic Memory Allocation 839
9.10 Garbage Collection 865
9.11 Common Memory-Related Bugs in C Programs 870
9.12 Summary 875
Bibliographic Notes 876
Homework Problems 876
Solutions to Practice Problems 880
Part III Interaction and Communication between Programs
10 System-Level I/O 889
11 Network Programming 917
12 Concurrent Programming 971
12.1 Concurrent Programming with Processes 973
12.2 Concurrent Programming with I/O Multiplexing 977
12.3 Concurrent Programming with Threads 985
12.4 Shared Variables in Threaded Programs 992
12.5 Synchronizing Threads with Semaphores 995
12.6 Using Threads for Parallelism 1013
12.7 Other Concurrency Issues 1020
12.8 Summary 1030

本目錄推薦

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