Book description
In just one hour a day, you’ll have all the skills you need to begin programming in C++. With this complete tutorial, you’ll quickly master the basics, and then move on to more advanced features and concepts. Completely updated for the C++14 standard, with a preview of C++17, this book presents the language from a practical point of view, helping you learn how to use C++ to create faster, simpler, and more efficient C++ applications.
The most complete, authoritative technical guide to the FreeBSD kernel’s internal structure has now been extensively updated to cover all major improvements between Versions 5 and 11. Approximately one-third of this edition’s content is completely new, and another one-third has been extensively rewritten.
Three long-time FreeBSD project leaders begin with a concise overview of the FreeBSD kernel’s current design and implementation. Next, they cover the FreeBSD kernel from the system-call level down–from the interface to the kernel to the hardware. Explaining key design decisions, they detail the concepts, data structures, and algorithms used in implementing each significant system facility, including process management, security, virtual memory, the I/O system, filesystems, socket IPC, and networking.
This Second Edition
• Explains highly scalable and lightweight virtualization using FreeBSD jails, and virtual-machine acceleration with Xen and Virtio device paravirtualization
• Describes new security features such as Capsicum sandboxing and GELI cryptographic disk protection
• Fully covers NFSv4 and Open Solaris ZFS support
• Introduces FreeBSD’s enhanced volume management and new journaled soft updates
• Explains DTrace’s fine-grained process debugging/profiling
• Reflects major improvements to networking, wireless, and USB support
Readers can use this guide as both a working reference and an in-depth study of a leading contemporary, portable, open source operating system. Technical and sales support professionals will discover both FreeBSD’s capabilities and its limitations. Applications developers will learn how to effectively and efficiently interface with it; system administrators will learn how to maintain, tune, and configure it; and systems programmers will learn how to extend, enhance, and interface with it.
Marshall Kirk McKusick writes, consults, and teaches classes on UNIX- and BSD-related subjects. While at the University of California, Berkeley, he implemented the 4.2BSD fast filesystem. He was research computer scientist at the Berkeley Computer Systems Research Group (CSRG), overseeing development and release of 4.3BSD and 4.4BSD. He is a FreeBSD Foundation board member and a long-time FreeBSD committer. Twice president of the Usenix Association, he is also a member of ACM, IEEE, and AAAS.
George V. Neville-Neil hacks, writes, teaches, and consults on security, networking, and operating systems. A FreeBSD Foundation board member, he served on the FreeBSD Core Team for four years. Since 2004, he has written the “Kode Vicious” column for Queue and Communications of the ACM. He is vice chair of ACM’s Practitioner Board and a member of Usenix Association, ACM, IEEE, and AAAS.
Robert N.M. Watson is a University Lecturer in systems, security, and architecture in the Security Research Group at the University of Cambridge Computer Laboratory. He supervises advanced research in computer architecture, compilers, program analysis, operating systems, networking, and security. A FreeBSD Foundation board member, he served on the Core Team for ten years and has been a committer for fifteen years. He is a member of Usenix Association and ACM.
Table of contents
- Cover Page
- About This eBook
- Title Page
- Copyright Page
- Dedication
- Contents
- Preface
- About the Authors
-
Part I: Overview
- Chapter 1. History and Goals
-
Chapter 2. Design Overview of FreeBSD
- 2.1 FreeBSD Facilities and the Kernel
- 2.2 Kernel Organization
- 2.3 Kernel Services
- 2.4 Process Management
- 2.5 Security
- 2.6 Memory Management
- 2.7 I/O System Overview
- 2.8 Devices
- 2.9 The Fast Filesystem
- 2.10 The Zettabyte Filesystem
- 2.11 The Network Filesystem
- 2.12 Interprocess Communication
- 2.13 Network-Layer Protocols
- 2.14 Transport-Layer Protocols
- 2.15 System Startup and Shutdown
- Chapter 3. Kernel Services
-
Part II: Processes
- Chapter 4. Process Management
-
Chapter 5. Security
- 5.1 Operating-System Security
- 5.2 Security Model
- 5.3 Process Credentials
- 5.4 Users and Groups
- 5.5 Privilege Model
- 5.6 Interprocess Access Control
- 5.7 Discretionary Access Control
- 5.8 Capsicum Capability Model
- 5.9 Jails
-
5.10 Mandatory Access-Control Framework
- Mandatory Policies
- Guiding Design Principles
- Architecture of the MAC Framework
- Framework Startup
- Policy Registration
- Framework Entry-Point Design Considerations
- Policy Entry-Point Considerations
- Kernel Service Entry-Point Invocation
- Policy Composition
- Object Labelling
- Label Life Cycle and Memory Management
- Label Synchronization
- Policy-Agnostic Label Management from Userspace
- 5.11 Security Event Auditing
- 5.12 Cryptographic Services
- 5.13 GELI Full-Disk Encryption
-
Chapter 6. Memory Management
- 6.1 Terminology
- 6.2 Overview of the FreeBSD Virtual-Memory System
- 6.3 Kernel Memory Management
- 6.4 Per-Process Resources
- 6.5 Shared Memory
- 6.6 Creation of a New Process
- 6.7 Execution of a File
- 6.8 Process Manipulation of Its Address Space
- 6.9 Termination of a Process
- 6.10 The Pager Interface
- 6.11 Paging
- 6.12 Page Replacement
- 6.13 Portability
-
Part III: I/O System
- Chapter 7. I/O System Overview
- Chapter 8. Devices
-
Chapter 9. The Fast Filesystem
- 9.1 Hierarchical Filesystem Management
- 9.2 Structure of an Inode
- 9.3 Naming
- 9.4 Quotas
- 9.5 File Locking
-
9.6 Soft Updates
- Update Dependencies in the Filesystem
- Dependency Structures
- Bitmap Dependency Tracking
- Inode Dependency Tracking
- Direct-Block Dependency Tracking
- Indirect-Block Dependency Tracking
- Dependency Tracking for New Indirect Blocks
- New Directory-Entry Dependency Tracking
- New Directory Dependency Tracking
- Directory-Entry Removal-Dependency Tracking
- File Truncation
- File and Directory Inode Reclamation
- Directory-Entry Renaming Dependency Tracking
- Fsync Requirements for Soft Updates
- File-Removal Requirements for Soft Updates
- Soft-Updates Requirements for fsck
- 9.7 Filesystem Snapshots
- 9.8 Journaled Soft Updates
- 9.9 The Local Filestore
- 9.10 The Berkeley Fast Filesystem
- Chapter 10. The Zettabyte Filesystem
- Chapter 11. The Network Filesystem
-
Part IV: Interprocess Communication
-
Chapter 12. Interprocess Communication
- 12.1 Interprocess-Communication Model
- 12.2 Implementation Structure and Overview
- 12.3 Memory Management
- 12.4 IPC Data Structures
- 12.5 Connection Setup
- 12.6 Data Transfer
- 12.7 Socket Shutdown
- 12.8 Network-Communication Protocol Internal Structure
- 12.9 Socket-to-Protocol Interface
- 12.10 Protocol-to-Protocol Interface
- 12.11 Protocol-to-Network Interface
- 12.12 Buffering and Flow Control
- 12.13 Network Virtualization
- Chapter 13. Network-Layer Protocols
-
Chapter 14. Transport-Layer Protocols
- 14.1 Internet Ports and Associations
- 14.2 User Datagram Protocol (UDP)
- 14.3 Transmission Control Protocol (TCP)
- 14.4 TCP Algorithms
- 14.5 TCP Input Processing
-
14.6 TCP Output Processing
- Sending Data
- Avoidance of the Silly-Window Syndrome
- Avoidance of Small Packets
- Delayed Acknowledgments and Window Updates
- Selective Acknowledgment
- Retransmit State
- Slow Start
- Buffer and Window Sizing
- Avoidance of Congestion with Slow Start
- Fast Retransmission
- Modular Congestion Control
- The Vegas Algorithm
- The Cubic Algorithm
- 14.7 Stream Control Transmission Protocol (SCTP)
-
Chapter 12. Interprocess Communication
- Part V: System Operation
- Glossary
- Index
- FreeBSD Kernel Internals on Video
- Advanced FreeBSD Course on Video
- FreeBSD Networking from the Bottom Up on Video
- CSRG Archive CD-ROMs
- History of UNIX at Berkeley
- Teaching a Course Using This Book
- Code Snippets
Product information
- Title: Design and Implementation of the FreeBSD Operating System, 2nd Edition
- Author(s):
- Release date: September 2014
- Publisher(s): Addison-Wesley Professional
- ISBN: 9780133761825
You might also like
book
Design and Implementation of the FreeBSD Operating System, The
As in earlier Addison-Wesley books on the UNIX-based BSD operating system, Kirk McKusick and George Neville-Neil …
book
Absolute FreeBSD, 3rd Edition
FreeBSD is the muscle behind companies like Netflix and EMC. Any place where someone does heavy …
video
Introduction to the FreeBSD Open-Source Operating System
This ten-hour video starts with an introduction to the FreeBSD community and explains how it differs …
book
Linux System Programming Techniques
Find solutions to all your problems related to Linux system programming using practical recipes for developing …