Information Technology Reference
In-Depth Information
Portability also applies to the operating system itself. Operating systems are
among the most complex software systems ever invented, so it is impractical to
re-write them from scratch every time some new hardware is produced or every
time a new application is developed. Instead, new operating systems are often
derived, at least in part, from old ones. As one example, iOS, the operating
system for the iPhone and iPad, is derived from the OS X code base.
As a result, most successful operating systems have a lifetime measured in
decades: the initial implementation of Microsoft Windows 8 began with the
development of Windows NT starting in 1990, when the typical computer was
more than 10000 times less powerful and had 10000 times less memory and
disk storage, than is the case today. Operating systems that last decades are
no anomaly: Microsoft's prior operating system code base, MS/DOS, was rst
introduced in 1981. It later evolved into the early versions of Microsoft Windows
before finally being phased out around 2000.
This means that operating systems need to be designed to support appli-
cations that have not been written yet and to run on hardware that has yet
to be developed. Likewise, we do not want to have to re-write applications as
the operating system is ported from machine to machine. Sometimes of course,
the importance of \future-proong" the operating system is discovered only in
retrospect. Microsoft's rst operating system, MS/DOS, was designed in 1981
assuming that personal computers had no more than 640KB of memory. This
limitation was acceptable at the time, but today, even a cellphone has orders of
magnitude more memory than that.
How might we design an operating system to achieve portability? We will
discuss this in more depth, but an overview is provided above in Figure 1.3.
For portability, it helps to have a simple, standard way for applications to
interact with the operating system, through the abstract machine interface. The
abstract machine interface (AMI) is the interface provided by operating systems
Definition: abstract
machine interface (AMI)
to applications. A key part of the AMI is the application programming interface
(API), the list of function calls the operating system provides to applications.
Definition: application
programming interface
(API)
The AMI also includes the memory access model and which instructions can be
legally executed. For example, an instruction to change whether the hardware is
executing trusted operating system code, or untrusted application code, needs
to be available to the operating system but not to applications.
A well-designed operating system AMI provides a fixed point across which
both application code and hardware can evolve independently. This is sim-
ilar to the role of the Internet Protocol (IP) standard in networking | dis-
tributed applications such as email and the web, written using IP, are insulated
from changes in the underlying network technology (Ethernet, WiFi, optical).
Equally important is that changes in applications, from email to instant mes-
saging to file sharing, do not require simultaneous changes in the underlying
hardware.
This notion of a portable hardware abstraction is so powerful that operating
 
Search WWH ::




Custom Search