Unix architecture
{{Short description|Computer operating system architecture}}
{{Refimprove|date=July 2008}}
A Unix architecture is a computer operating system system architecture that embodies the Unix philosophy. It may adhere to standards such as the Single UNIX Specification (SUS) or similar POSIX IEEE standard. No single published standard describes all Unix architecture computer operating systems — this is in part a legacy of the Unix wars.
Description
There are many systems which are Unix-like in their architecture. Notable among these are the Linux distributions. The distinctions between Unix and Unix-like systems have been the subject of heated legal battles, and the holders of the UNIX brand, The Open Group, object to "Unix-like" and similar terms.
For distinctions between SUS branded UNIX architectures and other similar architectures, see Unix-like.
Kernel
A Unix kernel — the core or key components of the operating system — consists of many kernel subsystems like process management, scheduling, file management, device management, network management, memory management, and dealing with interrupts from hardware devices.
Each of the subsystems has some features:
- Concurrency: As Unix is a multiprocessing OS, many processes run concurrently to improve the performance of the system.{{disputed inline |reason=This is not about performance. Concurrent processes are needed to make time-sharing work, which is what Unix was originally about. |date=April 2015}}
- Virtual memory (VM): Memory management subsystem implements the virtual memory concept and users need not worry about the executable program size and the RAM size.{{disputed inline |reason=Virtual memory came late to Unix. It wasn't in the PDP-11 versions and early 1980s low-end ports, and wasn't fully exploited (mmap) until ca. 1990. |date=April 2015}}
- Paging: It is a technique to minimize the internal as well as the external fragmentation in the physical memory.{{disputed inline |reason=Demand paging is not a requirement of Unix systems; see previous note on virtual memory.|date=September 2024}}
- Virtual file system (VFS): A VFS is a file system used to help the user to hide the different file systems complexities. A user can use the same standard file system related calls to access different file systems.{{disputed inline |reason=SunOS 2.0 or so was one of the first UNIXes to have a VFS layer; the original UNIXes had only one file system type.|date=September 2024}}
The kernel provides these and other basic services: interrupt and trap handling, separation between user and system space, system calls, scheduling, timer and clock handling, file descriptor management.
Features
Some key features of the Unix architecture concept are:
- Unix systems use a centralized operating system kernel which manages system and process activities.
- All non-kernel software is organized into separate, kernel-managed processes.
- Unix systems are preemptively multitasking: multiple processes can run at the same time, or within small time slices and nearly at the same time, and any process can be interrupted and moved out of execution by the kernel. This is known as thread management.
- Files are stored on disk in a hierarchical file system, with a single top location throughout the system (root, or "/"), with both files and directories, subdirectories, sub-subdirectories, and so on below it.
- With few exceptions, devices and some types of communications between processes are managed and visible as files or pseudo-files within the file system hierarchy. This is known as everything is a file. However, Linus Torvalds states that this is inaccurate and may be better rephrased as "everything is a stream of bytes".{{cite web|last=Torvalds|first=Linus|title=signalfd v2 - signalfd core|url=http://yarchive.net/comp/linux/everything_is_file.html}}
The UNIX operating system supports the following features and capabilities:
Criticism
The UNIX-HATERS Handbook covers some of these design features as failures from the user point of view. However, although some information is quite dated and cannot be applied to modern Unixes or Unix-like operating systems such as Linux, Eric S. Raymond discovered that several issues are still prevailing, while others were resolved. Raymond concludes that not all concepts behind Unix can be deemed as non-functional even though the book's intention may have been to portray Unix as inferior without encouraging discussions with developers to actually fix the issues.{{cite web|last=Raymond|first=Eric S.|title=The Unix Hater's Handbook, Reconsidered|date=30 September 2008 |url=http://esr.ibiblio.org/?p=538}}