Unix-besturingssysteem. Hoe Linux verschilt van UNIX, en wat een UNIX-achtig besturingssysteem is

UNIX ontstond ruim twintig jaar geleden in AT&T's Bell Labs.

UNIX is een multi-user, multi-tasking besturingssysteem dat behoorlijk krachtige middelen bevat om programma's en bestanden van verschillende gebruikers te beschermen. Het is geschreven in de C-taal en is machine-onafhankelijk, wat de hoge mobiliteit en gemakkelijke overdraagbaarheid van applicatieprogramma's naar pc's met verschillende architecturen garandeert. Een belangrijk kenmerk van de UNIX-familie van besturingssystemen is de modulariteit ervan en een uitgebreide reeks hulpprogramma's die het mogelijk maken een gunstige besturingsomgeving voor programmeurgebruikers te creëren.

Ondersteunt hiërarchische bestandsstructuur, virtueel geheugen, interface met meerdere vensters, multiprocessorsystemen, databasebeheersysteem voor meerdere gebruikers, heterogene computernetwerken.

UNIX OS heeft de volgende hoofdkenmerken:

Draagbaarheid;

- preventief multitasken gebaseerd op processen die worden uitgevoerd in geïsoleerde adresruimten in virtueel geheugen;

Ondersteunt gelijktijdig werk van veel gebruikers;

Ondersteuning voor asynchrone processen;

Hiërarchisch bestandssysteem;

Ondersteuning voor apparaatonafhankelijke I/O-bewerkingen (via speciale apparaatbestanden);

Standaardinterface voor programma's (programmakanalen, IPC) en gebruikers (opdrachtinterpreter, niet inbegrepen in de OS-kernel);

Ingebouwde boekhoudhulpmiddelen voor systeemgebruik.

UNIX OS-architectuur- meerdere niveaus. Werkt op een lager niveau kern besturingssysteem. Kernelfuncties (procesbeheer, geheugenbeheer, interruptafhandeling, enz.) zijn toegankelijk via systeemoproepinterface, het tweede niveau vormen. Systeemoproepen een software-interface bieden voor toegang tot kernelprocedures. Op het volgende niveau werken ze opdracht tolken , opdrachten en hulpprogramma's voor systeembeheer en communicatie chauffeurs En protocollen ,- alles waar gewoonlijk aan wordt toegeschreven systeemsoftware . Het buitenste niveau wordt gevormd applicatieprogramma's gebruikers-, netwerk- en andere communicatiediensten, DBMS en hulpprogramma's.

Het besturingssysteem voert twee hoofdtaken uit: gegevensmanipulatie en -opslag. De meeste programma's manipuleren voornamelijk gegevens, maar uiteindelijk worden deze ergens opgeslagen. Op een UNIX-systeem is deze opslaglocatie bestandssysteem. Bovendien, in UNIX alle apparaten, waarmee het besturingssysteem werkt, worden ook weergegeven als speciale bestanden in het bestandssysteem.

Logisch bestandssysteem in UNIX OS (of eenvoudigweg bestandssysteem ) is een hiërarchisch georganiseerde structuur van alle mappen en bestanden in het systeem, te beginnen met wortel catalogus. Het UNIX-bestandssysteem biedt een uniforme interface voor toegang tot gegevens op verschillende media en randapparatuur. Een logisch bestandssysteem kan uit een of meer bestanden bestaan fysieke bestands(sub)systemen, Dit zijn delen van fysieke media (schijven, cd-roms of diskettes).


Het bestandssysteem beheert de bestandsrechten, voert bewerkingen uit voor het maken en verwijderen van bestanden en schrijft/leest bestandsgegevens. Het bestandssysteem zorgt voor het doorsturen van verzoeken die zijn geadresseerd aan randapparatuur die overeenkomt met de I/O-subsysteemmodules.

De hiërarchische structuur van het UNIX-bestandssysteem maakt het gemakkelijk om te navigeren. Elke map beginnend bij de root ( / ), bevat op zijn beurt bestanden en submappen.

In UNIX zijn er geen theoretische beperkingen op het aantal submappen, maar er zijn wel beperkingen op de maximale lengte van de bestandsnaam die is opgegeven in opdrachten: 1024 tekens.

In UNIX zijn er verschillende soorten bestanden, die qua functionaliteit verschillen:

Regulier bestand - Het meest voorkomende bestandstype dat gegevens in een bepaald formaat bevat. Voor het besturingssysteem zijn dergelijke bestanden eenvoudigweg een reeks bytes. Deze bestanden omvatten tekstbestanden, binaire gegevens en uitvoerbare programma's.

Catalogus- dit is een bestand met de namen van de bestanden die het bevat, evenals verwijzingen naar aanvullende informatie waarmee het besturingssysteem acties met deze bestanden kan uitvoeren. Directory's worden gebruikt om een ​​logische bestandssysteemboom te vormen.

Speciaal apparaatbestand - Biedt toegang tot fysieke apparaten. Apparaten zijn toegankelijk door het openen, lezen en schrijven naar een speciaal apparaatbestand.

FIFO - benoemde pijp. Dit bestand wordt gebruikt voor communicatie tussen processen op wachtrijbasis.

Stopcontact- kunt u een netwerkverbinding weergeven als een bestand.

Elk bestand in UNIX bevat een reeks machtigingen die bepalen hoe de gebruiker met het bestand omgaat.

Elke harde schijf bestaat uit een of meer logische onderdelen: partities. De locatie en grootte van de partitie worden bepaald wanneer de schijf wordt geformatteerd. In UNIX fungeren partities als onafhankelijke apparaten die toegankelijk zijn via verschillende opslagmedia. Een sectie kan er slechts één bevatten fysiek bestandssysteem.

Er zijn veel soorten fysieke bestandssystemen, zoals FAT16 en NTFS, met verschillende structuren. Bovendien zijn er veel soorten fysieke UNIX-bestandssystemen ( ufs, s5fs, ext2, vxfs, jfs, ffs enz.).

Wat is Unix (voor beginners)


Dmitry Y. Karpov


Waar heb ik het over?


Dit opus pretendeert niet een volledige beschrijving te zijn. Bovendien zijn ter wille van de eenvoud enkele details bewust weggelaten. In eerste instantie was de cyclus bedoeld als FAQ (FAQ - veelgestelde vragen), maar blijkbaar zal het een “Jonge Soldaat Cursus” of “Sergeant School” worden.

Ik heb geprobeerd een vergelijkende beschrijving te geven van verschillende besturingssystemen - dit is wat naar mijn mening ontbreekt in de meeste leerboeken en technische handleidingen.

Zonder te wachten op blootstelling van ervaren Unix-oids, doe ik een vrijwillige bekentenis: ik kan niet beweren een groot Unix-expert te zijn, en mijn kennis ligt voornamelijk rond FreeBSD. Ik hoop dat dit niet in de weg staat.

Dit bestand blijft lange tijd in de status 'in aanbouw'. :-)

Wat is Unix?


Unix is ​​een volwaardig besturingssysteem voor meerdere gebruikers, multitasking en meerdere terminals. Om precies te zijn, dit is een hele familie van systemen die vrijwel volledig compatibel zijn met elkaar op het niveau van programmabroncodes.

Welke soorten Unixen zijn er en op welke machines draaien ze?


