The development of a hobbyist operating system is one of the more involved and technical options for a computer hobbyist. The definition of a hobby
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
can sometimes be vague. It can be from the developer's view, where the developers do it just for fun or learning; it can also be seen from the user's view, where the users are only using it as a novelty; or it can be defined as an operating system which doesn't have a very big user base.
Development
Development or developing may refer to:
Arts
*Development (music), the process by which thematic material is reshaped
* Photographic development
*Filmmaking, development phase, including finance and budgeting
* Development hell, when a proje ...
can begin from existing resources like a
kernel
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine learnin ...
, an
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
, or a
bootloader
A bootloader, also spelled as boot loader or called bootstrap loader, is a computer program that is responsible for booting a computer and booting an operating system. If it also provides an interactive menu with multiple boot choices then it's o ...
, or it can also be made completely from scratch. The development platform could be a
bare hardware machine, which is the nature of an operating system, but it could also be developed and tested on a virtual machine. Since the hobbyist must claim more ownership for adapting a complex system to the ever-changing needs of the technical terrain, much enthusiasm is common amongst the different groups attracted to operating system development.
Development
Elements of operating system development include:
*
Kernel
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine learnin ...
:
**
Bootstrapping
In general, bootstrapping usually refers to a self-starting process that is supposed to continue or grow without external input. Many analytical techniques are often called bootstrap methods in reference to their self-starting or self-supporting ...
**
Memory management
Memory management (also dynamic memory management, dynamic storage allocation, or dynamic memory allocation) is a form of Resource management (computing), resource management applied to computer memory. The essential requirement of memory manag ...
**
Process management and
scheduling
A schedule (, ) or a timetable, as a basic time-management tool, consists of a list of times at which possible tasks, events, or actions are intended to take place, or of a sequence of events in the chronological order in which such things ...
**
Device driver
In the context of an operating system, a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton. A driver provides a software interface to hardware devices, enabli ...
management
**
Program API
*
External programs
*
User interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
The
C programming language
C (''pronounced'' '' – like the letter c'') is a general-purpose programming language. It was created in the 1970s by Dennis Ritchie and remains very widely used and influential. By design, C's features cleanly reflect the capabilities of ...
is frequently used for hobby operating system programming, as well as
assembly language
In computing, assembly language (alternatively assembler language or symbolic machine code), often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence bet ...
, though other languages, such as
C++ can be used as well. For instance,
SerenityOS
SerenityOS is a free and open source desktop operating system. It features a preemptive kernel, currently supports x86-64, ARM, and RISC-V based computers, and hosts multiple complex applications including its own web browser and integrated deve ...
is a notable hobby operating system written primarily in C++.
The use of assembly language is common with small systems, especially those based on eight bit microprocessors such as the
MOS Technology 6502 family or the
Zilog Z80
The Zilog Z80 is an 8-bit computing, 8-bit microprocessor designed by Zilog that played an important role in the evolution of early personal computing. Launched in 1976, it was designed to be Backward compatibility, software-compatible with the ...
, or in systems with a lack of available resources because of its small output size and low-level efficiency.
User interface
Most hobby operating systems use a
command-line interface
A command-line interface (CLI) is a means of interacting with software via command (computing), commands each formatted as a line of text. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user ...
or a simple
text user interface
In computing, text-based user interfaces (TUI) (alternately terminal user interfaces, to reflect a dependence upon the properties of computer terminals and not just text), is a retronym describing a type of user interface (UI) common as an ear ...
due to ease of development. More advanced hobby operating systems may have a
graphical user interface
A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
. For example,
AtheOS was a hobby operating system with a graphical interface written entirely by one programmer.
Examples
File:Icaros131.jpg, AROS
AROS Research Operating System (AROS, pronounced "AR-OS") is a free and open-source multi media centric implementation of the AmigaOS 3.1 application programming interface (API) which is designed to be portable and flexible. , ports are availab ...
File:DexOS GUI.PNG, DexOS
File:EmuTOS 1.0.png, EmuTOS
TOS (The Operating System) is the operating system of the Atari ST range of computers. This range includes the 520ST and 1040ST, their STF/M/FM and STE variants and the Mega ST/STE. Later, 32-bit machines ( TT, Falcon030) were developed using a ...
File:GeckOS 20.png, GeckOS
Geckos are small, mostly carnivorous lizards that have a wide distribution, found on every continent except Antarctica. Belonging to the infraorder Gekkota, geckos are found in warm climates. They range from .
Geckos are unique among lizards f ...
File:Ghost screenshot 0.12.0.png, Ghost
File:Helenos-0.11.1-gui.png, HelenOS
File:KolibriOS nightly build desktop.png, KolibriOS
KolibriOS is an open-source operating system for x86 computers, written completely in FASM assembly language. It has been developed since 2004, forked from MenuetOS, and supports i586 CPU, CPUs or newer. KolibriOS is small sized and fits on a sin ...
File:LUnix.png, LUnix
File:Menuet.png, MenuetOS
MenuetOS is an operating system with a monolithic preemptive, real-time kernel written in FASM assembly language. The system also includes video drivers. It runs on 64-bit and 32-bit x86 architecture computers. Its author is Ville M. Turjanmaa. ...
File:Phantom screen 17.10.2019.png, Phantom OS
Phantom OS is an Persistence_(computer_science)#Orthogonal_or_transparent_persistence, orthogonally persistent managed code general-purpose operating system. It is based on a concept of persistent virtual memory, and executes bytecode in a virt ...
File:Redox running Orbital.png, Redox
Redox ( , , reduction–oxidation or oxidation–reduction) is a type of chemical reaction in which the oxidation states of the reactants change. Oxidation is the loss of electrons or an increase in the oxidation state, while reduction is t ...
File:SerenityOS 2023-07-14.png, SerenityOS
SerenityOS is a free and open source desktop operating system. It features a preemptive kernel, currently supports x86-64, ARM, and RISC-V based computers, and hosts multiple complex applications including its own web browser and integrated deve ...
File:Syllable-0.6.5-pl.png, Syllable Desktop
Syllable Desktop is a discontinued free and open-source lightweight hobbyist operating system for Pentium and compatible processors. Its purpose was to create an easy-to-use desktop operating system for the home and small office user. Its develop ...
File:Symbos-cpc.png, SymbOS
SYmbiosis Multitasking Based Operating System (SymbOS) is a Computer multitasking, multitasking operating system for Zilog Z80-based 8-bit computer systems.
Unlike early 8-bit operating systems, SymbOS is based on a microkernel, which provides ...
File:VirtualBox TempleOS x64 27 02 2021 20 43 48.png, TempleOS
File:SkyOS.jpg, SkyOS
SkyOS is a discontinued prototype commercial, proprietary, graphical desktop operating system written for the x86 computer architecture. Its first version was released in 1997, and its last beta build was released in 2008.
As of January 30, 200 ...
Use of BIOS
This section is predominantly
x86
x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel, based on the 8086 microprocessor and its 8-bit-external-bus variant, the 8088. Th ...
oriented.
The term
BIOS
In computing, BIOS (, ; Basic Input/Output System, also known as the System BIOS, ROM BIOS, BIOS ROM or PC BIOS) is a type of firmware used to provide runtime services for operating systems and programs and to perform hardware initialization d ...
(Basic Input/Output System) refers to
firmware
In computing
Computing is any goal-oriented activity requiring, benefiting from, or creating computer, computing machinery. It includes the study and experimentation of algorithmic processes, and the development of both computer hardware, h ...
that initialises computer hardware and has provisions to load an
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
. The BIOS also sets up a standard interface for several low-level device drivers at boot time. BIOS resources are often used by hobbyist operating systems, especially those written on 16-bit x86 machines, as many hobby operating systems developers lack the time to write complex low level drivers themselves or they simply want to get into writing software for the system as soon as possible.
The most commonly used BIOS functions are
VideoBIOS and
Disk services. These are used because video cards and disk drives vary significantly on different machines and specialised drivers are often difficult to write.
The use of the BIOS is uncommon in operating systems that operate in
Protected mode
In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units (CPUs). It allows system software to use features such as Memory_segmentation, segmentation, virtual mem ...
or
Long mode
In the x86-64 computer architecture, long mode is the mode where a 64-bit operating system can access 64-bit instructions and registers. 64-bit programs are run in a sub-mode called 64-bit mode, while 32-bit programs and 16-bit protected mod ...
, because the system must switch back to
real mode
Real mode, also called real address mode, is an operating mode of all x86-compatible CPUs. The mode gets its name from the fact that addresses in real mode always correspond to real locations in memory. Real mode is characterized by a 20- bit s ...
which BIOS drivers run in.
OSDev - Use of BIOS in protected or long mode
/ref>
See also
* List of hobbyist operating systems
* Computer architecture
References
External links
OSDev.org
- A hobby OSDev community
osdev.wiki
- New operating system wiki and community
Independent Software
- Set of tutorials on boot loader development and entering protected mode
The little book about OS development
- This book is a practical guide to writing your own x86 operating system
Kernel 101 – Let’s write a Kernel
aodfaq
- OS development FAQ
Bona Fide OS Development
- OS development tutorials and other documents
Operating System Resource Center
- Information and resources on various OSDev topics (both software and hardware)
{{Operating systems
Operating system technology