Embedded systems have tightly coupled hardware and software that perform dedicated functions within a larger system. Real-time systems must meet timing deadlines, with hard real-time systems requiring near-zero flexibility and soft real-time systems tolerating some flexibility. The development process for embedded systems involves compiling and linking code on a host system into an executable image that is stored on the target system. The linker combines object files and maps sections like text and data to memory areas defined for the target system.