Deze lijst pretendeert niet volledig te zijn, want naast de genoemde zijn er veel minder gebruikelijke Unixen en Unix-achtige systemen, om nog maar te zwijgen van oude Unixen voor verouderde machines.

Conventioneel kunnen we de System V- en Berkeley-families onderscheiden. Systeem V (lees "Systeem Vijf") kent verschillende varianten, de nieuwste is, voor zover ik weet, Systeem V Release 4. Berkeley University staat niet alleen bekend om de ontwikkeling van BSD, maar ook om de meeste internetprotocollen. Veel Unixen combineren echter de eigenschappen van beide systemen.

Waar kan ik gratis Unix krijgen?


  • BSD-familie: FreeBSD, NetBSD, OpenBSD.
  • Linux-familie: RedHat, SlackWare, Debian, Caldera,
  • SCO en Solaris zijn gratis beschikbaar voor niet-commercieel gebruik (voornamelijk voor onderwijsinstellingen).

    Wat zijn de belangrijkste verschillen tussen Unix en andere besturingssystemen?


    Unix bestaat uit een kernel met meegeleverde stuurprogramma's en hulpprogramma's (programma's buiten de kernel). Als u de configuratie moet wijzigen (een apparaat toevoegen, een poort wijzigen of interrupten), dan wordt de kernel opnieuw opgebouwd (gekoppeld) vanuit objectmodules of (bijvoorbeeld in FreeBSD) vanuit bronnen. /* Dit is niet helemaal waar. Sommige parameters kunnen worden gecorrigeerd zonder opnieuw op te bouwen. Er zijn ook laadbare kernelmodules. */

    In tegenstelling tot Unix koppelen Windows (als niet wordt gespecificeerd welke, dan bedoelen we 3.11, 95 en NT) en OS/2 tijdens het laden de stuurprogramma's daadwerkelijk aan elkaar hergebruik van algemene code ligt een orde van grootte lager dan bij Unix. Bovendien kan de Unix-kernel, als de systeemconfiguratie ongewijzigd blijft, zonder wijziging naar het ROM worden geschreven (alleen het startgedeelte van het BIOS hoeft te worden gewijzigd) en uitgevoerd zonder te worden uitgevoerd. in het RAM geladen. De compactheid van de code is vooral belangrijk, omdat de kernel en de stuurprogramma's het fysieke RAM-geheugen nooit verlaten en niet naar schijf worden overgebracht.

    Unix is ​​het meest multi-platform besturingssysteem. WindowsNT probeert het te imiteren, maar tot nu toe is het niet succesvol geweest - na het verlaten van MIPS en POWER-PC bleef W"NT op slechts twee platforms bestaan: de traditionele i*86 en DEC Alpha. Natuurlijk is de draagbaarheid van Programma's van de ene versie van Unix naar de andere zijn beperkt. Onnauwkeurig Een programma dat geen rekening houdt met verschillen in Unix-implementaties, waarbij onredelijke aannames worden gedaan, zoals "een integer-variabele moet vier bytes in beslag nemen", kan een serieuze herwerking vereisen. Maar het zijn er nog steeds veel ordes van grootte eenvoudiger dan bijvoorbeeld de overstap van OS/2 naar NT.

    Waarom Unix?


    Unix wordt zowel als server als als werkstation gebruikt. In de servercategorie concurreert het met MS WindowsNT, Novell Netware, IBM OS/2 Warp Connect, DEC VMS en mainframe-besturingssystemen. Elk systeem heeft zijn eigen toepassingsgebied waarin het beter is dan andere.

  • WindowsNT - voor beheerders die een vertrouwde interface verkiezen boven zuinig gebruik van bronnen en hoge prestaties.
  • Netware - voor netwerken waar hoogwaardige bestands- en printerservices nodig zijn en andere services niet zo belangrijk zijn. Het grootste nadeel is dat het moeilijk is om applicaties op een Netware-server uit te voeren.
  • OS/2 is goed als je een "lichtgewicht" applicatieserver nodig hebt. Het vereist minder bronnen dan NT, is flexibeler in beheer (hoewel het moeilijker te configureren kan zijn) en multitasking is erg goed. Autorisatie en differentiatie van toegangsrechten worden niet geïmplementeerd op OS-niveau, wat ruimschoots wordt gecompenseerd door implementatie op serverapplicatieniveau. (Andere besturingssystemen doen echter vaak hetzelfde). Veel FIDOnet-stations en BBS'en zijn gebaseerd op OS/2.
  • VMS is een krachtige applicatieserver, die op geen enkele manier onderdoet voor Unix (en in veel opzichten superieur daaraan), maar alleen voor de VAX- en Alpha-platforms van DEC.
  • Mainframes - voor het bedienen van een zeer groot aantal gebruikers (in de orde van enkele duizenden). Maar het werk van deze gebruikers is doorgaans niet georganiseerd als een client-server-interactie, maar als een host-terminal-interactie. De terminal in dit paar is waarschijnlijk geen client, maar een server (Internet World, N3, 1996). De voordelen van mainframes zijn onder meer een hogere beveiliging en weerstand tegen storingen, en de nadelen zijn de prijs die overeenkomt met deze kwaliteiten.

    Unix is ​​goed voor een gekwalificeerde (of bereid te worden) beheerder omdat... vereist kennis van de principes van het functioneren van de processen die daarin plaatsvinden. Echte multitasking en strikt gedeeld geheugen zorgen voor een hoge betrouwbaarheid van het systeem, hoewel de bestands- en afdrukservices van Unix inferieur zijn aan Netware wat betreft de prestaties van bestands- en afdrukservices.

    Het gebrek aan flexibiliteit bij het verlenen van gebruikerstoegangsrechten tot bestanden in vergelijking met WindowsNT maakt het moeilijk om _at_the_file_system_ groepstoegang tot gegevens (meer precies, tot bestanden) te organiseren, wat naar mijn mening wordt gecompenseerd door het gemak van implementatie, wat betekent dat er minder hardware nodig is vereisten. Applicaties zoals SQL Server lossen het probleem van toegang tot groepsgegevens echter zelf op, dus de mogelijkheid, die in Unix ontbreekt, om toegang tot een _bestand_ aan een specifieke gebruiker te weigeren, is naar mijn mening duidelijk overbodig.

    Bijna alle protocollen waarop het internet is gebaseerd, zijn ontwikkeld onder Unix, met name de TCP/IP-protocolstack is uitgevonden aan de Universiteit van Berkeley.

    De beveiliging van Unix is, mits op de juiste manier beheerd (en wanneer niet?), op geen enkele manier inferieur aan die van Novell of WindowsNT.

    Een belangrijke eigenschap van Unix, die het dichter bij mainframes brengt, is het multi-terminal karakter; veel gebruikers kunnen tegelijkertijd programma's op één Unix-machine draaien. Als u geen grafische afbeeldingen nodig heeft, kunt u zich redden met goedkope tekstterminals (gespecialiseerd of gebaseerd op goedkope pc's) die via langzame lijnen zijn aangesloten. Hierin concurreert alleen VMS ermee. U kunt ook grafische X-terminals gebruiken wanneer hetzelfde scherm vensters bevat met processen die op verschillende machines worden uitgevoerd.

    In de categorie werkstations concurreren MS Windows*, IBM OS/2, Macintosh en Acorn RISC-OS met Unix.

  • Windows - voor degenen die compatibiliteit belangrijker vinden dan efficiëntie; voor degenen die bereid zijn een grote hoeveelheid geheugen, schijfruimte en megahertz te kopen; voor wie graag op de knoppen in het venster klikt zonder zich te verdiepen in de essentie. Het is waar dat je vroeg of laat nog steeds de werkingsprincipes van het systeem en de protocollen zult moeten bestuderen, maar dan zal het te laat zijn - de keuze is gemaakt. Een belangrijk voordeel van Windows is de mogelijkheid om een ​​heleboel software te stelen.
  • OS/2 - voor OS/2-liefhebbers. :-) Hoewel, volgens sommige informatie, OS/2 beter samenwerkt met IBM-mainframes en -netwerken dan andere.
  • Macintosh - voor grafisch werk, publicatiewerk en muziekwerk, maar ook voor degenen die van een duidelijke, mooie interface houden en de details van de werking van het systeem niet willen (kunnen) begrijpen.
  • Met RISC-OS, geflashed in ROM, kunt u voorkomen dat u tijd verspilt aan het installeren van het besturingssysteem en het herstellen ervan na storingen. Bovendien gebruiken bijna alle programma's eronder de bronnen zeer zuinig, waardoor ze niet hoeven te worden gewisseld en zeer snel werken.

    Unix werkt zowel op pc's als op krachtige werkstations met RISC-processors; werkelijk krachtige CAD- en geografische informatiesystemen zijn geschreven voor Unix. Vanwege zijn multi-platform karakter is Unix een orde van grootte schaalbaarder dan enig ander besturingssysteem dat ik ken.

    Unix-concepten


    Unix is ​​gebaseerd op twee basisconcepten: "proces" en "bestand". Processen vertegenwoordigen de dynamische kant van het systeem, het zijn subjecten; en bestanden zijn statisch, ze zijn objecten van de acties van processen. Bijna de gehele interface van processen die met de kernel en met elkaar interacteren, lijkt op het schrijven/lezen van bestanden. /* Hoewel we zaken als signalen, gedeeld geheugen en semaforen moeten toevoegen. */

    Processen moeten niet worden verward met programma's - één programma (meestal met verschillende gegevens) kan in verschillende processen worden uitgevoerd. Processen kunnen grofweg in twee typen worden verdeeld: taken en daemons. Een taak is een proces dat zijn werk uitvoert en probeert het snel af te ronden en te voltooien. De daemon wacht tot gebeurtenissen zijn verwerkt, verwerkt de gebeurtenissen die hebben plaatsgevonden en wacht opnieuw; het eindigt meestal op bevel van een ander proces; meestal wordt het door de gebruiker gedood door het commando “kill process_number” te geven. /* In deze zin blijkt dat een interactieve taak die gebruikersinvoer verwerkt meer op een daemon lijkt dan op een taak. :-) */

    Bestandssysteem


    In oude Unixen werden 14 letters per naam toegewezen, in nieuwe is deze beperking verwijderd. Naast de bestandsnaam bevat de map de inode-identificatie - een geheel getal dat het nummer van het blok bepaalt waarin de attributen van het bestand staan. zijn geschreven. Onder hen: het gebruikersnummer - de eigenaar van de bestandsnummergroepen; aantal links naar het bestand (zie hieronder), datum en tijd van creatie, laatste wijziging en laatste toegang tot het bestand (zie hieronder), attributen voor het wijzigen van de rechten bij het opstarten (zie hieronder) en de rechten daartoe voor de eigenaar, klasgenoot en anderen om het bestand te lezen, schrijven en uit te voeren bovenliggende map.

    Elk bestand (maar geen map) kan onder verschillende namen bekend zijn, maar ze moeten zich op dezelfde partitie bevinden. Alle links naar het bestand zijn gelijk; het bestand wordt gewist wanneer de laatste link naar het bestand wordt verwijderd. Als het bestand geopend is (voor lezen en/of schrijven), neemt het aantal links ernaartoe met één toe; zoveel programma's die een tijdelijk bestand openen, verwijderen het onmiddellijk, zodat in geval van abnormale beëindiging, wanneer het besturingssysteem de door het proces geopende bestanden sluit, dit tijdelijke bestand door het besturingssysteem wordt verwijderd.

    Er is nog een interessant kenmerk van het bestandssysteem: als er na het maken van een bestand niet achter elkaar, maar met grote tussenpozen naar werd geschreven, dan wordt voor deze intervallen geen schijfruimte toegewezen. Het totale volume aan bestanden op een partitie kan dus groter zijn dan het volume van de partitie, en wanneer een dergelijk bestand wordt verwijderd, wordt er minder ruimte vrijgemaakt dan de grootte ervan.

    Bestanden zijn van de volgende typen:

    • regulier bestand met directe toegang;
    • directory (een bestand dat de namen en identificatiegegevens van andere bestanden bevat);
    • symbolische link (een string met de naam van een ander bestand);
    • blokkeerapparaat (schijf of magneetband);
    • serieel apparaat (terminals, seriële en parallelle poorten; schijven en magneetbanden hebben ook een seriële apparaatinterface)
    • genoemd kanaal.

    Speciale bestanden die zijn ontworpen om met apparaten te werken, bevinden zich meestal in de map “/dev”. Hier zijn er enkele (in de FreeBSD-nominatie):

    • tty* - terminals, waaronder:
      • ttyv - virtuele console;
      • ttyd - DialIn-terminal (meestal een seriële poort);
      • cuaa - DialOut-lijn
      • ttyp - netwerk pseudo-terminal;
      • tty - terminal waaraan de taak is gekoppeld;
    • wd* - harde schijven en hun subpartities, waaronder:
      • wd - harde schijf;
      • wds - partitie van deze schijf (hier "slice" genoemd);
      • wds - partitiesectie;
    • fd - diskette;
    • rwd*, rfd* - hetzelfde als wd* en fd*, maar met sequentiële toegang;

    Soms is het vereist dat een programma dat door een gebruiker wordt gestart, niet de rechten heeft van de gebruiker die het heeft gestart, maar van andere. In dit geval wordt het kenmerk van het wijzigen van rechten ingesteld op de rechten van de gebruiker - de eigenaar van het programma. (Als voorbeeld geef ik een programma dat een bestand met vragen en antwoorden leest en, op basis van wat het leest, de leerling test die dit programma heeft gestart. Het programma moet het recht hebben om het bestand met antwoorden te lezen, maar de leerling wie het heeft gelanceerd niet.) Zo werkt bijvoorbeeld het programma passwd, waarmee de gebruiker zijn wachtwoord kan wijzigen. De gebruiker kan het passwd-programma uitvoeren, het kan wijzigingen aanbrengen in de systeemdatabase, maar de gebruiker kan dat niet.

    In tegenstelling tot DOS, waarin de volledige bestandsnaam eruit ziet als "station:\pad\naam", en RISC-OS, waarin deze eruit ziet als "-bestandssysteem-station:$.pad.naam" (wat over het algemeen zijn voordelen heeft) ,Unix gebruikt een transparante notatie in de vorm "/pad/naam". De root wordt gemeten vanaf de partitie waarvan de Unix-kernel is geladen. Als we een andere partitie gaan gebruiken (en de opstartpartitie bevat meestal alleen de meest noodzakelijke dingen om op te starten), wordt het commando `mount /dev/partition_file directory` gebruikt. In dit geval worden bestanden en submappen die zich eerder in deze map bevonden ontoegankelijk totdat de partitie wordt ontkoppeld (uiteraard gebruiken alle normale mensen lege mappen om partities te koppelen). Alleen de toezichthouder heeft het recht tot op- en afstappen.

    Wanneer het wordt gestart, kan elk proces verwachten dat er al drie bestanden voor zijn geopend, die het kent als standaardinvoer stdin bij descriptor 0; standaard stdout op descriptor 1; en standaarduitvoer stderr op descriptor 2. Bij het inloggen op het systeem, wanneer de gebruiker een naam en wachtwoord invoert en de shell voor hem wordt gestart, worden ze alle drie doorverwezen naar /dev/tty; later kan elk van hen worden omgeleid naar elk bestand.

    Commando tolk


    Unix bevat bijna altijd twee opdrachtinterpreters: sh (shell) en csh (C-achtige shell). Naast hen zijn er ook bash (Bourne), ksh (Korn) en anderen. Zonder in details te treden, zal ik algemene principes geven:

    Alle opdrachten behalve het wijzigen van de huidige map, het instellen van omgevingsvariabelen en gestructureerde programmeerinstructies zijn externe programma's. Deze programma's bevinden zich meestal in de mappen /bin en /usr/bin. Systeembeheerprogramma's bevinden zich in de mappen /sbin en /usr/sbin.

    Het commando bestaat uit de naam van het programma dat moet worden gestart en argumenten. Argumenten worden van de opdrachtnaam en van elkaar gescheiden door spaties en tabs. Sommige speciale tekens worden geïnterpreteerd door de shell zelf.

    U kunt meerdere opdrachten op één opdrachtregel geven. Teams kunnen worden gesplitst; (sequentiële uitvoering van opdrachten), & (asynchrone gelijktijdige uitvoering van opdrachten), | (synchrone uitvoering, stdout van de eerste opdracht wordt ingevoerd in stdin van de tweede).

    U kunt ook standaardinvoer uit een bestand halen door "<файл" (без кавычек); можно направить стандартный вывод в файл, используя ">file" (het bestand wordt op nul gezet) of ">>file" (er wordt naar het einde van het bestand geschreven). Het programma zelf ontvangt dit argument niet; om te weten dat de invoer of uitvoer opnieuw is toegewezen, programma zelf moet een aantal zeer niet-triviale gebaren uitvoeren.

    Handleidingen - man


    Als je informatie nodig hebt over een commando, geef dan het commando "man command_name". Dit zal op het scherm worden weergegeven via het programma “more” - kijk hoe u dit op uw Unix kunt beheren met het commando `man more`.

    Aanvullende documentatie

  • Als je onlangs begonnen bent met het leren van Linux en je op je gemak voelt in dit uitgestrekte universum, ben je waarschijnlijk vaak de term Unix tegengekomen. Klinkt veel als Linux, maar wat betekent het? Je vraagt ​​je waarschijnlijk af hoe Unix verschilt van Linux. Het antwoord op deze vraag hangt af van wat u onder deze woorden verstaat. Elk van hen kan immers anders worden geïnterpreteerd. In dit artikel bekijken we een vereenvoudigde geschiedenis van Linux en Unix om je te helpen begrijpen wat ze zijn en hoe ze met elkaar in verband staan. Zoals altijd kunt u vragen stellen of aanvullende informatie toevoegen in de opmerkingen.

    Unix begon zijn geschiedenis eind jaren zestig en begin jaren zeventig bij AT&T Bell Labs in de Verenigde Staten. Samen met MIT en General Electric begon het onderzoekslaboratorium van Bell Labs met de ontwikkeling van een nieuw besturingssysteem. Sommige onderzoekers waren ontevreden over de voortgang van de ontwikkeling van dit besturingssysteem. Ze stopten met het werken aan het hoofdproject en begonnen hun eigen besturingssysteem te ontwikkelen. In 1970 kreeg dit systeem de naam Unix en twee jaar later werd het volledig herschreven in de programmeertaal C.

    Hierdoor kon Unix worden gedistribueerd en geport naar verschillende apparaten en computerplatforms.

    Terwijl Unix zich bleef ontwikkelen, begon AT&T licenties te verkopen om het zowel op universiteiten als voor commerciële doeleinden te gebruiken. Dit betekende dat niet iedereen, zoals nu, de code van het Unix-besturingssysteem vrijelijk kon wijzigen en verspreiden. Al snel verschenen er veel edities en varianten van het Unix-besturingssysteem, ontworpen om verschillende problemen op te lossen. De bekendste daarvan was BSD.

    Linux is qua functionaliteit en mogelijkheden vergelijkbaar met Unix, maar niet qua codebasis. Dit besturingssysteem is samengesteld uit twee projecten. Het eerste is het GNU-project, ontwikkeld door Richard Stallman in 1983, het tweede is de Linux-kernel, geschreven door Linus Torvalds in 1991.

    Het doel van het GNU-project was om een ​​systeem te creëren dat vergelijkbaar is met, maar onafhankelijk is van Unix. Met andere woorden, een besturingssysteem dat geen Unix-code bevatte en vrijelijk gedistribueerd en aangepast kon worden, zonder beperkingen, zoals vrije software. Omdat de vrije Linux-kernel niet op zichzelf kon draaien, fuseerde het GNU-project met de Linux-kernel en was het Linux-besturingssysteem geboren.

    Linux is ontworpen onder invloed van het Minix-systeem, een afstammeling van Unix, maar alle code is helemaal opnieuw geschreven. In tegenstelling tot Unix, dat werd gebruikt op servers en grote mainframes van verschillende ondernemingen, is Linux ontworpen voor gebruik op een thuiscomputer met eenvoudiger hardware.

    Tegenwoordig draait Linux op een groot aantal platforms, meer dan welk ander besturingssysteem dan ook, waaronder servers, embedded systemen, microcomputers, modems en zelfs mobiele telefoons. Nu zal het verschil tussen Linux en Unix in meer detail worden besproken.

    Wat is Unix

    De term Unix kan verwijzen naar de volgende concepten:

    • Het originele besturingssysteem ontwikkeld bij AT&T Bell Labs, op basis waarvan andere besturingssystemen worden ontwikkeld.
    • Handelsmerk, geschreven in hoofdletters. UNIX behoort tot The Open Group, die een reeks standaarden voor besturingssystemen heeft ontwikkeld: de Single UNIX Specification. Alleen systemen die aan de standaarden voldoen, mogen met recht UNIX heten. Certificering is niet gratis en vereist dat ontwikkelaars betalen om het handelsmerk te gebruiken.
    • Alle besturingssystemen zijn geregistreerd onder de naam Unix. Omdat ze voldoen aan bovengenoemde normen. Dit zijn AIX, A/UX, HP-UX, Inspur K-UX, Reliant UNIX, Solaris, IRIX, Tru64, UnixWare, z/OS en OS X - ja, zelfs degenen die op Apple-computers draaien.

    Wat is Linux

    De term Linux verwijst alleen naar de kernel. Een besturingssysteem is niet compleet zonder een desktopomgeving en applicaties. Omdat de meeste applicaties zijn ontwikkeld en momenteel worden ontwikkeld onder het GNU-project, is de volledige naam van het besturingssysteem GNU/Linux.

    Tegenwoordig gebruiken veel mensen de term Linux om te verwijzen naar alle distributies die op de Linux-kernel zijn gebaseerd. Momenteel is de nieuwste versie van de Linux-kernel 4.4, versie 4.5 is in ontwikkeling. De nummering van kernelreleases is niet zo lang geleden gewijzigd van 3.x naar 4.x.

    Linux is een Unix-achtig besturingssysteem dat zich gedraagt ​​als Unix, maar de code ervan niet bevat. Unix-achtige besturingssystemen worden vaak Un*x, *NIX en *N?X genoemd, of zelfs Unixoids. Linux heeft geen Unix-certificering, en GNU staat voor GNU en niet voor Unix, dus in dat opzicht is Mac OS X meer Unix dan Linux. Niettemin lijken de Linux-kernel en het GNU Linux-besturingssysteem qua functionaliteit sterk op Unix en implementeren ze de meeste principes van de Unix-filosofie. Dit omvat voor mensen leesbare code, het opslaan van de systeemconfiguratie in afzonderlijke tekstbestanden en het gebruik van kleine opdrachtregelprogramma's, een grafische shell en een sessiemanager.

    Het is belangrijk op te merken dat niet alle Unix-achtige systemen UNIX-certificering hebben ontvangen. In bepaalde contexten worden alle besturingssystemen gebaseerd op UNIX of de ideeën daarvan UNIX-achtig genoemd, ongeacht of ze een UNIX-certificaat hebben of niet. Bovendien kunnen ze commercieel en gratis zijn.

    Ik hoop dat het nu duidelijker is hoe Unix verschilt van Linux. Maar laten we nog verder gaan en samenvatten.

    Belangrijkste verschillen

    • Linux is een gratis en open source besturingssysteem, terwijl de originele Unix dat niet is, afgezien van enkele afgeleide producten.
    • Linux is een kloon van de originele Unix, maar bevat de code niet.
    • Het belangrijkste verschil tussen Unix en Linux is dat Linux slechts een kernel is, terwijl Unix een volwaardig besturingssysteem was en is.
    • Linux is ontwikkeld voor personal computers. En Unix richt zich vooral op grote werkstations en servers.
    • Tegenwoordig ondersteunt Linux meer platforms dan Unix.
    • Linux ondersteunt meer soorten bestandssystemen dan Unix.

    Zoals je kunt zien, ontstaat de verwarring meestal omdat Linux versus Unix totaal verschillende dingen kunnen betekenen. Welke betekenis er ook bedoeld wordt, het feit blijft dat Unix eerst kwam en Linux later. Linux is ontstaan ​​uit een verlangen naar softwarevrijheid en draagbaarheid, geïnspireerd door de Unix-aanpak. Het is veilig om te zeggen dat we allemaal iets verschuldigd zijn aan de vrije softwarebeweging, omdat de wereld zonder deze beweging een veel slechtere plek zou zijn.

    Korte informatie over de ontwikkeling van het UNIX-besturingssysteem

    UNIX OS verscheen eind jaren zestig als besturingssysteem voor de PDP-7-minicomputer. Kenneth Thomson en Dennis Ritchie namen actief deel aan de ontwikkeling.

    Kenmerken van het UNIX-besturingssysteem zijn onder meer: ​​multi-user-modus, nieuwe bestandssysteemarchitectuur, enz.

    In 1973 werd het grootste deel van de OS-kernel herschreven in de nieuwe C-taal.

    Sinds 1974 wordt het UNIX-besturingssysteem in broncode gedistribueerd op universiteiten in de Verenigde Staten.

    UNIX-versies

    Vanaf het allereerste begin van de verspreiding van UNIX begonnen er op Amerikaanse universiteiten verschillende versies van het besturingssysteem te verschijnen.

    Om te stroomlijnen combineerde AT&T in 1982 verschillende versies tot één en noemde de OS-versie System III. Een commerciële versie, System V, werd uitgebracht in 1983. In 1993 verkocht AT&T zijn UNIX-rechten aan Novell, die het vervolgens verkocht aan het X/Open en Santa Cruz Operation (SCO) consortium.

    Een andere lijn van UNIX OS, BSD, wordt ontwikkeld aan de Universiteit van Californië (Berkeley). Er zijn gratis versies van FreeBSD en OpenBSD.

    De OSF/1-familie - Open Software Foundation - omvat besturingssystemen van het consortium van IBM, DEC en Hewlett Packard. De besturingssystemen van deze familie omvatten HP-UX, AIX, Digital UNIX.

    Gratis versies van UNIX-besturingssystemen

    Er zijn een groot aantal gratis versies van UNIX.

    FreeBSD, NetBSD, OpenBSD– opties ontwikkeld op basis van BSD OS.

    De meest populaire familie van gratis UNIX-systemen is de familie van systemen Linux. De eerste variant van Linux werd in 1991 ontwikkeld door Linus Torvalds. Momenteel zijn er verschillende varianten Linux: Red Hat, Mandrake, Slackware, SuSE, Debian.

    Algemene kenmerken van UNIX-systemen

    De verschillende smaken van UNIX delen een aantal gemeenschappelijke kenmerken:

    Time-sharing multiprogrammering gebaseerd op preventieve multitasking;

    Ondersteuning voor multi-user-modus;

    Virtueel geheugen en swapmechanismen gebruiken;

    Hiërarchisch bestandssysteem;

    Unificatie van invoer-/uitvoerbewerkingen op basis van het uitgebreide gebruik van het concept van bestand;

    Draagbaarheid van het systeem;

    Beschikbaarheid van netwerkmiddelen voor interactie.

    Voordelen van UNIX-systemen

    De voordelen van de UNIX-familie van besturingssystemen zijn onder meer:



    Draagbaarheid;

    Effectieve implementatie van multitasking;

    Openheid;

    Beschikbaarheid en strikte naleving van normen;

    Uniform bestandssysteem;

    Krachtige commandotaal;

    Beschikbaarheid van een aanzienlijk aantal softwareproducten;

    Implementatie van de TCP/IP-protocolstack;

    Mogelijkheid om te werken als server of werkstation.

    UNIX-gebaseerde servers

    Server is een computer die verzoeken van andere computers in het netwerk verwerkt en zijn eigen bronnen levert voor het opslaan, verwerken en verzenden van gegevens. Een server waarop UNIX draait, kan de volgende rollen vervullen:

    Bestandsserver;

    Webserver;

    Mailserver;

    Server voor registratie op afstand (authenticatie);

    Hulpwebserviceservers (DNS, DHCP);

    Internettoegangsserver

    Een UNIX-computer beheren

    Wanneer u met een UNIX-systeem in servermodus werkt, wordt in de regel de modus voor externe toegang gebruikt met behulp van een terminalprogramma.

    Een werksessie begint met het invoeren van een loginnaam en een toegangswachtwoord

    Om serverbeheerproblemen op te lossen, zijn ze vaak beperkt tot de commandomodus. In dit geval wordt de controle uitgevoerd door speciale opdrachten in een speciaal formaat op de opdrachtregel in te voeren. De opdrachtregel heeft een speciale prompt, bijvoorbeeld:

    Algemeen beeld van de opdracht:

    1. -bash-2.05b$ commando [opties] [opties]

    Het aanroepen van OS-help ziet er bijvoorbeeld als volgt uit:

    1. -bash-2.05b$ man [toetsen] [onderwerp]
    2. Voor hulp bij het gebruik van de opdracht man typt u
    3. -bash-2.05b$ man man

    Interpretatie van de opdrachtregel

    Bij het invoeren van opdrachten worden de volgende conventies gebruikt:

    Het eerste woord op de opdrachtregel is de opdrachtnaam;

    De overige woorden zijn argumenten.

    Onder de argumenten worden sleutels (opties) gemarkeerd: woorden (symbolen) die vooraf zijn gedefinieerd voor elke opdracht, beginnend met één (kort formaat) of een paar koppeltekens (lang formaat). Bijvoorbeeld:

    Bash-2.05b$ tar –c –f arch.tar *.c

    Bash-2.05b$ tar - -create - -file=arch.tar *.c

    Bij het opgeven van opties kunnen deze worden gecombineerd. De volgende opdrachten zijn bijvoorbeeld gelijkwaardig:

    Bash-2.05b$ ls –a –l

    Bash-2.05b$ ls –l –a

    Bash-2.05b$ ls –al

    Andere argumenten geven de objecten aan waarop de bewerkingen worden uitgevoerd.

    Shell-variabelen

    Bij het werken in het systeem is er een manier om parameters door te geven aan programma's, naast het gebruik van opdrachtshell-schakelaars, - met behulp van omgevingsvariabelen. Gebruik de opdracht set om een ​​omgevingsvariabele in te stellen. Commandoformaat:

    Bash-2.05b$ stelt variabelenaam=waarde in

    Het verwijderen van een omgevingsvariabele gebeurt met de opdracht unset.

    Om toegang te krijgen tot de waarde van een variabele, gebruikt u de notatie $variable_name, bijvoorbeeld het commando:

    Bash-2.05b$ echo $PATH

    Drukt de waarde van de PATH-variabele af.

    De geschiedenis van UNIX® begint in 1969. De meeste moderne UNIX-systemen zijn commerciële versies van de originele UNIX-distributies. Solaris van Sun, HP-UX van Hewlett-Packard en AIX® van IBM zijn de beste vertegenwoordigers van UNIX, die ook hun eigen unieke elementen en hun eigen fundamentele oplossingen hebben. Sun Solaris is bijvoorbeeld UNIX, maar bevat ook veel tools en extensies die speciaal zijn ontworpen voor Sun-werkstations en -servers.

    Linux® is ontwikkeld in een poging een gratis alternatief te creëren voor commerciële UNIX-omgevingen. De geschiedenis ervan begint in 1991 of zelfs 1983, toen het GNU-project werd opgericht, waarvan het oorspronkelijke doel was om een ​​gratis alternatief voor UNIX te bieden. Linux draait op veel meer platforms, zoals Intel®/AMD x86. De meeste UNIX-besturingssystemen kunnen slechts op één platform draaien.

    Linux en UNIX hebben gemeenschappelijke historische wortels, maar er zijn ook belangrijke verschillen. Veel van de tools, hulpprogramma's en gratis applicaties die standaard bij Linux worden geleverd, waren oorspronkelijk bedoeld als gratis alternatieven voor UNIX-programma's. Linux biedt vaak ondersteuning voor veel opties en toepassingen, waarbij de beste of meest populaire functionaliteit van UNIX wordt geleend.

    Voor een beheerder of ontwikkelaar die gewend is om met Linux te werken, lijkt het UNIX-systeem misschien niet erg gebruiksvriendelijk. Aan de andere kant is de basis van een UNIX-achtig besturingssysteem (tools, bestandssysteem, API's) redelijk gestandaardiseerd. Sommige details van de systemen kunnen echter aanzienlijk verschillen. Deze verschillen zullen later in het artikel worden besproken.

    Technische verschillen

    Ontwikkelaars van commerciële UNIX-distributies vertrouwen op een specifieke set clients en een serverplatform voor hun besturingssysteem. Ze hebben een goed beeld van welke ondersteuning en optimalisatie van welke applicaties geïmplementeerd moeten worden. UNIX-fabrikanten doen hun best om compatibiliteit tussen verschillende versies te garanderen. Bovendien publiceerden ze hun besturingssysteemstandaarden.

    GNU/Linux-ontwikkeling daarentegen is niet platform- en klantspecifiek, en GNU/Linux-ontwikkelaars hebben verschillende achtergronden en perspectieven. Er bestaat geen strikte standaardset van tools of raamwerken in de Linux-gemeenschap. Om dit probleem op te lossen werd het Linux Standards Base (LSB)-project gelanceerd, maar dat was niet zo effectief als we zouden willen.

    Dit gebrek aan standaardisatie leidt tot aanzienlijke inconsistenties binnen Linux. Voor sommige ontwikkelaars is de mogelijkheid om het beste van andere besturingssystemen te gebruiken een pluspunt, maar het kopiëren van UNIX-elementen naar Linux is niet altijd handig, bijvoorbeeld wanneer apparaatnamen binnen Linux uit AIX kunnen worden overgenomen, terwijl de bestandssysteemtools gericht zijn op op HP-UX. Dit soort incompatibiliteiten komen ook voor tussen verschillende Linux-distributies. Gentoo en RedHat implementeren bijvoorbeeld verschillende updatemethoden.

    Ter vergelijking: elke nieuwe release van een UNIX-systeem wordt geleverd met een goed gedocumenteerde beschrijving van nieuwe functies en wijzigingen in UNIX. Commando's, tools en andere elementen veranderen zelden, en vaak blijven dezelfde opdrachtregelargumenten voor applicaties hetzelfde in veel versies van die software. Wanneer er significante veranderingen plaatsvinden in deze elementen, leveren leveranciers van commerciële UNIX-systemen vaak de wrapper die nodig is om compatibiliteit met eerdere versies van de tool te garanderen.

    Deze compatibiliteit betekent dat hulpprogramma's en applicaties kunnen worden gebruikt op nieuwe versies van besturingssystemen zonder de broncode te controleren of te wijzigen. Daarom kost het overstappen naar een nieuwe versie van UNIX, die doorgaans geen fundamentele verschillen vertoont met de oude versie, veel minder moeite voor gebruikers of beheerders dan het overstappen van de ene Linux-distributie naar de andere.

    Hardware-architectuur

    De meeste commerciële versies van UNIX zijn gebouwd voor één of een klein aantal hardware-architecturen. HP-UX draait alleen op PA-RISC- en Itanium-platforms, Solaris draait op SPARC en x86, en AIX draait alleen op POWER-processors.

    Vanwege deze beperkingen zijn UNIX-leveranciers relatief vrij om hun code voor deze architecturen aan te passen en voordeel te halen uit elk voordeel van hun architectuur. Omdat ze een grondige kennis hebben van de apparaten die ze ondersteunen, werken hun stuurprogramma's beter en hebben ze niet te maken met pc-specifieke BIOS-beperkingen.

    Linux daarentegen is van oudsher ontworpen voor maximale compatibiliteit. Linux is beschikbaar op verschillende architecturen, en het aantal I/O-apparaten en andere randapparatuur dat met dit besturingssysteem kan worden gebruikt, is vrijwel onbeperkt. Ontwikkelaars kunnen van tevoren niet weten welke specifieke hardware in een computer wordt geïnstalleerd en kunnen vaak niet garanderen dat deze effectief wordt gebruikt. Een voorbeeld is geheugenbeheer op Linux. Voorheen gebruikte Linux een gesegmenteerd geheugenmodel dat oorspronkelijk voor x86 was ontwikkeld. Het is nu aangepast om wisselbaar geheugen te gebruiken, maar behoudt nog steeds enkele gesegmenteerde geheugenvereisten, wat problemen veroorzaakt als de architectuur geen gesegmenteerd geheugen ondersteunt. Dit is geen probleem voor UNIX-leveranciers. Ze weten precies op welke hardware hun UNIX zal draaien.

    Kern

    De kernel is het hart van het besturingssysteem. De kernelbroncode voor commerciële UNIX-distributies is eigendom van hun ontwikkelaars en wordt niet buiten het bedrijf verspreid. De situatie is volledig tegenovergesteld met Linux. De procedures voor het compileren en patchen van kernels en stuurprogramma's lopen sterk uiteen. Voor Linux en andere open source besturingssystemen kan een patch in broncodevorm worden uitgebracht en kan de eindgebruiker deze installeren, testen en zelfs aanpassen. Deze patches zijn doorgaans niet zo grondig getest als patches van commerciële UNIX OS-leveranciers. Omdat er geen volledige lijst is van applicaties en omgevingen die getest moeten worden om correct te kunnen werken op Linux, zijn Linux-ontwikkelaars afhankelijk van eindgebruikers en andere ontwikkelaars om bugs op te sporen.

    Verkopers van commerciële UNIX-distributies geven kernels alleen uit als uitvoerbare code. Sommige releases zijn monolithisch, terwijl bij andere je alleen de mogelijkheid hebt om een ​​specifieke kernelmodule bij te werken. Maar in ieder geval wordt deze release alleen geleverd in de vorm van uitvoerbare code. Als er een update nodig is, moet de beheerder wachten tot de leverancier de patch in binaire code vrijgeeft, maar hij kan er gerust op zijn dat de leverancier de patch grondig zal controleren op achterwaartse compatibiliteit.

    Alle commerciële versies van UNIX zijn tot op zekere hoogte geëvolueerd naar een modulaire kernel. Stuurprogramma's en individuele OS-functies zijn beschikbaar als afzonderlijke componenten en kunnen indien nodig uit de kernel worden geladen of verwijderd. Maar de open, modulaire architectuur van Linux is veel flexibeler. De flexibiliteit en het aanpassingsvermogen van Linux betekenen echter ook constante verandering. De Linux-broncode verandert voortdurend, en in de grillen van de ontwikkelaar kan de API veranderen. Wanneer een module of driver is geschreven voor een commerciële versie van UNIX, gaat deze veel langer mee dan dezelfde driver voor Linux.

    Ondersteuning van bestandssysteem

    Een van de redenen waarom Linux zo'n krachtig besturingssysteem is geworden, is de brede compatibiliteit met andere besturingssystemen. Een van de meest voor de hand liggende kenmerken is de overvloed aan bestandssystemen die beschikbaar zijn. De meeste commerciële versies van UNIX ondersteunen twee of drie bestandssysteemtypen. Linux ondersteunt echter de meeste moderne bestandssystemen. laat zien welke bestandssystemen worden ondersteund door UNIX OS. Elk van deze bestandssystemen kan op Linux worden aangekoppeld, hoewel niet al deze systemen het lezen en schrijven van gegevens volledig ondersteunen.

    Tabel 1. Bestandssystemen die standaard zijn voor UNIX

    De meeste commerciële versies van UNIX ondersteunen journaling-bestandssystemen. HP-UX gebruikt bijvoorbeeld hfs als standaardbestandssysteem, maar ondersteunt ook het vxfs-journalingbestandssysteem. Solaris ondersteunt ufs en zfs. Een gejournaliseerd bestandssysteem is een essentieel onderdeel van elke bedrijfsserveromgeving. Linux was een late adoptant van ondersteuning voor journaling-bestandsystemen, maar er zijn nu verschillende opties, van klonen van commerciële bestandssystemen (xfs, jfs) tot Linux-specifieke bestandssystemen (ext3, reiserfs).

    Andere kenmerken van bestandssystemen zijn onder meer ondersteuning voor quota, controlelijsten voor bestandstoegang, spiegelen, systeemsnapshots en het wijzigen van de grootte. Ze worden in een of andere vorm ondersteund door Linux-bestandssystemen. De meeste van deze functies zijn niet standaard op Linux. Sommige functies werken mogelijk op één bestandssysteem, terwijl voor andere een ander bestandssysteem nodig is. Sommige van deze functies zijn eenvoudigweg niet beschikbaar op bepaalde Linux-bestandssystemen, terwijl voor andere de installatie van extra tools vereist is, zoals een specifieke versie van LVM of ondersteuning voor disk-arrays (software-raid-pakket). Historisch gezien heeft Linux problemen gehad met het bereiken van compatibiliteit tussen programmeerinterfaces en standaardtools, dus implementeren veel bestandssystemen deze functies op een andere manier.

    Omdat commerciële UNIX-systemen een beperkt aantal bestandssystemen ondersteunen, zijn hun tools en technieken om ermee te werken meer gestandaardiseerd. Omdat Irix bijvoorbeeld slechts één hoofdbestandssysteem ondersteunde, was er maar één manier om toegangscontrolelijsten te definiëren. Dit is veel handiger voor de eindgebruiker en voor verdere ondersteuning van dit besturingssysteem.

    Beschikbaarheid van applicaties

    De meeste basistoepassingen zijn hetzelfde op zowel UNIX als Linux. De opdrachten cp , ls , vi en cc zijn bijvoorbeeld beschikbaar op UNIX en Linux en lijken erg op elkaar, zo niet precies identiek. De Linux-versies van deze tools zijn gebaseerd op de GNU-versies van deze tools, terwijl de UNIX-versies van deze tools gebaseerd zijn op traditionele UNIX-tools. Deze UNIX-tools hebben een lange geschiedenis en zijn zelden veranderd.

    Maar dit betekent niet dat commerciële versies van UNIX niet kunnen worden gebruikt met GNU-tools. In feite nemen veel commerciële UNIX OS-leveranciers veel GNU-tools op in hun distributies of bieden ze deze aan als gratis add-ons. GNU-tools zijn niet alleen maar standaardtools. Sommige van deze gratis hulpprogramma's hebben geen commerciële equivalenten (emacs of Perl). De meeste fabrikanten installeren deze programma's vooraf, en ze worden automatisch met het systeem geïnstalleerd of zijn beschikbaar als een extra component.

    Gratis en open source-applicaties zijn bijna altijd ingebouwd in alle Linux-distributies. Er is een grote hoeveelheid gratis software beschikbaar voor Linux, en veel van deze toepassingen zijn geporteerd naar commerciële versies van het UNIX-besturingssysteem.

    Commerciële en/of closed source-applicaties (CAD, financiële programma's, grafische editors) hebben mogelijk geen equivalenten op Linux. Hoewel sommige leveranciers versies van hun applicaties voor Linux uitbrengen, aarzelen de meeste leveranciers om dit te doen totdat Linux populairder wordt onder gebruikers.

    Aan de andere kant hebben commerciële versies van UNIX historisch gezien een groot aantal bedrijfsapplicaties ondersteund, zoals Oracle of SAP. Linux heeft zwaar te lijden onder de moeilijkheid om grote applicaties te certificeren, terwijl commerciële versies van UNIX niet veel veranderen van release tot release. Linux kan veel veranderen, niet alleen bij elke nieuwe distributie, maar soms ook tussen releases van dezelfde distributie. Dit maakt het voor een softwarefabrikant erg lastig om precies te begrijpen in welke omgeving zijn applicatie gebruikt gaat worden.

    Systeembeheer

    Hoewel sommige Linux-distributies worden geleverd met een standaardset systeembeheertools, zoals YaST van SUSE, is er geen algemene Linux-standaard voor systeembeheertools. Er zijn tekstbestanden en opdrachtregeltools beschikbaar, maar deze kunnen soms lastig te gebruiken zijn UNIX heeft een eigen systeembeheerinterface. Met deze interface kunt u systeemelementen beheren en wijzigen. Hieronder ziet u een voorbeeld van de System Administration Manager voor HP-UX.

    Deze SAM bevat de volgende modules:

    • Gebruikers of groepen die u wilt beheren.
    • Kernelparameters die kunnen worden gewijzigd.
    • Netwerk instellen.
    • Schijven instellen en initialiseren.
    • X-server configureren.

    De kwaliteit van dit hulpprogrammapakket is uitstekend en dit hulpprogramma werkt goed samen met tekstbestanden. Er is geen equivalent van deze tool voor Linux. Zelfs YaST in SUSE heeft niet dezelfde functionaliteit.

    Een ander aspect van UNIX en Linux dat bij vrijwel elke besturingssysteemversie lijkt te veranderen, is de locatie van systeeminit-scripts. Gelukkig zijn /sbin/init en /etc/inittab standaardmappen. Maar systeemopstartscripts bevinden zich in verschillende mappen. toont de locaties waar systeeminitialisatiescripts zijn opgeslagen voor verschillende UNIX- en Linux-distributies.

    Tabel 2. Locatie van systeeminitialisatiescripts voor verschillende versies van UNIX
    HP-UX/sbin/init.d
    AIX/etc/rc.d/init.d
    Irix/etc/init.d
    Solaris/etc/init.d
    Roodhoed/etc/rc.d/init.d
    SUSE/etc/rc.d/init.d
    Debian/etc/init.d
    Slackware/etc/rc.d

    Vanwege het grote aantal Linux-distributies en het bijna oneindige aantal beschikbare applicaties (en er zijn ook vele versies van deze applicatie beschikbaar) voor dit besturingssysteem, wordt het beheren van programma's op Linux een moeilijke taak. Het kiezen van de juiste tool hangt af van de distributie waarmee u werkt. Verder ongemak komt voort uit het feit dat sommige distributies het Redhat Package Manager (RPM) bestandsformaat gebruiken, terwijl hun programma's incompatibel zijn. Deze scheiding resulteert in een groot aantal mogelijkheden om met pakketten te werken, en het is niet altijd duidelijk welk systeem in een bepaalde omgeving wordt gebruikt.

    Aan de andere kant bevatten commerciële UNIX-distributies standaard pakketbeheerders. Ook al zijn er verschillende versies van applicaties en specifieke formaten voor verschillende versies van UNIX, de applicatiebeheeromgeving is dezelfde. Solaris gebruikt bijvoorbeeld sinds het begin dezelfde tools voor het beheer van applicatiepakketten. En de middelen om softwarepakketten in Solaris te identificeren, toe te voegen of te verwijderen zullen waarschijnlijk hetzelfde blijven.

    Fabrikanten van commerciële UNIX-distributies leveren ook de hardware waarvoor hun besturingssysteem is ontworpen, zodat ze nieuwe apparaten in hun besturingssysteem kunnen introduceren, wat met Linux veel moeilijker te doen is. In recente versies van Linux zijn er bijvoorbeeld pogingen gedaan om ondersteuning voor hot-swappable componenten te implementeren (met wisselend succes). Commerciële versies van UNIX beschikken al jaren over deze mogelijkheid. Bovendien beschikken commerciële versies van UNIX over betere hardwaremonitoring dan Linux. Fabrikanten kunnen stuurprogramma's schrijven en deze in hun besturingssysteem implementeren, waardoor de systeemgezondheid wordt bewaakt, zoals het aantal ECC-geheugenfouten, parameters voor energieverbruik of andere hardwarecomponenten. Dit soort ondersteuning voor Linux wordt pas in de verre toekomst verwacht.

    Hardware voor commerciële UNIX-systemen heeft ook meer geavanceerde opstartopties. Voordat het besturingssysteem opstart, zijn er veel opties om te configureren hoe het zal opstarten, de gezondheid van het systeem te controleren of de hardware-instellingen aan te passen. Het BIOS van een standaard pc heeft weinig of geen van deze opties.

    Steun

    Een van de belangrijkste verschillen tussen Linux en UNIX zijn de kosten. Commerciële leveranciers van UNIX-systemen hebben een hoge prijs gesteld voor hun UNIX, ook al kan het alleen met hun hardwareplatforms worden gebruikt. Linux-distributies zijn daarentegen relatief goedkoop, zo niet gratis.

    Wanneer u een commerciële versie van UNIX aanschaft, bieden de fabrikanten doorgaans technische ondersteuning. De meeste Linux-gebruikers worden niet ondersteund door de fabrikant van het besturingssysteem. Ze kunnen alleen ondersteuning krijgen via e-mail, forums en verschillende Linux-gebruikersgemeenschappen. Deze groepen zijn echter niet alleen voor Linux-gebruikers. Veel beheerders van commerciële UNIX-besturingssystemen nemen deel aan deze open ondersteuningsgroepen om zowel hulp te kunnen bieden als, indien nodig, deze te kunnen gebruiken. Veel mensen vinden deze zelfhulpgroepen zelfs nuttiger dan het ondersteuningssysteem dat door de fabrikant van het besturingssysteem wordt aangeboden.

    Conclusie

    De fundamenten van UNIX en Linux lijken erg op elkaar. Voor een gebruiker of systeembeheerder zal het overstappen van Linux naar UNIX wat ongemak aan het werk toevoegen, maar over het algemeen zal de overgang pijnloos zijn. Zelfs als hun bestandssystemen en kernels verschillend zijn en het enige tijd kost om ze onder de knie te krijgen, blijven de tools en API's hetzelfde. Over het algemeen zijn deze verschillen niet groter dan de verschillen tussen de hoofdversies van UNIX. Alle takken van UNIX en Linux evolueren geleidelijk en zullen enigszins van elkaar verschillen, maar vanwege de volwassenheid van UNIX-concepten zullen de fundamenten van het besturingssysteem niet veel veranderen.