Per espandere la prima risposta su POSIX, per capire cosa significa "unix-like", prima di tutto si dovrebbe cercare di capire cosa sia esattamente UNIX. Guardando la documentazione dalla Open Group , proprietaria del marchio Unix, troverete i dettagli sulla specifica Single UNIX 's evoluzione - ecco UNIX03 :
Lo standard di prodotto UNIX 03 è il marchio per i sistemi conformi alla versione 3 della specifica UNIX singola. È una versione notevolmente migliorata dello standard di prodotto UNIX 98. I miglioramenti obbligatori includono l'allineamento con il linguaggio di programmazione ISO / IEC 9989: 1999 C, IEEE Std 1003.1-2001 e ISO / IEC 9945: 2002. Questo standard di prodotto include i seguenti standard di prodotto obbligatori: Chiamate e librerie di sistema internazionalizzate Extended V3, Comandi e utility V4, C Language V2 e interfacce terminal internazionalizzate.
UNIX98 :
Lo standard di prodotto UNIX 98 è una versione notevolmente migliorata dello standard di prodotto UNIX 95. I miglioramenti obbligatori includono (1) interfacce di thread, (2) Multibyte Support Extension (MSE), (3) Supporto di file di grandi dimensioni, (4) Dynamic Linking, (5) modifiche per rimuovere dipendenze o restrizioni relative alla lunghezza dei dati hardware e (6) ) L'anno 2000 cambia. Inoltre, sono inclusi i seguenti miglioramenti opzionali: Funzionalità di amministrazione del software e un set di API per il supporto in tempo reale. Questo standard di prodotto include i seguenti standard di prodotto obbligatori: Chiamate e librerie di sistema internazionalizzate V2 esteso, comandi e utilità V3, linguaggio C, servizio di trasporto (XTI) V2, socket V2 e interfacce di terminale internazionalizzate. Inoltre, può anche essere conforme allo standard del prodotto di amministrazione del software.
UNIX95 (la mia enfasi):
La presente norma di prodotto definisce una piattaforma consolidata per il supporto di una vasta gamma di applicazioni originariamente sviluppate per uno dei sistemi operativi della classe derivati dal codice del sistema operativo UNIX e / o dalle interfacce originariamente sviluppate da AT&T , oltre alle strutture fornite dallo standard del prodotto di base. Ha una portata più ampia rispetto a Base. Questo standard di prodotto include i seguenti standard di prodotto: Chiamate e librerie di sistema internazionalizzate estese, comandi e utilità V2, linguaggio C, servizio di trasporto (XTI), socket e interfacce di terminale internazionalizzate.
Le versioni server dello standard aggiungono Internet Server e IPv6 in alcuni casi.
Quindi, naturalmente, vediamo il riferimento ad AT&T Bell Laboratories e il linguaggio C è al centro di ciò che è UNIX: il linguaggio C, gli strumenti di base modulari e la shell e il modo in cui il kernel, il filesystem e altri componenti chiave del sistema operativo sono stati progettati e implementati .
È qui che il libro The Design of the UNIX Operating System di Maurice J. Bach diventa una lettura preziosa perché a questo punto è una questione storica. Naturalmente è da notare come questo sia collegato ad altre invenzioni come il linguaggio C. C è stato sviluppato da AT&T Bell per implementare Unix con un linguaggio che potrebbe essere veloce come assembly ma portatile su hardware diverso, e molti POSIX sono un'estensione dello standard C.
Per quanto riguarda il kernel stesso, troverai spesso un diagramma concettuale come questo per illustrare ciò che tradizionalmente riguardava un kernel UNIX:
Ecco alcuni estratti del libro classico di Mr Bach (1986) che discutono le basi del kernel UNIX System V:
Tuttavia, [sottosistemi e programmi applicativi] utilizzano tutti i servizi di livello inferiore forniti dal kernel e si avvalgono di tali servizi tramite l'insieme delle chiamate di sistema. Esistono circa 64 chiamate di sistema in System V, di cui meno di 32 vengono utilizzate di frequente. Hanno opzioni semplici che li rendono facili da usare ma forniscono all'utente molta potenza. L'insieme delle chiamate di sistema e gli algoritmi interni che le implementano formano il corpo del kernel [...]
[...] i suoi due componenti principali sono il sottosistema di file e il sottosistema di processo.
I file sono organizzati in file system, che sono trattati come dispositivi logici; un dispositivo fisico come un disco può contenere diversi dispositivi logici (file system). Ogni file system ha un superblocco che descrive la struttura e il contenuto del file system e ogni file in un file system è descritto da un inode che fornisce gli attributi del file. Le chiamate di sistema che manipolano i file lo fanno tramite gli inode. [e il pool di buffer]
[...] Esistono due versioni dell'inode: la copia del disco che memorizza le informazioni sull'inode quando il file non è in uso e la copia nel core che registra le informazioni sui file attivi.
L'esecuzione dei processi utente su sistemi UNIX è divisa in due livelli: utente e kernel. Quando un processo esegue una chiamata di sistema, la modalità di esecuzione del processo passa dalla modalità utente alla modalità kernel : il sistema operativo viene eseguito e tenta di soddisfare la richiesta dell'utente [...]
[...] la filosofia del sistema UNIX è quella di fornire primitive del sistema operativo che consentano agli utenti di scrivere piccoli programmi modulari che possono essere usati come blocchi per costruire programmi più complessi. Un tale primitiva visibile a guscio utenti è la possibilità di reindirizzare I / O .
[...] Oltre a gestire le chiamate di sistema, il kernel esegue la contabilità generale per la comunità degli utenti, controllando la pianificazione dei processi, gestendo l'archiviazione e la protezione dei processi nella memoria principale, mettendo in campo interruzioni, gestendo file e dispositivi e occupandosi dell'errore di sistema condizioni.
Se sei interessato alle diverse implementazioni dei kernel in sistemi operativi unix-like, puoi anche dare un'occhiata all'implementazione di FreeBSD (4.4BSD) o al kernel Mach o guardare questo confronto delle loro caratteristiche.
Più conosci il design di UNIX, più capisci cosa è successo nel seguente diagramma sull'antenato di UNIX e sulla sua storia . Bach parla principalmente di System V nel suo libro, ma parla anche di BSD:
C'è molto di più di ciò che incontra davvero gli occhi . Ad esempio, Mac OSX è certificato UNIX03 ma lo vedi collegato a uno dei puri UNIX (principalmente in rosso)?
Sopra puoi vedere come BSD, GNU, Microsoft e diverse persone hanno contribuito a questo universo. Anche se GNU e in definitiva Linux non hanno un lignaggio diretto con UNIX, vedi che GNU è uno sforzo per riprogettare nel mondo open source gli strumenti e il software di UNIX commerciale che erano diventati chiusi. Quindi, guardando il software gestito da GNU si può dare un'idea, ad esempio, delle app e delle librerie prototipo iniziali.
Le guerre di licenza hanno avuto un ruolo nell'evoluzione (e talvolta nella stagnazione) di UNIX. Puoi vedere immediatamente che gli UNIX sono allineati in base al tipo di licenza - chiuso vs. BSD ( BSD consente di rendere il codice sorgente chiuso ... vedi OSX) e GPL che consente a Linux e GNU di completarsi nel mondo del copyleft. Ecco la classica mappa del kernel linux inizialmente sviluppata da Linus Torvalds, che rivela anche ciò che un kernel "può" essere in un sistema operativo simile a Unix:
Ciò suggerisce l'idea che un tipo di progettazione " kernel " non è ciò che rende lo standard UNIX o ciò che definisce un sistema operativo simile a unix. Ciò è dimostrato dal fatto che molti sistemi operativi unix-like possono avere un kernel monolitico o un microkernel: il monolitico era il tipo di design classico per UNIX. Infatti, anche all'interno di UNIX puri, HPUX ha un kernel monolitico mentre AIX utilizza un microkernel. Questo dibattito sul design riguarda le prestazioni e non è legato all'origine o all'identità di Unix. D'altra parte, esiste un approccio concettuale tradizionale per fornire servizi al software, gestire file system ecc. Con sistemi operativi UNIX / unix-like.
Credo che tali considerazioni aggiungeranno contesto alla parte OS della tua domanda.