Aritoni Ovidiu Sisteme de operare 1 Introducere


A.Sistemul de operare ca şi maşină extinsă



Yüklə 486,94 Kb.
səhifə2/27
tarix12.01.2019
ölçüsü486,94 Kb.
#96236
1   2   3   4   5   6   7   8   9   ...   27

A.Sistemul de operare ca şi maşină extinsă

Aşa cum este menţionat mai sus, arhitectura (setul de intrucţiuni, organizarea memoriei, dispozitivele de I/O, structura de bază) multor calculatoare la nivelul limabajului maşină este primitivă şi ciudată pentru program în special pentru I/O. Ca să clarificăm mai mult acest punct haideţi să ne uităm pe scurt la cum este făcută o dischetă folosind NEC PD765 sau echivalentul care este folosită pe majoritatea PC-urilor (de-a lungul întregii cărţii vom folosi termeni de floppy disc sau dischetă fără nici o diferenţă) PD765 are 16 comenzi fiecare încărcând între 1-9 bytes într-un registru. Aceste comenzi sunt pentru citirea şi scrierea, mutarea capului de disc şi formatarea datelor, ca şi pentru iniţializarea, înregistrarea/detectarea, resetarea şi recalibrarea controlerului şi a driverului.

Cele mai importante comenzi de bază sunt cele de citire şi scriere, dintre care fiecare cere 13 parametrii împachetaţi în 9 biţi. Aceşti parametrii specifică elemente ca de exemplu, adresa blocului ce urmează a fi citit, numărul sectoarelor pe disc, modul de înregistrare folosit pe mediul fizic spaţierea discului şi ce să faci cu adresa datelor şterse. Dacă nu înţelegi acest mecanism nu te îngrijora, asta este de fapt ideea, este mai degrabă ezoteric. Când operaţia este completată controlerul returnează 23 de rezultate şi corpuri de erori împachetate în 7 bytes. Ca şi când nu ar fi suficient programul dischetei trebuie să fie tot timpul conştient dacă motorul este închis sau deschis. Dacă motorul este închis trebuie să fie deschis cu o mare întârziere de pornire înainte ca datele să poată fi citite sau scrise. Motorul nu poate fi lăsat pornit mai mult timp căci discheta se va uza. Astfel utilizatorul este forţat să trateze schimbul dintre întârzierea lungă a pornirii şi uzarea dischetelor (şi pierderea datelor de pe ele). Fără a intra în detaliile adevărate trebuie să fie clar că programatorul obişnui probabil nu vrea să se implice prea repede în programarea dischetelor (sau a hard diskului care sunt la fel de complexe şi destul de diferite).

În schimb ceea ce programatorul vrea este să trateze o simplă abstracţie la nivel înalt. În cazul discurilor o abstracţie tipică ar fi aceea că discul conţine o colecţie de fişiere definite. Fiecare fişier poate fi deschis pentru citire sau scriere, închis sau deschis şi în cele din urmă închis. Detalii ca de exemplu dacă înregistrarea trebuie sau nu să folosească modificarea frecvenţei şi care este starea motorului la momentul acela, nu trebuie să apară în abstracţia prezentată utilizatorului.

Programul care ascunde de programator adevărul despre hardware şi prezintă o imagine drăguţă şi simplă a fişierelor definite care pot fi citite sau scrise, desigur este sistemul de operare. Aşa cum sistemul de operare scuteşte programatorul de aspectele hardware şi prezintă o simplă interfaţă orientată pe fişier, la fel provoacă o mulţime de lucruri neplăcute în ceea ce priveşte întreruperile, timpul şi administrarea memoriei şi alte trăsături de nivel scăzut.

În fiecare caz abstracţia oferită de sistemul de operare este mai simplu şi mai uşor de folosit decăt hardware-ul. Din acest fapt punct de vedere funcţia sistemului de operare este de a prezenta utilizatorului un echivalent al maşinii extinse sau maşinii virtuale, câci este mai uşor să programezi decăt să administrezi hardware-ul. Cum îşi obţine sistemul de operare ţelul este o poveste lungă pe care o vom studia detaliat de-a lungul acestei cărţi.



B.Sistemul de operare ca şi manager de resurse


