Historie a architektura systému Unix

Co je Unix a proč je důležitý

Unix je rodina operačních systémů kladoucí důraz na jednoduchost, modularitu a přenositelnost. Jeho filozofie „dělej jednu věc a dělej ji dobře“, jednotné souborové rozhraní a rozsáhlé nástrojové prostředí výrazně ovlivnily vývoj moderního softwaru a systémů – od serverů přes vývojářské stanice až po macOS a mobilní deriváty. Následující text shrnuje historické milníky a vysvětluje klíčové architektonické principy, které Unix definují.

Počátky v Bell Labs (konec 60. a 70. let)

Unix vznikl v laboratořích Bell Labs po ukončení projektu Multics. Ken Thompson v roce 1969 napsal první verzi pro minipočítač PDP-7; brzy se připojil Dennis Ritchie a systém byl přepsán do jazyka C, což výrazně zvýšilo jeho přenositelnost. Následující „Edition“ verze (V4–V7) přinesly souborový systém s inody, procesní model s fork/exec a jednoduché, ale účinné nástroje (ed, grep, awk, sed). Verze 7 (1979) se stala základem pro další varianty.

Rozštěpení: BSD a System V

  • BSD (Berkeley Software Distribution): Univerzita v Berkeley přidala virtuální paměť, csh, nástroj vi a zásadní implementaci TCP/IP (4.2BSD). BSD položilo základy síťování prostřednictvím Berkeley socketů a zavedlo FFS (Fast File System).
  • System V (AT&T): Komerční větev, která konsolidovala různá rozšíření (SVR2–SVR4) a přinesla SysV IPC (sdílená paměť, semafory, fronty zpráv), init systém a standardní rozhraní pro tisk a cron.

V 80. a 90. letech tak koexistovaly „BSD větev“ a „System V větev“, jejichž prvky se vzájemně ovlivňovaly a prolínaly v komerčních derivátech (SunOS/Solaris, HP-UX, AIX) i v otevřených systémech (FreeBSD, NetBSD, OpenBSD).

Standardizace: POSIX a Single UNIX Specification

Různorodost variant vyústila ve tvorbu standardů POSIX (IEEE 1003) a Single UNIX Specification (The Open Group). Ty definují systémová volání, knihovní rozhraní, příkazové nástroje a chování shellu. Díky nim mohou aplikace cílit na „Unix-like“ prostředí s předvídatelným API a ABI. Certifikace „UNIX®“ náleží The Open Group a vztahuje se na plně kompatibilní systémy (např. AIX, HP-UX, Solaris, macOS).

Unix a svobodný software: BSD a Linux

Po právních sporech na počátku 90. let byly vydány čisté BSD implementace (Net/2, 4.4BSD-Lite), z nichž vznikly dnešní FreeBSD, NetBSD a OpenBSD. Paralelně Linus Torvalds vytvořil linuxové jádro (1991), které spolu s uživatelským prostorem GNU poskytlo „unixové“ prostředí, ačkoliv právně není Unixem. Unixová filozofie a standardy však Linux zásadně ovlivnily.

macOS a Darwin: moderní komerční Unix

Apple vybudoval macOS na otevřeném základu Darwin, který kombinuje hybridní jádro XNU (Mach + BSD) a uživatelský prostor s POSIX kompatibilitou. macOS (certifikace UNIX® 03) poskytuje tradiční BSD nástroje, subsystém launchd místo klasického SysV init, sandboxing, System Integrity Protection (SIP) a APFS jako výchozí souborový systém. Z Darwin vycházejí i iOS, iPadOS, tvOS a watchOS.

Další významné Unixové systémy

  • Solaris: nástupce SunOS, s inovacemi jako ZFS, DTrace a SMF (Service Management Facility).
  • HP-UX a AIX: robustní podnikové systémy s dlouhodobou podporou RAS funkcí na proprietárním hardwaru (Itanium/PA-RISC, POWER).
  • FreeBSD, NetBSD, OpenBSD: otevřené BSD systémy; FreeBSD zaměřené na výkon a síťování, NetBSD na přenositelnost mezi architekturami, OpenBSD na bezpečnostní inovace (pledge/unveil, audit kódu).

Architektonické principy: „všechno je soubor“

Unix sjednocuje vstupně-výstupní operace přes abstrakci souborového deskriptoru. Běžné soubory, zařízení v /dev, sockety, roury a někdy i procesová metadata (/proc) jsou obsluhovány stejnými voláními (open, read, write, close). Tato jednotnost umožňuje kombinovat programy pomocí rour (|) a filtrů a významně zjednodušuje návrh utilit.

Procesní model: fork/exec a signály

  • Vytváření procesů: rodičovský proces se duplikuje pomocí fork(); program se nahrazuje pomocí execve().
  • Signály: lehký mechanismus pro asynchronní notifikace (SIGINT, SIGTERM, SIGCHLD), s definovanou maskou a obsluhou.
  • Plánování a vlákna: preemptivní plánovač, POSIX vlákna (pthreads), priority a politiky (SCHED_OTHER/RT).

Virtuální paměť a správa stránek

