
The levels behave like this: PL0 - This is unprivileged and is used for executing user code under an OS or hypervisor PL1 - This is privileged and is used for running an OS like Linux PL2 - This has a higher level of privilege and can be used to run a hypervisor which takes control of the system and can host multiple "guest" operating systems P元 - This is the highest level off privilege and is used to control and protect access to the Secure world supported by TrustZone So, you can see that each level has a distinct purpose and also that it is important that there is a hierarchy of privilege. Likewise, hypervisor would not be able to control the action of guest operating systems if PL2 did not have a higher level than PL1. For instance, system security would be compromised if P元 was not the highest level of privilege.


So, you can see that each level has a distinct purpose and also that it is important that there is a hierarchy of privilege. P元 - This is the highest level off privilege and is used to control and protect access to the Secure world supported by TrustZone. PL2 - This has a higher level of privilege and can be used to run a hypervisor which takes control of the system and can host multiple "guest" operating systems. In ARMv8, the four privilege levels extend this to provide support for virtualization and security.

The operating system runs at a privileged level which allows it access to protected features and the user software runs without this privilege so that it can be prevented from carrying out certain actions and accessing certain features.

How this is managed and what is the exact use case of the same? Most architectures, from any vendor, support some kind of "privilege" which is used by operating systems to protect the system from rogue our erroneous user software.
