Linux runs on a variety of hardware platforms. What steps must the Linux developers take to ensure that the system is portable to different processors andmemory-management architectures, and to minimize the amount of architecture-specific kernel code?