Programming multi-core and many-core computing systems
Sabri Pllana, Linnaeus University, Sweden
Fatos Xhafa, Technical University of Catalonia, Spain
Provides state-of-the-art methods for programming multi-core and many-core systems
The book comprises a selection of twenty two chapters covering: more » fundamental techniques and algorithms; programming approaches; methodologies and frameworks; scheduling and management; testing and evaluation methodologies; and case studies for programming multi-core and many-core systems.
Program development for multi-core processors, especially for heterogeneous multi-core processors, is significantly more complex than for single-core processors. However, programmers have been traditionally trained for the development of sequential programs, and only a small percentage of them have experience with parallel programming. In the past, only a relatively small group of programmers interested in High Performance Computing (HPC) was concerned with the parallel programming issues, but the situation has changed dramatically with the appearance of multi-core processors on commonly used computing systems. It is expected that with the pervasiveness of multi-core processors, parallel programming will become mainstream.
The pervasiveness of multi-core processors affects a large spectrum of systems, from embedded and general-purpose, to high-end computing systems. This book assists programmers in mastering the efficient programming of multi-core systems, which is of paramount importance for the software-intensive industry towards a more effective product-development cycle.
* Lessons, challenges, and roadmaps ahead.
* Contains real world examples and case studies.
* Helps programmers in mastering the efficient programming of multi-core and many-core systems.
The book serves as a reference for a larger audience of practitioners, young researchers and graduate level students. A basic level of programming knowledge is required to use this book. « less
Build, deploy, and test your very own operating systems for the Internet of Things and other devices
Have you ever wanted to build your own operating system, but didn't know where to begin? Then this book is for you! In this book, the author explains everything you need to know from getting and installing the necessary tools to writing, compiling, deploying, and testing your very own operating system. more » By the time you are done you will have an operating system to call your own. And, don't worry about destroying your existing hardware and software environment as everything in this book is written with the intention of running in a virtualized environment. However, should you choose to do so, the author also explains how to deploy and test your new OS on bare-metal hardware as well.
The first few chapters give a brief overview of how modern day computers work. In these chapters you will (re)learn everything from memory allocation, stacks, and bootloaders to low-level machine code and programming languages. After that, you will jump into downloading and installing the tools you will use for building your very own operating system. Here you will learn how to develop a bootloader and kernel just like modern day computers rely on for operating. The last few chapters will explain how to deploy and test your operating system as well as how to expand your OS to do more and even how to cross-compile your shiny new operating system for other devices such as the Raspberry Pi.
To give an idea of what you can find in this book, below is the Table of Contents.
0x01 OS Basics
0x02 Intro to Machine Code
0x03 Intro to the Assembly Programming Language
0x04 Into to the C Programming Language
0x05 Getting Started
- Installing VirtualBox
- Installing Linux
- Installing GNOME
- Preparing CentOS and the VM
- Troubleshooting VirtualBox Guest Additions
- Preparing the Development Environment
0x06 Bootstrapping with the Bootloader
- Creating the Entry Point
- GNU GRUB
- Compiling the Entry Point
0x07 Welcome to the Kernel
0x08 Putting it all Together
0x09 Testing Your Operating System
0x0A Starting Your Architecture Library
- Expanding the Console
0x0B Expanding Your OS
0x0C Cross-Compiling for Other Architectures
- Create a Custom Cross-Compiler
- Porting for the Raspberry Pi
- Testing on Physical Hardware
Index « less
Knights Landing Edition
This book is an all-in-one source of information for programming the Second-Generation Intel Xeon Phi product family also called Knights Landing. The authors provide detailed and timely Knights Landingspecific details, programming advice, and real-world examples. The authors distill their years of Xeon more » Phi programming experience coupled with insights from many expert customers ― Intel Field Engineers, Application Engineers, and Technical Consulting Engineers ― to create this authoritative book on the essentials of programming for Intel Xeon Phi products.
Intel® Xeon Phi™ Processor High-Performance Programming is useful even before you ever program a system with an Intel Xeon Phi processor. To help ensure that your applications run at maximum efficiency, the authors emphasize key techniques for programming any modern parallel computing system whether based on Intel Xeon processors, Intel Xeon Phi processors, or other high-performance microprocessors. Applying these techniques will generally increase your program performance on any system and prepare you better for Intel Xeon Phi processors.
* A practical guide to the essentials for programming Intel Xeon Phi processors
* Definitive coverage of the Knights Landing architecture
* Presents best practices for portable, high-performance computing and a familiar and proven threads and vectors programming model
* Includes real world code examples that highlight usages of the unique aspects of this new highly parallel and high-performance computational product
* Covers use of MCDRAM, AVX-512, Intel® Omni-Path fabric, many-cores (up to 72), and many threads (4 per core)
* Covers software developer tools, libraries and programming models
* Covers using Knights Landing as a processor and a coprocessor « less
Multicore and Many-core Programming Approaches
High Performance Parallelism Pearls shows how to leverage parallelism on processors and coprocessors with the same programming – illustrating the most effective ways to better tap the computational potential of systems with Intel Xeon Phi coprocessors and Intel Xeon processors or other multicore processors. more » The book includes examples of successful programming efforts, drawn from across industries and domains such as chemistry, engineering, and environmental science. Each chapter in this edited work includes detailed explanations of the programming techniques used, while showing high performance results on both Intel Xeon Phi coprocessors and multicore processors. Learn from dozens of new examples and case studies illustrating "success stories" demonstrating not just the features of these powerful systems, but also how to leverage parallelism across these heterogeneous systems.
* Promotes consistent standards-based programming, showing in detail how to code for high performance on multicore processors and Intel® Xeon Phi™
* Examples from multiple vertical domains illustrating parallel optimizations to modernize real-world codes
* Source code available for download to facilitate further exploration « less
Talking Directly to the Kernel and C Library
Write software that draws directly on services offered by the Linux kernel and core system libraries. With this comprehensive book, Linux kernel contributor Robert Love provides you with a tutorial on Linux system programming, a reference manual on Linux system calls, and an insider's guide to writing more » smarter, faster code.
Love clearly distinguishes between POSIX standard functions and special services offered only by Linux. With a new chapter on multithreading, this updated and expanded edition provides an in-depth look at Linux from both a theoretical and applied perspective over a wide range of programming topics. « less
Delve inside Windows architecture and internals—and see how core components work behind the scenes. Led by three renowned internals experts, this classic guide is fully updated for Windows 7 and Windows Server 2008 R2—and now presents its coverage in two volumes.
As always, you get critical insider more » perspectives on how Windows operates. And through hands-on experiments, you’ll experience its internal behavior firsthand—knowledge you can apply to improve application design, debugging, system performance, and support.
In Part 1, you will:
* Understand how core system and management mechanisms work—including the object manager, synchronization, Wow64, Hyper-V, and the registry
* Examine the data structures and activities behind processes, threads, and jobs
* Go inside the Windows security model to see how it manages access, auditing, and authorization
* Explore the Windows networking stack from top to bottom—including APIs, BranchCache, protocol and NDIS drivers, and layered services
* Dig into internals hands-on using the kernel debugger, performance monitor, and other tools « less
Covering Windows Server 2008 R2 and Windows 7
Delve inside Windows architecture and internals - and see how core components work behind the scenes. Led by three renowned internals experts, this classic guide is fully updated for Windows 7 and Windows Server 2008 R2 - and now presents its coverage in two volumes.
As always, you get critical insider more » perspectives on how Windows operates. And through hands-on experiments, you'll experience its internal behavior firsthand - knowledge you can apply to improve application design, debugging, system performance, and support. « less
OS X and iOS Kernel Programming combines essential operating system and kernel architecture knowledge with a highly practical approach that will help you write effective kernel-level code. You'll learn fundamental concepts such as memory management and thread synchronization, as well as the I/O Kit framework. more » You'll also learn how to write your own kernel-level extensions, such as device drivers for USB and Thunderbolt devices, including networking, storage and audio drivers.
OS X and iOS Kernel Programming provides an incisive and complete introduction to the XNU kernel, which runs iPhones, iPads, iPods, and Mac OS X servers and clients. Then, you'll expand your horizons to examine Mac OS X and iOS system architecture. Understanding Apple's operating systems will allow you to write efficient device drivers, such as those covered in the book, using I/O Kit. « less
A thorough guide to the design and implementation of the Linux kernel
Linux Kernel Development details the design and implementation of the Linux kernel, presenting the content in a manner that is beneficial to those writing and developing kernel code, as well as to programmers seeking to better understand the operating system and become more efficient and productive in more » their coding.
The book details the major subsystems and features of the Linux kernel, including its design, implementation, and interfaces. It covers the Linux kernel with both a practical and theoretical eye, which should appeal to readers with a variety of interests and needs.
The author, a core kernel developer, shares valuable knowledge and experience on the 2.6 Linux kernel. Specific topics covered include process management, scheduling, time management and timers, the system call interface, memory addressing, memory management, the page cache, the VFS, kernel synchronization, portability concerns, and debugging techniques. This book covers the most interesting features of the Linux 2.6 kernel, including the CFS scheduler, preemptive kernel, block I/O layer, and I/O schedulers. « less
Design and Programming
Programmers don’t want to just read about the core concepts of operating systems. They want to learn how to apply the material by actually building applications. This new book motivates them by presenting numerous programming exercises at the code level. They are not only introduced to the OS concepts more » and abstractions, but also the implementation. Two design projects are integrated throughout the book that they’ll be able to follow to get them into the code. Self-assessment and review material is presented at the end of each chapter to reinforce concepts. These features help to make this an excellent resource for programmers to gain invaluable experience. « less