Jump to content

Object-oriented operating system: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Kushssj (talk | contribs)
m →‎See also: Adding OS and object oriented design, as possible articles which the reader may be interested in.
OAbot (talk | contribs)
m Open access bot: doi updated in citation with #oabot.
 
(74 intermediate revisions by 40 users not shown)
Line 1: Line 1:
{{Short description|Operating system}}
{{Multiple issues|
An '''object-oriented operating system'''<ref name=":0"/> is an [[operating system]] that is designed, structured, and operated using [[object-oriented programming]] principles.
{{refimprove|date=December 2012}}
{{original research|date=November 2009}}
}}


An object-oriented operating system is in contrast to an object-oriented [[user interface]] or programming [[Software framework|framework]], which can be run on a non-object-oriented operating system like [[DOS]] or [[Unix]].
An '''object-oriented operating system'''<ref>{{cite journal|last1=Pashtan|first1=Ariel|title=Object Oriented Operating Systems: An Emerging Design Methodology|journal=Proceedings of the ACM '82 Conference|date=1 January 1982|pages=126–131|doi=10.1145/800174.809777|url=http://dl.acm.org/citation.cfm?id=809777|publisher=ACM}}</ref> is an [[operating system]] that uses [[object-oriented programming|object oriented]] design principles.


There are already [[object-based language]] concepts involved in the design of a more typical operating system such as [[Unix]]. While a more traditional language like [[C (programming language)|C]] does not support object-orientation as fluidly as more recent languages, the notion of, for example, a [[Computer file|file]], [[Stream (computing)|stream]], or [[device driver]] (in Unix, each represented as a [[file descriptor]]) can be considered a good example of objects. They are, after all, [[abstract data type]]s, with various [[Method (computer programming)|methods]] in the form of [[system call]]s which behavior varies based on the type of object and which implementation details are hidden from the caller.
An object-oriented operating system is in contrast to an object-oriented [[user interface]] or programming [[Software framework|framework]], which can be run atop a non-object-oriented operating system like [[DOS]] or [[Unix]].


[[Object-oriented programming|Object-orientation]] has been defined as [[Object (computer science)|objects]] + [[Inheritance (object-oriented programming)|inheritance]], and inheritance is only one approach to the more general problem of [[Delegation (computing)|delegation]] that occurs in every operating system.<ref>{{cite journal |last=Wegner |first=Peter |date=December 1987 |title=Dimensions of Object-based Language Design |journal=ACM SIGPLAN Notices |volume=22 |issue=12 |pages=168–182 |doi=10.1145/38807.38823}} Also in Conference Proceedings on Object-oriented Programming Systems, Languages.</ref> Object-orientation has been more widely used in the [[user interface]]s of operating systems than in their [[Kernel (operating system)|kernels]].
There are already [[object-based language]] concepts involved in the design of a more typical operating system such as [[Unix]]. While a more traditional language like [[C (programming language)|C]] does not support object-orientation as fluidly as more recent languages, the notion of, for example, a [[computer file|file]], [[stream (computing)|stream]], or [[device driver]] (in Unix, each represented as a [[file descriptor]]) can be considered a good example of objects they are, after all, [[abstract data type]]s, with various [[method (computer science)|methods]] in the form of [[system call]]s, whose behavior varies based on the type of object and whose implementation details are hidden from the caller.


== Background ==
[[Object-oriented programming|Object-oriented]] has been defined as [[Object (computer science)|objects]] + [[Inheritance (computer science)|inheritance]] and the latter is only one approach to the more general problem of [[Delegation (programming)|delegation]] that occurs in every operating system.<ref>
An object is an instance of a class, which provides a certain set of functionalities. Two objects can be differentiated based on the functionalities (or methods) they support. In an operating system context, objects are associated with a resource. Historically, the object-oriented design principles were used in operating systems to provide several protection mechanisms.<ref name=":0">{{cite book |last1=Pashtan |first1=Ariel |title=Proceedings of the ACM '82 conference on - ACM 82 |chapter=Object oriented operating systems |date=1 January 1982 |pages=126–131 |doi=10.1145/800174.809777 |chapter-url=https://dl.acm.org/doi/10.1145/800174.809777 |publisher=Association for Computing Machinery (ACM)|isbn=9780897910859 |s2cid=9463966 }}</ref>
{{cite journal|title=Dimensions of Object-Based Language Design|first=Peter|last=Wegner|conference=OOPSLA '87 Proceedings|year=1987|url=http://www-public.int-evry.fr/~gibson/Teaching/CSC7322/ReadingMaterial/Wegner87.pdf}}
</ref> Object-orientation has been more widely used in the [[user interface]]s of operating systems than in their [[Kernel (computing)|kernels]].


Protection mechanisms in an operating system help in providing a clear separation between different user programs. It also protects the operating system from any malicious user program behavior. For example, consider the case of user profiles in an operating system. The user should not have access to resources of another user. The object model deals with these protection issues with each resource acting as an object. Every object can perform only a set of operations. In the context of user profiles, the set of operations is limited by [[privilege level]] of a user.<ref name=":0"/>
== Examples ==


Present-day operating systems use object-oriented design principles for many components of the system, which includes protection.
=== Athene ===
[[Athene (operating system)|Athene]]<ref>{{cite web|title=The Athene Operating System [LWN.net]|url=https://lwn.net/Articles/102230/|website=lwn.net|accessdate=13 February 2017}}</ref> was an object-based operating system first released in 2000 by [[Rocklyte Systems]]. The user environment was constructed entirely from objects that are linked together at runtime. Applications for Athene could also be created using this methodology and were commonly scripted using the object scripting language ''[[Dynamic Markup Language]] (DML). Objects could have been shared between processes by creating them in shared memory and locking them as needed for access. Athene's object framework was multi-platform, allowing it to be used in Windows and Linux environments for the development of object-oriented programs. The company went defunct and the project abandoned sometime in 2009.


=== BeOS ===
== Examples ==
; Athene
One attempt at creating a truly object-oriented operating system was the [[BeOS]] of the mid 1990s, which used objects and the [[C++]] language for the [[application programming interface]] (API). But the kernel itself was written in C with C++ wrappers in user space. The system did not become mainstream though even today it has its fans and benefits from ongoing development.
:Athene is an object-based operating system first released in 2000 by Rocklyte Systems.<ref>{{cite web |title=The Athene Operating System |url=https://lwn.net/Articles/102230/ |website=LWN.net |access-date=13 February 2017}}</ref><ref>{{cite web |title=Rocklyte Systems |url=http://www.rocklyte.com/ |website=Rocklyte Systems |access-date=2007-02-18 |archive-date=2006-11-03 |archive-url=https://web.archive.org/web/20061103022452/http://rocklyte.com/ |url-status=dead }}</ref> The user environment was constructed entirely from objects that are linked together at runtime. Applications for Athene could also be created using this methodology and were commonly scripted using the object scripting language Dynamic Markup Language (DML). Objects could have been shared between processes by creating them in [[shared memory]] and locking them as needed for access. Athene's object framework was multi-platform, allowing it to be used in Windows and Linux environments for developing object-oriented programs. The company went defunct and the project abandoned sometime in 2009.

; BeOS
=== Choices ===
:[[BeOS]]<ref>{{cite book|last1=Sydow|first1=Dan Parks|title=Programming the Be operating system|date=1999|publisher=O'Reilly|location=Beijing|isbn=978-1-56592-467-3|edition=1st}}</ref> was an object-oriented operating system released in 1995, which used objects and the [[C++]] language for the [[API|application programming interface]] (API). The kernel was written in C with C++ wrappers in user space. The OS did not see mainstream usage and proved commercially unviable, however it has seen continued usage and development by a small enthusiast community.
[[Choices (operating system)|Choices]] is an object-oriented operating system that was developed at the [[University of Illinois at Urbana-Champaign]]. It is written in [[C++]] and uses objects to represent core kernel components like the [[central processing unit]] (CPU), [[Process (computing)|processes]] and so on. [[Inheritance (computer science)|Inheritance]] is used to separate the kernel into portable machine-independent classes and small non-portable dependent classes. Choices has been ported to and runs on [[SPARC]], [[x86]], and [[ARM architecture|ARM]].
; {{Anchor|Choices}}Choices

:Choices is an object-oriented operating system developed at the [[University of Illinois at Urbana–Champaign]].<ref>{{cite journal |last1=Campbell |first1=Roy |last2=Johnston |first2=Garry |last3=Russo |first3=Vincent |date=1 July 1987 |title=Choices (Class Hierarchical Open Interface for Custom Embedded Systems) |journal=SIGOPS Operating Systems Review (OSR) |volume=21 |issue=3 |pages=9–17 |doi=10.1145/29321.29323 |s2cid=11935474 |issn=0163-5980|doi-access=free }}</ref><ref>{{cite web |title=Choices |url=http://choices.cs.illinois.edu/ |website=choices.cs.illinois.edu}}</ref> It is written in [[C++]] and uses objects to represent core kernel components like the [[central processing unit]] (CPU), [[Process (computing)|processes]], and so on. [[Inheritance (object-oriented programming)|Inheritance]] is used to separate the kernel into portable machine-independent classes and small non-portable dependent classes. Choices has been ported to and runs on [[SPARC]], [[x86]], and [[ARM architecture family|ARM]].
=== GEOS ===
; ETHOS
[[GEOS (16-bit operating system)|PC/GEOS]] is a light-weighted object-oriented multitasking graphical operating system with sophisticated window and desktop management featuring scalable fonts. It is mostly written in an object-oriented x86 assembly language dialect and some C/C++ and is designed to run atop [[DOS]] (similar to Microsoft Windows up to [[Windows Me]]). GEOS was originally developed by Berkeley Softworks in 1990, which later became GeoWorks Corporation, and it is continued to be maintained by BreadBox Computer Company. Related [[software suite]]s were named ''Ensemble'' and ''New Deal Office''. Adaptations exist for various palmtops, and 32-bit systems with non-x86-CPUs.
:ETHOS was an experimental object oriented version of the Oberon System (see below) created by Clemens Szyperski for his PhD Thesis<ref>{{Cite thesis |type=PhD |last=Szyperski |first=Clemens |date=1992 |title=Insight ETHOS: On Object-Orientation in Operating Systems |publisher=[[ETH Zürich]] |place=Zurich, Switzerland |isbn=3-7281-1948-2}} [http://e-collection.library.ethz.ch/eserv/eth:38713/eth-38713-02.pdf ETHZ ecollection].</ref> written in [[Oberon-2]]

; GEOS
=== Haiku ===
:[[GEOS (16-bit operating system)|PC/GEOS]] is a light-weight object-oriented multitasking graphical operating system with sophisticated window and desktop management featuring scalable fonts. It is mostly written in an object-oriented x86 assembly language dialect and some C/C++ and is designed to run on [[DOS]] (similar to Microsoft Windows up to [[Windows Me]]). GEOS was developed originally by [[Berkeley Softworks]] in 1990, which later became GeoWorks Corporation, and it is continued to be maintained by BreadBox Computer Company. Related [[software suite]]s were named ''Ensemble'' and ''New Deal Office''. Adaptations exist for various palmtops, and 32-bit systems with non-x86-CPUs.
After the discontinuation of [[BeOS]], an effort to create an open-source replacement began. [[Haiku (operating system)|Haiku]] (originally named ''OpenBeOS'') reached its first milestone in September 2009 with the release of Haiku R1/Alpha 1. The x86 distribution is compatible with BeOS at both source and binary level. Like BeOS, it is written primarily in [[C++]] and provides an object-oriented API. It is actively developed.
; Haiku

:[[Haiku (operating system)|Haiku]] (originally named ''OpenBeOS''), is an open-source replacement for BeOS. It reached its first development milestone in September 2009 with the release of Haiku R1/Alpha 1. The x86 distribution is compatible with BeOS at both source and binary level. Like BeOS, it is written primarily in [[C++]] and provides an object-oriented API. It is actively developed.
=== IBM AS/400 ===
; IBM i (OS/400, i5/OS)
IBM invented [[AS/400]] around 1978, since renamed IBM System i, with an object-based methodology. The AS/400 OS has a 128-bit unique identifier for each object.
:IBM introduced [[OS/400]] in 1988. This OS ran exclusively on the [[AS/400]] platform. Renamed [[IBM i]] in 2008, this operating system and runs exclusively on [[IBM Power Systems|Power Systems]] which also can run [[IBM AIX|AIX]] and [[Linux]]. IBM i uses an object-oriented methodology and integrates a database ([[Db2 for i]]). The IBM i OS has a 128-bit unique identifier for each object.

=== IBM OS/2 2.0 ===
; IBM OS/2 2.0
IBM's first priority based pre-emptive multitasking, graphical, windows-based operating system included an object-oriented user shell. It was designed for the Intel 80386 that used [[virtual 8086 mode]] with full 32-bit support and was released in 1992.
:IBM's first priority based pre-emptive multitasking, graphical, windows-based operating system included an object-oriented user shell. It was designed for the Intel 80386 that used [[virtual 8086 mode]] with full 32-bit support and was released in 1992. [[ArcaOS]], a new OS/2 based operating system initially called Blue Lion<ref>{{Cite news|url=https://www.arcanoae.com/blue-lion/|title=Blue Lion, by Arca Noae|newspaper=Arca Noae|access-date=2017-02-18|language=en-US}}</ref> is being developed by Arca Noae. The first version was released in May 2017.
; IBM TopView

:[[IBM TopView|TopView]] was an object-oriented operating environment that loaded on a PC on DOS, and then took control from DOS. At that point it effectively became an object-oriented operating system with an object-oriented API (TopView API). It was IBM's first multi-tasking, window based, object-oriented operating system for the PC led by David C. Morrill and released in February 1985.
=== IBM TopView ===
; Java-based
[[TopView]] was an object-oriented operating environment that loaded on a PC atop DOS, and then took control from DOS. At that point it effectively became an object-oriented operating system with an object-oriented API (TopView API). It was IBM's first multi-tasking, window based, object-oriented operating system for the PC led by David C. Morrill and released in February 1985.
:Given that [[Oracle Corporation|Oracle's]] (formerly [[Sun Microsystems]]') [[Java (programming language)|Java]] is today one of the most dominant object-oriented languages, it is no surprise that Java-based operating systems have been attempted. In this area, ideally, the [[kernel (operating system)|kernel]] would consist of the bare minimum needed to support a [[Java virtual machine]] (JVM). This is the only component of such an operating system that would have to be written in a language other than Java. Built on the JVM and basic hardware support, it would be possible to write the rest of the operating system in Java; even parts of the system that are more traditionally written in a lower-level language such as C, for example [[device driver]]s, can be written in Java.

:Examples of attempts at such an operating system include [[JavaOS]], JOS,<ref>{{cite web
=== Java-based ===
| url = http://jos.sourceforge.net/about.html
Given that [[Oracle Corporation|Oracle's]] (formerly [[Sun Microsystems]]') [[Java (programming language)|Java]] is today one of the most dominant object-oriented languages, it is no surprise that Java-based operating systems have been attempted. In this area, ideally, the [[kernel (computer science)|kernel]] would consist of the bare minimum needed to support a [[Java virtual machine]] (JVM). This is the only component of such an operating system that would have to be written in a language other than Java. Built on the JVM and basic hardware support, it would be possible to write the rest of the operating system in Java; even parts of the system that are more traditionally written in a lower-level language such as C, for example [[device driver]]s, can be written in Java.
| title = About

| publisher = JOS (A Free Java-Based Operating System)
Examples of attempts at such an operating system include [[JavaOS]], JOS,<ref>{{cite web
| quote = The JOS Project is a collaborative undertaking by an international group of Java™ programmers and enthusiasts aimed at the creation of a free and open Java™ based Operating System (JOS). As a collaborative effort, we work together to research how a Java-based operating system should work. Together, we work to build components for a Java-based operating system.
| url = http://jos.sourceforge.net/about.html
| title = About
| access-date = 2012-09-03
}}</ref> JNode, and [[JX (operating system)|JX]].
| author =
; Lisp-based
| authorlink =
:An object-oriented operating system written in the [[Lisp (programming language)|Lisp]] dialect [[Lisp Machine Lisp]] (and later [[Common Lisp]]) was developed at MIT. It was commercialized with [[Lisp machine]]s from [[Symbolics]], [[Lisp Machines|Lisp Machines Inc.]] and [[Texas Instruments]]. Symbolics called their operating system [[Genera (operating system)|Genera]]. It was developed with the [[Flavors (programming language)|Flavors]] object-oriented extension of Lisp, then with New Flavors, and then with the [[Common Lisp Object System]] (CLOS).
| date =
:Xerox developed several workstations with an operating system written in [[Interlisp-D]]. Interlisp-D provided object-oriented extensions like LOOPS and CLOS.
| publisher = JOS (A Free Java-Based Operating System)
:Movitz and [https://github.com/froggey/Mezzano Mezzano] are two more recent attempts at operating systems written in Common Lisp.
| quote = The JOS Project is a collaborative undertaking by an international group of Java™ programmers and enthusiasts aimed at the creation of a free and open Java™ based Operating System (JOS). As a collaborative effort, we work together to research how a Java-based operating system should work. Together, we work to build components for a Java-based operating system.
; Medos-2
| accessdate = 2012-09-03
:[[Lilith (computer)#Operating system|Medos-2]] is a single user, object-oriented operating system made for the [[Lilith (computer)|Lilith]] line of [[workstation]]s (processor: [[Advanced Micro Devices]] (AMD) [[AMD Am2900|2901]]), developed in the early 1980s at [[ETH Zurich]] by Svend Erik Knudsen with advice from [[Niklaus Wirth]]. It is built entirely from modules of the programming language [[Modula-2]].<ref>
}}</ref> [[JNode]], and [[JX (operating system)|JX]].
{{Cite thesis |last=Knudsen |first=Svend Erik |date=1983 |title=Medos-2: A Modula-2 Oriented Operating System for the Personal Computer Lilith |type=PhD |publisher=[[ETH Zurich]] |doi=10.3929/ethz-a-000300091|hdl=20.500.11850/137906 }}<!-- also at http://e-collection.library.ethz.ch/eserv/eth:21975/eth-21975-02.pdf --></ref><ref>

{{Cite book |last=Knudsen |first=Svend Erik |date=25 October 2000 |chapter=Medos in Retrospect |editor1-last=Böszörményi |editor1-first=László |editor2-last=Gutknecht |editor2-first=Jürg |editor2-link=Jürg Gutknecht |editor3-last=Pomberger |editor3-first=Gustav |title=The School of Niklaus Wirth: The Art of Simplicity |pages=69–86 |publisher=Morgan Kaufmann |isbn=978-1558607231}} {{ISBN|1-55860-723-4}} & dpunkt, {{ISBN|3-932588-85-1}}.</ref><ref>
=== Lisp-based ===
{{Cite magazine |last=Sand |first=Paul A. |date=September 1984 |title=The Lilith Personal Computer |magazine=[[Byte (magazine)|Byte]] |pages=300–311 |url=https://archive.org/details/BYTE_Vol_09-10_1984-09_Computer_Graphics/page/n309/mode/2up |access-date=6 March 2021}} Reprint.</ref> It was succeeded at ETH Zurich by the [[Oberon (operating system)|Oberon]] system, and a variant named ''[[Kronos (computer)#Operating system|Excelsior]]'' was developed for the [[Kronos (computer)|Kronos]] workstation, by the [[Academy of Sciences of the Soviet Union]], Siberian branch, [[Novosibirsk]] Computing Center, Modular Asynchronous Developable Systems (MARS) project, Kronos Research Group (KRG).<ref name="Kronos-Excelsior">{{Cite web |last1=Kuznetsov |first1=D.N. |last2=Nedorya |first2=A.E. |last3=Tarasov |first3=E.V. |last4=Filippov |first4=V.E. |date=<!-- Undated --> |title=Kronos: a family of processors for high-level languages |url=http://www.kronos.ru/literature/processors |website=Kronos: History of a Project |publisher=xTech |language=ru |access-date=13 April 2021}}</ref>
An object-oriented operating systems written in the [[Lisp (programming language)|Lisp]] dialect [[Lisp Machine Lisp]] (and later [[Common Lisp]]) has been developed at MIT. It was commercialized with [[Lisp Machine]]s from [[Symbolics]], [[Lisp Machines|Lisp Machines Inc.]] and [[Texas Instruments]]. Symbolics called their operating system [[Genera (operating system)|Genera]]. It was developed using the [[Flavors (programming language)|Flavors]] object-oriented extension of Lisp. Later then in New Flavors and then using the [[Common Lisp Object System]].
; Microsoft Singularity

:[[Singularity (operating system)|Singularity]] is an experimental operating system based on Microsoft's [[.NET Framework]]. It is comparable to Java-based operating systems.
Xerox developed several workstations with an operating system written in [[Interlisp-D]]. Interlisp-D provided object-oriented extensions like LOOPS and the Common Lisp Object System.
; Microsoft Windows NT

:[[Windows NT]] is a family of operating systems (including [[Windows 7]], [[Windows 8.1|8]], [[Windows Phone 8.1|Phone 8]], [[8.1]], [[Windows 10]], [[Windows 10 Mobile|10 Mobile]], [[Windows 11]] and [[Xbox#Consoles|Xbox]]) produced by [[Microsoft]], the first version of which was released in July 1993. It is a [[high-level programming language]]-based, [[Cross-platform#Hardware platforms|processor-independent]], [[multiprocessing]], [[multi-user]] operating system. It is best described as [[Object-based language|object-based]] rather than object-oriented as it does not include the full inheritance properties of object-oriented languages.<ref>{{Cite web|title=Object-Based|url=https://msdn.microsoft.com/en-us/library/windows/hardware/ff557751(v=vs.85).aspx|publisher=Microsoft Hardware Development Centre|access-date=Aug 23, 2015}}</ref>
[[Movitz]] and [https://github.com/froggey/Mezzano Mezzano] are two more recent attempts at operating systems written in Common Lisp.
:The [[Object Manager (Windows)|Object Manager]] is in charge of managing NT objects. As part of this responsibility, it maintains an internal [[namespace]] where various operating system components, device drivers, and [[Windows API#Versions|Win32 programs]] can store and lookup objects. The NT [[Native API]] provides routines that allow [[user space]] (mode) programs to browse the namespace and query the status of objects located there, but the interfaces are undocumented.<ref>{{cite book

| last = Nebbett
=== Microsoft Singularity ===
| first = Gary
[[Singularity (operating system)|Singularity]] is an experimental operating system based on Microsoft's [[.NET Framework]]. It is comparable to Java-based operating systems.
| date = February 20, 2000

=== Microsoft Windows NT ===
| title = Windows NT/2000 Native API Reference
| publisher = Sams Publishing
[[Windows NT]] is a family of operating systems (including [[Windows 7|Windows , 7]], [[Windows 8.1|8]], [[Windows Phone 8.1|Phone 8]], [[ 8.1]], [[Windows 10]], [[Xbox#Consoles|Xbox]]) produced by [[Microsoft]], the first version of which was released in July 1993. It is a [[high-level programming language]]-based, [[Cross-platform#Hardware platforms|processor-independent]], [[multiprocessing]], [[multi-user]] operating system. It is best described as [[Object-based language|object-based]] rather than object-oriented as it does not include the full inheritance properties of object-oriented languages.<ref>{{Cite web|title=Object-Based|url=https://msdn.microsoft.com/en-us/library/windows/hardware/ff557751(v=vs.85).aspx|publisher=Microsoft Hardware Development Centre|accessdate=Aug 23, 2015}}</ref>
| page = 528

| isbn = 978-1578701995
The [[Object Manager (Windows)|Object Manager]] is in charge of managing NT objects. As part of this responsibility, it maintains an internal [[namespace]] where various operating system components, device drivers and [[Windows API#Versions|Win32 programs]] can store and lookup objects. The NT [[Native API]] provides routines that allow [[user space]] (mode) programs to browse the namespace and query the status of objects located there, but the interfaces are undocumented.<ref>{{cite book
| quote = The Windows NT/2000 Native API Reference provides the first comprehensive look at these undocumented services. A unique tool for software developers, this reference includes documentation of over 200 routines included in the native API, detailed description of routines that are either not directly accessible via the Win32 API, or that offer substantial additional functionality.
| last = Nebbett
| first = Gary
| date = February 20, 2000
| title = Windows NT/2000 Native API Reference
| url =
| location =
| publisher = Sams Publishing
| page = 528
| isbn = 978-1578701995
| accessdate = 2014-05-16
| quote = The Windows NT/2000 Native API Reference provides the first comprehensive look at these undocumented services. A unique tool for software developers, this reference includes documentation of over 200 routines included in the native API, detailed description of routines that are either not directly accessible via the Win32 API, or that offer substantial additional functionality.
}}</ref> NT supports per-object (file, function, and role) [[access control list]]s allowing a rich set of security permissions to be applied to systems and services. WinObj is a Windows NT program that uses the NT Native API (provided by NTDLL.DLL) to access and display information on the NT Object Manager's name space.<ref>{{cite web
}}</ref> NT supports per-object (file, function, and role) [[access control list]]s allowing a rich set of security permissions to be applied to systems and services. WinObj is a Windows NT program that uses the NT Native API (provided by NTDLL.DLL) to access and display information on the NT Object Manager's name space.<ref>{{cite web
| url = http://technet.microsoft.com/en-us/sysinternals/bb896657.aspx
| url = https://technet.microsoft.com/en-us/sysinternals/bb896657.aspx
| title = Windows Sysinternals WinObj
| title = Windows Sysinternals WinObj
| author = Mark Russinovich
| last = Russinovich
| authorlink =
| first = Mark
| date =
| publisher = Microsoft
| quote = Obj is a must-have tool if you are a system administrator concerned about security, a developer tracking down object-related problems, or just curious about the Object Manager namespace.
| publisher = Microsoft
| access-date = 2014-05-16
| quote = Obj is a must-have tool if you are a system administrator concerned about security, a developer tracking down object-related problems, or just curious about the Object Manager namespace.
| accessdate = 2014-05-16
}}</ref>
}}</ref>
:; Component Object Model

::On the [[User space|user mode]] side of Windows, the [[Component Object Model]] (COM) is an [[application binary interface]] standard for [[Component-based software engineering|software components]] introduced by [[Microsoft]] in 1993. It is used to enable [[interprocess communication]] and dynamic [[Object (computer science)|object]] creation in a large range of [[programming language]]s. COM is the basis for several other Microsoft technologies and frameworks, including [[Object Linking and Embedding]] (OLE), [[OLE Automation]], [[ActiveX]], [[COM+]], [[Distributed Component Object Model]] (DCOM), the [[Windows shell]], [[DirectX]], and [[Windows Runtime]]. OLE is a [[proprietary format|proprietary]] technology developed by [[Microsoft]] that allows embedding and [[hyperlink|linking]] to [[document]]s and other objects. On a technical level, an OLE object is any object that implements the ''IOleObject'' interface, possibly along with a wide range of other interfaces, depending on the object's needs. Its primary use is for managing [[compound document]]s, but it is also used for transferring data between different [[application software|applications]] using [[drag and drop]] and [[Clipboard (computing)|clipboard]] operations.
[[ReactOS]] is an open-source computer operating system intended to be binary compatible with application software and [[device driver]]s made for Microsoft Windows NT versions. Written from scratch, it aims to follow the [[architecture of Windows NT]] designed by Microsoft from the hardware level right through to the application level. This is ''not'' a Linux-based system, and shares ''none'' of the [[Unix|unix architecture]].<ref>{{cite web
:; Compound File Binary Format
| url = http://old.reactos.org/en/about.html
::[[Compound File Binary Format]] (CFBF) is a file format for storing many files and streams within one file on a disk. CFBF is developed by Microsoft and is an implementation of Microsoft [[COM Structured Storage]]. Structured storage is widely used as main file format in Microsoft Office applications including [[Microsoft Word]], [[Microsoft Excel]], Microsoft [[Microsofot PowerPoint|PowerPoint]], [[Microsoft Access]] and is the basis of [[Advanced Authoring Format]].
| title = About ReactOS - Object Based
:; Object Linking and Embedding
| author = Klemens Friedl
::Object Linking and Embedding (OLE) was part of a grander plan named [[Cairo (operating system)|Cairo]], the code name for a project at Microsoft from 1991 to 1996. Its charter was to build technologies for a next generation operating system that would fulfill [[Bill Gates]]' vision of "''information at your fingertips''".<ref>{{cite web
| authorlink =
| url = https://www.youtube.com/watch?v=kL8zoQVJaD8
| date =
| title = "Information at Your Fingertips" Keynote - Comdex/Fall 1990
| publisher = ReactOS Project
|last=Gates |first=Bill |author-link=Bill Gates
| quote = ReactOS uses an object metaphor that is pervasive throughout the architecture of the system. Not only are all of the things in the UNIX file metaphor viewed as objects by ReactOS, but so are things such as processes and threads, shared memory segments, the global registry database and even access rights.
| date = 1990
| accessdate = 2014-05-16
| publisher = Microsoft
}}</ref>
| quote = Bill Gates delivered on November 12, 1990 his famous Keynote titled "Information at Your Fingertips"

| access-date = 2014-05-16
On the [[User space|user mode]] side of Windows the [[Component Object Model]] (COM) is an [[application binary interface]] standard for [[Component-based software engineering|software components]] introduced by [[Microsoft]] in 1993. It is used to enable [[interprocess communication]] and dynamic [[Object (computer science)|object]] creation in a large range of [[programming languages]]. COM is the basis for several other Microsoft technologies and frameworks, including [[Object Linking and Embedding]] (OLE), [[OLE Automation]], [[ActiveX]], [[COM+]], [[Distributed Component Object Model]] (DCOM), the [[Windows shell]], [[DirectX]], and [[Windows Runtime]]. OLE is a [[proprietary format|proprietary]] technology developed by [[Microsoft]] that allows embedding and [[hyperlinking|linking]] to [[document]]s and other objects. On a technical level, an OLE object is any object that implements the ''IOleObject'' interface, possibly along with a wide range of other interfaces, depending on the object's needs. Its primary use is for managing [[compound document]]s, but it is also used for transferring data between different [[application software|applications]] using [[drag and drop]] and [[Clipboard (software)|clipboard]] operations.

[[Compound File Binary Format]] (CFBF) is a file format for storing many files and streams within one file on a disk. CFBF is developed by Microsoft and is an implementation of Microsoft [[COM Structured Storage]]. Structured storage is widely used as main file format in Microsoft Office applications including [[Microsoft Word]], [[Microsoft Excel]], Microsoft [[Powerpoint]], [[Microsoft Access]] and is the basis of [[Advanced Authoring Format]].

OLE was part of a grander plan named [[Cairo (operating system)|Cairo]], the code name for a project at Microsoft from 1991 to 1996. Its charter was to build technologies for a next generation operating system that would fulfill [[Bill Gates]]' vision of "''information at your fingertips''".<ref>{{cite web
| url = https://www.youtube.com/watch?v=kL8zoQVJaD8
| title = "Information at Your Fingertips" Keynote - Comdex/Fall 1990
| author = Bill Gates
| authorlink =
| date = 1990
| publisher = Microsoft
| quote = Bill Gates delivered on November 12, 1990 his famous Keynote titled "Information at Your Fingertips"
| accessdate = 2014-05-16
}}</ref><ref>{{cite web
}}</ref><ref>{{cite web
| url = https://www.youtube.com/watch?v=o0O0Xjpjvfc
| url = https://www.youtube.com/watch?v=o0O0Xjpjvfc
| title = "Information at Your Fingertips" #2 Keynote (The Road Ahead) - Comdex 1994
| title = "Information at Your Fingertips" #2 Keynote (The Road Ahead) Comdex 1994
| author = Bill Gates
|last=Gates |first=Bill |author-link=Bill Gates
| authorlink =
| date = 1994
| date = 1994
| publisher = Microsoft
| quote = Bill Gates' "Information At Your Fingertips" keynote speech for Comdex 1995 became the basis for his book The Road Ahead, predicting the next decade in technology – right and wrong. These predictions are enlivened by the interaction between Gates speaking and a made-for-Comdex future crime show.
| publisher = Microsoft
| access-date = 2014-05-16
| quote = Bill Gates' "Information At Your Fingertips" keynote speech for Comdex 1995 became the basis for his book The Road Ahead, predicting the next decade in technology - right and wrong. These predictions are enlivened by the interaction between Gates speaking and a made-for-Comdex future crime show.
}}</ref> Cairo [[Vaporware|never shipped]], although parts of its technologies have since appeared in other products. The [[Windows 95]] [[graphical user interface]] was based on the initial design work that was done on the Cairo user interface. The remaining component is the [[object-based file system]]. It was once planned to be implemented in the form of Windows Future Storage ([[WinFS]]) as part of [[Windows Vista]]. WinFS is the code name for data storage and [[data management|management]] system project based on [[relational database]]s, running on the Windows NT [[file system]] ([[NTFS]]), which is object-oriented in that it can store the NT objects including its NT object identifier. Each NTFS object has an object identifier; a shortcut with a target that's on an NTFS volume also records the object identifier of the shortcut target, and the object identifier of the drive.<ref>{{cite web
| accessdate = 2014-05-16
| url = https://technet.microsoft.com/de-at/magazine/2009.10.windowsconfidential.aspx
}}</ref> Cairo [[Vaporware|never shipped]], although portions of its technologies have since appeared in other products. The [[Windows 95]] [[Graphical user interface|user interface]] was based on the initial design work that was done on the Cairo user interface. The remaining component is the [[object-based file system]]. It was once planned to be implemented in the form of [[WinFS]] as part of [[Windows Vista]]. WinFS (short for Windows Future Storage) is the code name for data storage and [[data management|management]] system project based on [[relational database]]s, running atop [[NTFS]]. The Windows NT [[file system]] NTFS is object-oriented in the sense that it can store the NT objects including its NT object identifier. Each NTFS object has an object identifier; a shortcut with a target that's on an NTFS volume also records the object identifier of the shortcut target, as well as the object identifier of the drive itself.<ref>{{cite web
| title = Windows Confidential: The NT Way (excerpts from "The Old New Thing" book)
| url = http://technet.microsoft.com/de-at/magazine/2009.10.windowsconfidential.aspx
|last=Chen |first=Raymond
| title = Windows Confidential - The NT Way (excerpts from "The Old New Thing" book)
| author = Raymond Chen
| date = 2007
| authorlink =
| publisher = Microsoft
| quote = The Windows NT file system folks looked at the Windows 95 shortcut resolution algorithm and scoffed. " We can do better than that: We're object-oriented!" Each NTFS object has an object identifier; a shortcut with a target that's on an NTFS volume also records the object identifier of the shortcut target, as well as the object identifier of the drive itself.
| date = 2007
| publisher = Microsoft
| access-date = 2014-05-16
}}</ref> WinFS was first demonstrated in 2003 as an advanced storage subsystem for the [[Microsoft Windows]] [[operating system]], designed for [[Persistence (computer science)|persistence]] and management of [[Structured data|structured]], [[Semi-structured model|semi-structured]], and [[unstructured data]]. WinFS development was cancelled in June 2006, with some of its technologies merged into other Microsoft products such as [[Microsoft SQL Server]] 2008 and [[SharePoint|Microsoft SharePoint]]. It was subsequently confirmed in an interview with Bill Gates that Microsoft planned to migrate applications like [[Windows Media Player]], [[Windows Photo Gallery]], [[Microsoft Office Outlook]], etc., to use [[WinFS]] as the data storage back-end.<ref>{{cite web|last=Kornev|first=Daniel |url=http://channel9.msdn.com/ShowPost.aspx?PostID=267149|title=A few words about WinFS: The project is back on track|publisher=Channel 9|date=December 19, 2006}}</ref>
| quote = The Windows NT file system folks looked at the Windows 95 shortcut resolution algorithm and scoffed. " We can do better than that: We're object-oriented!" Each NTFS object has an object identifier; a shortcut with a target that's on an NTFS volume also records the object identifier of the shortcut target, as well as the object identifier of the drive itself.
; NeXTSTEP
| accessdate = 2014-05-16
:During the late 1980s, [[Steve Jobs]] formed the computer company [[NeXT]]. One of NeXT's first tasks was to design an object-oriented operating system, [[NeXTSTEP]]. They did this by adding an object-oriented framework on [[Mach (kernel)|Mach]] and [[Berkeley Software Distribution|BSD]] using the [[Objective-C]] language as a basis. It achieved a niche status in the computing market, notably used by [[Tim Berners-Lee]] developing the first implementation of the [[World Wide Web]].
}}</ref> WinFS was first demonstrated in 2003 as an advanced storage subsystem for the [[Microsoft Windows]] [[operating system]], designed for [[Persistence (computer science)|persistence]] and management of [[Structured data|structured]], [[Semi-structured model|semi-structured]] as well as [[unstructured data]]. The development of WinFS was cancelled in June 2006, with some of its technologies merged into other Microsoft products such as [[Microsoft SQL Server|Microsoft SQL Server 2008]] and [[Microsoft SharePoint]]. It was subsequently confirmed in an interview with Bill Gates that Microsoft planned to migrate applications like [[Windows Media Player]], [[Windows Photo Gallery]], [[Microsoft Office Outlook]], etc. to use [[WinFS]] as the data storage back-end.<ref>{{cite web|author=Daniel Kornev|url=http://channel9.msdn.com/ShowPost.aspx?PostID=267149|title=A few words about WinFS: The project is back on track|publisher=Channel 9|date=December 19, 2006}}</ref>
:NeXTStep later evolved into [[OpenStep]] and the [[Cocoa (API)|Cocoa API]] on [[macOS]] and [[iOS]] ([[iPadOS]], [[watchOS]]).

:OpenStep was provided as an API layer on many operating systems, namely [[HP-UX]], NextStep, [[Solaris (operating system)|Solaris]], and Windows.
=== NeXTSTEP ===
; Oberon System
During the late 1980s, [[Steve Jobs]] formed the computer company [[NeXT]]. One of NeXT's first tasks was to design an object-oriented operating system, [[NeXTSTEP]]. They did this by adding an object-oriented framework atop [[Mach (kernel)|Mach]] and [[BSD]] using the [[Objective-C]] language as a basis. It achieved a niche status in the computing market, notably used by [[Tim Berners-Lee]] developing the first implementation of the [[World Wide Web]].
:[[Oberon (operating system)|Oberon System]] is a single user, object-oriented operating system made for the [[Ceres (workstation)|Ceres]] line of [[workstation]]s (processor: [[National Semiconductor]] [[NS32000]]), developed in the later 1980s at [[ETH Zurich]] by [[Niklaus Wirth]] and [[Jürg Gutknecht]]. It is built entirely from modules of the programming language [[Oberon (programming language)|Oberon]].<ref>{{cite report |last1=Wirth |first1=Niklaus |author1-link=Niklaus Wirth |last2=Gutknecht |first2=Jürg |author2-link=Jürg Gutknecht |date=1988 |title=The Oberon System: Report Number 88 |url=http://e-collection.library.ethz.ch/eserv/eth:3180/eth-3180-01.pdf}}</ref> There are two successors of the Oberon System, ETHOS (see above) and, as of 2023 still maintained, an evolution named ''Active Object System'' (AOS),<ref name="AOSthesis">{{Cite thesis |type=PhD |last=Muller |first=Pieter Johannes |date=2002 |title=The active object system design and multiprocessor implementation |url=http://e-collection.library.ethz.ch/eserv/eth:26082/eth-26082-02.pdf |publisher=Swiss Federal Institute of Technology, Zürich ([[ETH Zurich]])}}</ref> then renamed ''Bluebottle'', then renamed ''[[A2 (operating system)|A2]]''.

; OOSMOS
NeXTStep later evolved into [[OpenStep]] and the [[Cocoa (API)]] on [[Mac OS X]] and [[iOS]].
:The Object-Oriented State Machine Operating System (OOSMOS), written in C, promotes object-oriented encapsulation and implements a full table-driven hierarchical state machine architecture. It generates C code directly from state charts drawn with the open source tool [[UMLet]]. OOSMOS also supports a unique feature call 'state threads' which allows a thread of execution per state. OOSMOS operates on a bare board or in cooperation with an existing operating system.

; Phantom OS
OpenStep was provided as an API layer atop many operating systems, namely [[HP-UX]], NextStep, [[Solaris (operating system)|Solaris]], Windows.
:[[Phantom OS]] adheres to a principle where "everything is an object" and eliminates the concept of a file entirely, instead transparently persisting virtual memory to storage.

; ReactOS
=== OOSMOS ===
:[[ReactOS]] is an open-source operating system intended to be binary compatible with application software and [[device driver]]s made for Microsoft Windows NT versions. Written from scratch, it aims to follow the [[architecture of Windows NT]] designed by Microsoft from the hardware level right through to the application level. This is ''not'' a Linux-based system, and shares ''none'' of the [[Unix|unix architecture]].<ref>{{cite web
The Object-Oriented State Machine Operating System ([[OOSMOS]]), written in C, promotes object-oriented encapsulation and implements a full table-driven hierarchical state machine facility. OOSMOS operates on a bare board or in cooperation with an existing operating system.
| url = http://reactos.org

| title = About ReactOS: Object Based
=== Self ===
| first = Klemens
[[Self (programming language)]] was invented at [[PARC (company)|Xerox PARC]]. It was then developed at [[Stanford University]] and [[Sun Microsystems]].
| last = Friedl

| publisher = ReactOS Project
=== Smalltalk ===
| quote = ReactOS uses an object metaphor that is pervasive throughout the architecture of the system. Not only are all of the things in the UNIX file metaphor viewed as objects by ReactOS, but so are things such as processes and threads, shared memory segments, the global registry database and even access rights.
[[Smalltalk]] was invented at [[Xerox]] in the 1970s. The Smalltalk system is fully object-oriented and needs very little support by [[BIOS]] and the [[run-time system]].
| access-date = 2017-02-19

}}</ref><ref>Filby, J. "ReactOS: An open-source alternative to NT?." ''IEEE Software'' 16.1 (1999): 35–35.</ref>
=== Syllable ===
; Smalltalk
[[Syllable (operating system)|Syllable]] makes heavy use of [[C++]] and for that reason is often compared to [[BeOS]].
:[[Smalltalk]] was invented at [[Xerox]] in the 1970s. The Smalltalk system is fully object-oriented and needs very little support by [[BIOS]] and the [[run-time system]].

; Syllable
=== Symbolics Genera ===
[[Genera (operating system)|Genera]] from [[Symbolics]] is an operating system for [[Lisp machine]]s written in [[ZetaLisp]] and Symbolics [[Common Lisp]]. It makes heavy use of [[Flavors (programming language)|Flavors]] (an early object-oriented extension to Lisp) and the [[Common Lisp Object System]] (CLOS). The development started in the mid 70s at MIT.
:[[Syllable Desktop|Syllable]] makes heavy use of [[C++]] and for that reason is often compared to [[BeOS]].
; Symbolics Genera
:[[Genera (operating system)|Genera]] from [[Symbolics]] is an operating system for [[Lisp machine]]s written in [[ZetaLisp]] and Symbolics [[Common Lisp]]. It makes heavy use of [[Flavors (programming language)|Flavors]] (an early object-oriented extension to Lisp) and the [[Common Lisp Object System]] (CLOS). Development began in the mid 70s at MIT.
; Taligent

:[[Taligent]] was an object-oriented operating system project, begun by [[Apple Inc.]] and jointly developed with [[IBM]] in the 1990s. It was later spun off to an IBM subsidiary and transformed from an operating system to a programming environment.
=== Taligent ===
[[Taligent]] was an object-oriented operating system project, started by [[Apple Inc.]] and jointly developed with [[IBM]] in the 1990s. It was later spun off to an IBM subsidiary and transformed from an operating system to a programming environment.


== See also ==
== See also ==
*[[operating system]]
* [[Operating system]]
*[[object oriented design]]
* [[Object-oriented design]]
* [[Object-oriented programming]]
* [[Plan 9 from Bell Labs]]
* [[Plan 9 from Bell Labs]]


== References ==
== References ==
{{reflist|2}}
{{Reflist|2}}


==External links==
==External links==
{{Commonscat|Object-oriented operating systems}}
* [http://www.sonycsl.co.jp/project/Apertos/ Apertos]
*[http://www.sonycsl.co.jp/project/Apertos/ Apertos] {{Webarchive|url=https://web.archive.org/web/20070928175547/http://www.sonycsl.co.jp/project/Apertos/ |date=2007-09-28 }}
* [http://choices.cs.uiuc.edu/ Choices]
*[http://choices.cs.uiuc.edu/ Choices] {{Webarchive|url=https://web.archive.org/web/20060116064949/http://choices.cs.uiuc.edu/ |date=2006-01-16 }}
* [http://www.research.ibm.com/people/d/dfb/hermes.html Hermes], former IBM project
* [http://www.oosmos.com/ OOSMOS]
*[http://www.research.ibm.com/people/d/dfb/hermes.html Hermes], former IBM project
*[https://www.oosmos.com/ OOSMOS]
* [http://obligement.free.fr/articles_traduction/itwsassenrath_en.php Rebol] aspirations to displace the OS with the language environment itself
*[http://obligement.free.fr/articles_traduction/itwsassenrath_en.php Rebol] aspirations to displace the OS with the language environment


{{Operating system}}
{{Operating system}}


{{DEFAULTSORT:Object-Oriented Operating System}}
<!--Categories-->
[[Category:Operating system technology]]
[[Category:Object-oriented programming]]
[[Category:Object-oriented programming]]
[[Category:Object-oriented operating systems| ]]
[[Category:Operating system technology]]

Latest revision as of 06:13, 11 December 2023

An object-oriented operating system[1] is an operating system that is designed, structured, and operated using object-oriented programming principles.

An object-oriented operating system is in contrast to an object-oriented user interface or programming framework, which can be run on a non-object-oriented operating system like DOS or Unix.

There are already object-based language concepts involved in the design of a more typical operating system such as Unix. While a more traditional language like C does not support object-orientation as fluidly as more recent languages, the notion of, for example, a file, stream, or device driver (in Unix, each represented as a file descriptor) can be considered a good example of objects. They are, after all, abstract data types, with various methods in the form of system calls which behavior varies based on the type of object and which implementation details are hidden from the caller.

Object-orientation has been defined as objects + inheritance, and inheritance is only one approach to the more general problem of delegation that occurs in every operating system.[2] Object-orientation has been more widely used in the user interfaces of operating systems than in their kernels.

Background[edit]

An object is an instance of a class, which provides a certain set of functionalities. Two objects can be differentiated based on the functionalities (or methods) they support. In an operating system context, objects are associated with a resource. Historically, the object-oriented design principles were used in operating systems to provide several protection mechanisms.[1]

Protection mechanisms in an operating system help in providing a clear separation between different user programs. It also protects the operating system from any malicious user program behavior. For example, consider the case of user profiles in an operating system. The user should not have access to resources of another user. The object model deals with these protection issues with each resource acting as an object. Every object can perform only a set of operations. In the context of user profiles, the set of operations is limited by privilege level of a user.[1]

Present-day operating systems use object-oriented design principles for many components of the system, which includes protection.

Examples[edit]

Athene
Athene is an object-based operating system first released in 2000 by Rocklyte Systems.[3][4] The user environment was constructed entirely from objects that are linked together at runtime. Applications for Athene could also be created using this methodology and were commonly scripted using the object scripting language Dynamic Markup Language (DML). Objects could have been shared between processes by creating them in shared memory and locking them as needed for access. Athene's object framework was multi-platform, allowing it to be used in Windows and Linux environments for developing object-oriented programs. The company went defunct and the project abandoned sometime in 2009.
BeOS
BeOS[5] was an object-oriented operating system released in 1995, which used objects and the C++ language for the application programming interface (API). The kernel was written in C with C++ wrappers in user space. The OS did not see mainstream usage and proved commercially unviable, however it has seen continued usage and development by a small enthusiast community.
Choices
Choices is an object-oriented operating system developed at the University of Illinois at Urbana–Champaign.[6][7] It is written in C++ and uses objects to represent core kernel components like the central processing unit (CPU), processes, and so on. Inheritance is used to separate the kernel into portable machine-independent classes and small non-portable dependent classes. Choices has been ported to and runs on SPARC, x86, and ARM.
ETHOS
ETHOS was an experimental object oriented version of the Oberon System (see below) created by Clemens Szyperski for his PhD Thesis[8] written in Oberon-2
GEOS
PC/GEOS is a light-weight object-oriented multitasking graphical operating system with sophisticated window and desktop management featuring scalable fonts. It is mostly written in an object-oriented x86 assembly language dialect and some C/C++ and is designed to run on DOS (similar to Microsoft Windows up to Windows Me). GEOS was developed originally by Berkeley Softworks in 1990, which later became GeoWorks Corporation, and it is continued to be maintained by BreadBox Computer Company. Related software suites were named Ensemble and New Deal Office. Adaptations exist for various palmtops, and 32-bit systems with non-x86-CPUs.
Haiku
Haiku (originally named OpenBeOS), is an open-source replacement for BeOS. It reached its first development milestone in September 2009 with the release of Haiku R1/Alpha 1. The x86 distribution is compatible with BeOS at both source and binary level. Like BeOS, it is written primarily in C++ and provides an object-oriented API. It is actively developed.
IBM i (OS/400, i5/OS)
IBM introduced OS/400 in 1988. This OS ran exclusively on the AS/400 platform. Renamed IBM i in 2008, this operating system and runs exclusively on Power Systems which also can run AIX and Linux. IBM i uses an object-oriented methodology and integrates a database (Db2 for i). The IBM i OS has a 128-bit unique identifier for each object.
IBM OS/2 2.0
IBM's first priority based pre-emptive multitasking, graphical, windows-based operating system included an object-oriented user shell. It was designed for the Intel 80386 that used virtual 8086 mode with full 32-bit support and was released in 1992. ArcaOS, a new OS/2 based operating system initially called Blue Lion[9] is being developed by Arca Noae. The first version was released in May 2017.
IBM TopView
TopView was an object-oriented operating environment that loaded on a PC on DOS, and then took control from DOS. At that point it effectively became an object-oriented operating system with an object-oriented API (TopView API). It was IBM's first multi-tasking, window based, object-oriented operating system for the PC led by David C. Morrill and released in February 1985.
Java-based
Given that Oracle's (formerly Sun Microsystems') Java is today one of the most dominant object-oriented languages, it is no surprise that Java-based operating systems have been attempted. In this area, ideally, the kernel would consist of the bare minimum needed to support a Java virtual machine (JVM). This is the only component of such an operating system that would have to be written in a language other than Java. Built on the JVM and basic hardware support, it would be possible to write the rest of the operating system in Java; even parts of the system that are more traditionally written in a lower-level language such as C, for example device drivers, can be written in Java.
Examples of attempts at such an operating system include JavaOS, JOS,[10] JNode, and JX.
Lisp-based
An object-oriented operating system written in the Lisp dialect Lisp Machine Lisp (and later Common Lisp) was developed at MIT. It was commercialized with Lisp machines from Symbolics, Lisp Machines Inc. and Texas Instruments. Symbolics called their operating system Genera. It was developed with the Flavors object-oriented extension of Lisp, then with New Flavors, and then with the Common Lisp Object System (CLOS).
Xerox developed several workstations with an operating system written in Interlisp-D. Interlisp-D provided object-oriented extensions like LOOPS and CLOS.
Movitz and Mezzano are two more recent attempts at operating systems written in Common Lisp.
Medos-2
Medos-2 is a single user, object-oriented operating system made for the Lilith line of workstations (processor: Advanced Micro Devices (AMD) 2901), developed in the early 1980s at ETH Zurich by Svend Erik Knudsen with advice from Niklaus Wirth. It is built entirely from modules of the programming language Modula-2.[11][12][13] It was succeeded at ETH Zurich by the Oberon system, and a variant named Excelsior was developed for the Kronos workstation, by the Academy of Sciences of the Soviet Union, Siberian branch, Novosibirsk Computing Center, Modular Asynchronous Developable Systems (MARS) project, Kronos Research Group (KRG).[14]
Microsoft Singularity
Singularity is an experimental operating system based on Microsoft's .NET Framework. It is comparable to Java-based operating systems.
Microsoft Windows NT
Windows NT is a family of operating systems (including Windows 7, 8, Phone 8, 8.1, Windows 10, 10 Mobile, Windows 11 and Xbox) produced by Microsoft, the first version of which was released in July 1993. It is a high-level programming language-based, processor-independent, multiprocessing, multi-user operating system. It is best described as object-based rather than object-oriented as it does not include the full inheritance properties of object-oriented languages.[15]
The Object Manager is in charge of managing NT objects. As part of this responsibility, it maintains an internal namespace where various operating system components, device drivers, and Win32 programs can store and lookup objects. The NT Native API provides routines that allow user space (mode) programs to browse the namespace and query the status of objects located there, but the interfaces are undocumented.[16] NT supports per-object (file, function, and role) access control lists allowing a rich set of security permissions to be applied to systems and services. WinObj is a Windows NT program that uses the NT Native API (provided by NTDLL.DLL) to access and display information on the NT Object Manager's name space.[17]
Component Object Model
On the user mode side of Windows, the Component Object Model (COM) is an application binary interface standard for software components introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages. COM is the basis for several other Microsoft technologies and frameworks, including Object Linking and Embedding (OLE), OLE Automation, ActiveX, COM+, Distributed Component Object Model (DCOM), the Windows shell, DirectX, and Windows Runtime. OLE is a proprietary technology developed by Microsoft that allows embedding and linking to documents and other objects. On a technical level, an OLE object is any object that implements the IOleObject interface, possibly along with a wide range of other interfaces, depending on the object's needs. Its primary use is for managing compound documents, but it is also used for transferring data between different applications using drag and drop and clipboard operations.
Compound File Binary Format
Compound File Binary Format (CFBF) is a file format for storing many files and streams within one file on a disk. CFBF is developed by Microsoft and is an implementation of Microsoft COM Structured Storage. Structured storage is widely used as main file format in Microsoft Office applications including Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Microsoft Access and is the basis of Advanced Authoring Format.
Object Linking and Embedding
Object Linking and Embedding (OLE) was part of a grander plan named Cairo, the code name for a project at Microsoft from 1991 to 1996. Its charter was to build technologies for a next generation operating system that would fulfill Bill Gates' vision of "information at your fingertips".[18][19] Cairo never shipped, although parts of its technologies have since appeared in other products. The Windows 95 graphical user interface was based on the initial design work that was done on the Cairo user interface. The remaining component is the object-based file system. It was once planned to be implemented in the form of Windows Future Storage (WinFS) as part of Windows Vista. WinFS is the code name for data storage and management system project based on relational databases, running on the Windows NT file system (NTFS), which is object-oriented in that it can store the NT objects including its NT object identifier. Each NTFS object has an object identifier; a shortcut with a target that's on an NTFS volume also records the object identifier of the shortcut target, and the object identifier of the drive.[20] WinFS was first demonstrated in 2003 as an advanced storage subsystem for the Microsoft Windows operating system, designed for persistence and management of structured, semi-structured, and unstructured data. WinFS development was cancelled in June 2006, with some of its technologies merged into other Microsoft products such as Microsoft SQL Server 2008 and Microsoft SharePoint. It was subsequently confirmed in an interview with Bill Gates that Microsoft planned to migrate applications like Windows Media Player, Windows Photo Gallery, Microsoft Office Outlook, etc., to use WinFS as the data storage back-end.[21]
NeXTSTEP
During the late 1980s, Steve Jobs formed the computer company NeXT. One of NeXT's first tasks was to design an object-oriented operating system, NeXTSTEP. They did this by adding an object-oriented framework on Mach and BSD using the Objective-C language as a basis. It achieved a niche status in the computing market, notably used by Tim Berners-Lee developing the first implementation of the World Wide Web.
NeXTStep later evolved into OpenStep and the Cocoa API on macOS and iOS (iPadOS, watchOS).
OpenStep was provided as an API layer on many operating systems, namely HP-UX, NextStep, Solaris, and Windows.
Oberon System
Oberon System is a single user, object-oriented operating system made for the Ceres line of workstations (processor: National Semiconductor NS32000), developed in the later 1980s at ETH Zurich by Niklaus Wirth and Jürg Gutknecht. It is built entirely from modules of the programming language Oberon.[22] There are two successors of the Oberon System, ETHOS (see above) and, as of 2023 still maintained, an evolution named Active Object System (AOS),[23] then renamed Bluebottle, then renamed A2.
OOSMOS
The Object-Oriented State Machine Operating System (OOSMOS), written in C, promotes object-oriented encapsulation and implements a full table-driven hierarchical state machine architecture. It generates C code directly from state charts drawn with the open source tool UMLet. OOSMOS also supports a unique feature call 'state threads' which allows a thread of execution per state. OOSMOS operates on a bare board or in cooperation with an existing operating system.
Phantom OS
Phantom OS adheres to a principle where "everything is an object" and eliminates the concept of a file entirely, instead transparently persisting virtual memory to storage.
ReactOS
ReactOS is an open-source operating system intended to be binary compatible with application software and device drivers made for Microsoft Windows NT versions. Written from scratch, it aims to follow the architecture of Windows NT designed by Microsoft from the hardware level right through to the application level. This is not a Linux-based system, and shares none of the unix architecture.[24][25]
Smalltalk
Smalltalk was invented at Xerox in the 1970s. The Smalltalk system is fully object-oriented and needs very little support by BIOS and the run-time system.
Syllable
Syllable makes heavy use of C++ and for that reason is often compared to BeOS.
Symbolics Genera
Genera from Symbolics is an operating system for Lisp machines written in ZetaLisp and Symbolics Common Lisp. It makes heavy use of Flavors (an early object-oriented extension to Lisp) and the Common Lisp Object System (CLOS). Development began in the mid 70s at MIT.
Taligent
Taligent was an object-oriented operating system project, begun by Apple Inc. and jointly developed with IBM in the 1990s. It was later spun off to an IBM subsidiary and transformed from an operating system to a programming environment.

See also[edit]

References[edit]

  1. ^ a b c Pashtan, Ariel (1 January 1982). "Object oriented operating systems". Proceedings of the ACM '82 conference on - ACM 82. Association for Computing Machinery (ACM). pp. 126–131. doi:10.1145/800174.809777. ISBN 9780897910859. S2CID 9463966.
  2. ^ Wegner, Peter (December 1987). "Dimensions of Object-based Language Design". ACM SIGPLAN Notices. 22 (12): 168–182. doi:10.1145/38807.38823. Also in Conference Proceedings on Object-oriented Programming Systems, Languages.
  3. ^ "The Athene Operating System". LWN.net. Retrieved 13 February 2017.
  4. ^ "Rocklyte Systems". Rocklyte Systems. Archived from the original on 2006-11-03. Retrieved 2007-02-18.
  5. ^ Sydow, Dan Parks (1999). Programming the Be operating system (1st ed.). Beijing: O'Reilly. ISBN 978-1-56592-467-3.
  6. ^ Campbell, Roy; Johnston, Garry; Russo, Vincent (1 July 1987). "Choices (Class Hierarchical Open Interface for Custom Embedded Systems)". SIGOPS Operating Systems Review (OSR). 21 (3): 9–17. doi:10.1145/29321.29323. ISSN 0163-5980. S2CID 11935474.
  7. ^ "Choices". choices.cs.illinois.edu.
  8. ^ Szyperski, Clemens (1992). Insight ETHOS: On Object-Orientation in Operating Systems (PhD). Zurich, Switzerland: ETH Zürich. ISBN 3-7281-1948-2. ETHZ ecollection.
  9. ^ "Blue Lion, by Arca Noae". Arca Noae. Retrieved 2017-02-18.
  10. ^ "About". JOS (A Free Java-Based Operating System). Retrieved 2012-09-03. The JOS Project is a collaborative undertaking by an international group of Java™ programmers and enthusiasts aimed at the creation of a free and open Java™ based Operating System (JOS). As a collaborative effort, we work together to research how a Java-based operating system should work. Together, we work to build components for a Java-based operating system.
  11. ^ Knudsen, Svend Erik (1983). Medos-2: A Modula-2 Oriented Operating System for the Personal Computer Lilith (PhD). ETH Zurich. doi:10.3929/ethz-a-000300091. hdl:20.500.11850/137906.
  12. ^ Knudsen, Svend Erik (25 October 2000). "Medos in Retrospect". In Böszörményi, László; Gutknecht, Jürg; Pomberger, Gustav (eds.). The School of Niklaus Wirth: The Art of Simplicity. Morgan Kaufmann. pp. 69–86. ISBN 978-1558607231. ISBN 1-55860-723-4 & dpunkt, ISBN 3-932588-85-1.
  13. ^ Sand, Paul A. (September 1984). "The Lilith Personal Computer". Byte. pp. 300–311. Retrieved 6 March 2021. Reprint.
  14. ^ Kuznetsov, D.N.; Nedorya, A.E.; Tarasov, E.V.; Filippov, V.E. "Kronos: a family of processors for high-level languages". Kronos: History of a Project (in Russian). xTech. Retrieved 13 April 2021.
  15. ^ "Object-Based". Microsoft Hardware Development Centre. Retrieved Aug 23, 2015.
  16. ^ Nebbett, Gary (February 20, 2000). Windows NT/2000 Native API Reference. Sams Publishing. p. 528. ISBN 978-1578701995. The Windows NT/2000 Native API Reference provides the first comprehensive look at these undocumented services. A unique tool for software developers, this reference includes documentation of over 200 routines included in the native API, detailed description of routines that are either not directly accessible via the Win32 API, or that offer substantial additional functionality.
  17. ^ Russinovich, Mark. "Windows Sysinternals WinObj". Microsoft. Retrieved 2014-05-16. Obj is a must-have tool if you are a system administrator concerned about security, a developer tracking down object-related problems, or just curious about the Object Manager namespace.
  18. ^ Gates, Bill (1990). ""Information at Your Fingertips" Keynote - Comdex/Fall 1990". Microsoft. Retrieved 2014-05-16. Bill Gates delivered on November 12, 1990 his famous Keynote titled "Information at Your Fingertips"
  19. ^ Gates, Bill (1994). ""Information at Your Fingertips" #2 Keynote (The Road Ahead) – Comdex 1994". Microsoft. Retrieved 2014-05-16. Bill Gates' "Information At Your Fingertips" keynote speech for Comdex 1995 became the basis for his book The Road Ahead, predicting the next decade in technology – right and wrong. These predictions are enlivened by the interaction between Gates speaking and a made-for-Comdex future crime show.
  20. ^ Chen, Raymond (2007). "Windows Confidential: The NT Way (excerpts from "The Old New Thing" book)". Microsoft. Retrieved 2014-05-16. The Windows NT file system folks looked at the Windows 95 shortcut resolution algorithm and scoffed. " We can do better than that: We're object-oriented!" Each NTFS object has an object identifier; a shortcut with a target that's on an NTFS volume also records the object identifier of the shortcut target, as well as the object identifier of the drive itself.
  21. ^ Kornev, Daniel (December 19, 2006). "A few words about WinFS: The project is back on track". Channel 9.
  22. ^ Wirth, Niklaus; Gutknecht, Jürg (1988). The Oberon System: Report Number 88 (PDF) (Report).
  23. ^ Muller, Pieter Johannes (2002). The active object system design and multiprocessor implementation (PDF) (PhD). Swiss Federal Institute of Technology, Zürich (ETH Zurich).
  24. ^ Friedl, Klemens. "About ReactOS: Object Based". ReactOS Project. Retrieved 2017-02-19. ReactOS uses an object metaphor that is pervasive throughout the architecture of the system. Not only are all of the things in the UNIX file metaphor viewed as objects by ReactOS, but so are things such as processes and threads, shared memory segments, the global registry database and even access rights.
  25. ^ Filby, J. "ReactOS: An open-source alternative to NT?." IEEE Software 16.1 (1999): 35–35.

External links[edit]