Ce sunt sistemele Unix? Influența UNIX asupra evoluției sistemelor de operare. Comenzi standard UNIX

Istoria UNIX® începe în 1969. Cele mai multe sisteme UNIX moderne sunt versiuni comerciale ale distribuțiilor originale UNIX. Solaris de la Sun, HP-UX de la Hewlett-Packard, AIX® de la IBM sunt cei mai buni reprezentanți ai UNIX, care au, de asemenea, propriile elemente unice și propriile soluții fundamentale. De exemplu, Sun Solaris este UNIX, dar conține și multe instrumente și extensii concepute special pentru stațiile de lucru și serverele Sun.

Linux® a fost dezvoltat în încercarea de a crea o alternativă gratuită la mediile comerciale UNIX. Istoria sa începe în 1991 sau chiar 1983, când a fost creat Proiectul GNU, al cărui scop inițial a fost să ofere o alternativă gratuită la UNIX. Linux rulează pe mai multe platforme, cum ar fi Intel®/AMD x86. Majoritatea sistemelor de operare UNIX pot rula doar pe o singură platformă.

Linux și UNIX au rădăcini istorice comune, dar există și diferențe importante. Multe dintre instrumentele, utilitățile și aplicațiile gratuite care vin standard cu Linux au fost inițial concepute ca alternative gratuite la programele UNIX. Linux oferă adesea suport pentru multe opțiuni și aplicații, împrumutând cele mai bune sau mai populare funcționalități de la UNIX.

Pentru un administrator sau dezvoltator care este obișnuit să lucreze cu Linux, sistemul UNIX poate să nu pară foarte ușor de utilizat. Pe de altă parte, fundația unui sistem de operare asemănător UNIX (instrumente, sistem de fișiere, API-uri) este destul de standardizată. Cu toate acestea, unele detalii ale sistemelor pot diferi semnificativ. Aceste diferențe vor fi discutate mai târziu în articol.

Diferențele tehnice

Dezvoltatorii de distribuții comerciale UNIX se bazează pe un set specific de clienți și pe o platformă de server pentru sistemul lor de operare. Ei au o idee bună despre ce suport și optimizare a aplicațiilor care trebuie implementate. Producătorii UNIX fac tot posibilul pentru a asigura compatibilitatea între diferite versiuni. În plus, și-au publicat standardele OS.

Dezvoltarea GNU/Linux, pe de altă parte, nu este specifică platformei și clientului, iar dezvoltatorii GNU/Linux au medii și perspective diferite. Nu există un set standard strict de instrumente sau cadre în comunitatea Linux. Pentru a rezolva această problemă, a fost lansat proiectul Linux Standards Base (LSB), dar nu a fost atât de eficient pe cât ne-am dori.

Această lipsă de standardizare duce la inconsecvențe semnificative în Linux. Pentru unii dezvoltatori, posibilitatea de a construi pe ce este mai bun dintre alții sisteme de operare este un plus, dar nu este întotdeauna convenabil să copiați elemente UNIX în Linux, de exemplu, când numele dispozitivelor din Linux pot fi preluate din AIX, în timp ce instrumentele sistemului de fișiere sunt concentrate pe HP-UX. Incompatibilități de acest fel apar și între diferite distribuții Linux. De exemplu, Gentoo și RedHat implementează diferite metode de actualizare.

Pentru comparație, fiecare nouă lansare a unui sistem UNIX vine cu o descriere bine documentată a noilor caracteristici și modificări ale UNIX. Comenzile, instrumentele și alte elemente se schimbă rareori și, adesea, aceleași argumente ale liniei de comandă pentru aplicații rămân aceleași în multe versiuni ale acesteia software. Când apar modificări semnificative ale acestor elemente, furnizorii de sisteme comerciale UNIX oferă adesea pachetul necesar pentru a asigura compatibilitatea cu versiunile anterioare ale instrumentului.

Această compatibilitate înseamnă că utilitățile și aplicațiile pot fi utilizate pe versiuni noi de sisteme de operare fără a verifica sau modifica codul sursă. Prin urmare, trecerea la o nouă versiune de UNIX, care de obicei nu are diferențe fundamentale din versiune veche, pentru utilizatori sau administratori implică mult mai puțin efort decât trecerea de la o distribuție Linux la alta.

Arhitectura hardware

Majoritatea versiunilor comerciale ale UNIX sunt construite pentru una sau un număr mic de arhitecturi hardware. HP-UX rulează numai pe platformele PA-RISC și Itanium, Solaris rulează pe SPARC și x86, iar AIX rulează numai pe procesoare POWER.

Din cauza acestor restricții, furnizorii UNIX sunt relativ liberi să-și modifice codul pentru aceste arhitecturi și să profite de orice avantaj al arhitecturii lor. Deoarece au cunoștințe intime despre dispozitivele pe care le suportă, driverele lor funcționează mai bine și nu trebuie să facă față limitărilor BIOS-ului specifice PC-ului.

Linux, pe de altă parte, a fost proiectat istoric pentru o compatibilitate maximă. Linux este disponibil pe o varietate de arhitecturi, iar numărul de dispozitive I/O și alte periferice care pot fi utilizate cu acest sistem de operare este aproape nelimitat. Dezvoltatorii nu pot ști în prealabil ce hardware specific va fi instalat într-un computer și adesea nu îl pot furniza utilizare eficientă. Un exemplu este gestionarea memoriei pe Linux. Anterior, Linux folosea un model de memorie segmentată dezvoltat inițial pentru x86. Acum este adaptat pentru utilizare memorie de pagină, dar păstrează totuși unele cerințe de memorie segmentată, ceea ce provoacă probleme dacă arhitectura nu acceptă memoria segmentată. Aceasta nu este o problemă pentru furnizorii UNIX. Ei știu exact pe ce hardware vor rula UNIX-ul lor.

Miez

Nucleul este inima sistemului de operare. Codul sursă al nucleului pentru distribuțiile comerciale UNIX este proprietatea dezvoltatorilor acestora și nu este distribuit în afara companiei. Situația este complet inversă cu Linux. Procedurile de compilare și corecție a nucleelor ​​și driverelor variază foarte mult. Pentru Linux și alte sisteme de operare open source cod sursa patch-ul poate fi lansat ca cod sursă, iar utilizatorul final îl poate instala, testa și chiar modifica. Aceste patch-uri nu sunt, de obicei, testate atât de temeinic ca patch-urile de la furnizorii comerciali de sisteme de operare UNIX. Deoarece nu există o listă completă de aplicații și medii care trebuie testate pentru a rula corect pe Linux, dezvoltatorii Linux depind de utilizatori finaliși alți dezvoltatori care vor detecta erori.

Furnizorii distribuțiilor comerciale UNIX lansează nucleele doar ca cod executabil. Unele versiuni sunt monolitice, în timp ce altele vă permit doar să actualizați un anumit modul kernel. Dar, în orice caz, această versiune este furnizată numai sub formă de cod executabil. Dacă este necesară o actualizare, administratorul trebuie să aștepte până când producătorul lansează un patch cod binar, dar se poate mângâia să știe că producătorul își va verifica cu atenție patch-ul pentru compatibilitate cu versiunea anterioară.

Toate versiunile comerciale ale UNIX au evoluat într-o oarecare măsură la un nucleu modular. Șoferii și caracteristici individuale Sistemele de operare sunt disponibile ca componente separate și pot fi încărcate sau descărcate din kernel după cum este necesar. Dar arhitectura deschisă și modulară a Linux este mult mai flexibilă. Cu toate acestea, flexibilitatea și adaptabilitatea Linux înseamnă și schimbare constantă. Codul sursă Linux este în continuă schimbare și, la dorința dezvoltatorului, API-ul se poate schimba. Când un modul sau un driver este scris pentru o versiune comercială a UNIX, acesta va dura mult mai mult decât același driver pentru Linux.

Suport pentru sistemul de fișiere

Unul dintre motivele pentru care Linux a devenit un sistem de operare atât de puternic este compatibilitatea sa largă cu alte sisteme de operare. Una dintre caracteristicile cele mai evidente este abundența sistemelor de fișiere disponibile. Majoritatea versiunilor comerciale ale UNIX acceptă două sau trei tipuri Sistemul de fișiere. Linux, totuși, acceptă majoritatea sistemelor de fișiere moderne. arată ce sisteme de fișiere sunt acceptate de sistemul de operare UNIX. Oricare dintre aceste sisteme de fișiere poate fi montat pe Linux, deși nu toate aceste sisteme acceptă pe deplin citirea și scrierea datelor.

