Processor Execution Modes.


I am a great follower of Intel architecture , so most of my explanations or articles are based on Intel architectures. Intel 80386 is the base for modern operating systems, one of the challenge for Intel was Real Address Mode. Today’s Intel architecture has 3 operating modes

  • Protected Mode
  • Real Address Mode
  • System Management Mode

 

 

Protected Mode : Most of the system programmers are aware of the benefits of protected mode, but for those who are new to this term, it’s a protection introduced for memory. Prior to protected mode, applications were able to access any region of memory and any malicious code could access any region of code. Protected mode introduced with interrupt. Programs can perform multitasking in this mode.

Real Address Mode: A simple explanation would be , programs executing in Real mode would have access to all the memory locations and any malicious code could corrupt memory and provide undesired results.

System Management Mode : This is the new feature introduced SL ,  IA32 architectures and above. SMM manages power management and some of the interesting facts are

  • Microprocessor output pin is used to trigger SMM mode
  • While servicing the interrupt / external interrupt , processor saves the current state and executes the code in SMM and then switch back to normal mode.
  • SMM uses RSM ( Return from SMM Mode ) instruction to restore microprocessor state.

 

Intel 64 Architecture adds new mode called IA-32e mode , the difference is that this has more general purpose registers which are extend to 64 bit and enabled at code segment .

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s