Paperback: 456 pages
Publisher: O'Reilly Media; 2 edition (June 8, 2013)
Language: English
ISBN-10: 1449339530
ISBN-13: 978-1449339531
Product Dimensions: 7 x 1.1 x 9.2 inches
Shipping Weight: 1.8 pounds (View shipping rates and policies)
Average Customer Review: 4.2 out of 5 stars See all reviews (16 customer reviews)
Best Sellers Rank: #133,986 in Books (See Top 100 in Books) #41 in Books > Computers & Technology > Operating Systems > Linux > Programming #52 in Books > Computers & Technology > Operating Systems > Unix #164 in Books > Textbooks > Computer Science > Operating Systems
Huge caveat: this book is about application programming, not internal system (kernel) development. Coming from a Windows background I bought this book thinking it would be about writing programs for the system memory space, ie drivers and kernel modifications. That is not the case. In the Linux world "system programming" means anything that makes kernel calls, i.e., uses the system interface, whereas "application programming" is writing scripts. This definition completely differs from that in the Windows/Intel world where "system programming" means writing software that operates at privilege level 0 of the CPU, i.e., anything in the system memory space (usually drivers and various OS components). So, if you are coming from a non-Linux environment be aware of that. For example, the author considers a writing "text editor" to be system programming, whereas in Windows and the MacOS text editors are considered applications and writing them is considered application programming.This book covers all the basic calls in an introductory way. For example, the first chapter with meat in it, Chapter 2, covers "File I/O" and gives beginner level descriptions of calls like read(), seek() and select(). The main advantage of the book is that is pretty thorough in coverage, giving basic descriptions of every major system interface.Overall the book is decent, but is completely outmatched by other similar, much better books. For example, "The Linux Programming Interface" by Kerrisk has everything in this book plus a lot more and much better examples. In particular a big failing of this book is that is has no realistic examples, just toy snippets.
I received a review copy of the book as part of the blogger review program.Summary:This book consists of 11 chapters. The first chapter introduces you nicely to the the core topics and lays the foundation for the rest of the book. Files (including some hints on the role of the virtual file system and how they are represented in the Kernel), Input/Output (User buffered I/O, I/O scheduling, Scatter-Gather I/O), Processes (including their creation mechanisms and management), Threads (and how Linux implements them along with a treatment of the POSIX threads library), Memory (Process address space, dynamic memory allocation strategies, and how they work, memory locking) form the core of the book. The second last chapter discusses signal handling. The last chapter of the book is on time (the different types of time, how you can get/set time, measure time elapsed and timers) and is sort of a “standalone” topic for the book. The first appendix discusses the GCC extensions to the C language and can be handy when you read the Kernel source code.Reactions:In this book, the author discusses some of the most important topics that one would want to learn about when venturing into the area of “system programming” on Linux. He introduces the topics in a friendly manner adding some fun anecdotes from time to time (what does the “c” in calloc() stand for?).At various places, the reader is given a peek under the hood (for example, pause() is one of the simplest system calls implemented) which can only make the curious reader happy and itchy to download the kernel source code and start grepping. The book includes code examples throughout and hence if you are learning a topic for the first time, these are very useful starting points.
Linux System Programming: Talking Directly to the Kernel and C Library LINUX: Linux Command Line, Cover all essential Linux commands. A complete introduction to Linux Operating System, Linux Kernel, For Beginners, Learn Linux in easy steps, Fast! A Beginner's Guide Linux: Linux Guide for Beginners: Command Line, System and Operation (Linux Guide, Linux System, Beginners Operation Guide, Learn Linux Step-by-Step) Linux: Linux Mastery. The Ultimate Linux Operating System and Command Line Mastery (Operating System, Linux) Programming #8:C Programming Success in a Day & Android Programming In a Day! (C Programming, C++programming, C++ programming language, Android , Android Programming, Android Games) Programming #57: C++ Programming Professional Made Easy & Android Programming in a Day (C++ Programming, C++ Language, C++for beginners, C++, Programming ... Programming, Android, C, C Programming) DOS: Programming Success in a Day: Beginners guide to fast, easy and efficient learning of DOS programming (DOS, ADA, Programming, DOS Programming, ADA ... LINUX, RPG, ADA Programming, Android, JAVA) Raspberry Pi 2: Raspberry Pi 2 Programming Made Easy (Raspberry Pi, Android Programming, Programming, Linux, Unix, C Programming, C+ Programming) The Linux Programming Interface: A Linux and UNIX System Programming Handbook uC/OS-III, The Real-Time Kernel, or a High Performance, Scalable, ROMable, Preemptive, Multitasking Kernel for Microprocessors, Microcontrollers & DSPs (Board NOT Included) Kernel of the Kernel (Suny Series in Islam) Programming #45: Python Programming Professional Made Easy & Android Programming In a Day! (Python Programming, Python Language, Python for beginners, ... Programming Languages, Android Programming) Linux Kernel Programming (3rd Edition) ASP.NET: Programming success in a day: Beginners guide to fast, easy and efficient learning of ASP.NET programming (ASP.NET, ASP.NET Programming, ASP.NET ... ADA, Web Programming, Programming) C#: Programming Success in a Day: Beginners guide to fast, easy and efficient learning of C# programming (C#, C# Programming, C++ Programming, C++, C, C Programming, C# Language, C# Guide, C# Coding) FORTRAN Programming success in a day:Beginners guide to fast, easy and efficient learning of FORTRAN programming (Fortran, Css, C++, C, C programming, ... Programming, MYSQL, SQL Programming) Prolog Programming; Success in a Day: Beginners Guide to Fast, Easy and Efficient Learning of Prolog Programming (Prolog, Prolog Programming, Prolog Logic, ... Programming, Programming Code, Java) Parallel Programming: Success in a Day: Beginners' Guide to Fast, Easy, and Efficient Learning of Parallel Programming (Parallel Programming, Programming, ... C++ Programming, Multiprocessor, MPI) Programming: Computer Programming for Beginners: Learn the Basics of Java, SQL & C++ - 3. Edition (Coding, C Programming, Java Programming, SQL Programming, JavaScript, Python, PHP) Android: Programming in a Day! The Power Guide for Beginners In Android App Programming (Android, Android Programming, App Development, Android App Development, ... App Programming, Rails, Ruby Programming)