Eliminating the Operating System Via the Bare Machine Computing Paradigm
Total Page:16
File Type:pdf, Size:1020Kb
FUTURE COMPUTING 2013 : The Fifth International Conference on Future Computational Technologies and Applications Eliminating the Operating System via the Bare Machine Computing Paradigm Uzo Okafor, Ramesh K. Karne, Alexander L. Wijesinha, and Patrick Appiah-Kubi Department of Computer and Information Sciences Towson University Towson, MD 21252 USA [email protected], {rkarne, awijesinha, appiahkubi}@towson.edu machine is not running any other code. It simply has Abstract - Computer applications typically run under the memory, processors and an I/O controller to communicate control of intermediary system software that is in the form of with the applications when needed. Instead of an OS or an operating system such as Windows or Linux, or a small kernel. The application could also be embedded within the kernel providing resources, an application suite manages operating system or kernel itself. This paradigm makes the hardware. This does not mean that the applications applications dependent on an intermediary software layer. An replicate OS functionality. Rather, applications only alternative approach is to eliminate this layer by writing contain code that is required for a given application suite. computer applications that can run directly on the hardware. An application suite is modeled as an Application Object This approach takes a small or tiny kernel to its extreme, (AO) [6] that carries its own application and execution eliminating the operating system, which results in a novel bare environment. For example, an AO may consist of a text machine computing paradigm. In this paper, we describe the processor/editor, a Webmail client, and a Web browser, and bare machine paradigm, and illustrate how to build self- bare interfaces to the hardware. An AO programmer needs supporting bare machine applications by eliminating application dependence on an operating system or kernel. The to have knowledge of the underlying resources, since an new paradigm requires that the developer be aware of the AO controls and manages all the hardware when it runs. A underlying hardware resources and use them efficiently for bare machine user carries a removable mass storage device the needs of a given application suite. We also describe a set of to boot, load and run the application suite, thus making the generic bare interfaces that can be used across many machine bare when the AO is not loaded (since no OS or pervasive devices as well as ordinary desktops and laptops. kernel is needed to run the suite). These interfaces have made it possible to build large bare When such bare machines are built, they become applications. The bare machine paradigm paves the way for ownerless and can be used by anyone, anytime, and software interfaces to be incorporated into a chip, introducing anywhere. Many complex bare applications have been built a computing model where applications are independent of any intermediary software. to illustrate the bare machine computing (BMC) paradigm. These include a Web server [4], Webmail server [1], Keywords - bare machine applications; bare machine conventional (non-HTTP) email server and client, VoIP computing; middleware; direct hardware interfaces; operating soft-phone [9], SIP server, and bare PC clusters using split systems. servers [13]. The development of such applications served as the motivation for designing the direct hardware interfaces to a bare PC (x86 architecture). These interfaces I. INTRODUCTION are generic and can be used to construct any bare machine Building bare machine applications, which are application. One can make these interfaces and the BIOS independent of any intermediary software, is daunting due part of the hardware in the future, thus creating a pure to constraints imposed by the existing computer BMC environment, where there is no other software needed architecture and development environments. Most CPUs to run computer applications. A high-level methodology for are designed to work with an operating system (OS) or developing bare machine applications was outlined kernel and do not provide any interfaces to directly control previously [10]. Here, we provide details of how to develop the hardware. In some cases, the kernel or virtual machine such bare machine applications by using a set of generic may allow an application direct hardware access, but does hardware interfaces. In particular, this paper describes the not fully relinquish its control to the application. However, direct hardware interfaces needed to eliminate the for certain specialized applications and secure systems, intermediary OS. even the presence of a small kernel may prevent the The rest of the paper is organized as follows. Section II application from fully controlling its environment and provides the motivation for this work. Section III describes managing the hardware. the bare machine computing paradigm and its We propose to eliminate the OS (or kernel) and give characteristics. Section IV illustrates the development of full control to applications. These applications are then able bare machine applications using a step-by-step process. to run on the bare hardware without the need for any Section V presents the direct generic hardware interfaces. additional software layers. There is no persistent storage or Sections VI, VII and VIII respectively cover the use of a any other resource to secure on a bare machine, device, or bootable USB, memory map, and the novel features of this computing system. Moreover, only one bare application approach. Finally, Section IX gives the conclusion. suite runs at a time. When an application is not running, the Copyright (c) IARIA, 2013. ISBN: 978-1-61208-272-1 1 FUTURE COMPUTING 2013 : The Fifth International Conference on Future Computational Technologies and Applications II. MOTIVATION paradigm as shown in Fig 1, the OS is eliminated and the AO programmer is totally responsible for managing The following considerations serve as the motivation hardware resources. The AO programmer has knowledge for developing BMC applications based on the underlying and full control over a given application as well as its paradigm: the proliferation of operating systems (OS) and execution. Each AO only carries its needed controls and the frequent new releases to replace them; the rapid direct hardware interfaces. The AO programmer is a obsolescence of existing computer applications; the myriad domain expert for a given set of applications that are of programming languages and interfaces; and the contained in a given AO. The BMC paradigm differs from heterogeneity of computer architectures and platforms. conventional computing in two major ways. First, the While many arguments can be given to support the current machine is bare with no existing software and protected evolution of conventional systems/platforms and their resources. Second, an AO programmer controls the advantages, the BMC paradigm has been shown to be program’s execution and manages the hardware. feasible for building a variety of complex applications such The BMC paradigm makes a computing device owner- as the servers, clients, and high-performance systems noted less and simplifies the design of secure systems since there above. are less avenues of attack and no underlying middleware Most current systems use complex concurrency control that an attacker can control. Viewed another way, when a mechanisms, paging, virtual memory, and other well- device is bare and contains no valuable resources such as a known concepts that have evolved due to lack of large hard disk or kernel, there is nothing to own or protect. In memory, memory costs, shared resources, and the need to BMC, mass storage is external and detachable. The mass serve multiple users. Under those conditions, computing storage can also be on a network. In this approach, an AO evolved towards complex systems with rapid obsolescence is built for a given set of applications to run at a time on a and less security. The BMC paradigm [7] enables machine as a single monolithic executable. The boot, load, applications to directly communicate with hardware, thus executable, data and files are stored on a mass storage eliminating all middleware. Using this paradigm, device such as a USB. When a USB is plugged into a applications can be written in C/C++ or other languages, computer, the machine boots and runs its own program where an AO programmer can directly call hardware without using any extra software or external programs. This interfaces, as originally proposed in [8]. This paper extends implies that no dynamic link libraries (DLLs) or virtual those ideas to address general purpose development of bare machine code are allowed in this approach. What runs in machine computing applications and a set of generic the machine, is exactly what has been loaded (and nothing interfaces to the hardware. else). This computing paradigm is different from III. BARE MACHINE COMPUTING PARADIGM conventional computing approaches since it is based on The BMC paradigm was originally referred to as applications instead of computing environments. This is not dispersed operating system computing (DOSC) [7], but we a mini-OS or kernel, as there is no centralized program have seen further evolution of DOSC into the BMC running in the machine to manage resources. Instead, the concepts as shown in Fig 1. A conventional OS, kernel or resources are managed by the applications themselves and embedded software acts as middleware between the run without using any OS/kernel or intermediary software. hardware and an application. An application programmer is A variety of attempts have been made to eliminate OS isolated from an application’s execution environment, abstractions or bypass the OS. However, none eliminate the resource control and management. kernel or OS altogether. Thus, while the BMC paradigm resembles approaches that reduce OS overhead and/or use End user Users lean kernels such as Exokernel [2], IO-Lite [12], Palacio applications User Interfaces (Text, Graphics, [11], and the Hardware Abstraction Layer [14] in Java, Navigators, Browsers, Multi- Text processing, media, etc..) there are significant differences.