Tabelul 1. Sisteme de fișiere care sunt standard pentru UNIX

Majoritatea versiunilor comerciale ale UNIX acceptă sisteme de fișiere de jurnalizare. De exemplu, HP-UX folosește hfs ca sistem de fișiere standard, dar acceptă și sistemul de fișiere de jurnal vxfs. Solaris acceptă ufs și zfs. Un sistem de fișiere jurnal este o componentă importantă orice mediu de server pentru întreprindere. Linux a adoptat mai târziu suportul pentru sistemele de fișiere de jurnal, dar acum există mai multe opțiuni, de la clone ale sistemelor de fișiere comerciale (xfs, jfs) până la sisteme de fișiere specifice Linux (ext3, reiserfs).

Alte caracteristici ale sistemelor de fișiere includ suport pentru cote, liste de control al accesului la fișiere, oglindire, instantanee de sistem și redimensionare. Ele sunt acceptate într-o formă sau alta de sistemele de fișiere Linux. Majoritatea acestor caracteristici nu sunt standard pe Linux. Unele funcții pot funcționa pe un sistem de fișiere, în timp ce altele vor necesita un sistem de fișiere diferit. Unele dintre aceste caracteristici pur și simplu nu sunt disponibile pe anumite sisteme de fișiere Linux, în timp ce altele necesită instalarea instrumentelor suplimentare, cum ar fi o versiune specifică a LVM sau suport pentru matrice de discuri (pachet raid software). Din punct de vedere istoric, compatibilitatea cu Linux interfețe softwareȘi unelte standard Acest lucru este dificil de realizat, așa că multe sisteme de fișiere implementează aceste caracteristici în mod diferit.

Deoarece sistemele comerciale UNIX acceptă un număr limitat de sisteme de fișiere, instrumentele și tehnicile lor de lucru cu acestea sunt mai standardizate. De exemplu, deoarece Irix a acceptat doar un sistem de fișiere principal, a existat o singură modalitate de a defini listele de control al accesului. Acest lucru este mult mai convenabil pentru utilizatorul final și pentru suport suplimentar pentru acest sistem de operare.

Disponibilitatea aplicației

Majoritate aplicatii de baza sunt aceleași atât pe UNIX, cât și pe Linux. De exemplu, comenzile cp , ls , vi și cc sunt disponibile pe UNIX și Linux și sunt foarte asemănătoare, dacă nu chiar identice. Versiunile Linux ale acestor instrumente se bazează pe versiunile GNU ale acestor instrumente, în timp ce versiunile UNIX ale acestor instrumente se bazează pe instrumentele UNIX tradiționale. Aceste instrumente UNIX au o istorie lungă și s-au schimbat rar.

Dar asta nu înseamnă că versiunile comerciale ale UNIX nu pot fi utilizate cu instrumente GNU. De fapt, mulți furnizori comerciali de sisteme de operare UNIX includ multe instrumente GNU în distribuțiile lor sau le oferă ca suplimente gratuite. Instrumentele GNU nu sunt doar instrumente standard. Unele dintre aceste utilitare gratuite nu au echivalente comerciale (emacs sau Perl). Majoritatea producătorilor preinstalează aceste programe și sunt fie instalate automat împreună cu sistemul, fie sunt disponibile ca componentă suplimentară.

Aplicațiile gratuite și open source sunt aproape întotdeauna încorporate în toate distribuțiile Linux. Există o cantitate mare de software gratuit disponibil pentru Linux și multe dintre aceste aplicații au fost portate în versiuni comerciale ale sistemului de operare UNIX.

Aplicațiile comerciale și/sau cu sursă închisă (CAD, programe financiare, editori grafici) pot să nu aibă echivalente pe Linux. Deși unii furnizori lansează versiuni ale aplicațiilor lor pentru Linux, majoritatea vânzătorilor ezită să facă acest lucru până când Linux devine mai popular în rândul utilizatorilor.

Pe de altă parte, versiunile comerciale ale UNIX au suportat istoric un număr mare de aplicații de întreprindere, cum ar fi Oracle sau SAP. Linux suferă foarte mult din cauza dificultății de a certifica aplicații mari, în timp ce versiunile comerciale ale UNIX nu se schimbă prea mult de la o lansare la alta. Linux se poate schimba foarte mult nu numai cu fiecare nouă distribuție, ci uneori între versiunile aceleiași distribuții. Acest lucru face foarte dificil pentru un producător de software să înțeleagă exact în ce mediu va fi utilizată aplicația sa.

Administrarea sistemului

Deși unele distribuții Linux vin cu un set standard de instrumente de gestionare a sistemului, cum ar fi YaST de la SUSE, nu sunt disponibile instrumente standard de administrare a sistemului Linux, dar uneori poate fi incomod de utilizat are propria sa interfață de gestionare a sistemului Utilizând această interfață, puteți gestiona și modifica elementele sistemului. Mai jos este un exemplu de System Administration Manager pentru HP-UX.

Acest SAM conține următoarele module:

  • Utilizatori sau grupuri de gestionat.
  • Parametrii kernelului care pot fi modificați.
  • Configurarea Rețelei.
  • Configurarea și inițializarea discurilor.
  • Configurarea serverului X.

Calitatea acestui pachet de utilitate este excelentă, iar acest pachet de utilitate funcționează bine cu fișiere text. Nu există un echivalent al acestui instrument pentru Linux. Nici YaST în SUSE nu are aceeași funcționalitate.

Un alt aspect al UNIX și Linux care pare să se schimbe cu aproape fiecare versiune de sistem de operare este locația scripturilor de inițializare a sistemului. Din fericire, /sbin/init și /etc/inittab sunt directoare standard. Dar scripturile de pornire a sistemului sunt situate în directoare diferite. arată locațiile în care sunt stocate scripturile de inițializare a sistemului pentru diverse distribuții UNIX și Linux.

Tabelul 2. Locația scripturilor de inițializare a sistemului pentru versiuni diferite UNIX
HP-UX/sbin/init.d
AIX/etc/rc.d/init.d
Irix/etc/init.d
Solaris/etc/init.d
Palarie rosie/etc/rc.d/init.d
SUSE/etc/rc.d/init.d
Debian/etc/init.d
Slackware/etc/rc.d

Datorită numărului mare de distribuții Linux și aproape număr infinit aplicațiile disponibile(având în vedere că există și multe versiuni ale acestei aplicații) pentru acest sistem de operare, gestionarea programelor pe Linux devine o sarcină dificilă. Alegere instrumentul potrivit depinde de distribuția cu care lucrezi. Un inconvenient suplimentar provine din faptul că unele distribuții folosesc formatul de fișier Redhat Package Manager (RPM), în timp ce programele lor sunt incompatibile. Această separare are ca rezultat un număr mare de opțiuni pentru lucrul cu pachete și nu este întotdeauna clar ce sistem este utilizat într-un anumit mediu.

Pe de altă parte, distribuțiile comerciale UNIX conțin manageri standard pachete. Chiar dacă există versiuni diferite de aplicații și formate specifice pentru diferite versiuni de UNIX, mediul de gestionare a aplicațiilor este același. De exemplu, Solaris a folosit aceleași instrumente de gestionare a pachetelor de aplicații de la începuturi. Și, cel mai probabil, mijloacele de identificare, adăugare sau ștergere a pachetelor software din Solaris vor rămâne neschimbate.

Producătorii de distribuții comerciale UNIX furnizează, de asemenea, hardware-ul pe care sistemul lor de operare este proiectat să ruleze, astfel încât să poată introduce noi dispozitive în sistemul lor de operare, ceea ce este mult mai dificil de realizat cu Linux. De exemplu, în versiunile recente de Linux au existat încercări de a implementa suport pentru componentele care pot fi schimbate la cald (cu diferite grade de succes). Versiunile comerciale ale UNIX au această capacitate de mulți ani. De asemenea, versiunile comerciale ale UNIX au o monitorizare hardware mai bună decât Linux. Producătorii pot scrie drivere și le pot implementa în sistemul lor de operare, care va monitoriza sănătatea sistemului, cum ar fi numărul de erori de memorie ECC, parametrii de consum de energie sau orice altă componentă hardware. Acest tip de suport pentru Linux este așteptat doar în viitorul îndepărtat.

Hardware-ul pentru sistemele comerciale UNIX are, de asemenea, opțiuni de pornire mai avansate. Înainte de pornirea sistemului de operare, există multe opțiuni pentru a configura modul în care va porni, a verifica starea de sănătate a sistemului sau a ajusta setările hardware. BIOS-ul unui PC standard are puține, dacă există, dintre aceste opțiuni.

A sustine

Una dintre cele mai semnificative diferențe dintre Linux și UNIX este costul. Furnizorii comerciali de sisteme UNIX au stabilit un preț ridicat pentru UNIX-ul lor, chiar dacă acesta poate fi utilizat numai cu platformele lor hardware. Distribuțiile Linux, pe de altă parte, sunt relativ ieftine, dacă nu gratuite.

Atunci când achiziționează o versiune comercială a UNIX, producătorii oferă de obicei suport tehnic. Majoritatea utilizatorilor Linux nu au suport de la producătorul sistemului de operare. Ei pot primi sprijin doar cu ajutor E-mail, din forumuri și din diverse comunități de utilizatori Linux. Cu toate acestea, aceste grupuri nu sunt doar pentru utilizatorii Linux. Mulți administratori ai sistemelor de operare UNIX comerciale participă la aceste grupuri de suport deschise pentru a putea oferi asistență și, dacă este necesar, să o folosească. Mulți oameni consideră aceste grupuri de autoajutorare și mai utile decât sistemul de asistență oferit de producătorul sistemului de operare.

Concluzie

Fundamentele UNIX și Linux sunt foarte asemănătoare. Utilizator sau administrator de sistem Trecerea de la Linux la UNIX va adăuga unele inconveniente muncii dvs., dar în general tranziția va fi nedureroasă. Chiar dacă sistemele de fișiere și nucleele lor sunt diferite și necesită ceva timp pentru a stăpâni, instrumentele și API-urile rămân aceleași. În general, aceste diferențe nu sunt mai semnificative decât diferențele dintre versiunile majore ale UNIX. Toate ramurile UNIX și Linux evoluează treptat și vor diferi ușor unele de altele, dar datorită maturității conceptelor UNIX, fundamentele sistemului de operare nu se vor schimba foarte mult.

maestru de silabă 19 martie 2011 la 23:16

Prin ce diferă Linux de UNIX și ce este un sistem de operare asemănător UNIX?

  • Cameră de depozitare *
UNIX
UNIX (nu merita confundat cu definiția „sistem de operare asemănător UNIX”) - o familie de sisteme de operare (Mac OS X, GNU/Linux).
Primul sistem a fost dezvoltat în 1969 la Bell Laboratories, o fostă corporație americană.

Caracteristici distinctive ale UNIX:

  1. Configurare ușoară a sistemului folosind fișiere simple, de obicei text.
  2. Utilizarea pe scară largă a liniei de comandă.
  3. Utilizarea benzilor transportoare.
În zilele noastre, UNIX este folosit în principal pe servere și ca sistem pentru hardware.
Este imposibil să nu remarcăm importanța istorică enormă a sistemelor UNIX. Ele sunt acum recunoscute ca unul dintre cele mai importante sisteme de operare din punct de vedere istoric. În timpul dezvoltării sistemelor UNIX, a fost creat limbajul C.

Variante UNIX pe an

OS asemănător UNIX
OS asemănător UNIX (Uneori folosiți abrevierea *nix) - un sistem format sub influența UNIX.

Cuvântul UNIX este folosit ca marcă de conformitate și ca marcă comercială.

Consorțiul Open Group deține marca comercială „UNIX”, dar este cel mai bine cunoscut ca autoritate de certificare pentru marca comercială UNIX. Recent, The Open Group a făcut lumină asupra publicării Specificației Unice UNIX, standardele pe care un sistem de operare trebuie să le îndeplinească pentru a fi numit cu mândrie Unix.

Puteți arunca o privire asupra arborelui genealogic al sistemelor de operare asemănătoare UNIX.

Linux
Linux- denumirea generală pentru sistemele de operare bazate pe UNIX care au fost dezvoltate în cadrul proiectului GNU (proiect de dezvoltare software cu sursă deschisă). Linux rulează pe o mare varietate de arhitecturi de procesoare, de la ARM la Intel x86.

Cele mai faimoase și răspândite distribuții sunt Arch Linux, CentOS, Debian. Există, de asemenea, multe distribuții „interne”, rusești - ALT Linux, ASPLinux și altele.

Există destul de multă controversă cu privire la denumirea GNU/Linux.
Susținătorii „open source” folosesc termenul „Linux”, iar susținătorii „ software gratuit" - "GNU/Linux". Eu prefer prima varianta. Uneori, pentru comoditatea reprezentării termenului GNU/Linux, sunt folosite ortografiile „GNU+Linux”, „GNU-Linux”, „GNU Linux”.

Spre deosebire de sistemele comerciale (MS Windows, Mac OS X), Linux nu are un centru de dezvoltare geografică și o organizație specifică care deține sistemul. Sistemul în sine și programele pentru acesta sunt rezultatul muncii unor comunități uriașe, a mii de proiecte. Oricine se poate alătura proiectului sau își poate crea propriul proiect!

Concluzie
Astfel, am învățat lanțul: UNIX -> UNIX-like OS -> Linux.

Pentru a rezuma, pot spune că diferențele dintre Linux și UNIX sunt evidente. UNIX este un concept mult mai larg, baza pentru construcția și certificarea tuturor sistemelor asemănătoare UNIX, iar Linux este caz special UNIX.

Etichete: unix, linux, nix, Linux, unix

), al treilea (GNU/Linux) și multe locuri ulterioare.

Sistemele UNIX au o mare importanță istorică, deoarece au dat naștere unora dintre conceptele și abordările SO și software care sunt populare astăzi. De asemenea, în timpul dezvoltării sistemelor Unix, a fost creat limbajul C.

Exemple de sisteme de operare cunoscute asemănătoare UNIX includ: BSD, Solaris, Linux, Android, MeeGo, NeXTSTEP, Mac OS X, Apple iOS.

Poveste

Predecesorii

Primele versiuni ale UNIX au fost scrise în limbaj de asamblare și nu aveau un compilator de limbaj de nivel înalt încorporat. În jurul anului 1969, Ken Thompson, cu asistența lui Dennis Ritchie, a dezvoltat și implementat limbajul Bi (B), care era o versiune simplificată (pentru implementare pe minicalculatoare) a limbajului BCPL dezvoltat în limbaj. Bi, la fel ca BCPL, era un limbaj interpretat. În 1972, a fost lansată a doua ediție a UNIX, rescrisă în limba Bi. În 1969-1973, a fost dezvoltat un limbaj compilat bazat pe Bi, numit C (C).

Despică

Un motiv important pentru divizarea UNIX a fost implementarea stivei de protocoale TCP/IP în 1980. Înainte de aceasta, comunicarea de la mașină la mașină în UNIX era la început - cea mai importantă metodă de comunicare era UUCP (un mijloc de copiere a fișierelor de la un sistem UNIX la altul, care funcționează inițial prin rețele telefonice folosind modemuri).

Au fost propuse două interfețe de programare aplicații de rețea: Prize Berkley și interfață pentru stratul de transport TLI Interfața stratului de transport).

Interfața socket-urilor Berkley a fost dezvoltată la Universitatea din Berkeley și a folosit stiva de protocoale TCP/IP dezvoltată acolo. TLI a fost creat de AT&T conform definiției stratului de transport a modelului OSI și a apărut pentru prima dată în Sistem V versiunea 3. Deși această versiune conținea TLI și fire de execuție, inițial nu a implementat TCP/IP sau alte protocoale de rețea, dar implementări similare au fost furnizate de terți.

Implementarea TCP/IP a fost inclusă oficial și în cele din urmă în distribuția de bază a System V versiunea 4. Acest lucru, împreună cu alte considerente (în mare parte cele de piață), a determinat demarcarea finală între cele două ramuri ale UNIX - BSD (Berkeley University) și System V (versiunea comercială de la AT&T). Ulterior, multe companii, care au licențiat System V de la AT&T, și-au dezvoltat propriile soiuri comerciale de UNIX, cum ar fi AIX, CLIX, HP-UX, IRIX, Solaris.

Implementările UNIX moderne nu sunt în general sisteme V sau BSD pure. Ei implementează funcții atât ale System V, cât și ale BSD.

Sisteme de operare gratuite asemănătoare UNIX

ÎN în prezent GNU/Linux și membrii familiei BSD preiau rapid piața de pe sistemele comerciale UNIX și, în același timp, pătrund în ambele computere desktop utilizatorii finali și sistemele mobile și încorporate.

Sisteme proprietare

