4 ms·
I would argue a single program that runs on bare metal to performs a specific purpose is not an "operating system". An "operating system" is a program that runs
by bregma 5y ago
I would argue a single program that runs on bare metal to performs a specific purpose is not an "operating system". An "operating system" is a program that runs on bare metal (operates the system) and runs other programs. Those other programs are "userspace" regardless of the security or IPC model involved in communicating with the actual operating system.
- l33t2328 5y ago> runs other programs This is a lot weaker of a statement than >processes in userland Even if you take a very broad definition of userland.
- matt_heimer 5y agoUserspace typically makes people assume a security model, Ring 0/3, etc. I think of an Operating System as something that provides a Hardware Abstraction Layer (HAL) and system calls to take advantage of that hardware. Drawing on the screen without knowing the details of the video card, file io without caring about IDE/SCSI, etc. If it runs other programs but those programs still need to take direct control of the hardware then the OS is just a glorified boot loader.
- skissane 5y agoPick R83 is an (8086 real mode) operating system for the IBM PC. It runs a byte code virtual machine, and has a compiler for a dialect of BASIC which generates that byte code as output. Most programs were written in BASIC, although the system also had a byte code assembler and some system-level software was written in that instead. Its filesystem is rather primitive in some ways (it only has single-level directories, a directory cannot contain subdirectories), but at the same time supports key-indexed files, which was essential for the business database applications it was used to run. There was never (as far as I know) a C compiler, although in principle someone could have compiled C to the same bytecode that BASIC was compiled to. It is multi-tasking and multi-user, albeit its security is rather primitive by today's standards (as one might expect for a real mode 8086 operating system). Does that count as "running other programs"? If it does, just make your "single program" be an interpreter (Tcl, Lua, whatever you wish) and now you have a "real operating system". (The byte code for R83's VM, called Pick assembly, came from Pick's earlier non-PC hardware systems, in which it was actually the hardware machine language, implemented by microcode; I believe the parts of the system which ran on top of the VM were a pretty direct port from those earlier platforms. R83 was succeeded by Advanced Pick, which supported both running as a standalone OS – AP/Native – or as a process on top of a host OS – AP/Unix and AP/DOS. AP/DOS was later succeeded by AP/NT for Windows NT, and Advanced Pick eventually evolved into D3, which is still around – now sold by Rocket Software. D3's virtual machine environment, VME, is a direct descendant of the same byte code VM, although it now supports much deeper integration with the AIX/Linux/Windows host platform than the original hosted AP versions did. Early MUMPS systems were similar in being hosted directly on the hardware, but Pick as an operating system arguably lasted a decade or more longer than MUMPS as an operating system did.)