What is the difference between Unix and Linux?

Hvad er et Unix-lignende operativsystem?

23/02/2012

Rating: 4.38 (16278 votes)

Når vi taler om operativsystemer, dukker begrebet "Unix-lignende" ofte op, især i diskussioner om systemer som Linux, macOS og BSD. Men hvad betyder det egentlig, at et system er "Unix-lignende"? Det er langt mere end blot et overfladisk mærkat; det repræsenterer en dyb arv af designfilosofi, standarder og teknisk historie, der strækker sig tilbage til computerens tidlige dage. At forstå dette begreb er at forstå fundamentet for mange af de mest robuste og udbredte operativsystemer i verden i dag. Det handler ikke kun om en specifik kodebase, men om en fælles tilgang til, hvordan et operativsystem skal konstrueres og interagere med både hardware og software.

Where did Unix come from?
Indholdsfortegnelse

Den officielle definition: Hvad er UNIX?

For at forstå, hvad "Unix-lignende" betyder, må vi først definere, hvad UNIX er. I modsætning til hvad mange tror, er UNIX ikke bare navnet på et gammelt operativsystem. I dag er UNIX et registreret varemærke, der ejes af The Open Group, en international standardiseringsorganisation. For at et operativsystem lovligt kan kalde sig UNIX, skal det overholde en streng standard kendt som Single UNIX Specification (SUS) og blive certificeret af The Open Group. Denne specifikation har udviklet sig over tid, hvilket har resulteret i forskellige versioner:

Single UNIX Specification - En udvikling gennem standarder

  • UNIX 95: Dette var en tidlig version af standarden, der samlede faciliteter fra forskellige systemer, der oprindeligt var afledt af AT&T's UNIX-kode. Den inkluderede standarder for internationaliserede systemkald, kommandoer og værktøjer, C-sproget, samt netværksinterfaces som Sockets og XTI.
  • UNIX 98: En markant opgradering, der introducerede obligatoriske forbedringer såsom understøttelse af threads (tråde), hvilket muliggør parallel behandling i programmer, understøttelse af store filer (Large File Support), dynamisk linkning og ændringer for at fjerne hardware-afhængige datalængdebegrænsninger. Den adresserede også det berygtede "År 2000"-problem.
  • UNIX 03: Den nuværende primære standard, som er en yderligere forbedring af UNIX 98. Den vigtigste ændring var en harmonisering med internationale standarder som ISO/IEC 9989:1999 for C-sproget og den meget vigtige POSIX-standard (IEEE Std 1003.1-2001). Et system, der er UNIX 03-certificeret, garanterer en meget høj grad af forudsigelighed og kompatibilitet.

Disse standarder definerer et sæt af API'er (Application Programming Interfaces), kommandolinjeværktøjer og en generel opførsel, som et operativsystem skal udvise. Et system som Apple's macOS er et eksempel på et moderne, kommercielt operativsystem, der er fuldt ud UNIX 03-certificeret.

Kernen i UNIX: Design og Filosofi

Ud over de formelle standarder er UNIX defineret af en bestemt designfilosofi og arkitektur, som er blevet udødeliggjort i bøger som "The Design of the UNIX Operating System" af Maurice J. Bach. Denne bog, som primært beskriver AT&T's System V-kerne, giver et unikt indblik i de grundlæggende principper, der stadig gælder for Unix-lignende systemer i dag.

Den traditionelle UNIX-kerne (kernel) har to hovedkomponenter:

  1. Filsystemet (The File Subsystem): En af de mest revolutionerende ideer i UNIX er, at "alt er en fil". Dette betyder, at ikke kun dokumenter og programmer repræsenteres som filer, men også hardwareenheder (som harddiske, printere og terminaler), netværksforbindelser og endda processer. Filer organiseres i filsystemer, og hver fil beskrives af en datastruktur kaldet en inode. En inode indeholder metadata om filen, såsom ejer, tilladelser, tidsstempler og vigtigst af alt, en oversigt over, hvor på disken dataene er gemt. Når et program tilgår en fil, interagerer kernen med denne inode-struktur.
  2. Process-styring (The Process Subsystem): Denne del af kernen håndterer udførelsen af programmer. Den er ansvarlig for at oprette, planlægge og afslutte processer, administrere hukommelse og håndtere kommunikation mellem processer. En central mekanisme her er systemkald (system calls). Når et brugerprogram har brug for at udføre en priviligeret handling, som f.eks. at læse en fil eller åbne en netværksforbindelse, skifter processens tilstand fra "user mode" til "kernel mode". I kernel mode udfører operativsystemet den anmodede opgave på vegne af programmet og returnerer derefter kontrollen. Denne adskillelse sikrer systemets stabilitet og sikkerhed.

UNIX-filosofien

Den tekniske arkitektur understøttes af en stærk filosofi, der kan opsummeres i et par enkle principper:

  • Skriv programmer, der gør én ting og gør den godt. I stedet for store, komplekse programmer, foretrækkes små, specialiserede værktøjer.
  • Skriv programmer, der arbejder sammen. Output fra ét program skal kunne fungere som input for et andet. Dette er grundlaget for den kraftfulde "pipe"-mekanisme (|) i kommandolinjen.
  • Skriv programmer, der håndterer tekststrømme, da det er en universel grænseflade.