Influența UNIX asupra evoluției sistemelor de operare

Ideile din spatele UNIX au avut un impact uriaș asupra dezvoltării sistemelor de operare pentru computere. În prezent, sistemele UNIX sunt recunoscute ca fiind unul dintre cele mai importante sisteme de operare din punct de vedere istoric.

Folosit pe scară largă în programarea sistemelor, limbajul C, creat inițial pentru dezvoltarea UNIX, a depășit UNIX în popularitate. Limbajul C a fost primul limbaj „tolerant” care nu a încercat să impună un sau altul stil de programare programatorului. Xi a fost primul limbaj de nivel înalt, oferind acces la toate capabilitățile procesorului, cum ar fi referințe, tabele, deplasări de biți, incremente etc. Pe de altă parte, libertatea limbajului C a condus la erori de depășire a tamponului în funcțiile standard ale bibliotecii C precum gets și scanf. Rezultatul au fost multe vulnerabilități notorii, cum ar fi cea exploatată de faimosul vierme Morris.

Primii dezvoltatori ai UNIX au contribuit la introducerea principiilor de programare modulară și reutilizare în practica ingineriei.

UNIX a oferit posibilitatea de a utiliza protocoalele TCP/IP pentru o perioadă relativă calculatoare ieftine ceea ce a dus la creșterea rapidă a internetului. Aceasta, la rândul său, a contribuit la descoperirea rapidă a mai multor vulnerabilități majore de securitate, arhitectură și utilitare de sistem UNIX.

De-a lungul timpului, cei mai importanți dezvoltatori ai UNIX au dezvoltat norme culturale pentru dezvoltarea de software care au devenit la fel de importante ca și UNIX însuși. ( )

Rol social în comunitatea profesioniștilor IT și rol istoric

UNIX-urile originale rulau pe computere mari multi-utilizator, care ofereau și sisteme de operare proprietare de la producătorul de hardware, cum ar fi RSX-11 și VMS-ul său descendent. În ciuda faptului că, conform mai multor opinii, UNIX-ul de atunci avea dezavantaje în comparație cu datele OS (de exemplu, lipsa unor motoare serioase de baze de date), era a) mai ieftin și uneori gratuit pentru instituțiile academice b) era portabil de la echipament la echipament și dezvoltat în limbajul portabil C, care a „decuplat” dezvoltarea programului de hardware specific. În plus, experiența utilizatorului s-a dovedit a fi „decuplată” de hardware și producător - o persoană care a lucrat cu UNIX pe VAX ar putea lucra cu ușurință cu acesta pe 68xxx și așa mai departe.

Producătorii de hardware la acea vreme aveau adesea o atitudine cool față de UNIX, considerându-l o jucărie și oferindu-și sistemul de operare proprietar pentru muncă serioasă - în primul rând DBMS și aplicații de afaceri bazate pe acestea în structuri comerciale. Se știe că DEC a comentat această problemă în ceea ce privește VMS-ul său. Corporațiile au ascultat acest lucru, dar nu mediul academic, care avea tot ce avea nevoie în UNIX, de multe ori nu necesita sprijin oficial din partea producătorului, se gestiona singur și apreciau costul scăzut și portabilitatea UNIX.

Astfel, UNIX a fost probabil primul sistem de operare portabil pe hardware diferit.

A doua ascensiune a UNIX a fost introducerea procesoarelor RISC în jurul anului 1989. Chiar și înainte de asta, existau așa-zise. stații de lucru - computere personale cu un singur utilizator de mare putere, cu memorie suficientă, hard diskși un sistem de operare suficient de dezvoltat (multitasking, protecție a memoriei) pentru a lucra cu aplicații serioase, cum ar fi CAD. Printre producătorii de astfel de mașini, Sun Microsystems s-a remarcat, făcându-și un nume pe ele.

Înainte de apariția procesoarelor RISC, aceste stații foloseau de obicei un procesor Motorola 68xxx, la fel ca în computerele Apple (deși cu un sistem de operare mai avansat decât cel al Apple).

În jurul anului 1989, au apărut pe piață implementări comerciale ale procesoarelor cu arhitectură RISC. Decizia logică a unui număr de companii (Sun și altele) a fost de a porta UNIX la aceste arhitecturi, ceea ce a presupus imediat transferul întregului ecosistem software UNIX.

Sistemele de operare serioase proprietare, precum VMS, și-au început declinul tocmai din acest moment (chiar dacă era posibil să se transfere sistemul de operare în sine în RISC, totul a fost mult mai complicat cu aplicații pentru acesta, care în aceste ecosisteme erau adesea dezvoltate în asamblare sau în limbaje proprietare, cum ar fi BLISS), iar UNIX a devenit cel mai mult sistemul de operare calculatoare puterniceîn lume.

Cu toate acestea, în acest moment ecosistemul PC-ului a început să se mute la o interfață grafică sub formă de Windows 3.0. Avantajele enorme ale GUI, precum și, de exemplu, suportul unificat pentru toate tipurile de imprimante, au fost apreciate atât de dezvoltatori, cât și de utilizatori. Acest lucru a subminat foarte mult poziția UNIX pe piață - implementări precum SCO și Interactive UNIX nu au putut suporta aplicațiile Windows. În ceea ce privește GUI pentru UNIX, numită X11 (au existat și alte implementări, mult mai puțin populare), nu a putut funcționa pe deplin pe un computer de utilizator obișnuit din cauza cerințelor de memorie - pt. operatie normala X11 necesita 16 MB, în timp ce Windows 3.1 rula atât Word cât și Excel simultan în 8 MB cu performanță suficientă (aceasta a devenit marimea standard memoria PC la momentul respectiv). Cu prețurile mari ale memoriei, acesta a fost un factor limitativ.

Succesul Windows a dat impuls proiectului intern al Microsoft numit Windows NT, care era compatibil API cu Windows, dar în același timp avea toate aceleași caracteristici arhitecturale ale unui sistem de operare serios ca UNIX - multitasking, protecție completă a memoriei, suport pentru mașini cu multiprocesor, drepturi de acces la fișiere și directoare, înregistrarea sistemului. Windows NT a introdus, de asemenea, sistemul de fișiere jurnal NTFS, care la acea vreme depășea ca capabilități tot ceea ce era furnizat în mod standard. fișier UNIX sistemele analogice pentru UNIX erau doar produse comerciale separate de Veritas și altele.

Deși Windows NT nu a fost popular inițial datorită cerințelor mari de memorie (aceași 16 MB), a permis Microsoft să intre pe piața soluțiilor de server, cum ar fi sistemele de gestionare a bazelor de date. Mulți la acea vreme nu credeau că Microsoft, în mod tradițional o companie de software pentru desktop, ar putea fi un jucător pe piața de software pentru întreprinderi, care avea deja nume mari precum Oracle și Sun. La această îndoială s-a adăugat și faptul că Microsoft DBMS este SQL Server- a început ca o versiune simplificată a Sybase SQL Server, licențiată de la Sybase și 99% compatibilă în toate aspectele lucrului cu acesta.

În a doua jumătate a anilor 1990 Microsoft a început pentru a stoarce UNIX pe piața serverelor corporative.

Combinația factorilor de mai sus, precum și o scădere uriașă a prețului procesoarelor video 3D, care au trecut de la echipamente profesionale la echipamente de acasă, au distrus în esență conceptul de stație de lucru până la începutul anilor 2000.

În plus, sistemele Microsoft este mai simpluîn management, în special în cazurile de utilizare tipice.

Dar în acest moment, a început a treia ascensiune bruscă a UNIX.

În plus, Stallman și tovarășii săi, pe deplin conștienți de faptul că succesul software-ului non-corporat necesită instrumente de dezvoltare neproprietate, au dezvoltat un set de compilatoare pentru diferite limbaje de programare (gcc), care, împreună cu utilitarele GNU dezvoltate anterior ( înlocuire utilități standard UNIX) a compilat un pachet software necesar și destul de puternic pentru un dezvoltator.

Pentru a crea un UNIX complet gratuit, lipsea în esență doar nucleul sistemului de operare. Și a fost dezvoltat de studentul finlandez Linus Torvalds. Nucleul a fost dezvoltat de la zero și, din punct de vedere al codului sursă, nu este un derivat nici al BSD, nici al System V (deși concepte au fost împrumutate, de exemplu, Linux avea funcțiile namei și bread), totuși, într-un număr de nuanțe (apeluri de sistem, rich /proc, absență de sysctk) - gravitează mai mult spre acesta din urmă.

  • POSIX 1003.2-1992, care definește comportamentul utilităților, inclusiv interpretorul de comenzi;
  • POSIX 1003.1b-1993, care completează POSIX 1003.1-1988, specifică suport pentru sisteme în timp real;
  • POSIX 1003.1c-1995, care completează POSIX 1003.1-1988, definește fire de execuție, cunoscute și sub numele de pthreads.

