

PacketNetwork
A message as it travels across a network of many machines. It carries its destination but not its route: each machine it reaches looks that destination up in its own routing table and hands the packet to one neighbour. The book's packet from A to F goes by way of B and D.
Chapter 11, Figure 11.3 Try it See also Packet forwarding; Network address; Routing table; Segment; Message; Source and destination


Packet forwardingNetwork
Delivery one hop at a time: the machine a packet sits on looks the packet's destination up in its own routing table and hands the packet to that neighbour, and the next machine does the same. The packet is never handed a full route; each step of the book's table moves it one hop closer, so the steps cannot loop.
Chapter 11, Figure 11.3 Try it See also Next hop; Routing table; Packet; Routing; Router; Source and destination


Packet lossNetwork
The disappearance of a packet or segment on its way, as when a hop drops a packet because a buffer fills. Numbering cannot repair it, because a lost segment never arrives to be sorted; the sender must resend what is missing. The book's figure marks seg 1 lost.
Chapter 12, Figure 12.3 Try it See also Retransmission; Lossy channel; Best-effort delivery


Page and frameSoftware
The units of translation: a program's virtual pages, and the physical frames its page table maps them to. The book's page size is sixteen cells, and a physical address is the frame number times the page size plus the offset, which passes through unchanged, so page 0 in frame 5 puts offset 3 at physical address 83.
Chapter 9.c, Figure 9.c.2 Try it See also Page table; Virtual address; Page size; Page number and offset; Physical address; Page mapping
Software
Page faultSoftware
The event raised when an access touches a page the table does not map. In the book's model it is simply an exception, since no physical address exists; a real one can also ask the kernel to finish valid work, such as allocating a page lazily, and the handler then either supplies a mapping and resumes or rejects the access.
Chapter 9.c See also Page table; Kernel; Exception; Handler; Access permissions; Lazy allocation


Page mappingSoftware
One entry of a page table: a virtual page paired with the physical frame it may use. Program A's table holds two, page 0 to frame 5 and page 1 to frame 2. A page with no mapping raises a page fault, and a real handler may supply the missing mapping and resume the program.
Chapter 9.c, Figure 9.c.2 Try it See also Page table; Page and frame; Access permissions; Page fault; Exception; Lazy allocation


Page number and offsetSoftware
The two parts a virtual address splits into: which page it falls in, and how far into that page. The page table turns the page number into a frame number, while the offset rides through untouched. In the book's figure, page 0, offset 3 becomes frame 5, offset 3.
Chapter 9.c, Figure 9.c.2 Try it See also Virtual address; Page table; Page and frame; Address translation; Page size


Page sizeSoftware
The number of cells in one page, and so in one frame. Dividing a virtual address by it gives the page number, with the offset as remainder; a frame number times the page size, plus the offset, gives the physical address. The book's is 16 cells, so frame 8, offset 3 is physical address 131.
Chapter 9.c, Figure 9.c.2 Try it See also Page and frame; Page number and offset; Address translation


Page tableSoftware
The per-program table that maps virtual page numbers to the physical frames the program may access, while the offset rides through untouched. The book's program A maps page 0 to frame 5 and page 1 to frame 2; its Python functions trust whatever table the caller passes, so they show mappings, not an enforced security boundary.
Chapter 9.c, Figure 9.c.2 Try it See also Virtual address; Page and frame; Page fault; Address translation; Page number and offset; Memory isolation


ParserSoftware
The stage that assembles a lexer's tokens into a tree that makes the program's grouping explicit. Given (a + b) + c, it puts the outer addition at the root, with a + b as its left child and c as its right; addition groups left to right, so a + b + c parses the same way.
Chapter 7, Figure 7.2 See also Abstract syntax tree; Recursive descent; Lexer; Token; Precedence; Syntax error


Passive observerNetwork
Someone who can watch every message on the wire but cannot replace any of them. The chapter assumes one first: the observer knows g and p and sees both public values, yet the secret itself never crosses the wire. The book's tiny arithmetic and cipher provide no real security even against a passive observer.
Chapter 13.a, Figure 13.a.2 See also Intermediary; Public value; Diffie-Hellman key exchange; In the clear; Secrecy


PayloadNetwork
The data a frame or packet exists to carry, as distinct from the bytes wrapped around it for the trip. In the book's frame for hi, the payload is the two bytes 68 69; the flags at each end and the two-byte CRC, 62 03, are added by the sender and removed by the receiver.
Chapter 10, Figure 10.3 Try it See also Link-layer frame; CRC; Flag byte; Message; Addressed frame
Network
Peer authenticationNetwork
Establishing who is at the other end, which agreement alone does not do. An intermediary that replaces both public values agrees separately with each side, so it can read a message and encrypt it again for the other side without recovering either private exponent. In a typical web TLS connection, the client validates a certificate for the expected server name.
Chapter 13.a See also Diffie-Hellman key exchange; TLS; Certificate; Intermediary; Handshake signature; Pre-shared key
Software
Persistent storageSoftware
Storage that keeps its contents without power, so data outlives any running program. Memory forgets everything when the power goes; a disk does not. The book's Disk is not persistent itself: it lives in Python memory and nothing is saved across process restarts, so it shows how file blocks are found, not the device.
Chapter 9.d See also Disk; File; RAM


Physical addressSoftware
An address in the machine's real memory, the result of translating a virtual address. It is the frame number times the page size, plus the offset: frame 5 with sixteen-cell pages and offset 3 gives 83. Two programs can use the same virtual address 3 and land in different physical cells, one in frame 5 and the other in frame 8.
Chapter 9.c, Figure 9.c.2 Try it See also Virtual address; Page and frame; Memory isolation; Address translation; Physical memory


Physical layerNetwork
The bottom layer of a network, where a bit is nothing but a voltage. The sender holds the wire high or low for one tick of a shared clock per bit and the receiver reads its level once per tick; eight ticks carry the byte 0x68. It is unreliable: a clock can drift and noise can flip a bit.
Chapter 10, Figure 10.2 See also Data link layer; Clock; Layer; Clock drift; Clock tick


Physical memorySoftware
The machine's one real memory, shared by every program and divided into frames. Virtual memory lets each program believe that memory is its own. In the book's figure, frame 5 holds A's 42 and frame 8 holds B's 99, at physical addresses 83 and 131.
Chapter 9.c, Figure 9.c.3 Try it See also Physical address; Page and frame; Virtual memory; RAM


PipelineCPU
Overlapping the stages of successive instructions, so the next instruction is fetched while the one before it is still being decoded or executed.
Chapter 5.b, Figure 5.b.2 Try it See also Data hazard; Fetch-decode-execute cycle; Pipeline bubble; Pipeline schedule; Pipeline stage; Branch misprediction


Pipeline bubbleCPU
The empty slot a stall leaves in a pipeline: a cycle in which a stage has no instruction to work on. In the book's hazard figure r2 is held back at cycle 2, drawn as a dashed box, and everything behind the bubble slips a cycle.
Chapter 5.b, Figure 5.b.3 Try it See also Stall; Data hazard; Pipeline


Pipeline depthCPU
The number of stages an instruction passes through in a pipeline; the book's has three. A deeper pipeline fetches further ahead before a branch executes, so a wrong guess costs more: the book's figure flushes two instructions, and a deeper pipeline would flush more.
Chapter 5.b, Figure 5.b.4 See also Pipeline stage; Flush; Branch misprediction


Pipeline scheduleCPU
The plan that gives every stage of every instruction a cycle number. The book builds one by placing each instruction one cycle after the last, unless it must wait for a register an earlier instruction is still computing; the run then takes as many cycles as the last instruction's execute, plus one.
Chapter 5.b, Figure 5.b.2 Try it See also Pipeline; Stall; Hazard rule; Clock cycle; Timing model


