Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Cover
Contents
Title
Copyright
Dedication
About the Authors
Credits
Acknowledgments
Introduction
Chapter 1 : The New Architecture
What Is a Multicore?
Multicore Architectures
The Software Developer’s Viewpoint
The Bus Connection
From Single Core to Multicore
Summary
Chapter 2 : Four Effective Multicore Designs
The AMD Multicore Opteron
The Sun UltraSparc T1 Multiprocessor
The IBM Cell Broadband Engine
Intel Core 2 Duo Processor
Summary
Chapter 3 : The Challenges of Multicore Programming
What Is the Sequential Model?
What Is Concurrency?
Software Development
C++ Developers Have to Learn New Libraries
Processor Architecture Challenges
Summary
Chapter 4 : The Operating System’s Role
What Part Does the Operating System Play?
Decomposition and the Operating System’s Role
Hiding the Operating System’s Role
Summary
Chapter 5 : Processes, C++ Interface Classes, and Predicates
We Say Multicore, We Mean Multiprocessor
What Is a Process?
Why Processes and Not Threads?
Using posix_spawn()
Who Is the Parent? Who Is the Child?
Processes: A Closer Look
Monitoring Processes with the ps Utility
Setting and Getting Process Priorities
What Is a Context Switch?
The Activities in Process Creation
Working with Process Environment Variables
Using system() to Spawn Processes
Killing a Process
Process Resources
What Are Asynchronous and Synchronous Processes
The wait() Function Call
Predicates, Processes, and Interface Classes
Summary
Chapter 6 : Multithreading
What Is a Thread?
Comparing Threads to Processes
Setting Thread Attributes
The Architecture of a Thread
A Simple Threaded Program
Creating Threads
Managing Threads
Extending the Thread Interface Class
Summary
Chapter 7 : Communication and Synchronization of Concurrent Tasks
Communication and Synchronization
Synchronizing Concurrency
Thread Strategy Approaches
Decomposition and Encapsulation of Work
Summary
Chapter 8 : PADL and PBS: Approaches to Application Design
Designing Applications for Massive Multicore Processors
What Is PADL?
The Predicate Breakdown Structure (PBS)
Summary
Chapter 9 : Modeling Software Systems That Require Concurrency
What Is UML?
Modeling the Structure of a System
UML and Concurrent Behavior
Visualizing the Whole System
Summary
Chapter 10 : Testing and Logical Fault Tolerance for Parallel Programs
Can You Just Skip the Testing?
Five Concurrency Challenges That Must Be Checked during Testing
Failure: The Result of Defects and Faults
How Do You Approach Defect Removal for Parallel Programs?
What Are the Standard Software Engineering Tests?
Summary
Appendix A: UML for Concurrent Design
Appendix B: Concurrency Models
Appendix C: POSIX Standard for Thread Management
Appendix D: POSIX Standard for Process Management
Bibliography
Index
Advertisement
← Prev
Back
Next →
← Prev
Back
Next →