Toate Standardele POSIX compilat în IEEE 1003.

Din motive de compatibilitate, mai mulți creatori de sisteme UNIX au propus utilizarea formatului ELF al sistemului SVR4 pentru fișiere binare și obiect. Un singur format asigură conformitatea completă între fișierele binare din aceeași arhitectură de computer.

Structura de directoare a unor sisteme, în special GNU/Linux, este definită în standardul ierarhiei sistemului de fișiere. Cu toate acestea, acest tip de standard este controversat în multe privințe și este, chiar și în cadrul comunității GNU/Linux, departe de a fi universal.

Comenzi standard UNIX

  • Crearea și navigarea fișierelor și directoarelor: atingeți , , , , , , pwd , , mkdir , rmdir , find , ;
  • Vizualizați și editați fișiere: mai mult , mai puțin , , ex, , emacs ;
  • Procesare text: echo, cat, grep, sort, uniq, sed, awk, tee, head, tail, cut, split, printf;
  • Comparare fișiere: comm, cmp, diff, patch;
  • Diverse utilitare shell: da, test, xargs, expr;
  • Administrare sistem: chmod , chown , , , , who , , mount , umount ;
  • Comunicatii: mail, telnet, ftp, finger, rsh, ssh;
  • Shell-uri de comandă: bash, csh, ksh, tcsh, zsh;
  • Lucrul cu codul sursă și codul obiect: cc, gcc, ld, , yacc, bison, lex, flex, ar, ranlib, make;
  • Comprimare și arhivare: comprimați, decomprimați, gzip, gunzip, tar
  • Lucreaza cu fișiere binare: , siruri de caractere

Mai jos este o listă a celor 60 de comenzi din secțiunea 1 a primei versiuni de UNIX:

  • b, bas, bcd, boot
  • pisică, chdir, verifica, chmod, chown, cmp,
  • data , db, dbppt, , , dsw, dtf,
  • mail, mesg, mkdir, mkfs, mount,
  • rew, rkd, rkf, rkl, , rmdir, roff

Note

Vezi si

), al treilea (GNU/Linux) și multe locuri ulterioare.

Sistemele UNIX au o mare importanță istorică, deoarece au dat naștere unora dintre conceptele și abordările SO și software care sunt populare astăzi. De asemenea, în timpul dezvoltării sistemelor Unix, a fost creat limbajul C.

Exemple de sisteme de operare cunoscute asemănătoare UNIX includ: BSD, Solaris, Linux, Android, MeeGo, NeXTSTEP, Mac OS X, Apple iOS.

Poveste

Predecesorii

Primele versiuni ale UNIX au fost scrise în limbaj de asamblare și nu aveau un compilator de limbaj de nivel înalt încorporat. În jurul anului 1969, Ken Thompson, cu asistența lui Dennis Ritchie, a dezvoltat și implementat limbajul Bi (B), care era o versiune simplificată (pentru implementare pe minicalculatoare) a limbajului BCPL dezvoltat în limbaj. Bi, la fel ca BCPL, era un limbaj interpretat. În 1972, a fost lansată a doua ediție a UNIX, rescrisă în limba Bi. În 1969-1973, a fost dezvoltat un limbaj compilat bazat pe Bi, numit C (C).

Despică

Un motiv important pentru divizarea UNIX a fost implementarea stivei de protocoale TCP/IP în 1980. Înainte de aceasta, comunicarea de la mașină la mașină în UNIX era la început - cea mai importantă metodă de comunicare era UUCP (un mijloc de copiere a fișierelor de la un sistem UNIX la altul, care funcționează inițial prin rețele telefonice folosind modemuri).

Au fost propuse două interfețe de programare a aplicațiilor de rețea: socket-urile Berkley și interfața stratului de transport TLI. Interfața stratului de transport).

Interfața socket-urilor Berkley a fost dezvoltată la Universitatea din Berkeley și a folosit stiva de protocoale TCP/IP dezvoltată acolo. TLI a fost creat de AT&T conform definiției stratului de transport a modelului OSI și a apărut pentru prima dată în System V versiunea 3. Deși această versiune conținea TLI și fluxuri, inițial nu a avut o implementare a TCP/IP sau a altor protocoale de rețea, dar astfel de implementările au fost furnizate de terți.

Implementarea TCP/IP a fost inclusă oficial și în cele din urmă în distribuția de bază a System V versiunea 4. Acest lucru, împreună cu alte considerente (în mare parte cele de piață), a determinat demarcarea finală între cele două ramuri ale UNIX - BSD (Berkeley University) și System V (versiunea comercială de la AT&T). Ulterior, multe companii, care au licențiat System V de la AT&T, și-au dezvoltat propriile soiuri comerciale de UNIX, cum ar fi AIX, CLIX, HP-UX, IRIX, Solaris.

Implementările UNIX moderne nu sunt în general sisteme V sau BSD pure. Ei implementează funcții atât ale System V, cât și ale BSD.

Sisteme de operare gratuite asemănătoare UNIX

În prezent, GNU/Linux și membrii familiei BSD preiau rapid piața de la sistemele comerciale UNIX și pătrund simultan atât în ​​computerele desktop ale utilizatorilor finali, cât și în sistemele mobile și încorporate.

Sisteme proprietare

Influența UNIX asupra evoluției sistemelor de operare

Ideile din spatele UNIX au avut un impact uriaș asupra dezvoltării sistemelor de operare pentru computere. În prezent, sistemele UNIX sunt recunoscute ca fiind unul dintre cele mai importante sisteme de operare din punct de vedere istoric.

Folosit pe scară largă în programarea sistemelor, limbajul C, creat inițial pentru dezvoltarea UNIX, a depășit UNIX în popularitate. Limbajul C a fost primul limbaj „tolerant” care nu a încercat să impună un sau altul stil de programare programatorului. C a fost primul limbaj de nivel înalt care a oferit acces la toate capabilitățile procesorului, cum ar fi referințe, tabele, deplasări de biți, incremente etc. Pe de altă parte, libertatea limbajului C a condus la erori de depășire a tamponului în funcțiile bibliotecii standard C. precum gets și scanf. Rezultatul au fost multe vulnerabilități notorii, cum ar fi cea exploatată de faimosul vierme Morris.

Primii dezvoltatori ai UNIX au contribuit la introducerea principiilor de programare modulară și reutilizare în practica ingineriei.

UNIX a făcut posibilă utilizarea protocoalelor TCP/IP pe computere relativ ieftine, ceea ce a dus la creșterea rapidă a internetului. Aceasta, la rândul său, a contribuit la descoperirea rapidă a mai multor vulnerabilități majore în securitatea UNIX, arhitectură și utilitățile de sistem.

De-a lungul timpului, cei mai importanți dezvoltatori ai UNIX au dezvoltat norme culturale pentru dezvoltarea de software care au devenit la fel de importante ca și UNIX însuși. ( )

Rol social în comunitatea profesioniștilor IT și rol istoric

UNIX-urile originale rulau pe computere mari multi-utilizator, care ofereau și sisteme de operare proprietare de la producătorul de hardware, cum ar fi RSX-11 și VMS-ul său descendent. În ciuda faptului că, conform mai multor opinii, UNIX-ul de atunci avea dezavantaje în comparație cu datele OS (de exemplu, lipsa unor motoare serioase de baze de date), era a) mai ieftin și uneori gratuit pentru instituțiile academice b) era portabil de la echipament la echipament și dezvoltat în limbajul portabil C, care a „decuplat” dezvoltarea programului de hardware specific. În plus, experiența utilizatorului s-a dovedit a fi „decuplată” de hardware și producător - o persoană care a lucrat cu UNIX pe VAX ar putea lucra cu ușurință cu acesta pe 68xxx și așa mai departe.

Producătorii de hardware la acea vreme aveau adesea o atitudine cool față de UNIX, considerându-l o jucărie și oferindu-și sistemul de operare proprietar pentru muncă serioasă - în primul rând DBMS și aplicații de afaceri bazate pe acestea în structuri comerciale. Se știe că DEC a comentat această problemă în ceea ce privește VMS-ul său. Corporațiile au ascultat acest lucru, dar nu mediul academic, care avea tot ce avea nevoie în UNIX, de multe ori nu necesita sprijin oficial din partea producătorului, se gestiona singur și apreciau costul scăzut și portabilitatea UNIX.

