CSC373/406: 13 [13/13] |
Figure 13.1: Step 1: Server accepts connection request from client.
Figure 13.2: Step 2: Server forks a child process to service the client.
Figure 13.3: Step 3: Server accepts another connection request.
Figure 13.4: Step 4: Server forks another child to service the new client.
Figure 13.7: State machine for a logical flow in a concurrent event-driven echo server.
Figure 13.12: Concurrent thread execution.
Figure 13.17: IA32 assembly code for the counter loop in badcnt.c.
Figure 13.19: Progress graph for the first loop iteration of badcnt.c.
Figure 13.20: An example trajectory.
Figure 13.21: Critical sections and unsafe regions.
Figure 13.22: Safe and unsafe trajectories.
Figure 13.23: Safe sharing with semaphores.
Figure 13.24: Producer-consumer model.
Figure 13.29: Organization of a prethreaded concurrent server.
Figure 13.34: Relationships between the sets of reentrant, thread-safe, and nonthread-safe functions.
Figure 13.39: Progress graph for a program that can deadlock.
Figure 13.40: Progress graph for a deadlock-free program.