Conceptul de sistemul de operare care în primul asigură utilizatorului o interfaţă convenabilă este o viziune de sus în jos. O alternativă de vedere de sus în jos susţine că sistemul de operare este acolo pentru a administrara toate piesele unui sistem complex. Computerele moderne conţin procesoare, memorii, ceasuri interne, dicuri, mouse-uri, plăci de reţea, imprimante, şi o largă varietate de alte dispozitive. În vedere alternativă funcţia sistemului de operare este de a furniza memorie, dispozitive de I/O, pentru repartizarea ordonată şi controlată a procesoarelor.

Imaginaţi-vă ce s-ar întâmpla dacă trei programe ce rulează pe computer, toate încercând să tipărească în acelaşi timp rezultatul lor pe aceeaşi imprimantă. Primele linii ale tipăririi ar putea forma programul, următoarele programe 2, alte câteva programul 3, ş.a.m.d. Rezultatul lor ar fi un haos. So poate aduce ordine în potenţialul haos bufferizând toate rezultatele destinate pentru tipărirea pe disc. Când un program este terminat sistemul de operare poate apoi să copieze rezultatele programului de pe bufferul din disc unde a fost stocat în timp ce în acelaşi timp alt program poate continuă să genereze rezulate ,in ciuda faptului că rezultatul încă nu merge la imprimantă.

Când un calculator (sau o reţea) are mai mulţi utilizatori, nevoia de administrare şi protejare a memoriei, a dispozitivelor de I/O şi a altor resurse este mai mare, din moment ce utilizatorii ar putea să se interfereze unii cu alţii. În plus, deseori utilizatorii trebuie să împartă nu numai hardul ci de asemenea şi informaţii (fişiere, BD). Pe scurt această imagine a sistemului de operare susţine că principala lui datorie este să contabilizeze cine, ce resurse foloseşte, să aprobe cereri de resurse, şi să medieze confilcte între cereri de la diferite programe şi utilitare.




2.Generatii de calculatoare

În ziua alegerilor din 1952, maşina UNIVAC de la Remington Rand a fost prezentată la televiziunea naţională. Dwight D. Eisenhower şi Adlai Stevenson candidau la preşedinţia Statelor Unite şi, pe măsura primirii rezultatelor de pe coasta de est, salariaţii firmei Remington Rand le introduceau în UNIVAC, care era programat să anticipeze câştigătorul pe baza rezultatelor parţiale. Reţeaua de televiziune CBS trebuia să anunţe câştigătorul stabilit de UNIVAC la ora nouă, dar la timpul stabilit, comentatorii CBS au anunţat că UNIVAC nu a dat nici un rezultat. De fapt, UNIVAC stabilise deja un rezultat: calculele sale îl indicau pe Eisenhower ca fiind câştigător în mod detaşat. Comentatorii refuzaseră să anunţe predicţia deoarece (ca şi toţi locuitorii ţării) crezuseră că între cei doi candidaţi va fi o competiţie strânsă. Mai târziu în aceeaşi seară, când a devenit clar că UNivac anticipase corect rezultatele, CBS a anunţat rezultatul preliminar şi UNIVAC a câştigat imediat credibilitate din partea publicului american.

Capacităţile televizate ale sistemului UNIVAC au permis marii majorităţi a americanilor neimplicaţi în ştiinţa calculatoarelor să privească sistemele de calcul într-un mod nou şi au contribuit la intrarea in era calculatoarelor comerciale. Începând cu UNIVAC şi alte programe similare, dezvoltarea calculatoarelor comerciale a cuprins patru etape distincte, numite generaţii de calculatoare. Astăzi, ne aflăm la graniţa celei de-a cincea generaţii.


  • Prima generaţie: Tuburi cu vid (1942-1956)

Calculatoarele electronice din prima generaţie, cum a fost UNIVAC, prelucrau datele utilizând tehnologiile tuburilor cu vid experimentate pentru sistemele ABC, ENIAC şi EDVAC. Aceste calculatoare erau numite sisteme mainframe (cadru principal) datorită cadrelor de metal utilizate pentru susţinerea tuburilor cu vid. Tuburile cu vid sunt asemănătoare unor becuri electrice de dimensiuni mari, care necesită un timp oarecare pentru a se încălzi şi răspândesc cantităţi uluitoare de căldură. Miile de tuburi cu vid din calculatoarele de genul ENIAC trebuiau toate încălzite şi, la terminarea lucrului, era necesară o verificare amănunţită pentru a înlocui eventualele tuburi arse. Tuburile cu vid sunt atât de mari încât, dacă s-ar utiliza şi astăzi în construcţia calculatoarelor, un sistem mainframe modern ar avea dimensiunile unui zgârie-nori.