Astfel, UNIX a fost probabil primul sistem de operare portabil pe hardware diferit.

A doua ascensiune a UNIX a fost introducerea procesoarelor RISC în jurul anului 1989. Chiar și înainte de asta, existau așa-zise. Stațiile de lucru sunt computere personale cu un singur utilizator de mare putere, care au suficientă memorie, un hard disk și un sistem de operare suficient de dezvoltat (multitasking, protecție a memoriei) pentru a funcționa cu aplicații serioase, cum ar fi CAD. Printre producătorii de astfel de mașini, Sun Microsystems s-a remarcat, făcându-și un nume pe ele.

Înainte de apariția procesoarelor RISC, aceste stații foloseau de obicei un procesor Motorola 68xxx, la fel ca în computerele Apple (deși cu un sistem de operare mai avansat decât cel al Apple).

În jurul anului 1989, au apărut pe piață implementări comerciale ale procesoarelor cu arhitectură RISC. Decizia logică a unui număr de companii (Sun și altele) a fost de a porta UNIX la aceste arhitecturi, ceea ce a presupus imediat transferul întregului ecosistem software UNIX.

Sistemele de operare serioase proprietare, precum VMS, și-au început declinul tocmai din acest moment (chiar dacă era posibil să se transfere sistemul de operare în sine în RISC, totul a fost mult mai complicat cu aplicații pentru acesta, care în aceste ecosisteme erau adesea dezvoltate în asamblare sau în limbaje proprietare precum BLISS), iar UNIX a devenit sistemul de operare pentru cele mai puternice computere din lume.

Cu toate acestea, în acest moment ecosistemul PC-ului a început să se mute la o interfață grafică sub formă de Windows 3.0. Avantajele enorme ale GUI, precum și, de exemplu, suportul unificat pentru toate tipurile de imprimante, au fost apreciate atât de dezvoltatori, cât și de utilizatori. Acest lucru a subminat foarte mult poziția UNIX pe piață - implementări precum SCO și Interactive UNIX nu au putut suporta aplicațiile Windows. În ceea ce privește interfața grafică pentru UNIX, numită X11 (au existat și alte implementări, mult mai puțin populare), nu a putut funcționa pe deplin pe un computer de utilizator obișnuit din cauza cerințelor de memorie - pentru funcționarea normală, X11 necesita 16 MB, în timp ce Windows 3.1 cu acesta a funcționat suficient. bine să rulați atât Word, cât și Excel simultan în 8 MB (aceasta a devenit dimensiunea standard de memorie a PC-ului la acel moment). Cu prețurile mari ale memoriei, acesta a fost un factor limitativ.

Succesul Windows a dat impuls proiectului intern al Microsoft numit Windows NT, care era compatibil API cu Windows, dar în același timp avea toate aceleași caracteristici arhitecturale ale unui sistem de operare serios ca și UNIX - multitasking, protecție completă a memoriei, suport pentru mașini multiprocesor, drepturi de acces la fișiere și directoare, jurnalul de sistem. Windows NT a introdus, de asemenea, sistemul de fișiere jurnal NTFS, care la acea vreme depășea toate sistemele de fișiere furnizate standard cu UNIX în capabilități - analogii pentru UNIX erau doar produse comerciale separate de Veritas și altele.

Deși Windows NT nu a fost popular inițial datorită cerințelor mari de memorie (aceași 16 MB), a permis Microsoft să intre pe piața soluțiilor de server, cum ar fi sistemele de gestionare a bazelor de date. Mulți la acea vreme nu credeau că Microsoft, în mod tradițional o companie de software pentru desktop, ar putea fi un jucător pe piața de software pentru întreprinderi, care avea deja nume mari precum Oracle și Sun. La această îndoială s-a adăugat și faptul că Microsoft DBMS - SQL Server - a început ca o versiune simplificată a Sybase SQL Server, licențiată de la Sybase și 99% compatibilă în toate aspectele lucrului cu acesta.

În a doua jumătate a anilor 1990, Microsoft a început să introducă UNIX pe piața serverelor corporative.

Combinația factorilor de mai sus, precum și o scădere uriașă a prețului procesoarelor video 3D, care au trecut de la echipamente profesionale la echipamente de acasă, au distrus în esență conceptul de stație de lucru până la începutul anilor 2000.

In afara de asta, sisteme Microsoft mai ușor de gestionat, mai ales în cazurile de utilizare tipice.

Dar în acest moment, a început a treia ascensiune bruscă a UNIX.

În plus, Stallman și camarazii săi, pe deplin conștienți de faptul că instrumentele de dezvoltare neproprietate sunt necesare pentru succesul software-ului non-corporat, au dezvoltat un set de compilatoare pentru diferite limbaje de programare (gcc), care, împreună cu GNU dezvoltat anterior utilitare (înlocuind utilitarele standard UNIX) a compilat un pachet software necesar și destul de puternic pentru un dezvoltator.

Pentru a crea un UNIX complet gratuit, lipsea în esență doar nucleul sistemului de operare. Și a fost dezvoltat de studentul finlandez Linus Torvalds. Nucleul a fost dezvoltat de la zero și, din punct de vedere al codului sursă, nu este un derivat nici al BSD, nici al System V (deși concepte au fost împrumutate, de exemplu, Linux avea funcțiile namei și bread), totuși, într-un număr de nuanțe (apeluri de sistem, rich /proc, absență de sysctk) - gravitează mai mult spre acesta din urmă.

  • POSIX 1003.2-1992, care definește comportamentul utilităților, inclusiv interpretorul de comenzi;
  • POSIX 1003.1b-1993, care completează POSIX 1003.1-1988, specifică suport pentru sisteme în timp real;
  • POSIX 1003.1c-1995, care completează POSIX 1003.1-1988, definește fire de execuție, cunoscute și sub numele de pthreads.

Toate standardele POSIX sunt compilate în IEEE 1003.

Din motive de compatibilitate, mai mulți creatori de sisteme UNIX au propus utilizarea formatului ELF al sistemului SVR4 pentru fișiere binare și obiect. Un singur format asigură conformitatea completă între fișierele binare din aceeași arhitectură de computer.

Structura de directoare a unor sisteme, în special GNU/Linux, este definită în standardul ierarhiei sistemului de fișiere. Cu toate acestea, acest tip de standard este controversat în multe privințe și este, chiar și în cadrul comunității GNU/Linux, departe de a fi universal.

Comenzi standard UNIX

  • Crearea și navigarea fișierelor și directoarelor: atingeți , , , , , , pwd , , mkdir , rmdir , find , ;
  • Vizualizați și editați fișiere: mai mult , mai puțin , , ex, , emacs ;
  • Procesare text: echo, cat, grep, sort, uniq, sed, awk, tee, head, tail, cut, split, printf;
  • Comparare fișiere: comm, cmp, diff, patch;
  • Diverse utilitare shell: da, test, xargs, expr;
  • Administrare sistem: chmod , chown , , , , who , , mount , umount ;
  • Comunicatii: mail, telnet, ftp, finger, rsh, ssh;
  • Shell-uri de comandă: bash, csh, ksh, tcsh, zsh;
  • Lucrul cu codul sursă și codul obiect: cc, gcc, ld, , yacc, bison, lex, flex, ar, ranlib, make;
  • Comprimare și arhivare: comprimați, decomprimați, gzip, gunzip, tar
  • Lucrul cu fișiere binare: , șiruri

Mai jos este o listă a celor 60 de comenzi din secțiunea 1 a primei versiuni de UNIX:

  • b, bas, bcd, boot
  • pisică, chdir, verifica, chmod, chown, cmp,
  • data , db, dbppt, , , dsw, dtf,
  • mail, mesg, mkdir, mkfs, mount,
  • rew, rkd, rkf, rkl, , rmdir, roff

Note

Vezi si

Ce este Unix (pentru începători)


Dmitri Y. Karpov


Despre ce vorbesc?


Acest opus nu pretinde a fi o descriere completă. Mai mult, de dragul simplității, unele detalii au fost omise în mod deliberat. La început, ciclul a fost conceput ca un Întrebări frecvente (FAQ - întrebări frecvente), dar se pare că se va dovedi a fi un „Curs de tânăr soldat” sau „Școala de sergenți”.

