خلاصش اینه که
Real Mode نوعی از حالت CPU است که برنامه ای که در اون اجرا میشه مستقیم به حافظه ی اصلی و BIOS دسترسی داره و بازه ی آدرس کمتری رو پشتیبانی میکنه .
Protected Mode نوعی از حالت CPU است که باعث میشه برنامه ای که در اون اجرا میشه توسط Virtual Memory و قسمت MMU به حافظه ی اصلی دسترسی داشته باشه . که باعث میشه یه برنامه از حدی که براش مشخص شده تجاوز نکنه و مدیریت بشه .
مثلا شما برنامه هایی رو که مینویسید همشون در Protected Mode هستند . یعنی اینکه همشون دارای Virtual Address Space هستند .
هر اشاره گری که شما توی برنامه باهاش کار میکنید به حافظه ی مجازی اشاره میکنه نه حافظه ی اصلی RAM . و برنامه توسط OS مدیریت و زمان بندی میشه .
اگر اشاره گری داشته باشید که مثلا به این آدرس 0x12345678 اشاره کنه . درواقعا داره به یک آدرس مجازی اشاره میکنه . حالا برفرض اگر میخواهید چیزی که در این آدرس وجود داره رو بخونید این آدرس به Page Table هایی که OS اونها رو درست کرده اشاره میکنه ( در واقع سیستم عامل RAM رو به بخش هایی به نام Page تبدیل میکنه و جدولی از این Page ها رو نگهداری میکنه) و MMU اون رو میگیره و طبق Virtual Address Space برنامه شما اون را به آدرس اصلی تبدیل میکنه . اگر تو جدول Virtual Address Space همچین آدرسی به هیچ Page Tableی اشاره نکنه برنامه شما Crash میکنه . یا اگه اون حافظه به جایی اشاره کنه که توی محدوده ی برنامه شما نیست یا خطای Acess Violation روبرو میشید .
Kernel ها و Driver ها در Real Mode اجرا میشن بدلیل اینکه لازمه مستفیم به BIOS و حافظه ی اصلی دسترسی داشته باشن .
Application ها .و برنامه های دیگه هم در Protected Mode اجرا میشن بدلیل اینکه باید مدیریت بشن.