Calculatoarele din prima generaţie conţineau tamburi magnetici pentru stocarea datelor. Programele stocate erau scrise în limba maşină, secvenţe de cifre 0 şi 1 care reflectau direct contribuţia lui George Boole. Fiecare producător crea propriul său limbaj de maşină.

Grace Hopper, care a lucrat cu Hoeard Aiken la caculatorul Mark în anii 1940, a început să colaboreze cu Mauchly şi Eckert după aceştia părăsiseră şcoala Moore. Hooper a realizat în 1952 primul compilator – un program care traduce un limbaj de programare în limbaj maşină. Compilatoarele au schimbat modul de programare, permiţând programatorilor să introducă numere şi litere în locul unor secvenţe de 0 şi 1. De asemenea, astfel a crescut semnificativ numărul persoanelor dornice să se familiarizeze cu programarea calculatoarelor.





  • A doua generaţie: Tranzistoare (1956-1963)

În 1948, trei fizicieni ai laboratoarelor Bell- William Shocklez, Walter Brattain şi John Bardeen – au descoperit un nou tip de cristal numit germaniu. Germaniul nu era un conducător de electricitate atât de bun cum sunt cuprul sau oţelul, dar era mai bun decât alte materiale cum ar fi sticla sau cauciucul. Acest tip de material a fost denumit semiconductor.

A urmat descoperirea altor materiale semiconductoare, inclusiv siliciul, care erau confecţionate din materii brute uşor de procurat - pietre sau nisip. Fizicienii au decoperit că, prin adăugarea altor materiale la un semiconductor (proces denumit dopare), rezulta un material capabil să acţioneze ca un redresor sau un amplificator electric – cu alte cuvinte, un material ce putea să înlocuiască tuburile cu vid . Aceste noi dispozitive create pe baza materialelor semiconductoare au primit numele de tranzistoare.

Tranzistoarele erau de dimensiuni mult mai mici (a cinzecea parte din dimensiunea uni tub cu vid), furnizau mai multă energie şi erau mai solide decât fragilele tuburi cu vid produse din sticlă. In 1953 a fost lansat primul dispozitiv prevăzut cu tranzistoare destinat vânzării: un sistem de îmbunătăţire a auzului care încăpea în pavilionul urechii. Către sfârşitul deceniului, tranzistoarele au înlocuit tuburile cu vid în calculatoare, televizoare şi aparate de radio cu tranzistoare – primele aparate de radio sufucient de mici pentru a putea fi transportate într-un buzunar. Aplicaţiile care utilizau tranzistoarele erau numite “în stare solidă“, încăt tranzistoarele erau rezistente.

Noua tehnologie “în stare solidă“ a fost utilizată pentru construirea primelor supercalculatoare , calculatoare uriaşe destinate gestionării unor cantităţi mari de date şi efectuării unor calcule rapide. În anii ’60, calculatoarele main frame din a doua generaţie erau fabricate de companii cum ar fi IBM, Honeywell şi Sperry-Rand (în prezent componentă a Unisys) şi erau utilizate pe scară largă în afaceri importante.

În 1957, Grace Hopper a creat un limbaj de programare destinat afacerilor denumit Flow-Matic. În 1960, Hopper a contribuit la dezvoltarea limbajului COBOL (Common Business-Oriented Language – Limbaj obişnuit orientat pe afaceri). Bazat pe Flow-Matic, COBOL era primul limbaj de nivel înalt care nu era specific unui anumit tip de maşină. (Limbajele de programare de nivel înalt seamănă cu limba engleză, spre deosebire de secvenţele de 0 şi 1 ale limbajului maşină.) Programele scrise în COBOL erau apoi traduse în limbaj maşină utilizând un compilator de COBOL. Până în anii ’80, majoritatea programelor comerciale au fost scrise în COBOL; programele ştinţifice erau scrise în FORTRAN (Formula Translator).

În cea de-a doua generaţie de calculatoare, îmbinarea între limbajele de programare de nivel înalt cum ar fi COBOL şi FORTRAN şi conceptul de program stocat inventat de von Neumann a dus la crearea unor sisteme de calcul de uz general, cu adevărat flexibile. Un program putea fi încărcat rapid în memoria calculatorului (construită cu tranzistoare şi nu cu tuburi), putea fi rulat şi apoi înlocuit cu un alt program. Datorită creării noilor limbaje de programare şi construirii unui număr mare de calculatoare, au apărut noi ocupaţii: programator şi analist de sistem.

În 1957, IBM a lansat prima unitate de disc capabilă să efectueze atât operaţii de citire, cât şi de scriere pe un disc. În 1959, Digital Equipment Corporation (DEC) a creat minicalculatorul PDP-1. De dimensiuni mai reduse decât sistemele mainframe, minicalculatoarele erau prezentate pe piaţă ca sisteme compacte puternice. În plus, erau ieftine: calculatorul PDP-8 costa mai puţin de 100.000 de dolari.

La sfârşitul anilor ’50 a avut loc o altă premieră: eliberarea cecurilor realizată de calculatoare şi nu de mână. Lucrătorii de la Banca Americii, cea mai mare bancă din lume, aveau probleme legate de durata foarte mare a introducerii informaţiilor din cecuri în conturile bancare. Aşadar, în 1959, societatea General Electric a instalat noua metodă de înregistrare electronică a informaţiilor de contabilitate (Electronic Recording Method of Accounting – ERMA) la Banca Americii. Erma utiliza Calculatoare pentru înregistrarea cecurilor numerotate cu cerneală magnetică şi era capabil să sorteze şi să înregistreze de două ori mai multe cecuri pe minut decât un contabil pe oră.

A doua generaţie a inclus şi primul patent penru un dispozitiv de tip robot, acordat lui George Devol Jr. şi Joseph Engelberger în 1954. În 1958, Devol şi Engelberger au instalat primul robot industrial, UNIMATE, într-o uzină de asamblare General Motors. În acelaşi an, Chester Carolson a creat prima maşină de fotocopiere: xerocopiatorul.




  • A treia generaţie: circuite integrate (1964-1971)

La începutul celei de-a treia generaţii de calculatoare, tranzistoarele erau deja utilizate de aproximativ 12 ani, devenind mai compacte şi mai fiabile pe măsura perfecţionării procesului de fabricaţie. Spre sfăşitul anilor ’50, tranzistoarele ajunseseră de dimensiuni atât de mici încât a apărut ideea combinării mai multor tranzistoare într-un singur dipozitiv. În anul 1958, un inginer pe nume Jack Kilby a proiectat circuitul integrat cu cuarţ. Primul circuit integrat conţinea trei componente într-un singur modul confecţionat.

Un grup de ingineri de la compania Fairchild Semiconductor (prima companie din Silicon Valley, California) încerca, de asemenea, să pună în practică ideea integrării mai multor tranzistoare şi circuite într-un singur cip. Inginerul Jack Hoerni a descoperit un mod de a fabrica tranzistoare plate, care au permis construirea unor module de circuite integrate plate – cipuri pentru calculatoare. Perfecţionarea continuă a tehnologiei a determinat includerea unui număr mai mare de componente într-un cip. Dimensiunile calculatoarelor erau în scădere, dar preţul cipurilor era încă mai mare decât preţul componentelor individuale.

Trecerea de la o generaţie la alta nu are loc peste noapte. Când a fost invetat tranzistorul, existau încă stocuri întregi de tubuir cu vid care aşteptau să fie utilizate. Multe calculatoare din generaţia a doua conţineau atât tubuir cu vid, cât şi tranzistoare iar tranzistoarele au fost folosite împreună cu circuite integrate la construirea calculatoarelor din a treia generaţie.

