599 lines
No EOL
43 KiB
HTML
599 lines
No EOL
43 KiB
HTML
|
||
<!DOCTYPE html>
|
||
|
||
|
||
|
||
|
||
<html lang="en">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
|
||
<title>Chapter 0 Preface — Computer Systems Fundamentals</title>
|
||
|
||
<link rel="stylesheet" href="_static/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous" />
|
||
<link rel="stylesheet" href="_static/css/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/css/normalize.css" type="text/css" />
|
||
<link rel="stylesheet" href="../../../JSAV/css/JSAV.css" type="text/css" />
|
||
<link rel="stylesheet" href="../../../lib/odsaMOD-min.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/css/jquery-1.11.4-smoothness-ui.css" type="text/css" />
|
||
<link rel="stylesheet" href="../../../lib/odsaStyle-min.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/css/csf.css" type="text/css" />
|
||
|
||
<style>
|
||
.underline { text-decoration: underline; }
|
||
</style>
|
||
|
||
<script type="text/javascript">
|
||
var DOCUMENTATION_OPTIONS = {
|
||
URL_ROOT: './',
|
||
VERSION: '0.4.1',
|
||
COLLAPSE_INDEX: false,
|
||
FILE_SUFFIX: '.html',
|
||
HAS_SOURCE: true
|
||
};
|
||
</script>
|
||
|
||
<script type="text/x-mathjax-config">
|
||
MathJax.Hub.Config({
|
||
tex2jax: {
|
||
inlineMath: [['$','$'], ['\\(','\\)']],
|
||
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
|
||
processEscapes: true
|
||
},
|
||
"HTML-CSS": {
|
||
scale: "80"
|
||
}
|
||
});
|
||
</script>
|
||
<link rel="shortcut icon" href="_static/favicon.ico"/>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="index" title="Computer Systems Fundamentals" href="index.html#" />
|
||
<link rel="next" title="1. About OpenCSF" href="About.html" />
|
||
|
||
<style>
|
||
ul li {
|
||
background: none;
|
||
list-style-type: none;
|
||
}
|
||
</style>
|
||
</head><body class="no-top">
|
||
|
||
<div class="jumbotron jumbotron-custom jmu-dark-purple-bg">
|
||
<div class="container">
|
||
<div class="row">
|
||
<h1 class="display-4 jmu-gold-no-hover">
|
||
<img src="_static/CSF-Logo.png" class="p-3 mr-2 align-center bg-white rounded-lg d-inline logo-wrap" height="120em" alt="OpenCSF Logo" /> Computer Systems Fundamentals</h1>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<script type="text/javascript" src="_static/js/jquery-2.1.4.min.js"></script>
|
||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||
<script type="text/javascript" src="_static/js/jquery-1.11.4-ui.min.js"></script>
|
||
<script type="text/javascript" src="_static/js/forge-0.7.0.min.js"></script>
|
||
<script type="text/javascript" src="../../../JSAV/lib/jquery.transit.js"></script>
|
||
<script type="text/javascript" src="../../../JSAV/lib/raphael.js"></script>
|
||
<script type="text/javascript" src="../../../JSAV/build/JSAV-min.js"></script>
|
||
<script type="text/javascript" src="_static/js/config.js"></script>
|
||
<script type="text/javascript" src="../../../lib/odsaUtils-min.js"></script>
|
||
<script type="text/javascript" src="../../../lib/odsaMOD-min.js"></script>
|
||
<script type="text/javascript" src="_static/js/d3-4.13.0.min.js"></script>
|
||
<script type="text/javascript" src="_static/js/d3-selection-multi.v1.min.js"></script>
|
||
<script type="text/javascript" src="../../../lib/dataStructures.js"></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="container"><div class="sidebar" style="border-style:none;background-color:transparent">
|
||
|
||
</div>
|
||
|
||
<script>ODSA.SETTINGS.DISP_MOD_COMP = false;ODSA.SETTINGS.MODULE_NAME = "index";ODSA.SETTINGS.MODULE_LONG_NAME = "Contents";ODSA.SETTINGS.MODULE_CHAPTER = ""; ODSA.SETTINGS.BUILD_DATE = "2021-06-01 15:50:16"; ODSA.SETTINGS.BUILD_CMAP = false;</script><div class="section" id="preface">
|
||
<h1>Chapter 0 Preface<a class="headerlink" href="index.html#preface" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="About.html">0.1. About OpenCSF</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Intro.html">0.2. How to Use this System</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="introduction-to-computer-systems">
|
||
<h1>Chapter 1 Introduction to Computer Systems<a class="headerlink" href="index.html#introduction-to-computer-systems" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="IntroConcSysOverview.html">1.1. Introduction to Concurrent Systems</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="SysAndModels.html">1.2. Systems and Models</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="SysAndModels.html#models-as-representations">1.2.1. Models as Representations</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="SysAndModels.html#from-models-to-implementations">1.2.2. From Models to Implementations</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Themes.html">1.3. Themes and Guiding Principles</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Themes.html#systems-as-foundations-of-computing">1.3.1. Systems as Foundations of Computing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Themes.html#systems-and-complexity">1.3.2. Systems and Complexity</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Themes.html#the-semiotics-of-computer-systems">1.3.3. The Semiotics of Computer Systems</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Architectures.html">1.4. System Architectures</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Architectures.html#client-server-architectures">1.4.1. Client/Server Architectures</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Architectures.html#peer-to-peer-p2p-architectures">1.4.2. Peer-to-peer (P2P) Architectures</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Architectures.html#layered-architectures">1.4.3. Layered Architectures</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Architectures.html#pipe-and-filter-architectures">1.4.4. Pipe-and-filter Architectures</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Architectures.html#event-driven-architectures">1.4.5. Event-driven Architectures</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Architectures.html#hybrid-architectures">1.4.6. Hybrid Architectures</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="StateModels.html">1.5. State Models in UML</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="StateModels.html#state-space-explosion">1.5.1. State Space Explosion</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="StateModels.html#implementing-finite-state-machines">1.5.2. Implementing Finite State Machines</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="SequenceModels.html">1.6. Sequence Models in UML</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="SequenceModels.html#summary-questions">1.6.1. Summary Questions</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="StateModelImplementation.html">1.7. Extended Example: Text Parser State Machine</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="processes-and-os-basics">
|
||
<h1>Chapter 2 Processes and OS Basics<a class="headerlink" href="index.html#processes-and-os-basics" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="ProcessesOverview.html">2.1. Processes and OS Basics</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Multiprogramming.html">2.2. Processes and Multiprogramming</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Multiprogramming.html#uniprogramming-and-utilization">2.2.1. Uniprogramming and Utilization</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Multiprogramming.html#multiprogramming-and-concurrency">2.2.2. Multiprogramming and Concurrency</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Multiprogramming.html#context-switches-and-overhead-costs">2.2.3. Context Switches and Overhead Costs</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="KernelMechanics.html">2.3. Kernel Mechanics</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="KernelMechanics.html#kernel-memory-structure-and-protections">2.3.1. Kernel Memory Structure and Protections</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="KernelMechanics.html#the-boot-procedure">2.3.2. The Boot Procedure</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="KernelMechanics.html#kernel-invocation">2.3.3. Kernel Invocation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="KernelMechanics.html#mode-switches-and-privileged-instructions">2.3.4. Mode Switches and Privileged Instructions</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Syscall.html">2.4. System Call Interface</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Syscall.html#system-calls-vs-function-calls">2.4.1. System Calls vs. Function Calls</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Syscall.html#linux-system-calls">2.4.2. Linux System Calls</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Syscall.html#calling-system-calls-in-assembly">2.4.3. Calling System Calls in Assembly</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Syscall.html#calling-system-calls-with-syscall">2.4.4. Calling System Calls with syscall()</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ProcessCycle.html">2.5. Process Life Cycle</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProcessCycle.html#process-creation">2.5.1. Process Creation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProcessCycle.html#switching-program-code">2.5.2. Switching Program Code</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProcessCycle.html#posix-spawn-interface">2.5.3. POSIX Spawn Interface</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProcessCycle.html#process-destruction">2.5.4. Process Destruction</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="UnixFile.html">2.6. The UNIX File Abstraction</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="UnixFile.html#basic-file-access">2.6.1. Basic File Access</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="UnixFile.html#working-with-files">2.6.2. Working with Files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="UnixFile.html#accessing-file-metadata">2.6.3. Accessing File Metadata</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="EventsSignals.html">2.7. Events and Signals</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="EventsSignals.html#sending-process-signals">2.7.1. Sending Process Signals</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="EventsSignals.html#custom-signal-handlers">2.7.2. Custom Signal Handlers</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Extended2Processes.html">2.8. Extended Example: Listing Files with Processes</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="concurrency-with-ipc">
|
||
<h1>Chapter 3 Concurrency with IPC<a class="headerlink" href="index.html#concurrency-with-ipc" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="IPCOverview.html">3.1. Concurrency with IPC</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="IPCModels.html">3.2. IPC Models</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="IPCModels.html#advantages-and-disadvantages">3.2.1. Advantages and Disadvantages</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="IPCModels.html#an-ipc-taxonomy">3.2.2. An IPC Taxonomy</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Pipes.html">3.3. Pipes and FIFOs</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Pipes.html#basic-pipes">3.3.1. Basic Pipes</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Pipes.html#pipes-and-shell-commands">3.3.2. Pipes and Shell Commands</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Pipes.html#fifos">3.3.3. FIFOs</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="MMap.html">3.4. Shared Memory With Memory-mapped Files</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="MMap.html#memory-mapped-files">3.4.1. Memory-mapped Files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="MMap.html#region-protections-and-privacy">3.4.2. Region Protections and Privacy</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="POSIXvSysV.html">3.5. POSIX vs. System V IPC</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="POSIXvSysV.html#posix-ipc-fundamentals">3.5.1. POSIX IPC Fundamentals</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="MQueues.html">3.6. Message Passing With Message Queues</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="MQueues.html#posix-message-queues">3.6.1. POSIX Message Queues</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ShMem.html">3.7. Shared Memory</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="ShMem.html#posix-shared-memory">3.7.1. POSIX Shared Memory</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="IPCSems.html">3.8. Semaphores</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="IPCSems.html#posix-vs-system-v-semaphores">3.8.1. POSIX vs. System V Semaphores</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="IPCSems.html#posix-named-semaphores">3.8.2. POSIX Named Semaphores</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="IPCSems.html#posix-unnamed-semaphores">3.8.3. POSIX Unnamed Semaphores</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Extended3Bash.html">3.9. Extended Example: Bash-lite: A Simple Command-line Shell</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="networked-concurrency">
|
||
<h1>Chapter 4 Networked Concurrency<a class="headerlink" href="index.html#networked-concurrency" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="SocketsOverview.html">4.1. Networked Concurrency</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="FiveLayer.html">4.2. The TCP/IP Internet Model</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="FiveLayer.html#internet-model">4.2.1. Internet Model</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="FiveLayer.html#packet-encapsulation-and-nomenclature">4.2.2. Packet Encapsulation and Nomenclature</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="NetApps.html">4.3. Network Applications and Protocols</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetApps.html#naming-and-addressing">4.3.1. Naming and Addressing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetApps.html#protocol-specifications-and-rfcs">4.3.2. Protocol Specifications and RFCs</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Sockets.html">4.4. The Socket Interface</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Sockets.html#networking-data-structures">4.4.1. Networking Data Structures</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Sockets.html#client-socket-interface">4.4.2. Client Socket Interface</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Sockets.html#server-socket-interface">4.4.3. Server Socket Interface</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Sockets.html#socket-communication">4.4.4. Socket Communication</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="TCPSockets.html">4.5. TCP Socket Programming: HTTP</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="TCPSockets.html#hypertext-transfer-protocol-http">4.5.1. Hypertext Transfer Protocol (HTTP)</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="TCPSockets.html#bnf-protocol-specification">4.5.2. BNF Protocol Specification</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="TCPSockets.html#http-1-1-persistent-connections">4.5.3. HTTP/1.1 Persistent Connections</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="TCPSockets.html#processing-http-headers">4.5.4. Processing HTTP Headers</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="TCPSockets.html#persistent-state-with-cookies">4.5.5. Persistent State with Cookies</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="UDPSockets.html">4.6. UDP Socket Programming: DNS</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="UDPSockets.html#resolving-dns-queries">4.6.1. Resolving DNS Queries</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="UDPSockets.html#dns-resource-record-structure">4.6.2. DNS Resource Record Structure</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="UDPSockets.html#dns-protocol-messages">4.6.3. DNS Protocol Messages</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="UDPSockets.html#constructing-dns-queries-with-sockets">4.6.4. Constructing DNS Queries with Sockets</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="UDPSockets.html#processing-dns-query-responses">4.6.5. Processing DNS Query Responses</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="AppBroadcast.html">4.7. Application-Layer Broadcasting: DHCP</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="AppBroadcast.html#dhcp-overview">4.7.1. DHCP Overview</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="AppBroadcast.html#dhcp-protocol-messages">4.7.2. DHCP Protocol Messages</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Extended4CGI.html">4.8. Extended Example: CGI Web Server</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="the-internet-and-connectivity">
|
||
<h1>Chapter 5 The Internet and Connectivity<a class="headerlink" href="index.html#the-internet-and-connectivity" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="InternetOverview.html">5.1. The Internet and Connectivity</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="AppLayer.html">5.2. Application Layer: Overlay Networks</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="AppLayer.html#characteristics-of-peer-to-peer-networks">5.2.1. Characteristics of Peer-to-Peer Networks</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="TransLayer.html">5.3. Transport Layer</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="TransLayer.html#unreliable-transport-udp">5.3.1. Unreliable Transport: UDP</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="TransLayer.html#reliable-transport-tcp">5.3.2. Reliable Transport: TCP</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="TransLayer.html#tcp-handshake-and-connections">5.3.3. TCP Handshake and Connections</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="TransLayer.html#tcp-timeout-and-packet-loss">5.3.4. TCP Timeout and Packet Loss</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="NetSec.html">5.4. Network Security Fundamentals</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetSec.html#symmetric-key-encryption">5.4.1. Symmetric Key Encryption</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetSec.html#public-key-encryption">5.4.2. Public Key Encryption</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetSec.html#cryptographic-hash-functions">5.4.3. Cryptographic Hash Functions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetSec.html#transport-layer-security-tls">5.4.4. Transport-Layer Security (TLS)</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetSec.html#tls-in-practice-https">5.4.5. TLS in Practice: HTTPS</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="NetLayer.html">5.5. Internet Layer: IP</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetLayer.html#ip-addresses-and-subnets">5.5.1. IP Addresses and Subnets</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetLayer.html#ip-packet-formats">5.5.2. IP Packet Formats</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="NetLayer.html#network-routing-protocols">5.5.3. Network Routing Protocols</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="LinkLayer.html">5.6. Link Layer</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="LinkLayer.html#lan-packet-transmission-ethernet">5.6.1. LAN Packet Transmission: Ethernet</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="LinkLayer.html#lan-packet-transmission-arp">5.6.2. LAN Packet Transmission: ARP</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="LinkLayer.html#what-lies-beneath-carrier-signals">5.6.3. What Lies Beneath: Carrier Signals</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Wireless.html">5.7. Wireless Connectivity: Wi-Fi, Bluetooth, and Zigbee</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Wireless.html#wireless-protocol-stacks-and-uses">5.7.1. Wireless Protocol Stacks and Uses</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Extended5DNS.html">5.8. Extended Example: DNS Client</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="concurrency-with-multithreading">
|
||
<h1>Chapter 6 Concurrency with Multithreading<a class="headerlink" href="index.html#concurrency-with-multithreading" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="ThreadsOverview.html">6.1. Concurrency with Multithreading</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ProcVThreads.html">6.2. Processes vs. Threads</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProcVThreads.html#multithreading">6.2.1. Multithreading</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProcVThreads.html#advantages-and-disadvantages-of-threads">6.2.2. Advantages and Disadvantages of Threads</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProcVThreads.html#thread-models">6.2.3. Thread Models</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="RaceConditions.html">6.3. Race Conditions and Critical Sections</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="RaceConditions.html#race-conditions">6.3.1. Race Conditions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="RaceConditions.html#critical-sections">6.3.2. Critical Sections</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="RaceConditions.html#thread-safety-and-reentrancy">6.3.3. Thread Safety and Reentrancy</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="POSIXThreads.html">6.4. POSIX Thread Library</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="POSIXThreads.html#creating-and-joining-threads">6.4.1. Creating and Joining Threads</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="POSIXThreads.html#attached-and-detached-threads">6.4.2. Attached and Detached Threads</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ThreadArgs.html">6.5. Thread Arguments and Return Values</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="ThreadArgs.html#passing-a-single-argument-to-threads">6.5.1. Passing a Single Argument to Threads</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ThreadArgs.html#passing-multiple-arguments-to-threads">6.5.2. Passing Multiple Arguments to Threads</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ThreadArgs.html#returning-values-from-threads">6.5.3. Returning Values from Threads</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ImplicitThreads.html">6.6. Implicit Threading and Language-based Threads</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="ImplicitThreads.html#implicit-threading-with-openmp">6.6.1. Implicit Threading with OpenMP</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ImplicitThreads.html#threads-as-objects">6.6.2. Threads as Objects</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="ImplicitThreads.html#java-threads">6.6.2.1. Java Threads</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="ImplicitThreads.html#python-threads">6.6.2.2. Python Threads</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ImplicitThreads.html#concurrency-as-language-design">6.6.3. Concurrency as Language Design</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="ImplicitThreads.html#goroutines">6.6.3.1. Goroutines</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="ImplicitThreads.html#rust-concurrency">6.6.3.2. Rust Concurrency</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Extended6Input.html">6.7. Extended Example: Keyboard Input Listener</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Extended6Primes.html">6.8. Extended Example: Concurrent Prime Number Search</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="synchronization-primitives">
|
||
<h1>Chapter 7 Synchronization Primitives<a class="headerlink" href="index.html#synchronization-primitives" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="SynchOverview.html">7.1. Synchronization Primitives</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="CritSect.html">7.2. Critical Sections and Peterson’s Solution</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="CritSect.html#peterson-s-solution">7.2.1. Peterson’s Solution</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="CritSect.html#synchronization-properties">7.2.2. Synchronization Properties</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="CritSect.html#peterson-s-solution-and-modern-hardware">7.2.3. Peterson’s Solution and Modern Hardware</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Locks.html">7.3. Locks</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Locks.html#posix-mutexes">7.3.1. POSIX Mutexes</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Locks.html#spinlocks">7.3.2. Spinlocks</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Locks.html#defining-critical-sections">7.3.3. Defining Critical Sections</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Semaphores.html">7.4. Semaphores</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Semaphores.html#semaphores-as-signaling">7.4.1. Semaphores as Signaling</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Semaphores.html#mutual-exclusion-with-semaphores">7.4.2. Mutual Exclusion with Semaphores</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Semaphores.html#multiplexing-with-semaphores">7.4.3. Multiplexing with Semaphores</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Barriers.html">7.5. Barriers</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Barriers.html#concurrent-calculations-with-barriers">7.5.1. Concurrent Calculations with Barriers</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Condvars.html">7.6. Condition Variables</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Condvars.html#condition-variables-vs-semaphores">7.6.1. Condition Variables vs. Semaphores</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Condvars.html#how-to-use-a-condition-variable">7.6.2. How to Use a Condition Variable</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Condvars.html#a-condition-variable-example">7.6.3. A Condition Variable Example</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Condvars.html#monitors-and-synchronized-methods">7.6.4. Monitors and Synchronized Methods</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Deadlock.html">7.7. Deadlock</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Deadlock.html#necessary-conditions">7.7.1. Necessary Conditions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Deadlock.html#livelock-and-false-solutions">7.7.2. Livelock and False Solutions</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Deadlock.html#avoiding-deadlock">7.7.3. Avoiding Deadlock</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Extended7Events.html">7.8. Extended Example: Event Log File</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="synchronization-patterns-and-problems">
|
||
<h1>Chapter 8 Synchronization Patterns and Problems<a class="headerlink" href="index.html#synchronization-patterns-and-problems" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="SynchProblemsOverview.html">8.1. Synchronization Patterns and Problems</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="SynchDesign.html">8.2. Basic Synchronization Design Patterns</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="SynchDesign.html#signaling">8.2.1. Signaling</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="SynchDesign.html#turnstiles">8.2.2. Turnstiles</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="SynchDesign.html#rendezvous">8.2.3. Rendezvous</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="SynchDesign.html#multiplexing">8.2.4. Multiplexing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="SynchDesign.html#lightswitches">8.2.5. Lightswitches</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ProdCons.html">8.3. Producer-Consumer Problem</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProdCons.html#producer-consumer-with-unbounded-queue">8.3.1. Producer-Consumer with Unbounded Queue</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProdCons.html#single-producer-single-consumer-solution-using-a-bounded-queue">8.3.2. Single Producer-Single Consumer Solution Using a Bounded Queue</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ProdCons.html#multiple-producers-solution-using-a-bounded-queue">8.3.3. Multiple Producers Solution Using a Bounded Queue</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ReadWrite.html">8.4. Readers-Writers Problem</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="ReadWrite.html#a-solution-using-lightswitches">8.4.1. A Solution Using Lightswitches</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ReadWrite.html#fairness-to-writers">8.4.2. Fairness to Writers</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ReadWrite.html#search-insert-delete-problem">8.4.3. Search-Insert-Delete Problem</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="DiningPhil.html">8.5. Dining Philosophers Problem and Deadlock</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="DiningPhil.html#solution-of-limiting-accesses">8.5.1. Solution of Limiting Accesses</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="DiningPhil.html#solution-by-breaking-hold-and-wait">8.5.2. Solution by Breaking Hold-and-wait</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="DiningPhil.html#solution-by-imposing-order">8.5.3. Solution by Imposing Order</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="CigSmokers.html">8.6. Cigarette Smokers Problem and the Limits of Semaphores and Locks</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="CigSmokers.html#implications-of-the-cigarette-smokers-problem">8.6.1. Implications of the Cigarette Smokers Problem</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="CigSmokers.html#on-cigarette-smokers-and-dining-philosophers">8.6.2. On Cigarette Smokers and Dining Philosophers</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Extended8ModExp.html">8.7. Extended Example: Parallel Modular Exponentiation</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="parallel-and-distributed-systems">
|
||
<h1>Chapter 9 Parallel and Distributed Systems<a class="headerlink" href="index.html#parallel-and-distributed-systems" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="ParallelDistributedOverview.html">9.1. Parallel and Distributed Systems</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ParVConc.html">9.2. Parallelism vs. Concurrency</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="ParVConc.html#multiprocessing-systems">9.2.1. Multiprocessing Systems</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="ParallelDesign.html">9.3. Parallel Design Patterns</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="ParallelDesign.html#algorithmic-strategy-patterns">9.3.1. Algorithmic Strategy Patterns</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ParallelDesign.html#implementation-strategy-patterns">9.3.2. Implementation Strategy Patterns</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ParallelDesign.html#parallel-execution-patterns">9.3.3. Parallel Execution Patterns</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Scaling.html">9.4. Limits of Parallelism and Scaling</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Scaling.html#amdahl-s-law-and-strong-scaling">9.4.1. Amdahl’s Law and Strong Scaling</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Scaling.html#gustafson-s-law-and-weak-scaling">9.4.2. Gustafson’s Law and Weak Scaling</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="DistTiming.html">9.5. Timing in Distributed Environments</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="DistTiming.html#clock-synchronization">9.5.1. Clock Synchronization</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="DistTiming.html#logical-clocks-and-lamport-timestamps">9.5.2. Logical Clocks and Lamport Timestamps</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="DistTiming.html#vector-clocks">9.5.3. Vector Clocks</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="DistDataStorage.html">9.6. Reliable Data Storage and Location</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="DistDataStorage.html#google-file-system">9.6.1. Google File System</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="DistDataStorage.html#distributed-hash-tables">9.6.2. Distributed Hash Tables</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="DistConsensus.html">9.7. Consensus in Distributed Systems</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="DistConsensus.html#byzantine-generals-problem">9.7.1. Byzantine Generals Problem</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="DistConsensus.html#limits-on-consensus">9.7.2. Limits on Consensus</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="DistConsensus.html#practical-byzantine-fault-tolerance">9.7.3. Practical Byzantine Fault Tolerance</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Extended9Blockchain.html">9.8. Extended Example: Blockchain Proof-of-Work</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="appendix-a">
|
||
<h1>Appendix A<a class="headerlink" href="index.html#appendix-a" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="CLangOverview.html">10.1. C Language Reintroduction</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Debugging.html">10.2. Documentation and Debugging</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Debugging.html#man-pages">10.2.1. Man Pages</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Debugging.html#debugging-with-gdb">10.2.2. Debugging with GDB</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="Debugging.html#breakpoints-and-watchpoints">10.2.2.1. Breakpoints and Watchpoints</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Debugging.html#backtrace">10.2.2.2. Backtrace</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="Debugging.html#tracing-multiple-processes">10.2.2.3. Tracing multiple processes</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="BasicTypes.html">10.3. Basic Types and Pointers</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="BasicTypes.html#c99-fixed-width-types">10.3.1. C99 Fixed-width Types</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="BasicTypes.html#pointer-basics">10.3.2. Pointer Basics</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Arrays.html">10.4. Arrays, Structs, Enums, and Type Definitions</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Arrays.html#two-dimensional-arrays">10.4.1. Two-dimensional Arrays</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Arrays.html#structs-and-packing">10.4.2. Structs and Packing</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Arrays.html#enums-and-type-definitions">10.4.3. Enums and Type Definitions</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Functions.html">10.5. Functions and Scope</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Functions.html#function-parameters-and-return-values">10.5.1. Function Parameters and Return Values</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Functions.html#call-by-reference-parameters">10.5.2. Call-by-Reference Parameters</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Functions.html#arrays-as-parameters">10.5.3. Arrays as Parameters</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Pointers.html">10.6. Pointers and Dynamic Allocation</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Strings.html">10.7. Strings</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Strings.html#investigating-string-contents">10.7.1. Investigating String Contents</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Strings.html#common-string-manipulations">10.7.2. Common String Manipulations</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Strings.html#converting-between-strings-and-integers">10.7.3. Converting Between Strings and Integers</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="FunctionPointers.html">10.8. Function Pointers</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="FunctionPointers.html#passing-function-pointers-as-arguments">10.8.1. Passing Function Pointers as Arguments</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="FunctionPointers.html#function-pointer-lookup-tables">10.8.2. Function Pointer Lookup Tables</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Files.html">10.9. Files</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="Files.html#file-permissions-and-ownership">10.9.1. File Permissions and Ownership</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Files.html#persistent-storage">10.9.2. Persistent Storage</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Files.html#directories-and-links">10.9.3. Directories and Links</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Files.html#advisory-locks">10.9.4. Advisory Locks</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="appendix-b">
|
||
<h1>Appendix B<a class="headerlink" href="index.html#appendix-b" title="Permalink to this headline">¶</a></h1>
|
||
<div class="toctree-wrapper compound">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="Glossary.html">11.1. Glossary</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="Bibliography.html">11.2. Bibliography</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="toctree-wrapper compound">
|
||
</div>
|
||
<ul class="simple">
|
||
<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<div class="container">
|
||
|
||
<div class="mt-4 container center">
|
||
<a class="uplink" href="index.html#">Contents</a>
|
||
  ::  
|
||
<a id="nextmod1" href="About.html">0.1. About OpenCSF</a>  »
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
<br />
|
||
|
||
<div class="row jmu-dark-purple-bg">
|
||
<div class="col-md-12">
|
||
<center>
|
||
<a id="contact_us" class="btn button-link-no-blue jmu-gold" rel="nofollow" href="mailto:webmaster@opencsf.org" role="button">Contact Us</a>
|
||
<a id="license" class="btn button-link-no-blue jmu-gold" rel="nofollow" href="https://w3.cs.jmu.edu/kirkpams/OpenCSF/lib/license.html" target="_blank">License</a>
|
||
</center>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script src="_static/js/popper.js-1.14.7-min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
||
<script src="_static/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
||
</body>
|
||
</html> |