قالب وردپرس درنا توس
Home / Tips and Tricks / Is macOS UNIX? (And what does that mean?)

Is macOS UNIX? (And what does that mean?)



  A MacBook Pro with a partially open lid and bright screen on the keyboard.
Razvan Franco Nitoi / Shutterstock

Is macOS UNIX or just Unix? Or is it Unix-like? We answer the endless debate and explain standards like POSIX and SUS.

macOS: UNIX or not?

This topic raises a number of different questions. What is the lineage of macOS? How much of this hereditary material is still present in macOS today and does it matter? Before we can begin to answer, whether it's UNIX, Unix, or Unix-like, we need to familiarize ourselves with the meanings of those terms. Who decides whether it is Unix or UNIX and what criteria they use?

Let's start at the beginning.

Unix was founded fifty years ago at Bell Labs, a research and development company of AT & T. Fast forward to 1

973 and version 4 of Unix, which was rewritten in the C programming language. This made the operating system much more portable and easier to transfer to different hardware platforms. That same year, Ken Thompson and Dennis Ritchie, two of the key Unix architects, presented a paper on operating systems at a conference. Immediately, they received requests for copies of the operating system.

Due to a 1956 approval decree, AT & T had to "refrain from doing business other than providing communications services to joint network operators". Unix did not qualify as something AT & T could benefit from. The company has done something remarkable for this time: distributing Unix as a source code with a liberal license. Small costs involved shipping and packaging as well as a "reasonable license fee".

A distribution of Unixes

Unix was provided "as is", so it was not supported. As a result, a Unix community began to band together to help members patch and expand Unix. So you can get the source code, change it and get support from the community. This has a familiar sound. Various Unix variants appeared, which were adapted and adapted to the respective organization.

Bob Fabry, a computer science professor at UC Berkeley, was a member of the program committee of the Symposium on Operating System Principles of 1973. He listened to a presentation by Thompson and Ritchie entitled The UNIX Time-Sharing System .

Fabry requested a copy of the operating system, and in 1974 Unix was installed on a PDP / 11 under the Computer Sciences Research Group (CSRG) at UC Berkeley. Significantly, Ken Thompson spent a year working on what quickly became a university unix flavor of his own. Copies of the UC Berkeley changes and additions have been distributed and became known as the Berkeley Software Distribution (BSD). Ultimately, these distributions became part of an entire Unix system that is still known as BSD. Version numbers like 4.2BSD identified the different versions.

In 1984, AT & T was released from the 1956 approval decree restrictions and was able to properly market its operating system. It contained BSD code like TCP / IP vi and the C shell csh. Despite this cross-pollination and cooperation, there were difficulties in licensing. BSD contained AT & T code that was not open source, but the BSD elements were.

A version of BSD without AT & T code was developed to circumvent these problems. However, when the AT & T code was removed, about 20 percent of the kernel was missing. William Jolitz wrote the missing parts, and this version of Unix was released as 386BSD. The 386BSD project came to a halt, but in 1993, NetBSD and FreeBSD projects emerged from its source code base.

That's how we got a piece of the puzzle: FreeBSD.

NeXTSTEP

After being fired by Apple, Inc. In 1985, Steve Jobs founded NeXT, Inc. NeXT NeXTSTEP was developed as the operating system for the workstation product line. It used BSD as the code base, but introduced a completely different kernel.

NeXT used a modified version of the Mach microkernel and 4.3BSD to make NeXTSTEP, which is the second part of this puzzle. Mach was developed at Carnegie Mellon to facilitate the study of distributed and parallel arithmetic. The research team used BSD as the operating system and replaced the kernel rather than writing its own operating system.

XNU

In 1996, Apple, Inc. acquired NeXT, Inc. and acquired NeXTSTEP. Apple began developing the operating system, which eventually became MacOS via Mac OS X. It updated the Mach kernel and replaced it with the enhanced version that the Open Software Foundation developed and used for the OSF / 1 operating system. Apple also updated the BSD components with updated and improved versions of the FreeBSD distribution.

Apple brought elements of the BSD kernel back into the Mach kernel. A hybrid kernel has also been developed that combines the features of monolithic and microkernel architectures.

The I / O kit that Apple developed based on the NeXTSTEP DriverKit was also included. This allowed adding drivers to a kernel without having to change them every time.

XNU is the third part of the puzzle.

The POSIX and SUS standards

1996 put two standards committees X / Open and the Open Software Foundation – merged into the Open Group.

The Open Group is the certification body for the UNIX brand. In other words, it has to stamp your operating system as standard-compliant before you can call it UNIX. UNIX in capital letters is the sign of conformity.

The categories are as follows:

  • Unix: A family of operating systems. This family includes both UNIX operating systems and Unix-like operating systems.
  • UNIX Operating Systems : These have been certified as standard compliant.
  • Unix-like operating systems systems : These look and work like Unix, but are not certified as compliant.

Of course it is quite possible that some operating systems in the "Unix-like" category will be tested tomorrow and found to be compliant. These are currently effective UNIX, but can only be classified as Unix, since they do not yet have the stamp.

There are two standards that certify UNIX: POSIX and Single UNIX Specification (SUS). SUS is a superset of POSIX. This may be POSIX compliant, but that does not make it UNIX. However, if something is SUS compliant, it is a UNIX.

POSIX and the SUS form large document collections (about 3,700 pages). They define the operation and expected behavior of all aspects of a compatible UNIX system. From asynchronous and synchronous I / O, to the script interface, to user-level programs, everything is cataloged and defined.

The standards define application interfaces and runtime behavior, but do not dictate how they will be implemented. [19659009] So, is MacOS UNIX?

The answer must be yes.

You can trace its provenance from FreeBSD to BSD and from there to the Unix marketed by Bell Labs before the royalty increases from AT & T.

But that does not matter.

If you write an operating system from scratch as long as it meets the requirements of the SUS, it is considered UNIX. It does not matter how you implement it. The XNU kernel at the heart of macOS is a hybrid architecture. It combines Apple's code with parts of the Mach and BSD kernels.

But that does not matter. What matters is that it meets the requirements of the standards by which it is measured.

The BSD portion of the XNU kernel provides the programming interfaces for POSIX applications (such as the various API and BSD system calls). Obtaining this element of the BSD kernel in XNU is the key to obtaining UNIX certification. It allows XNU to speak compatible and compatible UNIX with the rest of the system.

macOS is a UNIX 03-compatible operating system certified by The Open Group. It's been since 2007, starting with MAC OS X 10.5. The only exception was Mac OS X 10.7 Lion, but compatibility with OS X 10.8 Mountain Lion has been restored. ! Function (f, b, e, v, n, t, s)
{if (f.fbq) return; n = f.fbq = function () {n.callMethod?
n.callMethod.apply (n, arguments): n.queue.push (arguments)};
if (! f._fbq) f._fbq = n; n.push = n; n.loaded =! 0; n.version = & # 39; 2.0 & # 39 ;;
n.queue = []; t = b.createElement (e); t.async =! 0;
t.src = v; s = b.getElementsByTagName (s) [0];
s.parentNode.insertBefore (t, s)} (window, document, & # 39; script & # 39 ;,
//connect.facebook.net/en_US/fbevents.js&#39);:; & # 39 https
fbq (& # 39; init & # 39 ;, 335401813750447 & # 39;);
fbq (& # 39; track & # 39 ;, & # 39; PageView & # 39;);

Source link