Cursa trimiterii unui om pe lună a avut o contribuţie importantă la scăderea preţurilor cipurilor. Uniunea Sovietică a lansat primul satelit, Sputnik în 1957. În 1961, preşedintele SUA John F. Kennedy, căutând o cale de a câştiga încrederea naţională, a promis că Statele Unite vor trimte un om pe lună până la sfârşitul deceniului. Nu preţul unei asemenea aventuri a fost o mare problemă, ci dimensiunea vehiculului. Pentru a computeriza vehiculele spaţiale, era necesare construirea unor circuite integrate mai compacte de către companii cum a fost Fairchild. În schimb, sprijinul acordat de guvern cercetării şi producerii de circuite integrate a permis construirea unor număr mai mare de cipuri complexe la un preţ scăzut. Un alt progres major al celei de-a treia generaţii a fost crearea sistemelor de operare. Sistemele de operare sunt programe care controlează instrucţiunile de bază ale unui calculator, inclusiv deplasarea instrucţiunilor şi datelor între unitatea de prelucrare şi memorie, tipărirea şi citirea informaţiilor de pe disc . Înaintea apariţiei sistemului de operare, de exemplu, fiecare program conţine numeroase linii de cod ce specificau exact modul de deschidere a unui fişier. Utilizând un sistem de operare, este suficient ca programul să conţină codul necesar pentru a trimite cererea de deschidere a fişierului către sistemul de operare care efectuau un apel de sistem. Acesta tratează operaţia de deschidere a fişierului. Sistemele de operare standardizate permit scrierea unor programe de dimensiuni mai reduse şi într-un ritm mai rapid. Cu toate progresele înregistrate de tehnologia sistemelor de calcul, până la calculatoarele personale moderne mai era încă un drum lung de străbătut. În schimb, time-sharing a fost expresia magică a anilor ’60. Datorită tehnicii time-sharing utilizatorii nu mai trebuia să “stea la coadă“ care să lucreze la un calculator; calculatorul “trecea“ de la un utilizator la altul, acordându-i fiecăruia câte un scurt interval de timp. Întrucât calculatoarele lucrează mai rapid decât oamenii, utlizatorii putea lucra într-un ritm constant şi nu observau că sistemul “lucrase cu altcineva” în ultima zecime de secundă. Imaginea predominantă asupra viitorului era următoarea: o serie de calculatoare de dimensiuni enorme, capabile să deservească fiecare mii de utilizatori în sistemul time-sharing, utilizatori care introduceau pe cartele perforate şi primeau datele de ieşire la o imprimantă.

Inginerul Douglas Engelbart de la Institutul de Cercetări Standorf a avut o altă idee: calculatoare indiviuale care furnizează datele de ieşire prin intermediul unor dispozitive cu tuburi catodice similare televizoarelor (nu la imprimantă) şi permit utilizatorilor să manipuleze imagini şi să introducă texte. La sfârşitul anului 1968, Engelbart şi-a susţinut proiectul la o conferinţă despre calculatoare, prezentând schema unui calculator care conţinea o tastatură şi un dispozitiv de indicare denumit mouse.

În 1970, Engelbart a proiectat interfeţe cu utlizatorul prevăzute cu multe ferestre, predecesoarele sistemului Windows, şi a implementat un sistem de poştă electronică bazat pe un sistem mainframe. Engelbart spera ca imaginea sa asupra calculatoarelor personale să schimbe radical direcţia în care se îndreptau comapanii cum ar fi IBM, Sperry şi DEC – dar marile companii nu credeau încă în existenţa unei pieţe de desfacere pentru calculatoarele uşor de utlizat, orientate pe imagini.


  • A patra generaţie: Circuite microminiaturizate (1971-?)

La începutul anilor ’70, dimensiunile circuitelor continuau să scadă. Utilizarea integrării pe scară largă (LSI – large scale integration) a permis producătorilor să includă sute de componente într-un singur cip. Tehnica LSI a fost înlocuită cu VLSI (integrate pe scară foarte largă – very large scale integration), ceea ce permitea includerea a sute de mii de componente într-un cip. Prin utilizarea USI (integrării pe scară utra largă), numărul componentelor dintr-un cip a ajuns de ordinul milioanelor.

În 1971, o companie mică numită Intel (în prezent cel mai mare producător de cipuri din lume) a instalat toatele componentele esenţiale ale unui calculator într-un singur cip: microprocesorul. Microprocesoarele erau produse de sine stătătoare – un microprocesor poate fi introdus în orice calculator sau orice alt dispozitiv. Calculatoarele au scăpat de carcasele de metal, găsindu-şi locul în automobile, cuptoare cu microunde şi sisteme stereo. În plus, microprocesoarele erau ieftine în comparaţie cu procesoarele utilizate în sistemele mainframe şi în minicalculatoare.

