Operating system development
Encyclopedia
Operating system development is one of the more involved and technical options for a computer hobbyist.
A hobby operating system is classified as one with little or no support from other developers.
Development
begins with an existing operating system. The development platform may be a bare hardware machine
, which is the nature of an operating system
, but it can be developed and tested on a virtual machine.
Because the hobbyist must claim more ownership for adapting a complex system to the ever changing needs of the technical terrain, zeal and enthusiasm is common amongst the many different groups attracted to operating system development.
Traditionally, kernel developers have commonly used the C programming language
and Assembly
. C remains popular for OS developers, as it provides low-level pointer manipulation and requires no run-time support (as opposed to some elements of C++
, such as the new and delete operators).
A hobby operating system is classified as one with little or no support from other developers.
Development
Software developer
A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management...
begins with an existing operating system. The development platform may be a bare hardware machine
Bare machine
Bare Machine, in computer parlance, means a computer without its operating system. Modern operating systems evolved through various stages, from elementary to the present day complex, highly sensitive real-time systems. In the very first stage of computing there was nothing like an Operating System...
, which is the nature of an operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
, but it can be developed and tested on a virtual machine.
Because the hobbyist must claim more ownership for adapting a complex system to the ever changing needs of the technical terrain, zeal and enthusiasm is common amongst the many different groups attracted to operating system development.
Development
Elements of traditional PC based operating systems include:- Kernel:
- Bootstrapping
- Memory managementMemory managementMemory management is the act of managing computer memory. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and freeing it for reuse when no longer needed. This is critical to the computer system.Several...
- Process managementProcess management (computing)Process management is an integral part of any modern day operating system . The OS must allocate resources to processes, enable processes to share and exchange information, protect the resources of each process from other processes and enable synchronisation among processes...
and schedulingScheduling (computing)In computer science, a scheduling is the method by which threads, processes or data flows are given access to system resources . This is usually done to load balance a system effectively or achieve a target quality of service... - Device driverDevice driverIn computing, a device driver or software driver is a computer program allowing higher-level computer programs to interact with a hardware device....
management
Traditionally, kernel developers have commonly used the C programming language
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
and Assembly
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...
. C remains popular for OS developers, as it provides low-level pointer manipulation and requires no run-time support (as opposed to some elements of C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, such as the new and delete operators).
External references
- OSDev.org - A hobby OSDev community
- aodfaq - Extensive and editable OS development FAQ
- Bona Fide OS Development - Store of OS development tutorials and other documents
- Operating System Resource Center - Information and resources on various OSDev topics (both software and hardware)
- [irc://irc.freenode.net/Osdev #OsDev on Freenode] - An IRC channel for OSDev enthusiasts
- http://www.brokenthorn.com/Resources/OSDevIndex.html - Step by step tutorial.
- Germsoft.com - A small collection of tutorials on os development.