OS Week 1

Cards (18)

  • A kernel is just another program, usually written in C, that accepts user input, processes data, and generates output.
  • Kernel input/output comes from programs making API calls, devices, and interrupts.
  • Kernel definition: A program that interfaces with the computer’s hardware and software, abstracting the low-level details of the hardware while managing the sometimes conflicting resource demands of the software.
  • Developers expect services such as access control, process management, memory management, file management, network services, and device management from a kernel.
  • Kernel types include monolithic, modular, and microkernel.
  • Monolithic kernels have all services run in kernel mode in a shared address space, with code pre-linked.
  • Pros of monolithic kernels include easier implementation, fewer mode switches, but they also have security, stability, and size cons.
  • Modular kernels are similar to monolithic kernels, with code (drivers) loaded and unloaded after the kernel is running.
  • Microkernel kernels have the bare minimum in kernel (IPC, device access, basic process & memory management), with all else in user space.
  • In-memory size of microkernels is kept small by only loading needed code, and they offer some symbol-level isolation.
  • Pros of microkernels include smaller kernel, stability, flexibility, maintainability, but they also have IPC overhead and dependency on correct user-level process.
  • Modular design is chosen for Windows, Linux, and MacOS X.
  • Enforcement in kernels is done through the CPU, which is a fundamental protection mechanism.
  • Kernel mode is a mode in which the kernel operates.
  • User mode is a mode in which the user operates.
  • Switching between kernel and user modes has overhead and is a mode switch.
  • Both root and kernel have a sense of power.
  • Kernel can drop to user, but user switching back to kernel is hard.