Pipeline stageCPU
One step of an instruction's passage through a pipeline; the book's has three, fetch, decode and execute. Each instruction runs its stages a cycle behind the one before, so once the pipeline fills, three are in flight at once and one finishes every cycle: four instructions take six cycles, not twelve.
Chapter 5.b, Figure 5.b.2 Try it See also Pipeline; Fetch-decode-execute cycle; Stall; In flight; Clock cycle; Pipeline depth
Software
Placement policySoftware
The rule an allocator follows to choose which free run serves a request. The book's Heap takes the first run large enough, the policy called first fit. It is the simplest choice, not the only one: real allocators use others, such as best fit, buddy systems and size classes.
Chapter 9.b Try it See also First fit; Best fit; Memory allocator; Heap fragmentation; Buddy system; Size class
Arithmetic
Power of twoArithmetic
A number reached by doubling from 1: 1, 2, 4, 8 and so on. Powers of two are the weights of binary places, and they count what a group of bits can tell apart: the two opcode bits of the book's ALU select one of four operations.
Chapter 3 See also Weight (of a place); Binary numeral; ALU opcode
Network
Pre-shared keyNetwork
A secret that both ends already hold before the handshake begins. The chapter names it as another way, besides a certificate and a handshake signature, to authenticate a peer and the handshake. The book's toy uses none of them: its exchange has no authentication at all.
Chapter 13.a See also Peer authentication; Certificate; Key; TLS
Software
PrecedenceSoftware
The rule that decides which operator takes its operands first when no parentheses say. The book's first language has only addition, so the question does not arise in it; an exercise adds multiplication, binding tighter than addition, and asks where in the parser that precedence lives.
Chapter 7 See also Grouping; Operator; Parser; Associativity
Software
PreemptionSoftware
Stopping a process that has not halted in mid-run, the moment its quantum is spent. The book's scheduler gets this free because the CPU is simulated one step at a time and it counts steps from outside; a real operating system needs a timer interrupt to regain control from a running core.
Chapter 9 See also Scheduling quantum; Scheduler; Timer interrupt; Runaway process


Private exponentNetwork
The number each side of a key exchange keeps to itself and never sends. In the book Alice's is 6 and Bob's is 15. Each raises the other's public value to its own private exponent, modulo the prime, and both arrive at 1893334806. A real exchange needs large enough exponents and groups, and the book's small constants do not meet that requirement.
Chapter 13.a, Figure 13.a.2 Try it See also Public value; Shared secret; Modular arithmetic; Alice and Bob; Modular exponentiation; Secrecy


PrivilegeSoftware
The right to touch the machine's resources directly. Only the kernel has it: its routines run in the privileged mode, while a program has no privileged state of its own and learns even its own id by asking. The operating system is a program like any other, but a privileged one.
Chapter 9.a, Figure 9.a.2 See also Kernel; User mode and kernel mode; Mode bit; Protection


ProcessSoftware
A running program together with its state, called its context. On the book's CPU the context is exactly four things: the program counter, the accumulator, the memory, and whether the program has halted. Saving those stops a process cold; restoring them resumes it as if nothing happened.
Chapter 9, Figure 9.2 See also Context switch; Operating system; Process context; Process id; Process creation; Running and waiting


Process contextSoftware
Everything the operating system must remember to pause a program and later resume it exactly where it left off. Each of the book's processes keeps its own: the saved program counter, the accumulator, a reference to its memory list and the halted flag. Only one context is loaded into the processor at a time.
Chapter 9, Figure 9.2 See also Process; Context switch; Save and restore; Running and waiting
Software
Process creationSoftware
Asking the operating system for a new process in which a program can run. A real shell does this, and has an executable program loaded, for the commands it is given. The book's shell stops earlier, at dispatching functions that are already resident; the scheduler and memory translator remain separate models.
Chapter 9.e See also Process; Loader; Shell; Operating system


Process idSoftware
The number by which a kernel tells one process from another. A program has no privileged state of its own, so it learns even its own id by asking: the book's GETPID call, number 2 on the menu, returns 7, which the program then hands back to the kernel to write out.
Chapter 9.a, Figure 9.a.3 Try it See also Process; System call; Menu of services
CPU
ProgramCPU
A sequence of instructions, with the data they work on, that a machine carries out in order. The book's first one is five instructions followed by three data cells: it sums the values at addresses 13, 14 and 15, writes the result to address 12, and halts.
Chapter 5 Try it See also Stored program; Instruction; Machine code; Memory image; Software; Executable file
CPU
Program counterCPU
The register that holds the address of the next instruction. Each cycle the CPU fetches the word it points to and advances it by one through the ripple adder; a JUMP or JZ that fires overwrites it with the branch target.
Chapter 5 Try it See also Fetch-decode-execute cycle; Branch; Branch target; JUMP; Accumulator; Fall-through
Software
Programming languageSoftware
A notation for programs, with two halves: syntax, the rules for which texts are programs, and semantics, what a program does once it is understood. The chapter asks what separates one from a calculator and answers with three things: a way to keep state, a way to do one thing after another, and a way to repeat.
Chapter 8 See also Syntax; Semantics; Imperative language; Expression language
Memory
Propagation delayMemory
The time a gate's output takes to settle to the result for new inputs. A combinational answer, such as a RAM read, is valid only once its gate delays settle; and when the inputs change, a gate has no separate way to retain the old result, which is why memory needs feedback.
Chapter 4 See also Combinational logic; Critical path; Latency; Settling; Level (of gates)


ProtectionSoftware
The half of an operating system's job that stops one buggy or hostile program from wrecking every other: a program cannot reach the disk, the network or another program's memory on its own. Real systems enforce it with hardware privilege and kernel checks; the book's Python trace demonstrates dispatch, not protection against a caller that bypasses it.
Chapter 9.a, Figure 9.a.2 See also Kernel; User mode and kernel mode; Privilege; Memory isolation; Resource; Access permissions
Network
ProtocolNetwork
An agreement between two machines on where their messages end and what the bytes mean. Without one, two machines holding an open stream are like two people on a phone line who have not agreed on a language: the line works and still they cannot talk. The book's protocol has the text shape of HTTP/1.x.
Chapter 13 See also HTTP; Request and response; RFC
CPU
PrototypingCPU
Trying a design out in a form that is cheap to change before committing to the final one. Chip designers prototype on FPGAs: the book's processor could be loaded into a fabric, tested against real inputs for months, and recast in silicon only once it stops changing.
Chapter 5.d See also FPGA; Fixed silicon; Bitstream


Public valueNetwork
The number each side of a key exchange sends in the open: the base g raised to its private exponent, modulo the prime p. With g = 5 and p = 2147483647, Alice's exponent 6 gives 15625 and Bob's 15 gives 452807067. Both cross the wire in plain view; the secret they lead to never does.
Chapter 13.a, Figure 13.a.2 Try it See also Private exponent; Diffie-Hellman key exchange; Shared secret; Base and modulus; Modular exponentiation; Passive observer


Pull-up and pull-down networksSwitch
The two halves of a CMOS gate: the pull-up, p-channel switches that drive the output HIGH, and the pull-down, n-channel switches that drive it LOW. In NAND the pull-down is two switches in series and the pull-up two side by side.
Chapter 1, Figure 1.4 Try it See also CMOS; Drive; Switches in series; n-channel and p-channel; Rail
Arithmetic
Pure functionArithmetic
A rule whose result depends only on the inputs it is given now, never on anything earlier. A combinational circuit's output is a pure function of its present inputs: feed it the same inputs twice and it gives the same output twice, which makes it easy to trace.
Chapter 3 See also Combinational logic; State; Truth table
Software
PythonSoftware
The programming language in which the book writes its models, including both of its interpreters. The chapter notes that Python itself is no tree walker: it compiles source to bytecode and runs that on a virtual machine. Its integers do not wrap at eight bits, so the book's first interpreter wraps each sum at 256 itself.
Chapter 7 See also Interpreter; Bytecode; Virtual machine; Dictionary