Moderní unixové systémy využívají virtuální paměť s oddělením uživatelského a jaderného prostoru, page cache a paměťově mapované soubory (mmap). Mechanismus „copy-on-write“ zefektivňuje fork() a sdílení stránek.

Souborové systémy a vrstva VFS

  • Inody a adresáře: metadata v inodu (vlastník, režim, časová razítka, ukazatele na bloky), adresáře jako mapy jméno→inode.
  • VFS (Virtual File System): abstraktní rozhraní sjednocující různé konkrétní FS (UFS/FFS, ZFS, APFS, XFS) pod společnou API.
  • Žurnálování a snapshoty: robustní konzistence (APFS, ZFS) a rychlá obnova; u ZFS navíc deduplikace a copy-on-write model.

Meziprocesová komunikace a sockety

  • Pipelines a roury: anonymní a pojmenované (mkfifo) pro lineární skládání nástrojů.
  • Sockety: domény AF_UNIX a AF_INET/AF_INET6; BSD socket API je standardem pro síťování.
  • SysV IPC a POSIX IPC: sdílená paměť, semafory, fronty zpráv; moderně i eventfd, kqueue/epoll.

Uživatelský prostor: shell, nástroje a filozofie

Unixový shell (sh, csh, ksh, bash, zsh) slouží jako jazyk i interaktivní prostředí. Systém preferuje malé programy – filtry (grep, awk, sed, cut, sort), které lze řetězit. Nástroje pro build (make, autoconf) a správci balíčků (pkg, ports, pkgsrc, Homebrew na macOS) zajišťují replikovatelná prostředí.

Start systému a správa služeb

  • Historický SysV init: skripty v /etc a běhové úrovně (runlevels).
  • Moderní správci: launchd (macOS), SMF (Solaris), různé rc systémy v BSD; definice závislostí, restartovací politiky a logování.

Bezpečnost: modely práv, MAC a sandboxy

  • Discretionary Access Control (DAC): klasická práva rwx pro uživatele/skupinu/ostatní, bity SUID/SGID a sticky; rozšíření o ACL.
  • Mandatory Access Control (MAC): rámec v BSD, jails ve FreeBSD, zones v Solaris; v macOS sandboxing a SIP pro ochranu systémových komponent.
  • Kryptografie a audit: subsystémy pro šifrování disků, auditní logy a integritu binárek (code signing).

Síťová architektura a služby

Unixové systémy konsolidovaly síťové démony jako sshd, named (DNS), syslogd, cron, inetd/xinetd. Konfigurace sítě zahrnuje rozhraní, směrování (statické i dynamické – bgpd, ospfd v OpenBSD/FreeBSD), firewall (PF v BSD, IPFilter v Solaris, ipfw v některých BSD).

Portabilita a architektury hardwaru

Unix byl navržen s důrazem na přenositelnost. Historicky běžel na PDP, VAX, MIPS, SPARC, PA-RISC, POWER i x86. Dnes macOS běží na ARM64 (Apple Silicon) i x86_64 (historicky), BSD systémy podporují široké spektrum architektur a enterprise Unixy směřují na specifické platformy (POWER, SPARC).

Vývojové nástroje a knihovny

Kompilátory (Clang/LLVM, GCC), linkery a standardní C knihovna (libc) zajišťují konzistentní ABI. POSIXová rozhraní a manuálové stránky poskytují stabilní dokumentaci; systémová volání jsou mapována přes libc na jádrové vstupní body.

Správa a observabilita

  • Monitoring: top, vmstat, iostat, tcpdump, ktrace/dtrace.
  • Logování: syslog a rotační politiky; jednotný přehled o událostech systému a služeb.
  • Balíčky a aktualizace: porty (FreeBSD Ports), binární repozitáře (pkg), záplaty jádra a uživatelského prostoru.

Unixová filozofie a dopad na ekosystém

Vliv Unixu přesahuje samotnou implementaci operačního systému. Filozofie kompozice nástrojů, textových protokolů a stabilních rozhraní inspirovala vznik internetových služeb, DevOps praktik a kontejnerizace. Koncepty jako souborové deskriptory, sockety a procesní model tvoří i dnes základ systémového programování.

Současnost a budoucnost Unixových systémů

Unixové systémy pokračují ve vývoji: posilují bezpečnost (izolace, sandboxy, kryptografie), integrují moderní souborové systémy (ZFS, APFS) a přizpůsobují se novým architekturám (ARM64). macOS představuje uživatelsky zaměřený komerční Unix, BSD rodina nadále inovuje v bezpečnosti a síťování, enterprise Unixy udržují kritické provozy. Standardy POSIX a SUS zůstávají kotvou kompatibility v pestrém světě „Unix-like“ systémů.

Závěr

Historie Unixu je příběhem přenositelnosti, jednoduchosti a standardizace. Jeho architektura – od všudypřítomných souborových deskriptorů přes procesní model až po síťové sockety – vytvořila univerzální platformu pro software, která se přizpůsobila novému hardwaru i požadavkům. Ať už na serveru, v cloudu nebo na desktopovém systému macOS, unixové principy nadále určují, jak systémy navrhujeme, spravujeme a zabezpečujeme.