Dual mode refers to the separation between user mode (restricted execution) and kernel mode (privileged execution).
It prevents user programs from directly accessing hardware or critical OS data. Ensures stability and security by allowing the kernel to provide a protected environment.
Out goal in designing this system is to ensure that there are carefully controlled transitions between user mode and kernel mode. This will be done when we have system calls, interrupts, exceptions, etc.
So threads run inside processes, sharing the same address space. Processes are isolated by their address spaces, enforced by dual mode protection.
- Threads → concurrency
- Address space → isolation
- Process → execution abstraction
- Dual mode → protection
Naive Implementation
Early systems ran everything in a single mode, so buggy or malicious programs could crash the entire system.
Then we have the basic idea of using a bit-set to differentiate between a process running in user and kernel modes. This allows processes to be differentiated and be given the appropriate rights.
For Unix, here is how the basic dual mode looks like. The user mode is on top, the kernel mode in the middle and the hardware at the bottom.

Improvements
The idea of designing an effective dual mode system is to have a small system call interface. System calls switch from user mode to kernel mode safely and they should be the only way to go between the two modes.
The system call interface changes based on your OS because this needs to be extremely carefully controlled and each operating system has it own system.
However, there has been some standardization with POSIX (Portable Operating System Interface). POSIX is a specification and describes how functions should behave. There are various implementations of POSIX in the form of OS Libraries that can be used to issue system calls.
An example is C POSIX Library which is provided for C programming which wraps system calls.
Protection rings and privilege levels extend this idea. Modern OSs enforce access control, sandboxing, and capability-based security.
Beyond Dual Mode
Connects to system calls, exception handling, security models, and virtualization.