Denne filosofi om modularitet og enkelhed er grunden til, at kommandolinjen i Unix-lignende systemer er så ekstremt kraftfuld og fleksibel.

En sammenligning af UNIX-specifikationer

For at give et klarere overblik over udviklingen af UNIX-standarden, er her en tabel, der sammenligner nøglefunktioner i de forskellige versioner af Single UNIX Specification.

FunktionUNIX 95UNIX 98UNIX 03
C-sprog standardGrundlæggende CForbedret CISO/IEC 9989:1999 (C99)
POSIX StandardDelvis overholdelseDelvis overholdelseFuld overholdelse af IEEE 1003.1-2001
Threads (Multithreading)Ikke obligatoriskObligatoriskObligatorisk
Understøttelse af store filer (>2GB)Ikke obligatoriskObligatoriskObligatorisk
IPv6 NetværkNejNejJa (for server-profil)

Stamtavlen: Fra UNIX til Linux og macOS

Historien om UNIX er kompleks med mange forgreninger. Den oprindelige kode fra AT&T Bell Labs udviklede sig i to hovedretninger: System V (den kommercielle gren) og BSD (Berkeley Software Distribution), som blev udviklet på University of California, Berkeley. Disse to grene har inspireret stort set alle moderne Unix-lignende systemer.

Men hvor passer systemer som Linux ind? Linux-kernen, oprindeligt skabt af Linus Torvalds, har ingen direkte genetisk forbindelse til den oprindelige AT&T-kode. I stedet er Linux en uafhængig genimplementering af UNIX-koncepterne og POSIX-standarden. Projektet GNU (en rekursiv forkortelse for "GNU's Not Unix") spillede en afgørende rolle ved at udvikle en komplet samling af fri software-værktøjer (kompilatorer, shell, biblioteker osv.), der var nødvendige for at skabe et fuldt funktionelt, frit og Unix-lignende operativsystem. Da Linux-kernen blev kombineret med GNU-værktøjerne, blev GNU/Linux-operativsystemet født. Derfor er Linux ikke en certificeret UNIX, men det er uden tvivl det mest udbredte Unix-lignende system i verden.

What does Unix stand for?
What is Unix? Unix -- trademarked as UNIX -- is a multiuser, multitasking operating system (OS) designed for flexibility and adaptability. Originally developed in the 1970s, Unix was one of the first OSes to be written in the C programming language.

macOS har en anden historie. Dets kerne, kaldet XNU, er en hybridkerne, der kombinerer elementer fra Mach-mikrokernen og kode fra FreeBSD, en direkte efterkommer af BSD. Fordi Apple har sikret, at hele systemet overholder Single UNIX Specification, er macOS en fuldgyldig, certificeret UNIX.

Ofte Stillede Spørgsmål (OSS)

Er Linux en UNIX?

Nej, teknisk set er Linux ikke en UNIX, fordi det ikke er certificeret af The Open Group og ikke indeholder nogen af den oprindelige AT&T-kode. Det er dog et "Unix-lignende" operativsystem, da det er designet til at overholde POSIX-standarderne og følger den grundlæggende UNIX-filosofi og arkitektur. I praksis opfører det sig som et UNIX-system for både brugere og udviklere.

Hvad er POSIX?

POSIX står for "Portable Operating System Interface". Det er en familie af standarder specificeret af IEEE Computer Society for at opretholde kompatibilitet mellem operativsystemer. POSIX definerer den applikationsprogrammeringsgrænseflade (API), kommandolinjeskaller og hjælpeværktøjer, som et kompatibelt system skal levere. Overholdelse af POSIX er en kerneegenskab ved Unix-lignende systemer.

Hvad er forskellen på en monolitisk kerne og en mikrokerne?

Dette refererer til to forskellige måder at designe et operativsystems kerne på. En monolitisk kerne (som den traditionelle UNIX-kerne og Linux) indeholder alle de centrale operativsystemtjenester – såsom processtyring, hukommelsesstyring, filsystem og enhedsdrivere – i ét stort program, der kører i kernel mode. En mikrokerne (som Mach, der bruges i macOS' kerne) indeholder kun de mest basale funktioner i selve kernen, såsom kommunikation mellem processer og grundlæggende planlægning. Andre tjenester, som filsystemer og enhedsdrivere, kører som separate processer i user mode. Valget mellem de to er en ingeniørmæssig afvejning mellem ydeevne, stabilitet og fleksibilitet, og det definerer ikke i sig selv, om et system er Unix-lignende.

Konklusion: En fælles arv

At være "Unix-lignende" handler altså om mere end blot et navn eller en specifik kodebase. Det er en tilslutning til et sæt kraftfulde designprincipper, en overholdelse af standardiserede grænseflader som POSIX, og en del af en rig historie, der har formet moderne databehandling. Fra de servere, der driver internettet (hovedsageligt Linux og BSD), til de smartphones, vi har i lommen (Android er baseret på Linux-kernen), og de computere, vi arbejder på (macOS og Linux-desktops), er arven fra UNIX allestedsnærværende. Det er et bevis på styrken i en filosofi om enkelhed, modularitet og interoperabilitet, som fortsat er relevant årtier efter dens oprindelse.

Hvis du vil læse andre artikler, der ligner Hvad er et Unix-lignende operativsystem?, kan du besøge kategorien Teknologi.

Go up