Processes are also isolated from each other, and access to data of other processes is restricted. Code bases also
are tightly controlled, and a stringent code signing mechanism ensures applications have the proper digital signature
before execution is allowed. This is not only a protection against piracy, it also ensures that a code base has not been
tampered with or otherwise corrupted. The memory space is secured via a randomization technique known as ASLR
or Address Space Layout Randomization. This is combined with DEP, or Data Execution Prevention; a scheme to
prevent writable memory pages from becoming executable. iOS security even covers the hardware layer, and applications
are not permitted direct access to hardware. Instead, access is facilitated via APIs strictly controlled by the operating
system. Finally, as was mentioned previously, applications are isolated from each other and the operating system
via a separation scheme known as application sandboxing which prevents an application from interacting directly with
the kernel or other applications.