Book Image

Hands-On System Programming with Linux

By : Kaiwan N. Billimoria, Tigran Aivazian
Book Image

Hands-On System Programming with Linux

By: Kaiwan N. Billimoria, Tigran Aivazian

Overview of this book

The Linux OS and its embedded and server applications are critical components of today’s software infrastructure in a decentralized, networked universe. The industry's demand for proficient Linux developers is only rising with time. Hands-On System Programming with Linux gives you a solid theoretical base and practical industry-relevant descriptions, and covers the Linux system programming domain. It delves into the art and science of Linux application programming— system architecture, process memory and management, signaling, timers, pthreads, and file IO. This book goes beyond the use API X to do Y approach; it explains the concepts and theories required to understand programming interfaces and design decisions, the tradeoffs made by experienced developers when using them, and the rationale behind them. Troubleshooting tips and techniques are included in the concluding chapter. By the end of this book, you will have gained essential conceptual design knowledge and hands-on experience working with Linux system programming interfaces.
Table of Contents (21 chapters)

Process memory layout

A process is an instance of a program in execution. It is seen as a live, runtime schedulable entity by the OS. In other words, it's the process that runs when we launch a program.

The OS, or kernel, stores metadata about the process in a data structure in kernel memory; on Linux, this structure is often called the process descriptor—though the term task structure is a more accurate one. Process attributes are stored in the task structure; the process PID (process identifier) – a unique integer identifying the process, process credentials, open-file information, signaling information, and a whole lot more, reside here.

From the earlier discussion, Virtual memory, we understand that a process has, among many other attributes, a VAS. The VAS is the sum-total space potentially available to it. As in our earlier example, with a fictional computer...