Sean Halle
04/10/2009 09:00 AM
Computer Engineering
Having a single operating system interface has been a boon in many segments of industry and society. It would be nice to have a single operating system interface in the age of parallel hardware. Such an interface would enable source code to be written once, then automatically specialized to each underlying hardware platform. The single OS interface means that all services that an application requires are obtained via a single set of commands, across languages and across hardware platforms. The single OS interface also means that low level hardware issues such as endianness, sizes of primitive data types, file-system details, and even particular paths are hidden from the application.
Designing an OS that exposes no hardware details is a special challenge. We propose to use an abstraction layer over the top of native OSs that separates the interface to OS services from the implementation of those services. In our abstraction layer we adopt the abstraction that everything is a processor. On one side, this abstraction is simple for source code to use and meets all the needs of applications, while on the other side the abstraction is easy to implement on an especially wide array of hardware configurations, as a layer above the native OS.
The proposed OS interface uses four elements to achieve the separation: 1) the abstraction that everything is a processor, 2) using pure names free from implied information, 3) adaptors that translate primitive data format, and 4) automated specialization that translates a single source to multiple machine specific forms.