La începutul anilor ’70, Atari a utilizat un microprocesor pentru crearea primului joc video, Pong, în care doi jucători roteau manete ce controleau mişcarea paletelor într-un miniaturizat de tenis de masă. Centipede şi MIssile Command; la începutul anilor ’80, entuziaştii jocurilor se puteau amuza cu jocuri de acest gen la ei acasă.

N-a durat mult până când producătorii de jocuri mecanice ca Wiliams, Bally şi Data East au introdus microprocesoare în mesele de jocuri mecanice pentru a controla sumele câştigate pentru afişarea scorurilor.
Crearea unui microprocesor a transformat în realitate viziunea lui Engelbart privind calculatoarele personale. Primul micoprocesor comercial a devenit disponibil în 1971. Anul următor, pe piaţă a existat un microcalculator, deşi primul calculator personal comercial de succes – Apple II – a fost produs abia în 1976. În 1992, erau utilizate 65 de milioane de calculatoare. Restul, după cum se spune, este istorie . O dată cu inventarea microcalculatoarelor, a început cea de-a patra generaţie de calculatoare.


  • A cincea generaţie (a viitorului)

Peste 20 de ani, studenţii vor învăţa despre cea de-a cincea (şi poate a şasea şi a şaptea) generaţie de calculatoare. În momentul în care citiţi acestă carte, în lumea întreagă sunt create tehnologiile necesare celei de-a cincea generaţii. Oamenii de ştiinţă din numeroase ţări, inclusiv Germania, Marea Britanie, India, Japonia şi Statele Unite, lucrează la proiecte de inteligenţă artificială – programe de calculator capabile să gândească similar unei fiinţe umane. Acest proces poate dura ani întregi; întrucât nimeni nu ştie exact cum funcţionează inteligenţa umană, programele de acest gen sunt dificile de creat. În lucrul şi discuţiile cu privire la inteligenţa artificială sunt implicaţi oameni dintr-un număr mare de domenii, cum ar fi anatomie, biologie, informatică, educaţie, matematică, filosofie şi neuropsihologie. Unele descoperiri preliminare sunt deja aplicate în sistem expert şi într-un domeniu numit logica fuzzy (fuzzy = vag ). Un alt domeniu de cercetare implică modul de construire a calculatoarelor: arhitectura sistemelor de calcul. Calculatorul von Neumann conţinea un singur procesor, dar mulţi ingineri sunt de părere că următoarea generaţie va cuprinde calculatoare cu prelucrare paralelă care utilizează mai multe microprocesoare, permiţând astfel creşterea vitezei şi a eficienţei.

E posibil ca procesoarele viitorului să fie construite utilizând noi materiale. În domeniul ingineriei electrice şi a calculatoarelor se desfăşoară o competiţie strânsă privind crearea unui supraconductor viabil. Materialele supraconductoare reprezintă semiconductori care opun mult mai puţină rezistenţă la trecerea curentului electric. O rezistenţă mai mică înseamnă mai puţină căldură, o viteză crescută şi o eficienţă superioară. Au fost descoperite o serie de materiale care prezintă proprietăţi supraconductoare, dar numai la temperaturi extrem de scăzute, care ar face ca o zi de iarnă în Artica să pară incredibil de călduroasă. Un supraconductor ce ar permite utilizarea la o temperatură normală ar implica nu numai o viteză mare, dar ar elimina şi dispozitivele de răcire de mari dimensiuni utilizate de calculatoare pentru a disipa căldura produsă de cipurile semiconductoare.

O altă componentă a tehnologiei din generaţia a cincea este dispozitivul de stocare optic. Stocarea optică utilizează tehnologia laser pentru scrierea şi citirea informaţiilor. Dispozitivele cu laser au două avantaje: capacitatea şi durabilitatea. Compact-discurile utilizate pentru stocare au o capacitate incredibilă şi pot conţine o cantitate de informaţii de mii de ori mai mare decât benzile sau discurile magnetice de aceeaşi dimensiune. Laserul nu atinge de fapt suprafaţa discului, deci discurile optice sunt mai puţin fragile decât alte forme de stocare. De fapt, dicurile optice reprezintă numai începutul: deja a fost construit prototipul unui cub de stocare optică. Acesta, similar cuburilor de stocare din filmul Star Trek, poate conţine un volum de informaţii de sute de ori mai mare decât discurile optice.




Yüklə 486,94 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   ...   27




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin