UNIX
De la Wikipedia, enciclopedia liberă
UNIX® este un sistem de operare portabil şi modular dezvoltat iniţial de un grup de programatori din cadrul AT&T Bell Labs, printre care şi Ken Thomson, Dennis Ritchie şi Douglas McIlroy. Astăzi, sistemele UNIX sunt dezvoltate de companii (precum IBM, HP sau SUN), indivizi şi organizaţii non-profit (precum Free Software Foundation). Astăzi, numele de UNIX nu mai reprezintă atât de mult numele unui singur sistem de operare, ci mai degrabă numele unei clase de sisteme de operare compatibile deşi nu împărtăşesc cod sursă comun.
UNIX este un sistem multi-user, multi-tasking, portabil şi modular, fiind conceput în jurul unor paradigme numite în general filosofie unix - totul este un tratat ca un fişier (inclusiv procesele rulând sau dispozitivele fizice - de la tastatură până la memoria RAM), programe care să îndeplinească o singură funcţie, dar să fie capabile să comunice între ele, alegerea celei mai simple căi spre realizarea unui obiectiv, folosirea fişierelor text atât pentru configurare cât şi pentu ieşire, separarea kernelului de programele aplicaţie etc. Nucleul sistemelor UNIX este în general scris în limbajul C (deşi prima variantă a fost scrisă în limbaj de asamblare pentru calculatoare PDP-7).
Numele UNIX aparţine The Open Group iar codul sursă original (AT&T) este disputat între Novell şi SCO. Oficial, poate fi numit UNIX doar un sistem de operare care a trecut de certificarea Single Unix Specification a The Open Group. Cu toate acestea, o mare parte din producători (mai ales cei non-profit), au ales, atât din cauza preţului, cât şi din cauza dezvoltării foarte rapide a distribuţiei lor, să nu-şi certifice sistemul. Acestea, cu toate că sunt perfect sau aproape perfect compatibile cu standardul, nu pot fi denumite oficial UNIX, şi sunt numite în mod comun "compatibile UNIX", U*ix sau *nix. Aceste sisteme nu sunt cu nimic inferioare celor certificate, şi îşi păstrează compatibilitatea cu cele certificate, ba mai mult, la momentul de faţă, deţin supremaţia din punct de vedere al bazei instalate.
Cuprins |
[modifică] Distribuţii
Sistemele UNIX actuale se bazează pe trei ramuri originale - UNIX System V (produs de cei de la AT&T la mijlocul anilor 1980), BSD (ramură desprinsă din proiectul AT&T la sfârşitul anilor 1970) şi respectiv GNU/Linux (produs ca replică gratuită şi open-source la celelalte două ramuri - nucleul e dezvoltat de Linus Torvalds începând cu 1991, iar o mare parte din aplicaţii sunt date de Proiectul GNU). Fiecare distribuţie de astăzi se bazează pe una din aceste ramuri, dar a preluat şi anumite caracteristici de la celelalte.
Astăzi se află în producţie următoarele variante:
[modifică] Certificate SUS
- Solaris - produs de firma Sun Microsystems. Este distribuit atât în versiune closed-source cât şi in versiune open source numită Open Solaris. Rulează pe arhitectura SPARC, x86 şi x64.
- HP-UX - produs de firma HP. Rulează pe arhitectura PA-RISC şi IA-64
- AIX - produs de firma IBM. Rulează pe arhitectura PowerPC şi POWER
- IRIX - produs de firma SGI. Rulează pe arhitectura MIPS
[modifică] Necertificate
- Linux (sau GNU/Linux) - produs de multiple organizaţii într-o gama largă distribuţii, open-source în baza licenţei GNU/GPL şi disponibil gratuit. Rulează pe diverse arhitecturi, incluzând x86, x64, IA-64, PowerPC, MIPS, PlayStation 2.
- BSD - astăzi open-source, şi disponibil în trei distribuţii principale (FreeBSD, NetBSD şi OpenBSD). NetBSD rulează pe 54 de arhitecturi diferite, fiind portat inclusiv pe un microcontroller care controla un prăjitor de pâine [1].
- MacOS X - produs de compania Apple pentru calculatoarele Macintosh. Este software comercial, bazat pe o combinaţie de FreeBSD, nucleu Mach şi tehnologii specifice Apple. Rulează pe arhitectura PowerPC şi x86.
[modifică] Designul sistemului
Sistemele Unix sunt bazate pe trei concepte :
- fişierul - totul este un fişier - ele sunt fără tip, şi corespund unei anumite resurse, fie un dispozitiv fizic, o resursă, un mesaj între procese, sau informaţie stocată pe un dispozitiv fizic sau pe o reţea. Sistemul cunoaşte toate informaţiile necesare prelucrării (drepturi pe fişier, proprietar, grup de acces)
- procesul - procesele (instanţe ale unui program) pot rula în paralel, atât având un mediu propriu de execuţie, cât şi împărţindu-şi accesul la o resursă comună (thread). Sistemule UNIX sunt capabile de a se folosi de memorie virtuală
- drepturi de acces - fiecare utilizator sau proces poate fi limitat în resursele pe care le poate accesa şi la modul în care resursele sunt accesate.
[modifică] Componente
Sistemele UNIX sunt construite în jurul a mai multe niveluri concentrice, conţinând fiecare o serie de componente, puse împreună pentru a forma sistemul. Un sistem UNIX conţine, pe lângă nucleu (kernel), un interpretor de comenzi care serveşte şi drept limbaj de scripting (numit shell), un set de biblioteci tipice, o serie de aplicaţii canonice şi cod sursă pentru portabilitate. Nu este necesar ca distribuţiile să conţină aceleaşi programe sau comenzi - ci doar să respecte anumite standarde şi să aibă un comportamen previzibil şi similar - astfel, kernelul Solaris nu este acelaşi cu kernelul HP-UX, iar shellul standard de pe un sistem poate fi complet diferit de cel de pe alt sistem (populare sunt shellurile bash - Bourne Again SHell, ksh - Korn SHell, tcsh - C Shell, Bourne Shell).
Componenţa generală a sistemelor UNIX este :
- Kernelul - în general monolitic cu posibilitatea de încărcare de module (ca în cazul kernelului original AT&T, prezent în System 5, Linux sau BSD).
- Mediul de dezvoltare - un mediu suficient pentru a reconstrui sistemul direct din codul sursă. Canonice sunt un compilator de C (cc), un assembler (as) , un linker pentru combinarea fişierelor obiect (ld), un set tipic de biblioteci pentru limbaj (lib), un sistem de automatizare a compilării (make), şi eventual alte limbaje de programare şi scripting (C++, Java, Perl, Python, Fortran, COBOL, Pascal), arhivatori (ar, tar, bz2, gzip, zip, rar), unelte pentru dezvoltarea de compilatoare etc.
![Un sistem compatibil UNIX - GNU/Linux rulând cu intefaţa grafică KDE](../../../upload/thumb/6/6a/Linux.jpg/256px-Linux.jpg)
- Comenzi - UNIX, în general, nu distinge între aplicaţii de sistem şi aplicaţii de uz general - shellul este o aplicaţie. Există un set de comenzi generale pentru orice sistem UNIX, necesare pentru lucrul cu sistemul şi cu fişierele de sistem (fişiere text):
- mount, umount, mkfs, fsck pentru lucrul cu sistemul de fişiere, partiţii şi discuri
- vi, emacs şi ed - editoare de text
- kill, ps - pentru lucru cu procese
- cd, ls, mv, rm, rmdir, mkdir cp - pentru lucrul cu directoare.
- cat, less, troff, sed, awk, sort, tail, tee, grep - pentru lucrul în fişiere
- date, shutdown, who, chmod, chown - pentru lucrul cu utilizatorii şi cu drepturile pe fişiere
- mail, telnet, ssh, lynx, finger, ping, whois - pentru comunicare în reţea
- Documentaţie (atât on-line cât şi off-line)
- man, apropos, info - pentru manual şi asistenţă - manualul are şi o pagina în care se auto-explică - man man
Pe lângă aceste aplicaţii, o distribuţie modernă UNIX vine cu un server grafic (în general X), pentru afişare în mod grafic, cu un sistem de ferestre (iniţial standardizat prin SUS la Motif şi CDE, astăzi omniprezente sunt Gnome şi KDE), cu o serie extinsă de programe, servere şi aplicaţii pentru diverse scopuri (de la IDE-uri pentru programare, servere web şi calcul ştiinţific până la browsere, procesoare de text şi jocuri - spre exemplu, o parte din distribuţii vin cu browserul Firefox).