The purpose of this text is to provide a reference for University level assembly language and systems programming courses. Specifically, this text addresses the x86-64 instruction set for the popular x86-64 class of processors using the Ubuntu 64-bit Operating System (OS). While the provided code and various examples should work under any Linux-based 64-bit OS, they have only been tested under Ubuntu 14/16/18 LTS (64-bit).
Advanced Linux Programming is an e-book that covers the common programming environments on the GNU/Linux system (shell, awk, etc.). The book is designed to help: develop GNU/Linux software that works the way users expect it to; write more sophisticated programs with features such as multi-processing, multi-threading, interprocess communication, and interaction with hardware devices; improve programs by making them run faster, more reliably, and more securely; understand the preculiarities of a GNU/Linux system, including its limitations, special capabilities, and conventions.
The Little Book of Semaphores is a free (in both senses of the word) textbook that introduces the principles of synchronization for concurrent programming. In most computer science curricula, synchronization is a module in an Operating Systems class. OS textbooks present a standard set of problems with a standard set of solutions, but most students don't get a good understanding of the material or the ability to solve similar problems. The approach of this book is to identify patterns that are useful for a variety of synchronization problems and then show how they can be assembled into solutions. After each problem, the book offers a hint before showing a solution, giving students a better chance of discovering solutions on their own. The book covers the classical problems, including "Readers-writers," "Producer-consumer", and "Dining Philosophers." In addition, it collects a number of not-so-classical problems
This book is Copyright and is made available in the hope that it serves as a useful resource for users of GNU/Linux in general and Debian in particular. The procedures and applications presented in this book have been included for their instructional value. They have been tested but are not guaranteed for any particular purpose. The publisher, Togaware.com, does not offer any warranties or representations, nor does it accept any liabilities with respect to the programs and applications.
This book is a work in progress. Please send comments, suggestions, updates, and criticisms to Graham.Williams@togaware.com.
A PDF version of this book is available from http://www.togaware.com/linux. The HTML version is available from http://www.togaware.com/linux/survivor/.
Let's freely share our knowledge. What's the point otherwise?
This book is intended to cover everything that is needed to know in order to properly build, customize, and install the Linux kernel. No programming experience is needed to understand and use this book.