OS

Table of Contents

Topics

CPU, OS and Applications

Early single tasking OSes

In very early DOS and other early single tasking based systems all code was run in the inner ring(kernel), (…) This code was in fact largely OS agnostic, as long as you had a loader capable of loading the program into memory (pretty simple for early binary formats) and the code did not rely on any drivers

Modern multi tasking OSes

Each OS decided on a different implementation for these protections (…) These OS specific interactions are usually called "system calls" and encompass how a user space program interacts with the hardware through the OS completely

The Program Loader

In addition to system calls, each OS provides a different method to load a program from the secondary storage medium and into memory, in order to be loadable by a specific OS the program must contain a special header which describes to the OS how it may be loaded and run.

Compatibility across OS and CPU types

What do i386 and amd64 stand for?

The Intel 80386, also known as the i386, or just 386, was a 32-bit microprocessor introduced by Intel in 1985… This is termed x86, IA-32, or the i386-architecture, depending on context.

x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets.. After launching the architecture under the "x86-64" name, AMD renamed it AMD64x86-64 is still used by many in the industry as a vendor-neutral term, while others, notably Sun Microsystems (now Oracle Corporation) and Microsoft, use x64.

Even if you have an intel CPU, you should use AMD64 to install 64-bit on your computer (it uses the same instruction sets).