Kernel
Schedules threads to run.
Handles hardware interrupts and dispatches them to appropriate drivers and threads.
Handles software and hardware generated exceptions (e.g., writing to a non-existing memory position, memory parity errors)
Graceful system shutdown and restoration after power failure.
Provides an API to the executive to kernel-managed objects (e.g., events, mutexes, semaphores, and timers).