In 1987 when I was just 11 years old, I used my first real PC, other than the Sinclair Spectrum and Commodore 64 (1984) of course… an Intel 80386 Personal Computer with a green screen CRT display. Bundled with it was a book called ‘80386 Programmer’s Reference Manual‘. Back then I was fascinated with computer programming and machine code, and although little of the book was understood at the time, much of it is still relevant today. The book was published in 1986, and one of the sections covered processor privilege levels.
Privilege levels determine what rights the procedure being executed has when issuing instructions, or accessing I/O ports and memory addresses. There are 4 privilege levels for x86 processor architecture, and these are called rings. The four rings (0 to 3) are designed to protect the hardware resources, keeping user applications at level 3 (the least privilege) and the operating system kernel at ring 0 (the most privileged).