Am încercat să fac o descriere comparativă a diferitelor sisteme de operare - aceasta este ceea ce, după părerea mea, lipsește în majoritatea manualelor și manualelor tehnice.

Fără a aștepta expunerea de la „oizi” Unix cu experiență, fac o mărturisire voluntară - nu pot pretinde că sunt un mare expert Unix și cunoștințele mele sunt în principal despre FreeBSD. Sper că acest lucru nu interferează.

Acest fișier va rămâne în starea „în construcție” pentru o perioadă lungă de timp. :-)

Ce este Unix?


Unix este un sistem de operare cu drepturi depline, nativ multi-utilizator, multi-tasking și cu mai multe terminale. Mai exact, este o întreagă familie de sisteme care sunt aproape complet compatibile între ele la nivel de cod sursă.

Ce tipuri de Unix există și pe ce mașini rulează?


Această listă nu se pretinde a fi completă, deoarece pe lângă cele enumerate, există multe Unix-uri și sisteme asemănătoare Unix-urilor mai puțin obișnuite, ca să nu mai vorbim de Unix-uri antice pentru mașinile învechite.

În mod convențional, putem distinge familiile System V și Berkeley. System V (a se citi „System Five”) are mai multe variante, cea mai recentă, din câte știu eu, este System V Release 4. Universitatea Berkeley este renumită nu numai pentru dezvoltarea BSD, ci și pentru majoritatea protocoalelor de Internet. Cu toate acestea, multe Unix combină proprietățile ambelor sisteme.

