Content deleted Content added
correction Tags: Visual edit Mobile edit Mobile web edit Advanced mobile edit |
Guy Harris (talk | contribs) →Further reading: Use {{cite book}} for a book. |
||
(37 intermediate revisions by 26 users not shown) | |||
Line 1:
{{Short description|Software that manages computer hardware resources}}
{{pp-vandalism|small=yes}}
{{pp-move
{{Use dmy dates|date=July 2015}}
{{OS}}
Line 10:
For hardware functions such as [[input and output]] and [[memory allocation]], the operating system acts as an intermediary between programs and the computer hardware,<ref>{{cite book | last = Stallings | title = Operating Systems, Internals and Design Principles | publisher = Prentice Hall | year = 2005 | ___location = Pearson |page=6}}</ref><ref>{{cite book | last = Dhotre| first = I.A.| title = Operating Systems. | publisher = Technical Publications | year = 2009 |page=1}}</ref> although the application code is usually executed directly by the hardware and frequently makes [[system call]]s to an OS function or is [[interrupt]]ed by it. Operating systems are found on many devices that contain a computer{{snd}}from cellular phones and video game consoles to [[web server]]s and [[supercomputer]]s.
Some operating systems require installation or may come pre-installed with purchased computers ([[OEM]]-installation), whereas others may run directly from media (i.e. [[live CD]]) or flash memory (i.e. a LiveUSB from a [[USB flash drive|USB]] stick).
==Definition and purpose==
An operating system is difficult to define,{{sfn|Tanenbaum|Bos|2023|p=4}} but has been called "the [[abstraction layer|layer of software]] that manages a computer's resources for its users and their [[Application software|application]]s".{{sfn|Anderson|Dahlin|2014|p=6}} Operating systems include the software that is always running, called a [[Kernel (operating system)|kernel]]—but can include other software as well.{{sfn|Tanenbaum|Bos|2023|p=4}}{{sfn|Silberschatz et al.|2018|p=6}} The two other types of programs that can run on a computer are [[
There are three main purposes that an operating system fulfills:{{sfn|Anderson|Dahlin|2014|p=7}}
*Operating systems allocate resources between different applications, deciding when they will receive [[central processing unit]] (CPU) time or space in [[computer memory|memory]].{{sfn|Anderson|Dahlin|2014|p=7}} On modern [[personal
*Operating systems provide an interface that abstracts the details of accessing [[Computer hardware|hardware]] details (such as physical memory) to make things easier for programmers.{{sfn|Anderson|Dahlin|2014|p=7}}{{sfn|Tanenbaum|Bos|2023|p=5}} [[Virtualization]] also enables the operating system to mask limited hardware resources; for example, [[virtual memory]] can provide a program with the illusion of nearly unlimited memory that exceeds the computer's actual memory.{{sfn|Anderson|Dahlin|2014|p=11}}
*Operating systems provide common services, such as an interface for accessing network and disk devices. This enables an application to be run on different hardware without needing to be rewritten.{{sfn|Anderson|Dahlin|2014|pp=7, 9, 13}} Which services to include in an operating system varies greatly, and this functionality makes up the great majority of code for most operating systems.{{sfn|Anderson|Dahlin|2014|pp=12–13}}
Line 24:
==Types of operating systems==
===Multicomputer operating systems===
With [[multiprocessor]]s multiple CPUs share memory. A [[multicomputer]] or [[cluster computer]] has multiple CPUs, each of which [[distributed memory|has its own memory]]. Multicomputers were developed because large multiprocessors are difficult to engineer and prohibitively expensive;{{sfn|Tanenbaum|Bos|2023|p=557}} they are universal in [[cloud computing]] because of the size of the machine needed.{{sfn|Tanenbaum|Bos|2023|p=558}} The different CPUs often need to send and receive messages to each other;{{sfn|Tanenbaum|Bos|2023|p=565}} to ensure good performance, the operating systems for these machines need to minimize this copying of [[Network packet|packet]]s.{{sfn|Tanenbaum|Bos|2023|p=562}} Newer systems are often [[multiqueue]]—separating groups of users into separate [[Priority queue|queue]]s—to reduce the need for packet copying and support more concurrent users.{{sfn|Tanenbaum|Bos|2023|p=563}} Another technique is [[remote direct memory access]], which enables each CPU to access memory belonging to other CPUs.{{sfn|Tanenbaum|Bos|2023|p=565}} Multicomputer operating systems often support [[remote procedure call]]s where a CPU can call a [[Procedural programming|procedure]] on another CPU,{{sfn|Tanenbaum|Bos|2023|p=569}} or [[distributed shared memory]], in which the operating system uses [[virtualization]] to generate shared memory that does not
===Distributed systems===
Line 30:
===Embedded===
[[Embedded operating system]]s are designed to be used in [[Embedded system|embedded computer systems]], whether they are [[internet of things]] objects or not connected to a network. Embedded systems include many household appliances. The distinguishing factor is that they do not load user-installed software. Consequently, they do not need protection between different applications, enabling simpler designs. Very small operating systems might run in less than 10 [[kilobytes]],{{sfn|Tanenbaum|Bos|2023|pp=37-38}} and the smallest are for [[smart cards]].{{sfn|Tanenbaum|Bos|2023|p=39}} Examples include [[
===Real-time===
Line 63:
}}</ref>), [[Single address space operating system|single address space]], machine image that can be deployed to cloud or embedded environments.
The operating system code and application code are not executed in separated [[Protection ring|protection domains]] (there is only a single application running, at least conceptually, so there is no need to prevent interference between applications) and OS services are accessed via simple library calls (potentially [[Inline expansion|inlining]] them based on compiler thresholds), without the usual overhead of [[
<ref name="rise-of-libOS">{{cite web
|url=https://www.sigarch.org/leave-your-os-at-home-the-rise-of-library-operating-systems/
Line 92:
[[File:IBM system 360-50 console - MfK Bern.jpg|thumb|IBM System/360 Model 50 operator's console and CPU; the operator's console is a [[computer terminal|terminal]] used by the operating system to communicate with the operator.]]
The first computers in the late 1940s and 1950s were directly programmed either with [[plugboard]]s or with [[machine code]] inputted on media such as [[punch card]]s, without [[programming language]]s or operating systems.{{sfn|Tanenbaum|Bos|2023|p=8}} After the introduction of the [[transistor]] in the mid-1950s, [[mainframe]]s began to be built. These still needed professional operators{{sfn|Tanenbaum|Bos|2023|p=8}} who manually do what a modern operating system would do, such as scheduling programs to run,<ref name="OSTEP book">
Around the same time, [[teleprinter]]s began to be used as [[computer terminal|terminal]]s so multiple users could access the computer simultaneously. The operating system [[MULTICS]] was intended to allow hundreds of users to access a large computer. Despite its limited adoption, it can be considered the precursor to [[cloud computing]]. The [[UNIX]] operating system originated as a development of MULTICS for a single user.{{sfn|Tanenbaum|Bos|2023|pp=13–14}} Because UNIX's [[source code]] was available, it became the basis of other, incompatible operating systems, of which the most successful were [[AT&T]]'s [[System V]] and the [[University of California]]'s [[Berkeley Software Distribution]] (BSD).{{sfn|Tanenbaum|Bos|2023|pp=14–15}} To increase compatibility, the [[IEEE]] released the [[POSIX]] standard for operating system [[application programming interface]]s (APIs), which is supported by most UNIX systems. [[MINIX]] was a stripped-down version of UNIX, developed in 1987 for educational uses, that inspired the commercially available, [[free software]] [[Linux]]. Since 2008, MINIX is used in controllers of most [[Intel]] [[microchips]], while Linux is widespread in [[data center]]s and [[Android (operating system)|Android]] smartphones.{{sfn|Tanenbaum|Bos|2023|p=15}}
===Microcomputers===
[[File:MS-Dos screenshot.png|thumb|[[Command-line interface]] of the [[MS-DOS]] operating system]]
[[File:System 1 File Edit.png|thumb|[[Graphical user interface]] of a [[Macintosh]]]]
The invention of [[large scale integration]] enabled the production of [[personal computer]]s (initially called [[microcomputer]]s) from around 1980.{{sfn|Tanenbaum|Bos|2023|pp=15–16}} For around five years, the [[CP/M]] (Control Program for Microcomputers) was the most popular operating system for microcomputers.{{sfn|Tanenbaum|Bos|2023|p=16}} Later, IBM bought the [[DOS]] (Disk Operating System) from [[Microsoft]]. After modifications requested by IBM, the resulting system was called [[MS-DOS]] (
[[Apple Inc.|Apple]]'s [[Macintosh]] was the first popular computer to use a [[graphical user interface]] (GUI). The GUI proved much more [[user friendly]] than the text-only [[command-line interface]] earlier operating systems had used. Following the success of Macintosh, MS-DOS was updated with a GUI overlay called [[Windows]]. Windows later was rewritten as a stand-alone operating system, borrowing so many features from another ([[VAX VMS]]) that a large [[legal settlement]] was paid.{{sfn|Tanenbaum|Bos|2023|p=17}} In the twenty-first century, Windows continues to be popular on personal computers but has less [[market share]] of servers. UNIX operating systems, especially Linux, are the most popular on [[enterprise system]]s and servers but are also used on [[mobile
On mobile devices, [[Symbian OS]] was dominant at first, being usurped by [[BlackBerry OS]] (introduced 2002) and [[iOS]] for [[iPhone]]s (from 2007). Later on, the open-source [[Android (operating system)|Android]] operating system (introduced 2008), with a Linux kernel and a C library ([[Bionic (software)|Bionic]]) partially based on BSD code, became most popular.{{sfn|Tanenbaum|Bos|2023|pp=19–20}}
==Components==
The components of an operating system are designed to ensure that various parts of a computer function cohesively.
===Kernel===
Line 201 ⟶ 202:
}}</ref> Similarly, both hardware and software interrupts execute an [[Interrupt handler|interrupt service routine]].
Software interrupts may be normally occurring events. It is expected that a [[
| last = Kerrisk
| first = Michael
Line 246 ⟶ 247:
| page = 200
| isbn = 0-13-201799-7
}}</ref> <code>pid</code> is the [[process identifier]] of the receiving process. <code>signum</code> is the signal number (in [[mnemonic]] format){{efn|Examples include [[
| last = Kerrisk
| first = Michael
Line 326 ⟶ 327:
}}</ref>
Some computers require an interrupt for each character or word, costing a significant amount of CPU time. [[Direct memory access]] (DMA) is an architecture feature to allow devices to bypass the CPU and access [[random-access memory|main memory]] directly.<ref name=A22-6821-7-storage>{{cite
|author = IBM
|title = IBM System/360 Principles of Operation
Line 356 ⟶ 357:
=====Interrupt-driven I/O=====
{{Expand section|date=April 2022}}
When a [[user (computing)|computer user]] types a key on the keyboard, typically the character appears immediately on the screen. Likewise, when a user moves a [[computer mouse|mouse]], the [[Cursor (user interface)|cursor]] immediately moves across the screen. Each keystroke and mouse movement generates an ''interrupt'' called ''Interrupt-driven I/O''. An interrupt-driven I/O occurs when a process causes an interrupt for every character<ref name="sco-ch5-p294"/> or word<ref>{{cite
|title = Users Handbook - PDP-7
|id = F-75
Line 394 ⟶ 395:
}}</ref> The operating system maintains this table to keep track of which processes are waiting for which devices. One field in the table is the [[memory address]] of the process control block.
* Place all the characters to be sent to the device into a [[random-access memory|memory buffer]].<ref name="sco-ch5-p308_b"/>
* Set the memory address of the memory buffer to a predetermined
| last = Tanenbaum
| first = Andrew S.
Line 446 ⟶ 447:
Among other things, a multiprogramming operating system [[kernel (operating system)|kernel]] must be responsible for managing all system memory which is currently in use by the programs. This ensures that a program does not interfere with memory already in use by another program. Since programs time share, each program must have independent access to memory.
Cooperative memory management, used by many early operating systems, assumes that all programs make voluntary use of the [[kernel (operating system)|kernel]]'s memory manager, and do not exceed their allocated memory. This system of memory management is almost never seen
[[Memory protection]] enables the [[kernel (operating system)|kernel]] to limit a process' access to the computer's memory. Various methods of memory protection exist, including [[memory segmentation]] and [[paging]]. All methods require some level of hardware support (such as the [[80286]] MMU), which does not exist in all computers.
Line 466 ⟶ 467:
* The address might refer to memory that has restricted access due to, e.g., [[Memory protection#Protection keys|key]], [[Memory protection#Protection rings|ring]].}} memory, but nonetheless has been allocated to it, the kernel is interrupted {{See above|{{Section link||Memory management}}}}. This kind of interrupt is typically a [[page fault]].
When the kernel detects a page fault it generally adjusts the virtual memory range of the program which triggered it, granting it access to the memory requested. This gives the kernel discretionary power over where a particular application's memory is stored, or even whether or not it has
In modern operating systems, memory which is accessed less frequently can be temporarily stored on a disk or other media to make that space available for use by other programs. This is called [[paging|swapping]], as an area of memory can be used by multiple programs, and what that memory area contains can be swapped or exchanged on demand.
Line 499 ⟶ 500:
{{Main|Computer security}}
Security means protecting users from other users of the same computer, as well as from those who seeking remote access to it over a network.{{sfn|Tanenbaum|Bos|2023|pp=605-606}} <!-- A [[Vulnerability (computing)|vulnerability]] is when a bug can be exploited to compromise the system or its data; an [[Exploit (computer security)|exploit]] is the signal needed to trigger the bug causing the vulnerability.{{sfn|Tanenbaum|Bos|2023|p=606}} Often the goal of the attacker is to install [[malware]], whether in the form of a [[computer virus|virus]], [[computer worm|worm]], or [[Trojan (malware)|Trojan]].{{sfn|Tanenbaum|Bos|2023|p=607}} --> Operating systems security rests on achieving the [[CIA triad]]: confidentiality (unauthorized users cannot access data), integrity (unauthorized users cannot modify data), and availability (ensuring that the system remains available to authorized users, even in the event of a [[denial of service attack]]).{{sfn|Tanenbaum|Bos|2023|p=608}} As with other computer systems, isolating [[security ___domain]]s—in the case of operating systems, the kernel, processes, and [[virtual machine]]s—is key to achieving security.{{sfn|Tanenbaum|Bos|2023|p=609}} Other ways to increase security include simplicity to minimize the [[attack surface]], locking access to resources by default, checking all requests for authorization, [[principle of least authority]] (granting the minimum privilege essential for performing a task), [[privilege separation]], and reducing shared data.{{sfn|Tanenbaum|Bos|2023|pp=609–610}}
Some operating system designs are more secure than others. Those with no isolation between the kernel and applications are least secure, while those with a [[monolithic kernel]] like most general-purpose operating systems are still vulnerable if any part of the kernel is compromised. A more secure design features [[microkernel]]s that separate the kernel's privileges into many separate security domains and reduce the consequences of a single kernel breach.{{sfn|Tanenbaum|Bos|2023|p=612}} [[Unikernel]]s are another approach that improves security by minimizing the kernel and separating out other operating systems functionality by application.{{sfn|Tanenbaum|Bos|2023|p=612}}
Most operating systems are written in [[C (programming language)|C]] or [[C++]], which create potential vulnerabilities for exploitation. Despite attempts to protect against them, vulnerabilities are caused by [[buffer overflow]] attacks, which are enabled by the lack of [[bounds checking]].{{sfn|Tanenbaum|Bos|2023|pp=648, 657}} <!-- Other types of vulnerability in operating systems written in C and C++ include [[format string attack]]s, which exploit lack of [[type checking]] to [[code injection|inject malicious code]],{{sfn|Tanenbaum|Bos|2023|pp=658, 661}} [[use-after-free attack]]s that rely on [[C dynamic memory allocation|dynamically allocated memory]],{{sfn|Tanenbaum|Bos|2023|p=661}} and [[null pointer dereference attack]]s that an attacker can exploit to crash a computer.{{sfn|Tanenbaum|Bos|2023|p=664}} --> Hardware vulnerabilities, some of them [[
Operating systems security is hampered by their increasing complexity and the resulting inevitability of bugs.{{sfn|Tanenbaum|Bos|2023|pp=605, 617–618}} Because [[formal verification]] of operating systems may not be feasible, developers use operating system [[
===User interface===
Line 528 ⟶ 529:
If an application is written for use on a specific operating system, and is [[ported]] to another OS, the functionality required by that application may be implemented differently by that OS (the names of functions, meaning of arguments, etc.) requiring the application to be adapted, changed, or otherwise [[software maintenance|maintained]].<!--There really ought to be a discussion of ''software modules'' somewhere, such as those that are neither API's nor Plug-Ins (not sure what those are), but which are either hard (on cartridge), soft (on diskette), or otherwise installable by downloading). -->
This cost in supporting operating systems diversity can be avoided by instead writing applications
Another approach is for operating system vendors to adopt standards. For example, [[POSIX]] and [[operating system abstraction layer|OS abstraction layers]] provide commonalities that reduce porting costs.
Line 535 ⟶ 536:
{{Further|Usage share of operating systems|Comparison of operating systems}}
{{as of|2024|09|}}, [[Android (operating system)|Android]] (based on the Linux kernel) is the most popular operating system with a 46% market share, followed by [[Microsoft Windows]] at 26%, [[iOS]] and [[iPadOS]] at 18%, [[macOS]] at 5%, and [[Linux]] at 1%. Android, iOS, and iPadOS are [[mobile operating system]]s, while Windows, macOS, and Linux are desktop operating systems.<ref name="gs.statcounter.com"/>
===Linux===
{{Main|Linux}}
[[File:Layers of a Linux system.png|thumb|upright=1.7|[[Abstraction layer|Layer]]s of a Linux system]]
[[Linux]] is a [[free software]] distributed under the [[GNU General Public License]] (GPL), which means that all of its derivatives are legally required to release their [[source code]].{{sfn|Silberschatz et al.|2018|pp=779–780}} Linux was designed by programmers for their own use, thus emphasizing simplicity and consistency, with a small number of basic elements that can be combined in nearly unlimited ways, and avoiding redundancy.{{sfn|Tanenbaum|Bos|2023|pp=713–714}}
Its design is similar to other UNIX systems not using a [[microkernel]].{{sfn|Silberschatz et al.|2018|p=780}} It is written in [[C (programming language)|C]]<ref>{{cite news |last1=Vaughan-Nichols |first1=Steven |title=Linus Torvalds prepares to move the Linux kernel to modern C |url=https://www.zdnet.com/article/linus-torvalds-prepares-to-move-the-linux-kernel-to-modern-c/ |access-date=7 February 2024 |work=ZDNET |date=2022 |language=en}}</ref> and uses [[UNIX System V]] syntax, but also supports [[BSD]] syntax. Linux supports standard UNIX networking features, as well as the full suite of UNIX tools, while [[multiuser|supporting multiple users]] and employing [[preemptive multitasking]]. Initially of a minimalist design, Linux is a flexible system that can work in under 16 [[megabytes|MB]] of [[RAM]], but still is used on large [[multiprocessor]] systems.{{sfn|Silberschatz et al.|2018|p=780}} Similar to other UNIX systems, Linux [[
[[Android (operating system)|Android]] is a partially open-source operating system closely based on Linux and has become the most widely used operating system by users, due to its popularity on [[smartphones]] and, to a lesser extent, [[embedded system]]s needing a GUI, such as "[[smart watch]]es, [[Android Automotive
▲Its design is similar to other UNIX systems not using a [[microkernel]].{{sfn|Silberschatz et al.|2018|p=780}} It is written in [[C (programming language)|C]]<ref>{{cite news |last1=Vaughan-Nichols |first1=Steven |title=Linus Torvalds prepares to move the Linux kernel to modern C |url=https://www.zdnet.com/article/linus-torvalds-prepares-to-move-the-linux-kernel-to-modern-c/ |access-date=7 February 2024 |work=ZDNET |date=2022 |language=en}}</ref> and uses [[UNIX System V]] syntax, but also supports [[BSD]] syntax. Linux supports standard UNIX networking features, as well as the full suite of UNIX tools, while [[multiuser|supporting multiple users]] and employing [[preemptive multitasking]]. Initially of a minimalist design, Linux is a flexible system that can work in under 16 [[megabytes|MB]] of [[RAM]], but still is used on large [[multiprocessor]] systems.{{sfn|Silberschatz et al.|2018|p=780}} Similar to other UNIX systems, Linux [[Software distribution|distribution]]s are composed of a [[Linux kernel|kernel]], [[system library|system libraries]], and [[system utilities]].{{sfn|Silberschatz et al.|2018|p=781}} Linux has a [[graphical user interface]] (GUI) with a desktop, folder and file icons, as well as the option to access the operating system via a [[command line]].{{sfn|Tanenbaum|Bos|2023|pp=715–716}}
▲[[Android (operating system)|Android]] is a partially open-source operating system closely based on Linux and has become the most widely used operating system by users, due to its popularity on [[smartphones]] and, to a lesser extent, [[embedded system]]s needing a GUI, such as "[[smart watch]]es, [[Android Automotive |automotive dashboard]]s, airplane seatbacks, [[medical devices]], and [[home appliance]]s".{{sfn|Tanenbaum|Bos|2023|pp=793–794}} Unlike Linux, much of Android is written in [[Java (programming language)|Java]] and uses [[object-oriented design]].{{sfn|Tanenbaum|Bos|2023|p=793}}
===Microsoft Windows===
{{Main|Microsoft Windows}}
[[File:Diagram of a security descriptor for a file on Windows.png|thumb|upright=1.3|Security descriptor for a file that is read-only by default, specified no access for Elvis, read/write access for Cathy, and full access for Ida, the owner of the file{{sfn|Tanenbaum|Bos|2023|pp=1021-1022}}]]
Windows is a [[proprietary]] operating system that is widely used on desktop computers, laptops, tablets, phones, [[workstation]]s, [[enterprise server]]s, and [[Xbox]] consoles.{{sfn|Tanenbaum|Bos|2023|p=871}} The operating system was designed for "security, reliability, compatibility, high performance, extensibility, portability, and international support"—later on, [[Energy efficiency in operating systems|energy efficiency]] and support for [[dynamic device]]s also became priorities.{{sfn|Silberschatz et al.|2018|p=826}}
[[Windows Executive]] works via [[Object Manager (Windows)|kernel-mode objects]] for important data structures like processes, threads, and sections (memory objects, for example files).{{sfn|Tanenbaum|Bos|2023|p=1035}} The operating system supports [[demand paging]] of [[virtual memory]], which speeds up I/O for many applications. I/O [[device drivers]] use the [[Windows Driver Model]].{{sfn|Tanenbaum|Bos|2023|p=1035}} The [[NTFS]] file system has a master table and each file is represented as a [[Record (computer science)|record]] with [[metadata]].{{sfn|Tanenbaum|Bos|2023|p=1036}} The scheduling includes [[preemptive multitasking]].{{sfn|Silberschatz et al.|2018|p=821}} Windows has many security features;{{sfn|Silberschatz et al.|2018|p=827}} especially important are the use of [[access-control list]]s and [[safety integrity level|integrity levels]]. Every process has an authentication token and each object is given a security descriptor. Later releases have added even more security features.{{sfn|Tanenbaum|Bos|2023|p=1036}}
Line 554 ⟶ 557:
{{div col}}
* [[Comparison of operating systems]]
* [[DBOS]]
* [[Interruptible operating system]]
* [[List of operating systems]]
* [[List of pioneers in computer science]]
* [[Glossary of operating systems terms]]
* [[Microcontroller]]
* [[Network operating system]]
* [[Object-oriented operating system]]
* [[Lisp machine]]
* [[Operating System Projects]]
* [[System Commander]]
Line 587 ⟶ 586:
* {{cite book | last = Bic| first = Lubomur F. |author2=Shaw, Alan C. | title = Operating Systems | publisher = [[Prentice Hall]] | year = 2003 | ___location = Pearson }}
* {{cite book | last = Silberschatz | first = Avi |author2=Galvin, Peter |author3=Gagne, Greg | title = Operating Systems Concepts | publisher = [[John Wiley & Sons]] | year = 2008 | isbn = 978-0-470-12872-5 }}
* {{cite book |last1=O'Brien
* {{cite book |last1=Leva |first1=Alberto |last2=Maggio |first2=Martina |last3=Papadopoulos |first3=Alessandro Vittorio |last4=Terraneo |first4=Federico |title=Control-based Operating System Design |publisher=[[Institution of Engineering and Technology|IET]] |year=2013 |isbn=978-1-84919-609-3}}
*{{cite journal |last1=Richet |first1=Jean-Loup |last2=Bouaynaya |first2=Wafa |title=Understanding and Managing Complex Software Vulnerabilities: An Empirical Analysis of Open-Source Operating Systems |journal=Systèmes d'information & management |date=2023 |volume=28 |issue=1 |pages=87–114 |doi=10.54695/sim.28.1.0087 |doi-broken-date=
*{{cite book |last1=Silberschatz |first1=Abraham |last2=Galvin |first2=Peter B. |last3=Gagne |first3=Greg |title=Operating System Concepts |date=2018 |publisher=Wiley |isbn=978-1-119-32091-3 |edition=10 |url=https://archive.org/details/operating-system-concepts-10th |language=en-us|ref={{sfnref|Silberschatz et al.|2018}}}}
*{{cite book |last1=Tanenbaum |first1=Andrew S. |last2=Bos |first2=Herbert |title=Modern Operating Systems, Global Edition |date=2023 |publisher=Pearson Higher Ed |isbn=978-1-292-72789-9 |language=en}}
Line 598 ⟶ 597:
{{Commons category|Operating systems}}
{{Wikiversity|Operating Systems}}
* [http://www.cbi.umn.edu/iterations/haigh.html Multics History] and the history of operating systems
|