title: Does CPU architecture influence and define OS design?
body: <p>I am currently reading a manual dedicated to OS development. The first part of the book describes how to write a boot sector, which is followed by a more dense text devoted to kernel development. Also, I have not been questioning myself a lot about the code structure until I have encountered following instruction sequence:</p>
  
  <pre><code>lgdt; load global descriptor table
  mov eax, cr0; switch adressing mode and paging control via cr0
  or eax, 0x1
  mov cr0, eax
  </code></pre>
  
  <p>Actually, I have always been persuaded that all this stuff related to memory paging, the concept of kernel, protection rings was just a fancy idea born somewhere deep in some OS designer's mind. However, the existence of these instructions shows that GDT and everything that goes together is dictated by the CPU design. So, basically, according to my understanding, there is no conceptual difference between *nix and Windows (I mean mainstream OS). If my premise is correct, I would like to ask several questions.</p>
  
  <p>1) If OS is written accordingly to CPU architecture, ie following the same design rules established since the dawn of ages, why OS developer job openings are often tagged as "R&amp;D engineering"? Besides using 64-bit registers, what kind of novelty can be introduced into OS development?</p>
  
  <p>2) Is there any way to build an OS which doesn't have any of aforementioned features and still can use all the capacities of CPU, ie not to be restricted to 16-bit instruction set? What about Kolibri OS or Menuet OS? Besides being written on ASM, do these OS conceptually differ from MS Windowes or *nix? Do they also need to establish GDT, enter protected mode, etc?</p>
  
  <p>3) Who influences who? Gates calls to Intel designers and says he needs a GDT feature in CPU? Or electrical engineers from Intel call Gates and point him that he has no choice but have to live all his life with GDT and paging? In general how do CPU designers interact with software community? </p>