De unde pot obține Unix gratuit?


  • Familia BSD: FreeBSD, NetBSD, OpenBSD.
  • Familia Linux: RedHat, SlackWare, Debian, Caldera,
  • SCO și Solaris sunt disponibile gratuit pentru uz necomercial (în principal pentru instituțiile de învățământ).

    Care sunt principalele Diferențele Unix de la alt sistem de operare?


    Unix constă dintr-un nucleu cu drivere și utilitare incluse (programe externe nucleului). Dacă trebuie să modificați configurația (adăugați un dispozitiv, schimbați un port sau întrerupeți), atunci nucleul este reconstruit (legat) din modulele obiect sau (de exemplu, în FreeBSD) din surse. /* Acest lucru nu este în întregime adevărat. Unii parametri pot fi corectați fără reconstrucție. Există, de asemenea, module de nucleu care se pot încărca. */

    Spre deosebire de Unix, Windows (dacă nu este specificat care dintre ele, atunci ne referim la 3.11, 95 și NT) și OS/2 de fapt leagă driverele în timpul încărcării. În același timp, compactitatea nucleului asamblat și reutilizarea codului comun sunt cu un ordin de mărime mai mici decât în ​​Unix. În plus, cu configurația sistemului neschimbată, kernel-ul Unix poate fi scris în ROM fără modificare (doar partea de pornire a BIOS-ului trebuie schimbată) și executat fără a fi. încărcat în RAM Compactitatea codului este deosebit de importantă, deoarece nucleul și driverele nu părăsesc niciodată cel fizic. RAM, nu va fi salvat pe disc.

    Unix este cel mai multiplatform OS. WindowsNT încearcă să-l imite, dar până acum nu a avut succes - după abandonarea MIPS și POWER-PC, W"NT a rămas doar pe două platforme - tradiționalul i*86 și DEC Alpha. Desigur, portabilitatea lui programe de la o versiune de Unix la alta este limitată un program scris care nu ia în considerare diferențele în implementările Unix, facând presupuneri nerezonabile precum „o variabilă întreagă trebuie să ocupe patru octeți”, poate necesita o reluare serioasă ordine de mărime mai ușor decât, de exemplu, trecerea de la OS/2 la NT.

    De ce Unix?


    Unix este folosit atât ca server, cât și stație de lucru. În categoria serverelor, concurează cu MS WindowsNT, Novell Netware, IBM OS/2 Warp Connect, DEC VMS și sisteme de operare mainframe. Fiecare sistem are propriul său domeniu de aplicare în care este mai bun decât altele.

  • WindowsNT este pentru administratorii care preferă o interfață familiară utilizării economice a resurselor și performanțe înalte.
  • Netware - pentru rețele în care sunt necesare servicii de fișiere și imprimantă de înaltă performanță, iar alte servicii nu sunt atât de importante. Principalul dezavantaj este că este dificil să rulezi aplicații pe un server Netware.
  • OS/2 este bun acolo unde aveți nevoie de un server de aplicații „ușor”. Necesită mai puține resurse decât NT, este mai flexibil în management (deși poate fi mai dificil de configurat), iar multitasking-ul este foarte bun. Autorizarea și diferențierea drepturilor de acces nu sunt implementate la nivelul OS, ceea ce este mai mult decât compensat prin implementarea la nivelul aplicației server. (Cu toate acestea, alte sisteme de operare fac adesea același lucru). Multe stații FIDOnet și BBS-uri sunt bazate pe OS/2.
  • VMS este un server de aplicații puternic, deloc inferior Unix (și în multe privințe superior acestuia), ci doar pentru platformele VAX și Alpha ale DEC.
  • Mainframe - pentru deservirea unui număr foarte mare de utilizatori (de ordinul a câteva mii). Dar munca acestor utilizatori este de obicei organizată nu sub forma unei interacțiuni client-server, ci sub forma uneia gazdă-terminal. Terminalul din această pereche este mai probabil să nu fie un client, ci un server (Internet World, N3 pentru 1996). Avantajele mainframe-urilor includ securitate mai mare și rezistență la defecțiuni, iar dezavantajele sunt prețul corespunzător acestor calități.

    Unix este bun pentru un administrator calificat (sau dispus să devină unul) deoarece... necesită cunoașterea principiilor de funcționare a proceselor care au loc în ea. Multitasking real și partajarea strictă a memoriei asigură o fiabilitate ridicată a sistemului, deși serviciile de fișiere și imprimare ale Unix sunt inferioare Netware în performanța serviciilor de fișiere și imprimare.

    Lipsa flexibilității în acordarea drepturilor de acces utilizatorilor la fișiere în comparație cu WindowsNT face dificilă organizarea accesului _la_sistemul_de_fișiere_ la date (mai precis, la fișiere), ceea ce, după părerea mea, este compensat de ușurința de implementare, ceea ce înseamnă un hardware mai redus. cerințe. Cu toate acestea, aplicațiile precum SQL server rezolvă problema accesului la datele de grup de la sine, astfel încât capacitatea de a refuza accesul la un _fișier_, care lipsește în Unix utilizator specific dupa parerea mea este evident redundanta.

    Aproape toate protocoalele pe care se bazează Internetul au fost dezvoltate sub Unix, în special stiva de protocoale TCP/IP a fost inventată la Universitatea Berkeley.

    Securitatea Unix atunci când este administrată corect (și când nu este?) nu este în niciun fel inferioară nici Novell, nici WindowsNT.

    O proprietate importantă a Unix, care îl aduce mai aproape de mainframe, este natura sa cu mai multe terminale, mulți utilizatori pot rula simultan programe pe o singură mașină Unix. Dacă nu aveți nevoie să folosiți grafică, vă puteți descurca cu terminale text ieftine (specializate sau bazate pe PC-uri ieftine) conectate prin linii lente. În acest sens, doar VMS concurează cu acesta. De asemenea, puteți utiliza terminale grafice X atunci când același ecran conține ferestre ale proceselor care rulează pe mașini diferite.

    La categoria stații de lucru, MS Windows*, IBM OS/2, Macintosh și Acorn RISC-OS concurează cu Unix.

  • Windows - pentru cei care prețuiesc compatibilitatea în detrimentul eficienței; pentru cei care sunt gata să cumpere o cantitate mare de memorie, spațiu pe disc și megaherți; pentru cei cărora le place să dea clic pe butoanele din fereastră fără a pătrunde în esență. Adevărat, mai devreme sau mai târziu va trebui să studiați în continuare principiile de funcționare ale sistemului și protocoalelor, dar atunci va fi prea târziu - alegerea a fost făcută. Un avantaj important al Windows este capacitatea de a fura o grămadă de software.
  • OS/2 - pentru iubitorii de OS/2. :-) Deși, conform unor informații, OS/2 interacționează mai bine cu mainframe-urile și rețelele IBM decât altele.
  • Macintosh - pentru lucrări grafice, de publicare și muzicale, precum și pentru cei care iubesc o interfață clară, frumoasă și nu doresc (nu pot) înțelege detaliile funcționării sistemului.
  • RISC-OS, flashat în ROM, vă permite să evitați pierderea timpului instalând sistemul de operare și restabilindu-l după defecțiuni. În plus, aproape toate programele din cadrul acestuia utilizează resurse foarte economic, datorită cărora nu necesită schimbare și funcționează foarte rapid.

    Unix funcționează atât pe PC-uri, cât și pe stații de lucru puternice cu procesoare RISC cu adevărat puternice, iar sistemele de informații geografice sunt scrise pentru Unix. Datorită naturii sale multi-platformă, Unix este un ordin de mărime mai scalabil decât orice alt sistem de operare pe care îl cunosc.

    Concepte Unix


    Unix se bazează pe două concepte de bază: „proces” și „fișier”. Procesele reprezintă latura dinamică a sistemului, sunt subiecte; iar fișierele sunt statice, sunt obiecte ale acțiunilor proceselor. Aproape întreaga interfață a proceselor care interacționează cu nucleul și între ele arată ca fișierele de scriere/citire. /* Deși trebuie să adăugăm lucruri precum semnale, memorie partajată și semafoare. */

    Procesele nu trebuie confundate cu programe - un program (de obicei cu date diferite) poate fi executat în diferite procese. Procesele pot fi împărțite în două tipuri - sarcini și demoni. O sarcină este un proces care își realizează munca, încercând să o termine rapid și să fie finalizată. Daemonul așteaptă procesarea evenimentelor, procesează evenimentele care au avut loc și așteaptă din nou; de obicei, se termină la ordinele unui alt proces, cel mai adesea este ucis de utilizator dând comanda „kill process_number”. /* În acest sens, se dovedește că o sarcină interactivă care procesează intrarea utilizatorului este mai mult ca un demon decât o sarcină. :-) */

    Sistemul de fișiere


    În vechile Unix, au fost alocate 14 litere pe nume, în cele noi această restricție a fost eliminată Pe lângă numele fișierului, directorul conține identificatorul său de inode - un număr întreg care determină numărul blocului în care se află atributele fișierului. Printre acestea sunt scrise: numărul de utilizator - deținătorul fișierului, numărul de link-uri către fișier (vezi mai jos), data și ora de creare, ultima modificare și ultimul acces la fișier; tip (vezi mai jos), atribute pentru modificarea drepturilor la pornire (vezi mai jos) și drepturi de acces la acesta pentru a citi, a scrie și a-l executa pe proprietar. Dreptul de a scrie directorul de deasupra.

    Fiecare fișier (dar nu director) poate fi cunoscut sub mai multe nume, dar trebuie să fie localizat pe aceeași partiție. Toate linkurile către fișier sunt egale; fișierul este șters atunci când ultimul link către fișier este șters. Dacă fișierul este deschis (pentru citire și/sau scriere), atunci numărul de link-uri către acesta crește cu încă una; atât de multe programe care deschid un fișier temporar îl șterg imediat, astfel încât, în cazul unei încetări anormale, atunci când sistemul de operare închide fișierele deschise prin proces, acest fișier temporar este șters de sistemul de operare.

    Există o altă caracteristică interesantă a sistemului de fișiere: dacă, după crearea unui fișier, scrierea în acesta nu s-a făcut pe rând, ci la intervale mari, atunci nu este alocat spațiu pe disc pentru aceste intervale. Astfel, volumul total de fișiere dintr-o partiție poate fi mai mare decât volumul partiției, iar atunci când un astfel de fișier este șters, este eliberat mai puțin spațiu decât dimensiunea acestuia.

    Fișierele sunt de următoarele tipuri:

    • fișier obișnuit cu acces direct;
    • director (un fișier care conține numele și identificatorii altor fișiere);
    • link simbolic (un șir cu numele altui fișier);
    • dispozitiv de blocare (disc sau bandă magnetică);
    • dispozitiv serial (terminale, seriale și porturi paralele; discurile și benzile magnetice au, de asemenea, o interfață pentru dispozitive seriale)
    • canal numit.

    Fișierele speciale concepute pentru a funcționa cu dispozitive sunt de obicei localizate în directorul „/dev”. Iată câteva dintre ele (în nominalizarea FreeBSD):

    • tty* - terminale, inclusiv:
      • ttyv - consolă virtuală;
      • ttyd - terminal DialIn (de obicei un port serial);
      • cuaa - linie DialOut
      • ttyp - pseudo-terminal de rețea;
      • tty - terminal cu care este asociată sarcina;
    • wd* - hard disk-uriși subsecțiunile acestora, inclusiv:
      • wd - hard disk;
      • wds - partiția acestui disc (denumită aici „slice”);
      • wds - secțiune de partiție;
    • fd - dischetă;
    • rwd*, rfd* - la fel ca wd* și fd*, dar cu acces secvenţial;

    Uneori se cere ca un program lansat de un utilizator să nu aibă drepturile utilizatorului care l-a lansat, ci altele. În acest caz, atributul de modificare a drepturilor este setat la drepturile utilizatorului - proprietarul programului. (De exemplu, voi da un program care citește un fișier cu întrebări și răspunsuri și, pe baza a ceea ce citește, testează studentul care a lansat acest program. Programul trebuie să aibă dreptul de a citi fișierul cu răspunsuri, dar elevul cine a lansat-o nu.) Așa funcționează, de exemplu, programul passwd, cu ajutorul căruia utilizatorul își poate schimba parola. Utilizatorul poate rula programul passwd, poate face modificări baza sistemului date - dar utilizatorul nu poate.

    Spre deosebire de DOS, în care numele complet al fișierului arată ca „unitate:\cale\nume”, și RISC-OS, în care arată ca „-file_system-drive:$.path.name” (care, în general, are avantajele sale) ,Unix folosește o notație transparentă sub forma „/cale/nume”. Rădăcina este măsurată din partiția din care a fost încărcat nucleul Unix. Dacă vom folosi o altă partiție (și pe partiția de pornire de regulă, se găsesc doar elementele esențiale pentru încărcare), se folosește comanda `mount /dev/partition_file directory`. În acest caz, fișierele și subdirectoarele care se aflau anterior în acest director devin inaccesibile până când partiția este demontată (în mod firesc, toți oamenii normali folosesc directoare goale pentru a monta partițiile). Numai supraveghetorul are dreptul de a monta și demonta.

    Când este pornit, fiecare proces se poate aștepta să aibă trei fișiere deja deschise pentru el, pe care le cunoaște ca standard de intrare standard la descriptorul 0; standard stdout pe descriptorul 1; și standard de ieșire stderr pe descriptorul 2. Când se conectează în sistem, când utilizatorul introduce un nume și o parolă și shell-ul este lansat pentru el, toate trei sunt direcționate către /dev/tty; mai târziu, oricare dintre ele poate fi redirecționat către orice fișier.

    Interpret de comandă


    Unix include aproape întotdeauna două interpret de comenzi- sh (cochilie) și csh (cochilie asemănătoare C). Pe lângă ele, există și bash (Bourne), ksh (Korn) și altele. Fără a intra în detalii, voi da principii generale:

    Toate comenzile, cu excepția modificării directorului curent, setarea variabilelor de mediu și instrucțiunile de programare structurată, sunt programe externe. Aceste programe sunt de obicei localizate în directoarele /bin și /usr/bin. Programele de administrare a sistemului se află în directoarele /sbin și /usr/sbin.

    Comanda constă din numele programului care urmează să fie lansat și argumente. Argumentele sunt separate de numele comenzii și unele de altele prin spații și file. Unele caractere speciale sunt interpretate de shell-ul în sine.

    unu Linie de comanda Puteți da mai multe comenzi. Echipele pot fi împărțite; (execuția secvențială a comenzilor), & (execuția asincronă simultană a comenzilor), | (execuție sincronă, stdout al primei comenzi va fi alimentat la stdin al celei de-a doua).

    De asemenea, puteți prelua intrare standard dintr-un fișier incluzând „<файл" (без кавычек); можно направить стандартный вывод в файл, используя ">fișier" (fișierul va fi pus la zero) sau ">>fișier" (scrierea se va face până la sfârșitul fișierului). Programul în sine nu va primi acest argument; pentru a ști că intrarea sau ieșirea a fost reatribuită, programul în sine trebuie să efectueze niște gesturi foarte netriviale.

    Manuale - omule


    Dacă trebuie să obțineți informații despre orice comandă, dați comanda „man command_name”. Acest lucru va fi afișat pe ecran prin programul „mai mult” - vedeți cum să îl gestionați pe Unix cu comanda `man more`.

    Documentație suplimentară