Processes are programs in execution that include a program counter, stack, and data section. Each process is represented in the operating system by a process control block that contains the process state, CPU registers, scheduling information, memory management information, and I/O status. When switching between processes, the CPU saves the state of the old process and loads the saved state of the new process via a context switch. Process scheduling aims to maximize CPU usage by quickly switching processes onto the CPU for time sharing using scheduling queues.