Commenting your code: All programs should begin with your name and a brief description of what they do. All methods should begin with a brief description of what it does. All structures should begin with a brief description of the sort of information it holds. X := 5; (* Sets X to 5 *) int NumberOfApples = 10; int a = 10; PROCESSES: When an OS is keeping track of a number of different running processes, what information does it have to track of in an individual process (whether it's running or paused or whatever): process number (or PID), program counter (where in the program you are), process state (new, running, ready, waiting, terminated, etc.), registers (what's in the registers), memory limits (where in the "machine memory" is your process's stack, heap, etc.), list of the open files by your process. ^^^^^ This is called the "process control block" (the data structure storing your process's information). (Why might a process be waiting or blocked? Waiting for user input or some other data to be received, waiting for a child process to terminate, manually blocked registers are part of the hardware (usually) that store small amounts of memory outside of the normal memory. They are often used to store arguments for system calls. If you're programming in assembler, people use loop counters or other things like that in the registers because they can be accessed more quickly than regular memory. In the C language, you can declare "register int x;" which means store x in a register, if it's possible. Swapping: What is swapping? If a process has a lower "priority", depending on your OS, it might be swapped out to the disk. Your processes stuff is written to special files on the disk, and the memory is clear for other processes. IPC: