<P> Kernels also usually provide methods for synchronization and communication between processes called inter-process communication (IPC). </P> <P> A kernel may implement these features itself, or rely on some of the processes it runs to provide the facilities to other processes, although in this case it must provide some means of IPC to allow processes to access the facilities provided by each other . </P> <P> Finally, a kernel must provide running programs with a method to make requests to access these facilities . </P> <P> The kernel has full access to the system's memory and must allow processes to safely access this memory as they require it . Often the first step in doing this is virtual addressing, usually achieved by paging and / or segmentation . Virtual addressing allows the kernel to make a given physical address appear to be another address, the virtual address . Virtual address spaces may be different for different processes; the memory that one process accesses at a particular (virtual) address may be different memory from what another process accesses at the same address . This allows every program to behave as if it is the only one (apart from the kernel) running and thus prevents applications from crashing each other . </P>

Which is the central core of the unix operating system