Documente Academic
Documente Profesional
Documente Cultură
Capitolul+8 Sisteme de Operare
Capitolul+8 Sisteme de Operare
Capitolul+8 Sisteme de Operare
162
Cei interesai de evoluia n timp a Unix-ului pot vizualiza figura 7.1. din capitolul anterior referitor la Linux. Unix-ul este un sistem deschis (open sistem) i este folosit pe scar larg att pentru servere ct i pentru computere personale. Mediul de dezvoltare Unix i modelul de programare client-server au fost eseniale n dezvoltarea Internetului i trecerea de la sistemele de calculatoare individuale la sistemele de calculatoare n reea. Sistemul de operare Unix a fost conceput de la bun nceput ca portabil, multiuser, multitasking i time-sharing. Este caracterizat de urmtoarele concepte informatice de baz: - datele sunt stocate n format text simplu ntr-un sistem de fiiere organizate ierarhic; - dispozitivele i toate elementele IPC (Inter-Process Communication) sunt vzute ca fiiere; - se folosete pe larg linia de comand; - n loc de programe monolitice masive conine programe simple care au o singur funcie, aceste programe fiind nlnuite folosind facilitatea pipe pentru a obine funcionalitatea dorit. Sistemul Unix const din totalitatea acestor programe i a unui program master care controleaz sistemul, nucleul (kernel-ul). n UNIX mai muli utilizatori pot folosi calculatorul n acelai timp i executa independent diferite aplicaii. Pentru a avea acces la un sistem UNIX, utilizatorul trebuie s primeasc un cont. Din punct de vedere al utilizatorului contul este reprezentat de un nume i o parol. Din punct de vedere al administrrii sistemului, un cont nseamn evidena utilizrii resurselor la care utilizatorul are drept de acces. Utilizatorii unui sistem de operare UNIX sunt administratorul de sistem, un superutilizator (superuser) i utilizatorii obinuii (users). Superutilizatorul are drepturi de acces nelimitate n sistem, sarcina principal fiind administrarea i ntreinerea sistemului de operare. Numele superutilizatorului va fi ntotdeauna root. Utilizatorii obinuii au drepturi de acces limitate n sistem, care fi extinse sau anulate de ctre administratorul de sistem. Utilizatorii obinuii pot forma grupuri de utilizatori (grup) crora administratorul de sistem le poate acorda drepturi comune sau individuale.
Sistemul de operare
163
8.2. Standardizare
Prima ncercare de standardizare a sistemelor de tip UNIX a avut loc n cadrul proiectului ARPA i a fost documentat n RFC 681. Documentul descrie cerinele sistemului Unix pentru a fi folosit ca un ARPANET minihost. ARPANET avea s devin mai trziu Internetul din ziua de astzi. Procesul de evaluare a fost de asemenea bine documentat [44]. ncepnd cu sfritul anilor 1980, un efort de standardizare cunoscut sub numele de POSIX a asigurat o baz comun pentru toate sistemele de operare de tip Unix. POSIX este un standard deschis, bazat pe structurile comune de date ntlnite n sistemele Unix concurente pe pia la vremea respectiv. Standardul POSIX a fost publicat de IEEE n anul 1988. Un efort similar a avut loc la nceputul anilor 1990 sub numele de Common Open Software Environment (COSE) Initiative i este administrat de The Open Group. O nou activitate de standardizare a nceput n 1998 de ctre Austin Group cu scopul de a uni cele dou specificaii anterioare (POSIX i COSE) sub numele de Single Unix Specification. n anul 1999, un numr de furnizori de sisteme Unix au convenit asupra unui nou standard care vizeaz de data aceasta formatul binar folosit de programele din sistemele Unix. Specificaia se numete SVR4's Executable and Linkable Format (ELF) i ofer o compatibiltate binar substanial ntre diversele versiuni de Unix care rulez pe acelai tip de procesor. Alt standard folosit n Unix este The File System Hierarchy Standard. A fost creat ca un layout de referin pentru sistemul de fiiere. Este folosit pe larg n special n Linux.
164
Fiecare distribuie dezvoltat ulterior se bazeaz pe una din aceste ramuri, dar cu caracteristici preluate i de la celelalte. Principalele tipuri de distribuii Unix aflate n exploatare sunt: - Solaris produs de firma Sun Microsystems. Este distribuit att n versiune closed-source ct i n versiune open source numit Open Solaris. Ruleaz pe arhitectura SPARC, x86 i x86-64; - HP-UX produs de firma HP. Ruleaz pe arhitectura PARISC i IA-6; - AIX produs de firma IBM. Ruleaz pe arhitectura PowerPC i POWE; - IRIX produs de firma SGI. Ruleaz pe arhitectura MIP; - MacOS X produs de compania Apple pentru calculatoarele Macintosh. Este software comercial, bazat pe o combinaie de FreeBSD, nucleul Mach i tehnologii specifice Apple. Ruleaz pe arhitectura PowerPC i x86; - Linux (sau GNU/Linux) produs de multiple organizaii ntr-o gama larg de distribuii, open-source n baza licenei GPL (licena) i disponibil gratuit. Ruleaz pe diverse arhitecturi, incluznd x86, x86-64, IA64, PowerPC, MIPS, PlayStation 2; BSD open-source i disponibil n trei distribuii principale: FreeBSD, NetBSD i OpenBSD. n figura 8.1 sunt prezentate aceste distribuii Unix, modul de evoluie i interdependen [43].
Sistemul de operare
165
Ele sunt: - nucleu (kernel); - shell un interpretor de comenzi care servete i drept limbaj de scripting; - un set de biblioteci tipice; - o serie de aplicaii (inclusiv codul surs pentru portabilitate). Toate distribuiile au un comportament similar, fr s conin aceleai programe sau comenzi. De exemplu kernel-ul Solaris nu este acelai cu kernel-ul HP-UX, iar shell-ul 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, C Shell i tcsh-Turbo C Shell). Relaiile ntre nivelurile sistemului se realizeaz prin apeluri sistem, utilitare, proceduri standard folosite de limbajul C i programe de gestiune a intrrilor/ieirilor, furnizate odat cu sistemul i diferite pentru fiecare sistem de calcul.
166
Apelurile sistem i interfaa de biblioteci reprezint delimitarea ntre programele utilizator i kernel. Apelurile sistem arat ca apeluri de funcii obinuite din programele scrise n C, iar bibliotecile mapeaz aceste apeluri de funcii ctre primitive necesare sistemului de operare. Totui, programele
Sistemul de operare
167
n limbaj de asamblare pot invoca apeluri sistem direct fr a apela o bibliotec de funcii sistem. Programele folosesc i alte biblioteci cum ar fi bibliotecile standard I/O pentru a beneficia de o utilizare mai sofisticat a apelurilor sistem. Bibliotecile sunt linkedidate cu programele n momentul compilrii i sunt astfel parte a programelor utilizator pentru scopurile menionate mai sus. n figur setul de apeluri sistem (sistem call) este mprit n dou categorii: cele care interacioneaz cu subsistemul de fiiere i cele care interacioneaz cu subsistemul de control al proceselor. Subsistemul de fiiere gestioneaz: - fiierele; - spaiului alocat fiierelor; - spaiului liber; - accesul controlat la fiiere; - returnarea datelor pentru utilizatori. Procesele interacioneaz cu subsistemul de fiiere printr-un set specific de apeluri sistem, cum ar fi open (pentru a deschide un fiier n modul citire sau scriere), close, read, write, stat (pentru interogarea atributelor unui fiier), chown (schimb proprietarul fiierului) i chmod (schimb permisiunile de acces ale fiierului). Subsistemul de fiiere acceseaz datele dintr-un fiier utiliznd un mecanism de buffering care controleaz fluxul de date dintre kernel i dispozitivele de stocare secundare. Mecanismul de buffering interacioneaz cu driverele dispozitivului bloc de I/O pentru a iniia transferul de date ctre i dinspre kernel. Driverele de dispozitiv (device drivers) sunt module de fiiere kernel care controleaz operaiile dispozitivelor periferice. Dispozitivele bloc I/O sunt dispozitive de stocare cu acces aleator. Alternativ, driverele lor de dispozitiv le fac s apar ca fiind dispozitive de stocare cu acces aleator pentru restul sistemului. De exemplu, un driver de unitate de benzi (tape), poate permite kernelului s trateze o unitate de benzi ca un dispozitiv de stocare cu acces aleator. De asemenea, subsistemul de fiiere interacioneaz direct cu driverele de dispozitive raw I/O fr intervenia mecanismului de buffering. Dispozitivele raw, cteodat numite i dispozitive caracter, includ toate dispozitivele care nu sunt dispozitive bloc.
168
Subsistemul de control al proceselor este responsabil de: - sincronizarea proceselor; - gestiunea memoriei pentru comunicaia ntre procese; - planificarea execuiei proceselor. Subsistemul de fiiere i subsistemul de control al proceselor interacioneaz atunci cnd se ncarc un fiier n memorie pentru execuie, subsistemul de gestiune a proceselor citete fiierele executabile n memorie nainte s le execute. Unele din apelurile sistem pentru controlul proceselor sunt: - ork (creaz un nou proces copil i se apeleaz din interiorul unui proces printe); - exec (creaz un nou proces prin copierea imaginii procesului din care este apelat funcia i apoi rularea unui program binar din noul proces creat); - exit (termin execuia unui proces); - wait (sunt situaii n care procesul copil se termin sau i schimb starea i astfel procesul printe apeleaz aceast funcie pentru a afla de aceast schimbare a procesului copil); - signal (controleaz rspunsul procesului la evenimente neobinuite). Modulul de gestionare a memoriei controleaz alocarea memoriei. Dac la un moment dat sistemul nu are suficient memorie fizic pentru toate procesele, kernelul le mut din memoria principal n memoria secundar n aa fel nct tuturor proceselor li se d o nou ans s fie executate. Modulul de planificare a execuiei proceselor aloc CPU proceselor. El le planific s fie executate pe rnd sau pe baza listei de prioriti, alege procesul cu cea mai mare prioritate care s fie rulat naintea altora. Comunicare ntre procese se poate face prin semnale asincrone de evenimente sau prin semnale sincrone de mesaje ntre procese. Controlul hardware este responsabil cu tratarea ntreruperilor hardware i comunicarea cu maina de calcul. Dispozitive precum discuri sau terminale pot ntrerupe CPU n timp ce execut un proces. n acest caz, kernelul poate relua execuia procesului ntrerupt dup ce trateaz ntreruperea de dispozitiv (disc, terminal). ntreruperile nu sunt tratate de procese
Sistemul de operare
169
speciale ci de funcii speciale n kernel, apelate n contextul procesului curent care ruleaz, conform celor prezentate n & 2.4.
170
include coninutul registrelor, prioritatea procesului i o list a fiierelor deschise. Procesele nu pot s-i modifice direct mediul asociat, ci doar s solicite modificri prin intermediul funciilor sistem. Procesele pot fi terminate voluntar (prin apelul funciei sistem exit) sau involuntar ca rezultat al aciunilor ilegale, al semnalelor sau al ntreruperilor generate de utilizator. Pentru un program activ, pot exista mai multe procese active numite instane. Firele de execuie multiple pot exista printr-un proces (sau task). Execuia proceselor se realizeaz pe 2 niveluri: utilizator (user) procesele i pot accesa doar propriile zone de cod i date; nucleu (kernel) procesele pot accesa i spaiul de adres al nucleului. Anumite instruciuni main sunt privilegiate i nu pot fi executate dect n mod nucleu. Trecerea de la user la nucleu se face prin apeluri sistem iar de la nucleu la user se face prin ntoarcerea din apelul sistem, aa cum se poate urmri n figura 8.4 [43].
n orice moment exist un singur proces executat de CPU. Comutarea dintre modul de operare utilizator i modul de operare kernel se poate face atunci cnd este planificat prin planificator (scheduler), atunci cnd anumite servicii necesit comutare i cnd este solicitat prin apeluri n system, n mod asemntor cu ce am prezentat la paragraful 2.4. Comutarea de ctre scheduler aloc unui proces utilizator o cuant de timp (aproximativ 0,1 secunde) i apoi apeleaz ntreruperile de ceas ale sistemului. Aceasta presupune salvarea strii procesului curent care se
Sistemul de operare
171
execut i selectarea unui alt proces rulabil pentru execuie. Aceast trecere se face n modul kernel. n momentul trecerii de la un proces la altul prioritatea procesului curent este reevaluat (de obicei mai mic). Prioritile proceselor Unix sunt urmtoarele, n ordine descresctoare: 5 erori hardware; 4 ntreruperi de ceas; 3 disc I/O; 2 tastatur; 1 nreruperi software. Apelurile n sistemul Unix sunt prezentate n tabelul 8.1 [41].
Tabelul 8.1. Apeluri
Operaia Deschiderea unui fiier nchiderea unui fiier Efectuarea de I/O Trimiterea unui semnal Crearea unui pipe Crearea unui socket Duplicarea unui proces Copierea imaginii unui proces Terminarea unui proces
Funcia de apel din limbajul C Open Close read/write Kill Pipe Socket Fork Exec Exit
Strile de baz ale unui proces sunt: 1. nou procesul a fost creat; 2. n ateptare ateapt apariia unui eveniment (ntrerupere hardware, intervenia utilizatorului sau a altui proces. Un proces intr n aceast stare singur, de exemplu cnd ateapt terminarea unei operaii de I/O. Un proces se poate afla n ateptare pe hard disc sau n memorie; 3. gata de execuie procesul are toate resursele, asteptnd s intre n execuie; n acest stare se pot gsi mai multe procese simultan, plasate de nucleu n coada de ateptare, n funcie de prioriti; 4. n execuie n mod kernel sau user;
172
5. suspendat un alt proces a ordonat ca acest proces s intre n starea suspendat (go to sleep). Procesul aflat n starea suspendat va fi trezit de ctre alt proces; 6. Zombie sunt trecute toate procesele n momentul terminrii lor; Nu se elibereaz intrarea n tabela de procese, acest lucru se realizeaz numai de ctre printele procesului, n urma primirii de la nucleu a unui semnal de terminare a operaiei; 7. terminat procesul i-a ncheiat execuia.
Sistemul de operare
173
reprezint o coad circular, cu pointeri de Read/Write diferii (pentru a respecta politica FIFO). Nu permit acces direct. Operaiile de Read/Write se fac sincronizat. Comunicarea prin pipe-uri anonime se face doar ntre procesul tat i fiii si, inod-ul pentru pipe-ul anonim este ters automat de SO atunci cnd dispar procesele care-l refereau. c) Comunicarea prin zone de memorie comun (semafor.c) Reprezint cea mai rapid form de comunicare ntre procese. Este o zon de memorie n care este mapat o poriune din spaiul virtual al proceselor care comunic (un bloc comun de memorie virtual partajat de mai multe procese). Procesele citesc sau scriu n spaiul comun de memorie folosind aceleai instruciuni cu care citesc/scriu alte poriuni de memorie virtual. Permisiunile sunt read-only sau read-write pentru fiecare proces n parte. Excluderea mutual este asigurat de procesele care folosesc memoria partajat. Implementarea se realizeaz cu ajutorul primitivelor de comunicare specifice pentru zone de memorie comune, care fac parte din pachetul IPC, cum ar fi shmget sgmat shmdt shmdl (unde sh = shared, m = memory). d) Comunicarea prin mesaje Este mecanismul cel mai eficient implementat n pachetul IPC. Se comunic printr-o coad de mesaje circular, gestionat de SO. Fiecare proces are o coad de mesaje care funcioneaz ca o cutie potal. Transmisia se face cu sincronizare (blocare-deblocare), mesajele avnd asociat un tip (valoare numeric) iar recepia se face n funcie de tipul ales. Primitivele de lucru sunt: msgget msgctl msgsnd msgrcv.
174
compilrii (make), i eventual alte limbaje de programare i scripting (C, C++, Java, Perl, Python, Fortran, COBOL, Pascal), programe de arhivare (ar, tar, bz2, gzip, zip, rar), unelte pentru dezvoltarea de compilatoare etc. O sintez referitoare la mediul de dezvoltare Unix este fcut n tabelul 8.2 [42].
Tabelul 8.2. Mediul de dezvoltare Unix
C|C++|Java|Fortran|COBOL|Pascal shell|AWK|Perl|Python gcc|GNU Assembler|GDB|make ar, tar, bz2, gzip, zip, rar Subversion|Git|Mercurial|RCS|CVS Eclipse
Sistemul de operare
175
cat|cd|chmod|chown|chgrp|cksum|cmp|cp|du| df|file|fsck|ln|ls|lsof|mkdir|mount|mv|pw d|rm|rmdir|split|touch at|chroot|cron|exit|kill|killall|nice|pgr ep|pidof|pkill|ps|pstree|sleep|time|top|w ait env|finger|id|mesg|passwd|su|sudo|uname|u ptime|w|wall|who|whoami|write awk|comm|cut|ed|ex|fmt|head|iconv|join|le ss|more|paste|sed|sort|tac|tail|tr|uniq|w c|xargs basename|echo|expr|false|printf|test|true inetd|netstat|ping|rlogin|traceroute find|grep|strings
Autentificare n sistem (deschiderea sesiunii de lucru) Ieire din sesiune de Unix Schimbare parol Blocare sesiune Numele server-ului gazd Vizualizare utilizatori din sistem + ce ruleaz Vizualizare utilizatori din sistem + conectare Vizualizare utilizatori din sistem + nume Trimite un mesaj unui utilizator (ctrl d)
176
wall
talkuser Permite convorbirea cu utilizatorul specificat (dac talkuser@hostname acesta dorete) mesg [y][n] date time clear awk[prog][param] [list_fi] bc Dc Permite sau interzice primirea mesajelor de la ali utilizatori Afiare/setare dat Afiare or tergere ecran Procesor de abloane Procesor aritmetic Calculator de birou
Sisteme de dezvoltare
GNOME|KDE|XFCE|CDE|IRIX Interactive Desktop EDE|toil|LXDE|Mezzo|ROX|UDE AfterStep|Beryl Compiz|Enlightenment|KWin| Metacity|Sawfish|Window Maker|Blackbox|Fluxbox| FVWM95|IceWM|JWM|Openbox|QVWM|twm|WindowLab| dwm|evilwm|ratpoison|UWM|wmii|xmonad GTK+|Qt|Motif|FLTK|OPEN LOOK
Sistemul de operare
177
Primul sistem de particularizare a elementelor grafice i ferestrelor a fost OPEN LOOK, pe la sfitul anilor 1980 de ctre AT&T, Sun Microsystems i XEROX. Acum se folosesc noi medii grafice precum GNOME, KDE, Fluxbox etc.
vi|vim|emacs|gedit|Kate|AbiWord|NEdit|nan o|Bluefish OpenOffice.org|Gnome Office|KDE Office TeX|LaTeX|Kile|LyX|Texmaker|Scribus GIMP|Inkscape|Blender|Krita|Maya|Softimag e|K-3D|Dia MPlayer|Xine|Totem|Kaffeine|VLC|Amarok|aT unes|XMMS|BMP|Audacious|RhythmBox|Cineler ra| KDenlive|LiVES|Kino|AviDemux|Ardour|A udacity Apache|thttpd|lighttpd|vsftpd|pureftpd|OpenSSH|Samba|Squid|NTP|ISC DHCP telnet|ftp|Firefox|Galeon|Konqueror|Opera |Kontact|Evolution|Thunderbird|PidgIn|Kop ete|Gabber |TightVNC|RealVNC|aMule|Azureu s|Vuze|Qtorrent|Ktorrent|Skype|Linphone|O PenwenGo|Ekiga gufw|nmap|Wireshark|chkrootkit|rkhunter
Securitate
178
Fiierele pot fi: - /bin: utilitare n form executabil: compilatoare, asambloare, instrumente pentru dezvoltarea programelor; - /dev: fiiere speciale pentru dispozitivele periferice: consola sistem, terminale, discuri, imprimant etc.; - /etc: programe pentru administrarea sistemului: fiiere cu parole, comenzi de iniializare; - /lib: biblioteci pentru limbaje de programare i utilitare; - /opt: conine software storage objects; - /tmp: spaiu temporar de manevr folosit de programele de sistem; - / : local partiia activ (de aici se face boot-area); - /: lost+found: director unde se ataeaz fiierele i directorii gsii ca nefcnd parte din nici un sistem de fiiere;
Sistemul de operare
179
- /usr: alte programe necesare utilizatorilor; - /dict: lista de cuvinte, verificarea despririi n silabe; - /man: directori de fiiere text care conin manualul complet de utilizare; - /spoola:t: timpul la care se prelucreaz; - /lpd: driver imprimant; - /var: fiiere obiect nepartajate; - /home: sau /u: director n care se creeaz Home directory pentru fiecare utilizator etc.
180