# An Evaluation of the Security of Bare Machine Computing (BMC) Systems against Cybersecurity Attacks
## 3 Bare Machine Computing (BMC) Systems
### BMC Paradigm
It carries the necessary bare drivers [42] and code to support the required functions. There are no kernel or system calls and no OS-related management functions. The application programmer controls the hardware and required interfaces, and the application suite directly communicates with the hardware without using any middleware. The BMC paradigm also uses bare devices to communicate on the Internet, forming a bare Internet [43]. Only authorized bare users can communicate on bare Internet. Each application suite can define its own memory map, as shown in Figure 6. This memory map shows how content in an application suite USB is copied into main memory. The boot code from sector 0 is copied into memory location address 0\(\times\)7c00 (for IBM Compatible PCs). The start program from the USB is copied at memory location 0\(\times\)600 and includes two header sectors. The start program is loaded in the real memory area. After the boot program runs, it jumps to 0\(\times\)3900 in real memory to run the start program. When the start program runs, it copies the domain-specific application suite executable from the USB into the memory location starting at 0\(\times\)00111000, which is above 1 MB and is in protected  
Figure 4: BMC-based system. Figure 5: Hello program using the BMC paradigm. * Refers to a pointer declaration in C++. memory. When the start program is completed, it starts executing at 0\(\times\)00111000 (which is a main () entry point). All these numbers are extracted by using Microsoft tools to identify entry points and other components in the executable. Notice that there is no need for virtual memory in BMC systems, as there is no OS and only a few applications are bundled and run at a time. Each domain-specific application suite has its own characteristics and can be loaded in custom locations in memory accordingly. This process can also be automated in BMC systems. The above memory map can be customized for domain-specific application suites, which shows simplicity and flexibility in building BMC applications. As per our knowledge, there is no true bare machine research/development/product like BMC. However, there is ample related work in making the OS lean, moving OS functions to application space, bypassing the OS to gain fast access to hardware resources, and designing an OS for IoT devices. Examples include the exokernel OS architecture enabling applications to manage the hardware and improve performance [44]; Tiny-OS for low-power wireless devices [45]; and Palacios and Kitten, a lightweight OS and VMM (virtual machine monitor) for high-performance computing [46]. Microkernel and related approaches [47, 48] keep only essential OS services in the kernel to increase performance in applications such as cloud computing. IO-Lite and kernel bypass techniques [49] provide direct I/O access to applications to speed up I/O. For data center servers, a customized OS [50] can be used to bypass kernel services. RIOT is a small OS suited for IoT devices [51]. Tradeoffs in designing minimalist instead of functionality-rich platforms are analyzed in [52]. The BMC approach is a minimalist approach, where there is no OS or kernel.