MPU (memory protection unit)
A stripped-down MMU for microcontrollers: it translates no addresses, but it can refuse to let code read, write or execute in designated regions of memory.
Without an MPU any pointer in firmware can write anywhere — into another task's stack, into the RTOS's own bookkeeping, or into a register that drives a motor. The MPU carves the address space into a handful of regions, eight or sixteen on Cortex-M, each with its own permissions. A violation raises a MemManage fault instead of silent corruption that surfaces three hours later.
The commonest uses are modest: a guard region below each stack to catch overflows, and marking RAM as non-executable so a buffer overrun cannot turn into code. FreeRTOS-MPU and Zephyr go further and run tasks unprivileged. ARMv7-M insists that regions be a power of two in size and aligned to it, which turns the layout into a puzzle.