Definizione: UNIX
UNIX è un sistema operativo sviluppato originariamente nei laboratori Bell di AT&T, una delle più grandi aziende di telecomunicazioni al mondo, tra gli anni ‘60 e ‘70. UNIX ha influenzato profondamente lo sviluppo di molti altri sistemi operativi, come Linux, BSD e macOS. Le sue caratteristiche principali includono un design modulare, in cui ogni programma esegue una funzione specifica e può essere combinato con altri programmi tramite la riga di comando.
1 - Terminologia di UNIX
Oggi, molto più spesso, con il termine UNIX si fa riferimento non più al sistema operativo UNIX sviluppato da AT&T, ma a una famiglia di sistemi operativi certificati per essere conformi agli standard ufficiali POSIX, stabiliti per mantenere una certa compatibilità con l’originale UNIX. Alcuni esempi di questi sistemi sono macOS e AIX (di IBM).
Il termine UNIX-like (in italiano “simile a UNIX”), invece, si riferisce a sistemi operativi che condividono caratteristiche, principi di design e comportamenti simili a quelli del sistema operativo UNIX originale, ma che non sono necessariamente derivati direttamente dal codice UNIX. Alcuni esempi di UNIX-like sono BSD e Linux, il quale non deriva direttamente da UNIX, ma è stato progettato per essere compatibile e simile a UNIX.
3 - Filosofia di UNIX
La filosofia di UNIX comprende un insieme di principi e idee che guidano il design e l’uso dei sistemi operativi della famiglia UNIX, caratterizzati da semplicità, modularità e potenza. Questi principi, emersi negli anni ‘70 con lo sviluppo del sistema UNIX nei Bell Labs, hanno influenzato non solo i sistemi UNIX-like (come Linux e BSD) ma anche la progettazione del software in generale.
Nonostante le diverse riformulazioni fornite nel corso degli anni, i principi fondamentali della filosofia di UNIX si possono riassumere in:
- “Write programs that do one thing and do it well”: ogni programma dovrebbe svolgere un compito specifico in modo efficace. Questo approccio minimalista favorisce la semplicità e la modularità, infatti programmi piccoli e specializzati possono essere combinati per ottenere funzionalità più complesse.
- “Write programs to work together”: i programmi dovrebbero essere progettati per essere concatenati tra di loro tramite meccanismi come le pipe, in modo che l’output di un programma diventi l’input di un altro. È importante quindi evitare di riempire l’output con informazioni non necessarie.
- “Write programs to handle text streams, because that is a universal interface”: i file di testo sono il formato standard per archiviare e trasferire informazioni. Sono semplici da creare, leggere, modificare e analizzare sia manualmente che con script.
4 - POSIX
POSIX (acronimo di Portable Operating System Interface for UNIX) è una famiglia di standard definiti dall’IEEE (denominati formalmente IEEE 1003) per definire un’interfaccia standard per i sistemi della famiglia UNIX, permettendo agli sviluppatori di scrivere software che può essere facilmente eseguito su piattaforme diverse.
Fonti
- 🏫 Lezioni e slide del Prof. Schifanella Claudio del corso di Laboratorio di Sistemi Operativi (canale B, turno T4), Corso di Laurea in Informatica presso l’Università di Torino, A.A. 2024-25: