Contents
Chapter 1
1.1. Introduction to Concurrent Systems
1.2. Systems and Models
1.3. Themes and Guiding Principles
1.4. System Architectures
1.5. State Models in UML
1.6. Sequence Models in UML
1.7. Extended Example: State Model Implementation
Chapter 2
2.1. Processes and OS Basics
2.2. Processes and Multiprogramming
2.3. Kernel Mechanics
2.4. System Call Interface
2.5. Process Life Cycle
2.6. The UNIX File Abstraction
2.7. Events and Signals
2.8. Extended Example: Listing Files with Processes
Chapter 3
3.1. Concurrency with IPC
3.2. IPC Models
3.3. Pipes and FIFOs
3.4. Shared Memory With Memory-mapped Files
3.5. POSIX vs. System V IPC
3.6. Message Passing With Message Queues
3.7. Shared Memory
3.8. Semaphores
3.9. Extended Example: Bash-lite: A Simple Command-line Shell
Chapter 4
4.1. Networked Concurrency
4.2. The TCP/IP Internet Model
4.3. Network Applications and Protocols
4.4. The Socket Interface
4.5. TCP Socket Programming: HTTP
4.6. UDP Socket Programming: DNS
4.7. Application-Layer Broadcasting: DHCP
4.8. Extended Example: CGI Web Server
Chapter 5
5.1. The Internet and Connectivity
5.2. Application Layer: Overlay Networks
5.3. Transport Layer
5.4. Network Security Fundamentals
5.5. Network Layer: IP
5.6. Link Layer
5.7. Wireless Connectivity: Wi-Fi, Bluetooth, and Zigbee
5.8. Extended Example: DNS client
Chapter 6
6.1. Concurrency with Multithreading
6.2. Processes vs. Threads
6.3. Race Conditions and Critical Sections
6.4. POSIX Thread Library
6.5. Thread Arguments and Return Values
6.6. Implicit Threading and Language-based Threads
6.7. Extended Example: Keyboard Input Listener
6.8. Extended Example: Concurrent Prime Number Search
Chapter 7
7.1. Synchronization Primitives
7.2. Critical Sections and Peterson's Solution
7.3. Locks
7.4. Semaphores
7.5. Barriers
7.6. Condition Variables
7.7. Deadlock
7.8. Extended Example: Event Log File
Chapter 8
8.1. Synchronization Patterns and Problems
8.2. Basic Synchronization Design Patterns
8.3. Producer-Consumer Problem
8.4. Readers-Writers Problem
8.5. Dining Philosophers Problem and Deadlock
8.6. Cigarette Smokers Problem and the Limits of Semaphores and Locks
8.7. Extended Example: Parallel Modular Exponentiation
Chapter 9
9.1. Parallel and Distributed Systems
9.2. Parallelism vs. Concurrency
9.3. Parallel Design Patterns
9.4. Limits of Parallelism and Scaling
9.5. Timing in Distributed Environments
9.6. Reliable Data Storage and Location
9.7. Consensus in Distributed Systems
9.8. Extended Example: Blockchain Proof-of-Work
Appendix A
A.1. C Language Reintroduction
A.2. Documentation and Debugging
A.3. Basic Types and Pointers
A.4. Arrays, Structs, Enums, and Type Definitions
A.5. Functions and Scope
A.6. Pointers and Dynamic Allocation
A.7. Strings
A.8. Function Pointers
A.9. Files
Contents
Index
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Z
A
A2DP
access point
acknowledgement number
acquire
Address Resolution Protocol
Advanced Audio Distribution Profile
Advanced Encryption Standard
AEAD
AES
agreement (consensus protocol)
Amdahl's law
amplitude modulation
application layer
architectural style
ARP
ARP cache poisoning
AS
asynchronous
atomic
atomic transfer
Audio/Video Distribution Transport Protocol
Authenticated Encryption with Attached Data
authenticity
authoritative name server
autonomous system
availability
avalanche effect
AVDTP
B
backbone
banked cache
barrier
baseband
batch
behavioral model
best effort service
BGP
blocked state
blocking I/O
Bluetooth profile
Bluetooth SIG
Bluetooth Special Interest Group
boot loader
boot sequence
Border Gateway Protocol
bounded waiting
broadcast
buffer cache
buffer overflow
Byzantine failure
Byzantine fault
Byzantine Generals Problem
C
CA
canonical name
carrier signal
CDN
centralized P2P index
certificate authority
Chord
churn
CIDR
Cigarette Smokers Problem
ciphertext
circuit switching
circular wait
Classless Inter-Domain Routing
client/server architecture
cluster system
collision
complexity
concurrency
condition variable
confidentiality
congestion
connection-oriented protocol
connectionless protocol
consensus protocol
content delivery network
content provider
context switch
control plane
control program
cookie
cooperative multitasking
CPL
CRC
critical section
cryptographic hash function
cryptographic key
cryptographic signature
cryptography
current privilege level
cyclic redundancy check
D
data parallelism
data plane
datagram
deadlock
demultiplexing
denial-of-service
detached thread
DHCP
DHE
DHT
Diffie-Hellman exchange
Dijkstra's algorithm
Dining Philosophers Problem
distance vector routing
distributed hash table
distributed P2P index
distributed system
divide-and-conquer algorithm
DNS
Domain Name System
dual booting
Dynamic Host Configuration Protocol
dynamic IP address
dynamic model
dynamic programming
E
effect
embarrassingly parallel
emergent property
encryption
end-to-end communication
environment variable
ephemeral port
Ethernet
event
event-driven architecture
exception
F
fairness
fiber
fiber-optic wire
FIFO
file descriptor
firmware
flow control
Flynn's taxonomy
fork/join pattern
formal model
forwarding
fragmentation
frame
frequency modulation
function pointer
G
GAP
gateway router
Generic Access Profile
GFS
Go channel
Google File System
Goroutine
Green threads
Gustafson's law
H
Hands-Free Protocol
HDP
header
Health Device Protocol
HFP
HID
hold and wait
hop
host
Human Interface Device
I
ICANN
IEEE 802.11
IEEE 802.15.4
IEEE 802.3
IETF
implicit threading
information theoretic security
inode
integrity
(consensus protocol)
interface abstraction
interleaved
Internet
Internet Corporation for Assigned Names and Numbers
Internet Engineering Task Force
Internet layer
Internet model
Internet of Things
Internet Protocol
Internet Society
interprocess communication
interrupt
IoT
IP
IP masquerading
IPC
ISOC
J
Java Runnable interface
Java Thread class
job
join
K
kernel
kernel mode
key exchange protocol
key pair
key schedule
keyed cryptographic hash function
L
L2CAP
Lamport timestamp
LAN
latency
layered architecture
level of abstraction
light-weight process
lightswitch
link layer
Link Manager/Link Controller
link-state routing
livelock
liveness
LM/LC
local area network
local P2P index
lock
logical clock
Logical Link Control and Adaptation Protocol
loop parallelism
loopback address
LWP
M
MAC
MAC address
MAC-then-Encrypt
manager/worker
MANET
map/reduce pattern
maximum transmit unit
MCAP
media access control address
memory-mapped file
Merkle-Damgård construction
message authentication code
message passing
message queue
metadata
MIMD
MIMO
MISD
mobile ad hoc network
mode switch
model
monitor
(synchronization)
MtE
MTU
Multichannel Adaptation Protocol
multicore
multiple input and multiple output
multiplexing (networking)
(semaphore)
multiprocessing
multiprogramming
multitasking
multithreading
mutex
mutual exclusion
(deadlock condition)
N
name server
named pipe
named semaphore
NAT
National Institute of Standards and Technologies
netlink socket
network address translation
network core
network edge
Network Time Protocol
NIST
no preemption
non-uniform memory access
nondeterminism
NTP
NUMA
O
OBEX
Object Exchange
octet
one-time pad
Open Shortest Path First
OpenMP
operating system
OS
OSPF
overlay network
P
P2P architecture
packet
packet loss
packet sniffer
packet switching
parallelism
Paxos
payload
PBFT
peer-to-peer architecture
peering agreement
persistent connection
Peterson's solution
phase shift keying
physical layer
physical memory
PID
pipe
pipe-and-filter architecture
pipelining
plaintext
port
port number
Portable Operating System Interface
POSIX
POSIX thread library
Practical Byzantine Fault Tolerance
pragmatics
pre-shared key
preemptive multitasking
privileged instruction
process
process identifier
processing delay
Producer-Consumer Problem
progress
propagation delay
protocol
pseudo-header
PSK
pthreads
public key cryptography
pull model
push model
Q
quantum
query flooding
queueing delay
R
race condition
raw socket
reactive
Readers-Writers Problem
receive window
recursive splitting
redundancy
reentrant
release
reliable transport
rendezvous
replication
,
[1]
Request for Comment
request-response protocol
resident monitor
resource manager
retransmission timeout
RFC
RFCOMM
ring
RIP
root name server
round-trip time
router
routing
Routing Information Protocol
RSA cryptosystem
RTO
RTT
Rust closure
S
safety
scale
scarcity of resources
scheduling
Search-Insert-Delete Problem
security vs. usability
segment
semantic security
semantics
semaphore
semiotics
sequence model
sequence number
session
session key
SHA-2
SHA-3
shared memory
signal
signaling (synchronization)
SIMD
SISD
smoothed round-trip time
SMP
socket
space/time tradeoff
speedup factor
speedup in latency
spinlock
sponge construction
SRTT
star topology
starvation
state
state machine
state model
state space explosion
stateless protocol
static IP address
static model
strong scaling
structural model
structured P2P network
subdomain
subnet
subnet mask
suspended state
switch
symmetric key cryptography
symmetric multiprocessing
SYN flood
synchronization
synchronization primitive
synchronization problem
synchronous
syntax
system
system architecture
system call
System V
systems theory
T
task parallelism
task queue
TCP
TCP handshake
termination (consensus protocol)
Therac-25
thread
thread pool
thread-safe
throughput
Tier 1 Internet service provider
TLD
TLS
TLS handshake
top-level domain
transition
Transmission Control Protocol
transmission delay
transport layer
Transport-Layer Security
trap instruction
turnstile
twisted-pair wire
U
UDP
ULA
UML
unified cache
Unified Modeling Language
uniform resource identifier
uniprogramming
unique local address
UNIX domain socket
UNIX file abstraction
unnamed semaphore
unreliable transport
unstructured P2P network
URI
User Datagram Protocol
user mode
utilization
V
vector clock
virtual memory
visual model
W
weak scaling
well-known port
Wi-Fi
Wi-Fi Alliance
wireless mesh network
X
X.509 certificate
Z
Zigbee
Zigbee Alliance
Contents
Contact Us
License