Descărcați enciclopedia totul despre sistemele de operare. Cărți despre sistemele de operare. Despre cartea Peter Stashchuk „O scurtă introducere în sistemele de operare. Ghid de studiu"

Pagina curentă: 1 (cartea are 12 pagini în total) [pasaj de lectură disponibil: 8 pagini]

A. Yu
Sisteme de operare

1Noțiuni introductive cu sistemele de operare

1.1 Scopul și funcțiile sistemelor de operare

Un sistem de operare pentru computer este un set de programe interconectate care acționează ca o interfață între aplicații și utilizatori, pe de o parte, și hardware-ul computerului, pe de altă parte. Sistemul de operare îndeplinește două grupe de funcții:

Oferă utilizatorului sau programatorului o mașină virtuală extinsă în loc de hardware-ul computerului real;

Crește eficiența utilizării computerului prin gestionarea rațională a resurselor acestuia în conformitate cu un anumit criteriu.

Utilizatorul, de regulă, nu este interesat de detaliile hardware-ului computerului, el îl vede ca pe un set de aplicații care pot fi scrise într-unul dintre limbajele de programare. Sistemul de operare oferă programatorului o serie de capabilități pe care programele le pot folosi prin comenzi speciale numite apeluri de sistem. Prin urmare, o aplicație software include multe apeluri de sistem necesare, de exemplu, pentru a lucra cu fișiere. Sistemul de operare ascunde detaliile hardware de programator și oferă o interfață convenabilă pentru executarea sistemului de mediu de operare.

În același timp, sistemul de operare acționează ca un manager de resurse. Conform acestei abordări, sarcina sistemului de operare este de a oferi o distribuție organizată și controlată a procesoarelor, memoriei și dispozitivelor I/O între diferite programe. Sistemul de operare are următoarele caracteristici:

Funcțiile sistemului de operare funcționează în același mod ca și alte programe software - sunt implementate sub formă de programe individuale sau un set de programe, care execută procese;

Sistemul de operare trebuie să delege controlul altor procese și să aștepte ca procesorul să-i acorde din nou timp pentru a-și îndeplini sarcinile.

Managementul resurselor include rezolvarea următoarelor sarcini generale care nu depind de tipul de resursă:

Programarea resurselor – adică determinarea cărui proces, când și în ce cantitate (dacă resursa poate fi alocată în părți) ar trebui să i se aloce o anumită resursă;

Satisfacerea solicitarilor de resurse;

Monitorizarea stării și înregistrarea utilizării unei resurse - adică menținerea informațiilor operaționale despre dacă resursa este ocupată sau liberă și ce cotă din resursă a fost deja distribuită;

Rezolvarea conflictelor dintre procese.

Managementul resurselor include multiplexarea (distribuirea) acestora în două moduri: în timp și în spațiu. Când o resursă este alocată în timp, diferiți utilizatori și programe o folosesc pe rând. Mai întâi unul dintre ei are acces pentru a utiliza resursa, apoi altul etc. De exemplu, mai multe programe doresc să acceseze procesorul central. În această situație, sistemul de operare permite mai întâi accesul unui program la procesor, apoi, după ce acesta a rulat un timp suficient, un alt program, apoi următorul și, în final, din nou primul. Determinarea cât timp va fi folosită o resursă în timp, cine va fi următorul și pentru cât timp le va fi dată resursa este sarcina sistemului de operare. Un alt tip de distribuție este multiplexarea spațială. În loc să lucreze alternativ, fiecare client primește o parte din resursă. De obicei, memoria RAM este partajată între mai multe programe care rulează, astfel încât toate să poată locui în memorie în același timp (de exemplu, folosind la rândul său procesorul central). Presupunând că există suficientă memorie pentru a deține mai multe programe, este mai eficient să alocați mai multe programe în memorie deodată decât să alocați toată memoria unui singur program, mai ales dacă are nevoie doar de o mică parte din memoria disponibilă. Desigur, acest lucru ridică probleme de distribuție corectă, protecție a memoriei etc., iar sistemul de operare există pentru a rezolva astfel de probleme.

1.2 Istoricul dezvoltării sistemelor de operare

De obicei, istoria dezvoltării sistemelor de operare este asociată cu istoria dezvoltării computerelor. Prima idee pentru un computer a fost propusă de matematicianul englez Charles Babbage la mijlocul secolului al XIX-lea. El a dezvoltat așa-numitul „motor analitic” mecanic, care, totuși, nu a funcționat niciodată corect. Următoarele sunt generații de computere și relația lor cu sistemele de operare.

Prima generație 1945-1955

Calculatoarele constau din tuburi vid și panouri de corecție. Cea mai mare realizare este producerea de cărți perforate. Realizat din carton subtire, un card perforat reprezinta informatii prin prezenta sau absenta gaurilor in anumite pozitii de pe card. Nu există sistem de operare.

A doua generație 1955-1965

Baza computerelor sunt tranzistoarele și sistemele de procesare în loturi. Caracterizat prin pachete de cărți perforate și dispozitive pentru înregistrarea benzilor magnetice. Programat în principal în limbaje Fortran și Asamblare pentru sistemele de operare Fortran Monitor System (FMS) și IBSYS.

A treia generație 1965-1980

Perioada este caracterizată de apariția circuitelor integrate, precum și de multitasking sau, așa cum se numește altfel, multiprogramare. IBM produce diverse serii de mașini, începând cu IBM/360. Pentru ei a fost scris sistemul de operare OS/360, care era de aproximativ 1000 de ori mai mare decât FMS de a doua generație. În această etapă, apare o implementare industrială a multitaskingului - o metodă de organizare a unui proces de calcul în care mai multe programe au fost stocate simultan în memoria computerului și executate alternativ pe un procesor.

Alte sisteme de operare notabile din această perioadă au fost CTSS (Compatible Time Sharing System) și MULTICS (Multiplex Information and Computing Service), care a fost conceput pentru a oferi acces la o singură mașină pentru sute de utilizatori simultan. Dezvoltarea ulterioară a acestui sistem a devenit UNIX.

A patra generație 1980-prezent

Această perioadă este asociată cu apariția circuitelor integrate la scară largă. În 1974, Intel a lansat primul procesor universal pe 8 biți, Intel 8080. La începutul anilor 80, IBM a dezvoltat IBM PC, un computer personal. În același timp, a apărut prima versiune de MS-DOS. Toate sistemele de operare dezvoltate până în acest moment au acceptat doar modul text de comunicare cu utilizatorul.

Prima încercare de a realiza o interfață grafică ușor de utilizat a fost implementată pe Apple Macintosh. Influențată de succesele sale, Microsoft Corporation lansează un shell grafic pentru MS-DOS - Windows. Și din 1995, a fost lansat Windows 95, care a devenit un sistem de sine stătător. Ulterior, pe baza Windows 95 și un alt sistem Windows NT, au fost dezvoltate sistemele de operare existente în prezent - Windows 2000, XP, Vista și altele.

1.3 Clasificarea sistemelor de operare

Există o mulțime de sisteme de operare și nu toată lumea le cunoaște. În continuare, luăm în considerare 7 tipuri de sisteme de operare diferite, de la niveluri mari până la niveluri mici.

Sisteme de operare mainframe

Mainframe este un computer de uz general de înaltă performanță, cu o cantitate semnificativă de memorie RAM și memorie externă, conceput pentru a efectua o muncă intensivă de calcul. Acestea sunt de obicei computere de dimensiunea unei camere și se găsesc în marile corporații. Mainframe-urile conțin de obicei mii de discuri și terabytes de RAM.

Sistemele de operare mainframe sunt concepute în primul rând pentru a gestiona mai multe lucrări simultane, dintre care majoritatea necesită cantități uriașe de I/O. Sistemul trebuie să răspundă la mii de solicitări pe secundă. Un exemplu este OS/390, care a evoluat de la a treia generație a sistemului de operare OS/360.

Sisteme de operare pentru server

Aceste sisteme de operare rulează pe servere, care sunt un computer personal, o stație de lucru sau chiar un mainframe. Serverele oferă posibilitatea de a lucra cu dispozitive de imprimare, fișiere sau internet. Astfel de sisteme de operare includ Unix, Linux, Windows 2003 Server etc.

Sisteme de operare multiprocesor

Aceste sisteme sunt utilizate pe computere cu procesoare centrale multiple. Acestea necesită sisteme de operare speciale, dar sunt de obicei modificări ale sistemelor de operare pentru server.

Sisteme de operare pentru calculatoare personale

Principalul criteriu al acestor sisteme este o interfață convenabilă pentru un utilizator. Cele mai cunoscute sisteme: seria Windows 98, 2000, XP, Vista; Macintosh, Linux.

Sisteme de operare în timp real

Parametrul principal al acestor sisteme este timpul. În sistemele de control al proceselor industriale, este necesar să se sincronizeze clar timpul de funcționare al transportorului și al diferiților roboți industriali. Acesta este un sistem greu în timp real. Există, de asemenea, sisteme flexibile în timp real în care termenele limită ratate pentru finalizarea unei operațiuni sunt acceptabile, de exemplu, sistemele multimedia. Sistemele de operare în timp real includ VxWorks și QNX.

Sisteme de operare încorporate

Acestea includ sistemele de operare PDA (Personal Digital Assistant). În plus, sistemele încorporate funcționează pe mașini, televizoare și telefoane mobile. Aceste sisteme de operare au de obicei toate caracteristicile sistemelor de operare în timp real cu limitări de memorie, putere etc. Exemple de sisteme sunt PalmOS, Windows CE.

Sisteme de operare pentru carduri inteligente

Un card inteligent este un dispozitiv de dimensiunea unui card de credit care conține o unitate centrală de procesare. Astfel de sisteme sunt supuse unor limitări severe de putere și memorie. Unii gestionează o singură operațiune - plata electronică, de exemplu. Cardurile inteligente selectate includ suport pentru Java Virtual Machine.

1.4 Prezentare generală a hardware-ului computerului

Un sistem de operare este strâns legat de hardware-ul computerului pe care trebuie să ruleze. Hardware-ul influențează setul de comenzi al sistemului de operare și gestionarea resurselor acestuia. Conceptual, un computer simplu poate fi reprezentat prin modelul prezentat în Figura 1. Această structură a fost utilizată pe primele modele de PC IBM.


Figura 1 - Unele componente ale unui computer personal


În figură, procesorul central, memoria și dispozitivele de intrare/ieșire sunt conectate printr-o magistrală de sistem prin care fac schimb de informații.

CPU

„Creierul” unui computer este unitatea centrală de procesare (CPU). Selectează comenzile din memorie și le execută. Un ciclu tipic de procesor arată astfel: citește prima instrucțiune din memorie, o decodifică pentru a-i determina tipul și operanzii, execută instrucțiunea, apoi citește și decodifică instrucțiunile ulterioare. Așa se execută programele.

Pentru fiecare procesor există un set de instrucțiuni pe care este capabil să le execute. Deoarece accesarea memoriei pentru a primi instrucțiuni sau preluarea datelor durează mult mai mult decât executarea acelor instrucțiuni, toate procesoarele conțin registre interne pentru stocarea variabilelor și a rezultatelor intermediare. Prin urmare, setul de instrucțiuni conține de obicei instrucțiuni pentru a încărca un cuvânt din memorie într-un registru și pentru a stoca un cuvânt dintr-un registru în memorie. Pe lângă registrele principale folosite pentru stocarea variabilelor, majoritatea procesoarelor au mai multe registre speciale folosite pentru stocarea variabilelor, precum și registre speciale vizibile programatorilor.

Când procesorul este multiplicat în timp, sistemul de operare oprește un program care rulează pentru a porni altul. De fiecare dată când apare o astfel de întrerupere, sistemul de operare trebuie să salveze toate registrele procesorului pentru ca ulterior, când programul întrerupt continuă să ruleze, acestea să poată fi restaurate.

Pentru a crește viteza procesorului, dezvoltatorii lor au abandonat modelul simplu, când o singură comandă poate fi citită, decodificată și executată într-un singur ciclu de ceas. Procesoarele moderne au capacitatea de a executa mai multe comenzi simultan.

Majoritatea procesoarelor au două moduri de operare: modul kernel și modul utilizator. Dacă procesorul rulează în modul kernel, poate executa toate instrucțiunile din setul de instrucțiuni și poate folosi toate capacitățile hardware-ului. Sistemul de operare rulează în modul kernel, oferind acces la tot hardware-ul. În schimb, utilizatorii operează în modul utilizator, care permite executarea unui subset de programe și face disponibilă doar o parte din hardware.

Memorie

A doua componentă principală a oricărui computer este memoria. În mod ideal, memoria ar trebui să fie cât mai rapidă (mai rapidă decât procesarea unei singure instrucțiuni, astfel încât procesorul să nu fie încetinit prin accesarea unei memorie care este mare și extrem de ieftină). Astăzi nu există tehnologii care să satisfacă toate aceste cerințe. Prin urmare, există o altă abordare.

Sistemul de memorie este construit sub forma unei ierarhii de straturi, care sunt ilustrate în Figura 2. Pe măsură ce vă deplasați prin ierarhie de sus în jos, doi parametri cresc: timpul de acces, dimensiunea memoriei.

Stratul superior este format din registrele interne ale procesorului, deci nu există nicio întârziere la accesarea acestora. Registrele interne stochează mai puțin de 1 Kb de informații. Programele pot manipula registre fără intervenție hardware. Accesul la înregistrare este cel mai rapid - câteva nanosecunde.

Următorul strat conține memorie cache, în cea mai mare parte controlată de hardware. Zonele cache utilizate cel mai frecvent sunt stocate în memoria cache de mare viteză situată în interiorul procesorului. Când un program trebuie să citească un cuvânt din memorie, cipul de cache determină dacă linia dorită se află în cache; dacă da, atunci are loc un acces la cache. Memoria cache este limitată ca dimensiune datorită costului ridicat. Mașinile moderne au două sau trei niveluri de cache, fiecare fiind mai lent și mai mare decât precedentul. Dimensiunile memoriei cache variază de la zeci de kiloocteți la câțiva megaocteți. Timpul de acces este puțin mai lung decât pentru registre.


Figura 2 – Structura ierarhică a memoriei


Urmează RAM (RAM - Random Access Memory sau Random Access Memory) - zona principală de lucru a dispozitivului de stocare al mașinii. Toate cererile CPU care nu pot fi îndeplinite de memoria cache sunt trimise către RAM pentru procesare. Volumele variază de la sute de megaocteți la câțiva gigaocteți. Timpul de acces este de zeci de nanosecunde.

Urmează discul magnetic. Memoria pe disc este cu două ordine de mărime mai ieftină decât RAM pe bit și cu două ordine de mărime mai mare ca dimensiune. Discul are o problemă - accesul aleatoriu la datele de pe acesta durează cu aproximativ trei ordine de mărime mai mult. Motivul vitezei reduse a hard disk-urilor (HDD) este că unitatea este o structură mecanică. Este format din una sau mai multe plăci metalice care se rotesc la viteze specifice, de exemplu 7200 rpm. Volumele de discuri cresc acum rapid pentru majoritatea utilizatorilor, discuri cu sute de gigaocteți. Timp de acces – nu mai puțin de 10 µs.

Banda magnetică este adesea folosită pentru a crea copii de rezervă HDD sau pentru a stoca seturi de date foarte mari. Acum, desigur, este rar unde puteți găsi utilizarea benzilor magnetice, dar încă nu au ieșit din uz. Nivelul benzii magnetice include, de asemenea, CD-uri, DVD-uri și memorie flash. Timpul de acces este măsurat în secunde.

Pe lângă tipurile descrise, computerele au o cantitate mică de memorie permanentă cu acces aleatoriu. Spre deosebire de RAM, nu își pierde conținutul atunci când alimentarea este oprită. Se numește ROM sau ROM. ROM-ul este programat în timpul producției și conținutul său nu poate fi modificat după aceea. Această memorie este destul de rapidă și ieftină. Programele de pornire ale computerului, utilizate la pornire, sunt localizate în ROM. În plus, unele carduri I/O conțin ROM pentru a controla dispozitivele de nivel scăzut. Un tip de memorie numit CMOS este volatil. CMOS este folosit pentru a stoca data curentă, ora și parametrii de configurare, cum ar fi hard disk-ul de pe care să pornească. Această memorie consumă energie de la bateria instalată.

Dispozitive I/O

Sistemul de operare tratează dispozitivele I/O ca resurse. Dispozitivele I/O constau de obicei dintr-un controler și dispozitivul în sine.

Un controler este un set de cipuri pe o placă introdusă într-un conector, un dispozitiv de control fizic. Acceptă comenzi ale sistemului de operare (de exemplu, instrucțiuni de citire a datelor de pe un dispozitiv) și le execută. Controlul propriu-zis al dispozitivului este foarte complex și necesită un nivel ridicat de detaliu. Prin urmare, funcția controlerului este de a oferi o interfață simplă pentru sistemul de operare.

Următoarea parte este dispozitivul în sine. Dispozitivele au interfețe destul de simple, deoarece capacitățile lor sunt limitate și trebuie aduse la un singur standard. Este necesar un singur standard, de exemplu, pentru ca fiecare controler de disc IDE (Integrated Drive Electronics) să poată gestiona orice disc IDE. Interfața IDE este standard pentru unitățile de pe computere cu procesor Pentium, precum și de pe alte computere. Deoarece interfața actuală a dispozitivului este ascunsă de controler, sistemul de operare vede doar interfața controlerului, care poate fi foarte diferită de interfața dispozitivului în sine.

Deoarece fiecare tip de controler este diferit, acestea necesită software diferit. Programul care comunică cu controlerul este driverul dispozitivului. Fiecare producător de controler trebuie să furnizeze drivere pentru sistemele de operare acceptate. Pentru a utiliza driverul, acesta trebuie să fie instalat în sistemul de operare, astfel încât să poată rula în modul kernel. Există trei moduri de a instala un driver în nucleu:

Reconstruiți nucleul împreună cu un driver nou și apoi reporniți sistemul de operare (așa funcționează multe sisteme de operare Unix);

Creați o intrare în fișierul inclus în sistemul de operare care indică faptul că este necesar un driver și apoi reporniți sistemul; în timpul pornirii inițiale, sistemul de operare însuși găsește driverele necesare și le încarcă (așa funcționează Windows);

Sistemul de operare poate accepta drivere noi fără a întrerupe funcționarea și le poate instala rapid fără a necesita o repornire. Această metodă devine din ce în ce mai comună. Dispozitive precum magistralele USB, IEEE 1394 necesită întotdeauna drivere încărcate dinamic.

Intrarea și ieșirea datelor se pot face în trei moduri diferite.

Cel mai simplu mod: programul utilizator emite o cerere de sistem, pe care nucleul o traduce într-un apel de procedură corespunzător driverului, apoi driverul începe procesul I/O. În acest timp, efectuează o buclă scurtă de program, interogând constant dispozitivul cu care lucrează. Când I/O se termină, driverul plasează datele acolo unde sunt necesare și revine la starea inițială. Sistemul de operare returnează apoi controlul programului care a efectuat apelul. Această metodă este așteptarea pregătirii (așteptare activă). Are un dezavantaj: procesorul trebuie să interogheze dispozitivul până când acesta se oprește.

Driverul pornește dispozitivul și îi cere să emită întreruperi când I/O este complet; După aceasta, șoferul returnează controlul sistemului de operare și începe să îndeplinească alte sarcini. Când controlerul detectează sfârșitul transferului de date, generează o întrerupere de finalizare. Procesul I/O care utilizează întreruperi constă din patru pași (Figura 3). La primul pas, șoferul transmite o comandă controlerului, scriind informații în registrele dispozitivului. Controlerul pornește apoi dispozitivul. Când controlerul termină de citit sau de scris numărul de octeți pe care i s-a spus să îi transfere, acesta trimite un semnal către cipul controlerului de întrerupere folosind fire de magistrală specifice. Acesta este pasul doi. În al treilea pas, dacă controlerul de întrerupere este pregătit să gestioneze întreruperile, atunci trimite un semnal către un anumit pin al CPU, informându-l astfel. În al patrulea pas, controlerul de întrerupere introduce un număr de dispozitiv pe magistrală, astfel încât CPU să poată ști ce dispozitiv și-a încheiat activitatea.

A treia metodă de intrare/ieșire a informațiilor este utilizarea unui controler DMA (Direct Memory Access) special. DMA gestionează fluxul de biți dintre RAM și unele controlere fără intervenția CPU. Procesorul accesează cipul DMA, îi spune numărul de octeți de transferat, precum și adresa dispozitivului și a memoriei și direcția transferului de date. La terminarea lucrărilor, DMA inițiază o întrerupere, care este procesată în mod obișnuit.


Figura 3 - Acțiuni efectuate atunci când un dispozitiv I/O pornește și primește o întrerupere


Cauciucuri

Datorită creșterii vitezei procesorului și a memoriei, la sistem au fost adăugate magistrale suplimentare atât pentru a accelera comunicarea dispozitivelor I/O, cât și pentru a transfera date între procesor și memorie. Figura 4 prezintă o diagramă a sistemului de calcul al primelor Pentium.

Acest sistem are 8 magistrale (cache bus, local bus, memory bus, PCI, SCSI, USB, IDE, ISA), fiecare cu propria sa viteza de transfer de date si propriile functii. Sistemul de operare trebuie să aibă informații despre toate aceste autobuze pentru a gestiona computerul.

Procesorul central transmite date prin magistrala locală către cipul de punte PCI, care la rândul său accesează memoria printr-o magistrală dedicată. Sistemul Pentium I are un cache de nivel 1 (L1) încorporat în procesor și un cache de nivel 2 (L2) mult mai mare conectat la procesor pe o magistrală cache separată. Autobuzul IDE este folosit pentru a conecta dispozitive periferice la sistem (CD-ROM, hard disk).


Figura 4 – Structura sistemului Pentium


Busul USB (Universal Serial Bus) este proiectat pentru a conecta dispozitive suplimentare de intrare/ieșire, cum ar fi o tastatură, mouse, imprimantă, memorie flash etc. la un computer. În timp, apar și se adaugă anvelope noi, mai rapide.

Andrei Robachevsky

sistem de operare UNIX

Mulțumiri

În timp ce lucram la carte, m-am gândit de multe ori la conținutul acestei secțiuni plăcute, adăugând de fiecare dată nume noi și noi de oameni, fără ajutorul cărora această carte cu greu ar fi văzut lumina zilei.

În primul rând, acesta este meritul directorului editurii „BHV-Sankt Petersburg” Vadim Sergeev și al colegului meu, angajat al Vuztelecomcenter și autor al minunatului director „Pagini galbene ale internetului. Resurse rusești” Alexey Sigalov. Ei au fost cei care m-au convins că o astfel de carte ar fi utilă și m-au inspirat să iau stiloul.

Sunt recunoscător liderilor Vuztelecomcenter Vladimir Vasiliev și Serghei Khoruzhnikov pentru ajutorul și atenția acordată lucrării la carte. Sprijinul și atitudinea lor tolerantă față de îndeplinirea principalelor mele atribuții de director de dezvoltare la Vuztelecomcenter mi-au permis să duc la bun sfârșit această muncă.

Fără ajutorul lui Kirill Shchukin, cartea era în pericol să fie publicată fără ilustrații, ceea ce cu greu ar fi făcut-o mai clar. Răbdarea și profesionalismul lui au făcut posibilă transformarea schițelor vagi în diagrame cu drepturi depline, de care cartea a beneficiat foarte mult.

Am solicitat în mod repetat sfatul experților UNIX și, mai ales, a colegul meu Konstantin Fedorov. Comentariile și recomandările sale valoroase m-au ajutat să aduc cartea la forma ei actuală.

De asemenea, aș dori să-mi exprim recunoștința specialiștilor OLLY și, în special, directorului său tehnic Vitaly Kuzmichev, ale cărui sfaturi și consultări au avut un efect benefic asupra conținutului acestei cărți.

De asemenea, aș dori să-mi exprim profunda recunoștință față de recenzorii acestei cărți - Dr. Departamentul de Informatică, Universitatea Electrotehnică de Stat din Sankt Petersburg, Doctor în Științe Tehnice. Profesorul D.V. Puzankov și cap. Departamentul de Sisteme Informaționale și de Control, Universitatea Tehnică de Stat din Sankt Petersburg, Doctor în Științe Tehnice. Profesorul I.G. Chernorutsky pentru comentarii utile.

Aș vrea să-i mulțumesc și șefului. redactorii editurii „BHV-Sankt Petersburg” Elizaveta Karonik, care a fost prima care s-a familiarizat cu manuscrisul și a dat un verdict pozitiv, pentru meritul său de încredere și coordonarea lucrărilor la realizarea cărții. Aș dori să-mi exprim recunoștința față de Tatiana Temkina pentru munca sa excelentă în editarea cărții. Sa întâmplat ca paginile individuale ale manuscrisului să conțină mai puțin material principal decât modificările editoriale, cu care eu, de regulă, am fost întotdeauna de acord.

Nu pot să nu exprim recunoștința mea față de colegii mei de muncă Vladimir Parfenov, Yuri Gugel, Yuri Kirchin, Nina Rubina, al căror sprijin prietenos a fost atât de util.

Și, bineînțeles, aș dori să-i mulțumesc soției și fiicei mele pentru răbdarea și credința lor în finalizarea cu succes a acestei lucrări. De asemenea, trebuie să le cer scuze pentru faptul că această lucrare a ocupat o parte semnificativă din timpul meu, care le-a aparținut de drept.

Despre cartea „Sistemul de operare UNIX”

Dedicat celor dragi

Scopul cărții

Această carte nu înlocuiește cărțile de referință și diverse manuale despre sistemul de operare UNIX. Mai mult, informațiile prezentate în carte sunt uneori dificil de găsit în documentația furnizată cu sistemul de operare. Aceste publicații sunt pline de recomandări practice, descrieri scrupuloase ale setărilor anumitor subsisteme, formate pentru apelarea comenzilor etc. În același timp, întrebări precum arhitectura internă a componentelor individuale ale sistemului, interacțiunea lor și principiile de funcționare rămân adesea în spatele scenei. Fără cunoștințe despre această „anatomie”, lucrul în sistemul de operare se transformă în folosirea comenzilor memorate, iar erorile inevitabile duc la consecințe inexplicabile. Pe de altă parte, în această carte, se acordă mult mai puțină atenție problemelor de administrare a UNIX, configurarea unor subsisteme specifice și comenzilor utilizate. Scopul acestei cărți este de a sublinia organizarea de bază a sistemului de operare UNIX. Trebuie avut în vedere faptul că numele UNIX denotă o familie semnificativă de sisteme de operare, fiecare dintre ele având propriul nume și caracteristici unice. Această carte încearcă să evidențieze ceea ce este comun „genotipului” UNIX, și anume: interfețele de bază cu utilizatorul și programul, scopul principalelor componente, arhitectura și interacțiunea acestora, iar pe baza acestuia prezintă sistemul ca întreg. Cu toate acestea, acolo unde este relevant, se fac referiri la o anumită versiune a UNIX. Pentru a ilustra anumite puncte, au fost folosite următoarele sisteme de operare: Solaris 2.5 de la Sun Microsystems, SCO ODT 5.0 de la Santa Cruz Operation, BSDi/386 de la Berkeley Software Design.

Nașterea acestei cărți a fost precedată de mai mult de trei ani de experiență, susținând prelegeri despre sistemul UNIX studenților din anul trei la Institutul de Mecanică și Optică de Precizie din Sankt Petersburg (Universitatea Tehnică), precum și un curs introductiv pentru utilizatorii UNIX și administratori în diverse organizații. Majoritatea materialului de la aceste cursuri este reflectat în carte.

Cartea poate fi utilă în pregătirea unui număr de programe de curs despre sistemul de operare UNIX și despre elementele de bază ale sistemelor de operare în general. Materialul din Capitolul 1 oferă o bază bună pentru un curs introductiv la UNIX. Prezintă conceptele de bază și organizarea sistemului de operare ca întreg. Acest capitol oferă, de asemenea, informații de bază despre interfața cu utilizatorul și limbajul de programare al interpretorului de comenzi shell.

Materialul din capitolul 2 poate fi folosit în cursurile de programare. O discuție detaliată a principalelor apeluri de sistem și a funcțiilor bibliotecii oferă o înțelegere destul de completă a interfeței de programare a acestui sistem de operare. Exemplele date ilustrează problemele discutate și pot fi reflectate în practica de laborator.

Cartea poate fi folosită și ca manual pentru studenții seniori la specialitățile „Informatică și Informatică”, „Matematică Aplicată și Informatică” (pentru pregătirea licențelor) și pentru specialitatea „Calculatoare, complexe de sisteme și rețele” (pentru pregătirea inginerilor) poate fi utilă în pregătirea masteranzilor și absolvenților, precum și pentru toți studenții specializați în domeniul tehnologiei informatice. Cartea este, de asemenea, un ajutor bun pentru programatorii de sistem și administratorii UNIX. Sper că o privire mai atentă asupra organizării interne a sistemului îi va ajuta să-și rezolve problemele mai eficient și să deschidă noi orizonturi pentru experimentare.

În cele din urmă, cartea poate fi de interes pentru o gamă largă de utilizatori care doresc să afle mai multe despre acest sistem de operare.

Cui îi este destinată această carte?

Nu are rost să înțelegem sistemul de operare fără a lucra cu el. In primul rand, cunoasterea sistemului de operare, organizarea si structura acestuia sunt necesare pentru administrator, i.e. persoana responsabilă de întreținerea și configurarea acestuia. Sarcinile de administrator sunt numeroase - de la înregistrarea utilizatorilor la configurarea rețelei, de la crearea de copii de siguranță ale sistemului până la reglarea performanței. Fără a înțelege structura fundamentală a sistemului de operare, rezolvarea tuturor acestor probleme se transformă în memorarea comenzilor și a elementelor de meniu, iar situațiile de urgență provoacă panică.

Cunoașterea sistemului de operare este necesară pentru un dezvoltator de software. Performanța programului dvs. depinde de cât de eficient sunt utilizate resursele sistemului de operare. Fără a înțelege principiile de funcționare, este ușor să fii confuz în complexitatea apelurilor de sistem și a funcțiilor bibliotecii. Dacă lucrați cu nucleul sistemului - de exemplu, dezvoltarea unui driver de dispozitiv - fără cunoștințe despre sistem, nu veți avansa nici un pas.

În cele din urmă, dacă sunteți doar un utilizator, atunci cunoștințele despre sistemul de operare sunt limitate la acele sarcini pe care trebuie să le rezolvați în timp ce lucrați. Cel mai probabil, acestea sunt mai multe comenzi, iar dacă lucrați cu un shell grafic, atunci nu veți avea nevoie nici de aceasta. Dar lucrul cu o cutie neagră este chiar atât de plăcut?

Notatii acceptate

Apelurile de sistem, funcțiile de bibliotecă și comenzile shell sunt afișate cu caractere italice, cum ar fi open(2) , cat(1) sau printf(3S) . Secțiunea directorului electronic man(1) este indicată între paranteze (o descriere a directorului este dată în Anexa A).

Structurile de date, variabilele și funcțiile interne ale subsistemelor nucleului, codurile sursă de program și exemplele de linie de comandă sunt tipărite într-un font cu lățime fixă. De exemplu, d_open(), sleep() sau exemplu de program:

În exemplele de linie de comandă, introducerea utilizatorului este afișată cu font aldine cu lățime fixă, de exemplu:

$ passwd

Introduceți parola veche:

Numele fișierelor sunt îngroșate, de exemplu /etc/passwd sau .

Tastele de la tastatură sunt afișate cu caractere cursive și cuprinse între paranteze unghiulare, de exemplu< Del >sau< Ctrl >+< C >(în acest din urmă caz ​​este afișată combinația de taste).

Descărcări: 8365

Cel mai faimos dintre toate sistemele de operare de acum este, fără îndoială, familia Windows a Microsoft Corporation. Cu toate acestea, în ciuda popularității sale, Windows nu este primul sau singurul sistem de operare din lume.


28.04.2014
Nathan Wallace, Anthony Sequeira - Windows® 2000 Registry

Descărcări: 596

În primul rând, am dori să-i mulțumim lui Charlotte Carpentier, editor pentru achiziții la Coriolis. De asemenea, mulțumiri speciale lui Greg Balas, care a fost redactor de proiect, și Peggy Cantrell, care a fost coordonator de producție pentru carte.


27.04.2014
A. Chekmarev - Ghidul administratorului Windows 7

Descărcări: 12818

Ghidul sistemului de operare Microsoft Windows 7 se adresează utilizatorilor avansați și administratorilor de rețea. Sunt dezvăluite numeroasele capabilități ale tuturor edițiilor de Windows 7, toate aspectele utilizării sistemului sunt discutate în detaliu: de la instalare până la metodele de recuperare.


27.04.2014
M. Russinovich - Structura internă a Microsoft Windows

Descărcări: 9066

A șasea ediție a acestei cărți legendare este dedicată structurii interne și algoritmilor de funcționare a principalelor componente ale sistemului de operare Microsoft Windows 7, precum și Windows Server 2008 R2.


17.04.2014
Richard Simon - Microsoft Windows API. Manualul programatorului de sistem

Descărcări: 8967

Sistemele de operare ale familiei Windows au dus metodologia de dezvoltare a aplicațiilor care rulează sub controlul acestor sisteme de operare la un nivel calitativ complet nou. În ciuda abundenței de instrumente puternice de creare de software, cunoașterea interfeței de programare a aplicațiilor (API) - elementele de bază ale tuturor - este cheia pentru scrierea de programe care pot atinge o poziție demnă pe piață.


17.04.2014
Arnold Robbins, Elbert Hannah și Linda Lamb-Learning editorii vi și Vim. a 7-a ed.

Descărcări: 799

Nu există nimic despre care utilizatorii hardcore Unix și Linux să fie mai fanatici decât editorul lor de text. Editorii sunt subiect de adorație și închinare, sau de dispreț și ridicol, în funcție de faptul că subiectul de discuție este editorul tău sau altcineva" s. vi a fost editorul standard de aproape 30 de ani. Popular pe Unix și Linux, are un număr tot mai mare de urmăritori și pe sistemele Windows. Cei mai experimentați administratori de sistem citesc ca instrument de alegere. Și din 1986, această carte a fost ghidul pentru vi.


1Noțiuni introductive cu sistemele de operare

1.1 Scopul și funcțiile sistemelor de operare

Un sistem de operare pentru computer este un set de programe interconectate care acționează ca o interfață între aplicații și utilizatori, pe de o parte, și hardware-ul computerului, pe de altă parte. Sistemul de operare îndeplinește două grupe de funcții:

Oferă utilizatorului sau programatorului o mașină virtuală extinsă în loc de hardware-ul computerului real;

Crește eficiența utilizării computerului prin gestionarea rațională a resurselor acestuia în conformitate cu un anumit criteriu.

Utilizatorul, de regulă, nu este interesat de detaliile hardware-ului computerului, el îl vede ca pe un set de aplicații care pot fi scrise într-unul dintre limbajele de programare. Sistemul de operare oferă programatorului o serie de capabilități pe care programele le pot folosi prin comenzi speciale numite apeluri de sistem. Prin urmare, o aplicație software include multe apeluri de sistem necesare, de exemplu, pentru a lucra cu fișiere. Sistemul de operare ascunde detaliile hardware de programator și oferă o interfață convenabilă pentru executarea sistemului de mediu de operare.

În același timp, sistemul de operare acționează ca un manager de resurse. Conform acestei abordări, sarcina sistemului de operare este de a oferi o distribuție organizată și controlată a procesoarelor, memoriei și dispozitivelor I/O între diferite programe. Sistemul de operare are următoarele caracteristici:

Funcțiile sistemului de operare funcționează în același mod ca și alte programe software - sunt implementate sub formă de programe individuale sau un set de programe, care execută procese;

Sistemul de operare trebuie să delege controlul altor procese și să aștepte ca procesorul să-i acorde din nou timp pentru a-și îndeplini sarcinile.

Managementul resurselor include rezolvarea următoarelor sarcini generale care nu depind de tipul de resursă:

Programarea resurselor – adică determinarea cărui proces, când și în ce cantitate (dacă resursa poate fi alocată în părți) ar trebui să i se aloce o anumită resursă;

Satisfacerea solicitarilor de resurse;

Monitorizarea stării și înregistrarea utilizării unei resurse - adică menținerea informațiilor operaționale despre dacă resursa este ocupată sau liberă și ce cotă din resursă a fost deja distribuită;

Rezolvarea conflictelor dintre procese.

Managementul resurselor include multiplexarea (distribuirea) acestora în două moduri: în timp și în spațiu. Când o resursă este alocată în timp, diferiți utilizatori și programe o folosesc pe rând. Mai întâi unul dintre ei are acces pentru a utiliza resursa, apoi altul etc. De exemplu, mai multe programe doresc să acceseze procesorul central. În această situație, sistemul de operare permite mai întâi accesul unui program la procesor, apoi, după ce acesta a rulat un timp suficient, un alt program, apoi următorul și, în final, din nou primul. Determinarea cât timp va fi folosită o resursă în timp, cine va fi următorul și pentru cât timp le va fi dată resursa este sarcina sistemului de operare. Un alt tip de distribuție este multiplexarea spațială. În loc să lucreze alternativ, fiecare client primește o parte din resursă. De obicei, memoria RAM este partajată între mai multe programe care rulează, astfel încât toate să poată locui în memorie în același timp (de exemplu, folosind la rândul său procesorul central). Presupunând că există suficientă memorie pentru a deține mai multe programe, este mai eficient să alocați mai multe programe în memorie deodată decât să alocați toată memoria unui singur program, mai ales dacă are nevoie doar de o mică parte din memoria disponibilă. Desigur, acest lucru ridică probleme de distribuție corectă, protecție a memoriei etc., iar sistemul de operare există pentru a rezolva astfel de probleme.

1.2 Istoricul dezvoltării sistemelor de operare

De obicei, istoria dezvoltării sistemelor de operare este asociată cu istoria dezvoltării computerelor. Prima idee pentru un computer a fost propusă de matematicianul englez Charles Babbage la mijlocul secolului al XIX-lea. El a dezvoltat așa-numitul „motor analitic” mecanic, care, totuși, nu a funcționat niciodată corect. Următoarele sunt generații de computere și relația lor cu sistemele de operare.

Prima generație 1945-1955

Calculatoarele constau din tuburi vid și panouri de corecție. Cea mai mare realizare este producerea de cărți perforate. Realizat din carton subtire, un card perforat reprezinta informatii prin prezenta sau absenta gaurilor in anumite pozitii de pe card. Nu există sistem de operare.

A doua generație 1955-1965

Baza computerelor sunt tranzistoarele și sistemele de procesare în loturi. Caracterizat prin pachete de cărți perforate și dispozitive pentru înregistrarea benzilor magnetice. Programat în principal în limbaje Fortran și Asamblare pentru sistemele de operare Fortran Monitor System (FMS) și IBSYS.

A treia generație 1965-1980

Perioada este caracterizată de apariția circuitelor integrate, precum și de multitasking sau, așa cum se numește altfel, multiprogramare. IBM produce diverse serii de mașini, începând cu IBM/360. Pentru ei a fost scris sistemul de operare OS/360, care era de aproximativ 1000 de ori mai mare decât FMS de a doua generație. În această etapă, apare o implementare industrială a multitaskingului - o metodă de organizare a unui proces de calcul în care mai multe programe au fost stocate simultan în memoria computerului și executate alternativ pe un procesor.

Alte sisteme de operare notabile din această perioadă au fost CTSS (Compatible Time Sharing System) și MULTICS (Multiplex Information and Computing Service), care a fost conceput pentru a oferi acces la o singură mașină pentru sute de utilizatori simultan. Dezvoltarea ulterioară a acestui sistem a devenit UNIX.

A patra generație 1980-prezent

Această perioadă este asociată cu apariția circuitelor integrate la scară largă. În 1974, Intel a lansat primul procesor universal pe 8 biți, Intel 8080. La începutul anilor 80, IBM a dezvoltat IBM PC, un computer personal. În același timp, a apărut prima versiune de MS-DOS. Toate sistemele de operare dezvoltate până în acest moment au acceptat doar modul text de comunicare cu utilizatorul.

Prima încercare de a realiza o interfață grafică ușor de utilizat a fost implementată pe Apple Macintosh. Influențată de succesele sale, Microsoft Corporation lansează un shell grafic pentru MS-DOS - Windows. Și din 1995, a fost lansat Windows 95, care a devenit un sistem de sine stătător. Ulterior, pe baza Windows 95 și un alt sistem Windows NT, au fost dezvoltate sistemele de operare existente în prezent - Windows 2000, XP, Vista și altele.

1.3 Clasificarea sistemelor de operare

Există o mulțime de sisteme de operare și nu toată lumea le cunoaște. În continuare, luăm în considerare 7 tipuri de sisteme de operare diferite, de la niveluri mari până la niveluri mici.

Sisteme de operare mainframe

Mainframe este un computer de uz general de înaltă performanță, cu o cantitate semnificativă de memorie RAM și memorie externă, conceput pentru a efectua o muncă intensivă de calcul. Acestea sunt de obicei computere de dimensiunea unei camere și se găsesc în marile corporații. Mainframe-urile conțin de obicei mii de discuri și terabytes de RAM.

Sistemele de operare mainframe sunt concepute în primul rând pentru a gestiona mai multe lucrări simultane, dintre care majoritatea necesită cantități uriașe de I/O. Sistemul trebuie să răspundă la mii de solicitări pe secundă. Un exemplu este OS/390, care a evoluat de la a treia generație a sistemului de operare OS/360.

Sisteme de operare pentru server

Aceste sisteme de operare rulează pe servere, care sunt un computer personal, o stație de lucru sau chiar un mainframe. Serverele oferă posibilitatea de a lucra cu dispozitive de imprimare, fișiere sau internet. Astfel de sisteme de operare includ Unix, Linux, Windows 2003 Server etc.

Sisteme de operare multiprocesor

Aceste sisteme sunt utilizate pe computere cu procesoare centrale multiple. Acestea necesită sisteme de operare speciale, dar sunt de obicei modificări ale sistemelor de operare pentru server.

Sisteme de operare pentru calculatoare personale

Principalul criteriu al acestor sisteme este o interfață convenabilă pentru un utilizator. Cele mai cunoscute sisteme: seria Windows 98, 2000, XP, Vista; Macintosh, Linux.

Sisteme de operare în timp real

Parametrul principal al acestor sisteme este timpul. În sistemele de control al proceselor industriale, este necesar să se sincronizeze clar timpul de funcționare al transportorului și al diferiților roboți industriali. Acesta este un sistem greu în timp real. Există, de asemenea, sisteme flexibile în timp real în care termenele limită ratate pentru finalizarea unei operațiuni sunt acceptabile, de exemplu, sistemele multimedia. Sistemele de operare în timp real includ VxWorks și QNX.

Sisteme de operare încorporate

Acestea includ sistemele de operare PDA (Personal Digital Assistant). În plus, sistemele încorporate funcționează pe mașini, televizoare și telefoane mobile. Aceste sisteme de operare au de obicei toate caracteristicile sistemelor de operare în timp real cu limitări de memorie, putere etc. Exemple de sisteme sunt PalmOS, Windows CE.

Sisteme de operare pentru carduri inteligente

Un card inteligent este un dispozitiv de dimensiunea unui card de credit care conține o unitate centrală de procesare. Astfel de sisteme sunt supuse unor limitări severe de putere și memorie. Unii gestionează o singură operațiune - plata electronică, de exemplu. Cardurile inteligente selectate includ suport pentru Java Virtual Machine.

1.4 Prezentare generală a hardware-ului computerului

Un sistem de operare este strâns legat de hardware-ul computerului pe care trebuie să ruleze. Hardware-ul influențează setul de comenzi al sistemului de operare și gestionarea resurselor acestuia. Conceptual, un computer simplu poate fi reprezentat prin modelul prezentat în Figura 1. Această structură a fost utilizată pe primele modele de PC IBM.

Figura 1 - Unele componente ale unui computer personal


În figură, procesorul central, memoria și dispozitivele de intrare/ieșire sunt conectate printr-o magistrală de sistem prin care fac schimb de informații.

CPU

„Creierul” unui computer este unitatea centrală de procesare (CPU). Selectează comenzile din memorie și le execută. Un ciclu tipic de procesor arată astfel: citește prima instrucțiune din memorie, o decodifică pentru a-i determina tipul și operanzii, execută instrucțiunea, apoi citește și decodifică instrucțiunile ulterioare. Așa se execută programele.

Pentru fiecare procesor există un set de instrucțiuni pe care este capabil să le execute. Deoarece accesarea memoriei pentru a primi instrucțiuni sau preluarea datelor durează mult mai mult decât executarea acelor instrucțiuni, toate procesoarele conțin registre interne pentru stocarea variabilelor și a rezultatelor intermediare. Prin urmare, setul de instrucțiuni conține de obicei instrucțiuni pentru a încărca un cuvânt din memorie într-un registru și pentru a stoca un cuvânt dintr-un registru în memorie. Pe lângă registrele principale folosite pentru stocarea variabilelor, majoritatea procesoarelor au mai multe registre speciale folosite pentru stocarea variabilelor, precum și registre speciale vizibile programatorilor.

Când procesorul este multiplicat în timp, sistemul de operare oprește un program care rulează pentru a porni altul. De fiecare dată când apare o astfel de întrerupere, sistemul de operare trebuie să salveze toate registrele procesorului pentru ca ulterior, când programul întrerupt continuă să ruleze, acestea să poată fi restaurate.

Pentru a crește viteza procesorului, dezvoltatorii lor au abandonat modelul simplu, când o singură comandă poate fi citită, decodificată și executată într-un singur ciclu de ceas. Procesoarele moderne au capacitatea de a executa mai multe comenzi simultan.

Majoritatea procesoarelor au două moduri de operare: modul kernel și modul utilizator. Dacă procesorul rulează în modul kernel, poate executa toate instrucțiunile din setul de instrucțiuni și poate folosi toate capacitățile hardware-ului. Sistemul de operare rulează în modul kernel, oferind acces la tot hardware-ul. În schimb, utilizatorii operează în modul utilizator, care permite executarea unui subset de programe și face disponibilă doar o parte din hardware.

Memorie

A doua componentă principală a oricărui computer este memoria. În mod ideal, memoria ar trebui să fie cât mai rapidă (mai rapidă decât procesarea unei singure instrucțiuni, astfel încât procesorul să nu fie încetinit prin accesarea unei memorie care este mare și extrem de ieftină). Astăzi nu există tehnologii care să satisfacă toate aceste cerințe. Prin urmare, există o altă abordare.

Sistemul de memorie este construit sub forma unei ierarhii de straturi, care sunt ilustrate în Figura 2. Pe măsură ce vă deplasați prin ierarhie de sus în jos, doi parametri cresc: timpul de acces, dimensiunea memoriei.

Stratul superior este format din registrele interne ale procesorului, deci nu există nicio întârziere la accesarea acestora. Registrele interne stochează mai puțin de 1 Kb de informații. Programele pot manipula registre fără intervenție hardware. Accesul la înregistrare este cel mai rapid - câteva nanosecunde.

Următorul strat conține memorie cache, în cea mai mare parte controlată de hardware. Zonele cache utilizate cel mai frecvent sunt stocate în memoria cache de mare viteză situată în interiorul procesorului. Când un program trebuie să citească un cuvânt din memorie, cipul de cache determină dacă linia dorită se află în cache; dacă da, atunci are loc un acces la cache. Memoria cache este limitată ca dimensiune datorită costului ridicat. Mașinile moderne au două sau trei niveluri de cache, fiecare fiind mai lent și mai mare decât precedentul. Dimensiunile memoriei cache variază de la zeci de kiloocteți la câțiva megaocteți. Timpul de acces este puțin mai lung decât pentru registre.


Figura 2 – Structura ierarhică a memoriei


Urmează RAM (RAM - Random Access Memory sau Random Access Memory) - zona principală de lucru a dispozitivului de stocare al mașinii. Toate cererile CPU care nu pot fi îndeplinite de memoria cache sunt trimise către RAM pentru procesare. Volumele variază de la sute de megaocteți la câțiva gigaocteți. Timpul de acces este de zeci de nanosecunde.

Urmează discul magnetic. Memoria pe disc este cu două ordine de mărime mai ieftină decât RAM pe bit și cu două ordine de mărime mai mare ca dimensiune. Discul are o problemă - accesul aleatoriu la datele de pe acesta durează cu aproximativ trei ordine de mărime mai mult. Motivul vitezei reduse a hard disk-urilor (HDD) este că unitatea este o structură mecanică. Este format din una sau mai multe plăci metalice care se rotesc la viteze specifice, de exemplu 7200 rpm. Volumele de discuri cresc acum rapid pentru majoritatea utilizatorilor, discuri cu sute de gigaocteți. Timp de acces – nu mai puțin de 10 µs.

Banda magnetică este adesea folosită pentru a crea copii de rezervă HDD sau pentru a stoca seturi de date foarte mari. Acum, desigur, este rar unde puteți găsi utilizarea benzilor magnetice, dar încă nu au ieșit din uz. Nivelul benzii magnetice include, de asemenea, CD-uri, DVD-uri și memorie flash. Timpul de acces este măsurat în secunde.

Pe lângă tipurile descrise, computerele au o cantitate mică de memorie permanentă cu acces aleatoriu. Spre deosebire de RAM, nu își pierde conținutul atunci când alimentarea este oprită. Se numește ROM sau ROM. ROM-ul este programat în timpul producției și conținutul său nu poate fi modificat după aceea. Această memorie este destul de rapidă și ieftină. Programele de pornire ale computerului, utilizate la pornire, sunt localizate în ROM. În plus, unele carduri I/O conțin ROM pentru a controla dispozitivele de nivel scăzut. Un tip de memorie numit CMOS este volatil. CMOS este folosit pentru a stoca data curentă, ora și parametrii de configurare, cum ar fi hard disk-ul de pe care să pornească. Această memorie consumă energie de la bateria instalată.

Dispozitive I/O

Sistemul de operare tratează dispozitivele I/O ca resurse. Dispozitivele I/O constau de obicei dintr-un controler și dispozitivul în sine.

Un controler este un set de cipuri pe o placă introdusă într-un conector, un dispozitiv de control fizic. Acceptă comenzi ale sistemului de operare (de exemplu, instrucțiuni de citire a datelor de pe un dispozitiv) și le execută. Controlul propriu-zis al dispozitivului este foarte complex și necesită un nivel ridicat de detaliu. Prin urmare, funcția controlerului este de a oferi o interfață simplă pentru sistemul de operare.

Următoarea parte este dispozitivul în sine. Dispozitivele au interfețe destul de simple, deoarece capacitățile lor sunt limitate și trebuie aduse la un singur standard. Este necesar un singur standard, de exemplu, pentru ca fiecare controler de disc IDE (Integrated Drive Electronics) să poată gestiona orice disc IDE. Interfața IDE este standard pentru unitățile de pe computere cu procesor Pentium, precum și de pe alte computere. Deoarece interfața actuală a dispozitivului este ascunsă de controler, sistemul de operare vede doar interfața controlerului, care poate fi foarte diferită de interfața dispozitivului în sine.

Deoarece fiecare tip de controler este diferit, acestea necesită software diferit. Programul care comunică cu controlerul este driverul dispozitivului. Fiecare producător de controler trebuie să furnizeze drivere pentru sistemele de operare acceptate. Pentru a utiliza driverul, acesta trebuie să fie instalat în sistemul de operare, astfel încât să poată rula în modul kernel. Există trei moduri de a instala un driver în nucleu:

Reconstruiți nucleul împreună cu un driver nou și apoi reporniți sistemul de operare (așa funcționează multe sisteme de operare Unix);

Creați o intrare în fișierul inclus în sistemul de operare care indică faptul că este necesar un driver și apoi reporniți sistemul; în timpul pornirii inițiale, sistemul de operare însuși găsește driverele necesare și le încarcă (așa funcționează Windows);

Sistemul de operare poate accepta drivere noi fără a întrerupe funcționarea și le poate instala rapid fără a necesita o repornire. Această metodă devine din ce în ce mai comună. Dispozitive precum magistralele USB, IEEE 1394 necesită întotdeauna drivere încărcate dinamic.

Intrarea și ieșirea datelor se pot face în trei moduri diferite.

Cel mai simplu mod: programul utilizator emite o cerere de sistem, pe care nucleul o traduce într-un apel de procedură corespunzător driverului, apoi driverul începe procesul I/O. În acest timp, efectuează o buclă scurtă de program, interogând constant dispozitivul cu care lucrează. Când I/O se termină, driverul plasează datele acolo unde sunt necesare și revine la starea inițială. Sistemul de operare returnează apoi controlul programului care a efectuat apelul. Această metodă este așteptarea pregătirii (așteptare activă). Are un dezavantaj: procesorul trebuie să interogheze dispozitivul până când acesta se oprește.

Driverul pornește dispozitivul și îi cere să emită întreruperi când I/O este complet; După aceasta, șoferul returnează controlul sistemului de operare și începe să îndeplinească alte sarcini. Când controlerul detectează sfârșitul transferului de date, generează o întrerupere de finalizare. Procesul I/O care utilizează întreruperi constă din patru pași (Figura 3). La primul pas, șoferul transmite o comandă controlerului, scriind informații în registrele dispozitivului. Controlerul pornește apoi dispozitivul. Când controlerul termină de citit sau de scris numărul de octeți pe care i s-a spus să îi transfere, acesta trimite un semnal către cipul controlerului de întrerupere folosind fire de magistrală specifice. Acesta este pasul doi. În al treilea pas, dacă controlerul de întrerupere este pregătit să gestioneze întreruperile, atunci trimite un semnal către un anumit pin al CPU, informându-l astfel. În al patrulea pas, controlerul de întrerupere introduce un număr de dispozitiv pe magistrală, astfel încât CPU să poată ști ce dispozitiv și-a încheiat activitatea.

A treia metodă de intrare/ieșire a informațiilor este utilizarea unui controler DMA (Direct Memory Access) special. DMA gestionează fluxul de biți dintre RAM și unele controlere fără intervenția CPU. Procesorul accesează cipul DMA, îi spune numărul de octeți de transferat, precum și adresa dispozitivului și a memoriei și direcția transferului de date. La terminarea lucrărilor, DMA inițiază o întrerupere, care este procesată în mod obișnuit.


Figura 3 - Acțiuni efectuate atunci când un dispozitiv I/O pornește și primește o întrerupere


Cauciucuri

Datorită creșterii vitezei procesorului și a memoriei, la sistem au fost adăugate magistrale suplimentare atât pentru a accelera comunicarea dispozitivelor I/O, cât și pentru a transfera date între procesor și memorie. Figura 4 prezintă o diagramă a sistemului de calcul al primelor Pentium.

Acest sistem are 8 magistrale (cache bus, local bus, memory bus, PCI, SCSI, USB, IDE, ISA), fiecare cu propria sa viteza de transfer de date si propriile functii. Sistemul de operare trebuie să aibă informații despre toate aceste autobuze pentru a gestiona computerul.

Procesorul central transmite date prin magistrala locală către cipul de punte PCI, care la rândul său accesează memoria printr-o magistrală dedicată. Sistemul Pentium I are un cache de nivel 1 (L1) încorporat în procesor și un cache de nivel 2 (L2) mult mai mare conectat la procesor pe o magistrală cache separată. Autobuzul IDE este folosit pentru a conecta dispozitive periferice la sistem (CD-ROM, hard disk).


Figura 4 – Structura sistemului Pentium


Busul USB (Universal Serial Bus) este proiectat pentru a conecta dispozitive suplimentare de intrare/ieșire, cum ar fi o tastatură, mouse, imprimantă, memorie flash etc. la un computer. În timp, apar și se adaugă anvelope noi, mai rapide.

OS/2, VMS, VAX, Win32, UNIX - cititorul „Introducere în sistemele de operare” de D.V Irtegov se va familiariza cu aceste sisteme de operare. Arhitectura sistemului de operare, alocarea memoriei, sistemele de fișiere, securitatea și multe altele sunt acoperite în acest tutorial.

Un utilizator modern, desigur, este familiarizat cu sistemele de operare ale familiei Win32, dar este puțin probabil să știe despre existența acestei familii în sine, poate că a auzit despre ceva numit Linux, dar adună toate sistemele de operare asemănătoare UNIX fără să facă nimic între ele diferență, cu greu își amintește un astfel de sistem precum OS/2 și cu siguranță nu știe că ramura actuală a familiei MS Windows își datorează existența. Cu siguranță nu are nici cea mai mică idee despre un sistem de operare extrem de specific băncilor și structurilor de apărare, cum ar fi VMS. Manualul „Introducere în sistemele de operare” umple acest gol în educația cititorului, vorbind despre arhitectura tuturor acestor sisteme de operare, sistemele lor de fișiere, lucrul cu hardware și evenimente, implementarea multitasking și procesarea tranzacțiilor, sistemele de securitate ale sistemului de operare și alte probleme absolut. necesare viitorilor specialisti in domeniul tehnologiei informatice.

Astăzi este dificil să ne imaginăm o persoană modernă care nu deține un computer. Și pentru a lucra eficient cu această tehnică, utilizatorul trebuie să înțeleagă diferitele formate de fișiere Microsoft Windows. Cele mai populare formate de text, grafice și audio includ TeX, PDF, TIFF, HTML, GIF, AVI, MPEG, JPEG, CGML, MIME, QuickTime, PNDZIP, VRML, XXE, UUE, WAVE etc.

Cartea spune cum să despachetați corect fișierele care au fost comprimate de diferiți arhivatori și cum să codificați și să decodați corect datele. După ce a studiat cartea de referință „Microsoft Windows XP File Formats” (autor Boris Leontiev), cititorul va învăța să identifice „urmele” acelor utilități care au afectat fișierele care au ajuns pe computerul său.

O caracteristică distinctivă a acestui manual este o combinație bine construită a fundamentelor teoretice ale construirii unui sistem de operare cu exemple implementate în practică. A treia ediție a acestui manual acoperă în detaliu algoritmii de gestionare a memoriei. Bazele transmiterii mesajelor și interacțiunii interprocesor sunt subliniate mai detaliat, fiecare dintre procese fiind descris în detaliu. Sunt luate în considerare concepte precum semafoare, monitoare și drivere de dispozitiv. Se acordă atenție implementării de intrare/ieșire a informațiilor, dezvoltării sistemelor de fișiere și asigurării protecției și securității datelor.

Manual E. Tanenbaum, A. Woodhull „Sisteme de operare. Dezvoltare și implementare” este echipat suplimentar cu un CD care conține codul sursă al unui sistem de operare MINIX compatibil UNIX care rulează. Acest lucru face posibilă examinarea în detaliu în practică a caracteristicilor de funcționare a fiecăreia dintre componentele sale și a sistemului de operare în ansamblu.

Publicația, destinată celor interesați de dezvoltările software moderne și de dezvoltarea produselor Microsoft, vorbește despre aplicațiile de pe platforma 2003. Informațiile au fost colectate de către Yu Kuptsevich - „Almanahul programatorului” a fost creat de reviste, ai căror autori sunt dezvoltatorii și testatorii aplicațiilor discutate.

Acest manual este deja la a doua ediție și este un manual recomandat oficial de Ministerul Educației din Rusia. Descrie în mod consecvent structura sistemelor UNIX - arhitectura lor, interfețele, rutinele, interacțiunea cu hardware-ul și interacțiunea cu rețea. Cartea „Sistemul de operare UNIX” de Robachevsky și Nemnyugin a fost actualizată în conformitate cu cerințele vremii și va fi utilă programatorilor profesioniști și administratorilor de sistem.

Publicația este dedicată mecanismelor de bază ale sistemului de operare Windows. Cartea acoperă toate etapele operațiunilor, de la accesarea unui registru de procesor până la afișarea unui mesaj GUI pe ecran. Se acordă multă atenție tranzițiilor sistemului de la un mod la altul, motivelor apariției „ecranelor albastre ale morții” și caracteristicilor sistemului de fișiere NTFS. Cartea lui Russinovich „Structura internă a Microsoft Windows: Windows Server 2003, Windows XP, Windows 2000. Master Class” este o colecție de informații care este cea mai utilă pentru administratorii de sistem ai organizațiilor mari și angajații centrelor de servicii.

Acest manual a fost creat de profesorii de la Universitatea de Stat de Instrumentare Aerospațială din Sankt Petersburg pe baza materialelor de la cursul cu același nume. Cartea se distinge prin volumul și versatilitatea sa - include luarea în considerare a problemelor de la cele mai simple, în special, de la conceptele de bază ale programării sistemului, până la cele destul de complexe. De exemplu, la caracteristicile de microarhitectură ale procesoarelor x86. Conformitatea cu standardul de stat vă permite să utilizați „Software de sistem” de Gordeev și Molchanov ca ghid pentru pregătirea pentru testele de cunoștințe. Cu toate acestea, principala valoare a cărții constă în utilitatea ei în activitățile practice ale unui administrator de sistem sau programator.

Cartea descrie capabilitățile și vulnerabilitățile sistemului Windows 2000, pe care puțini oameni îl cunosc și îl folosesc rar. Este alcătuită din mai multe capitole mari concepute pentru a îmbunătăți abilitățile profesioniștilor și anexe cu liste de comenzi Kernel Debugger, funcții API kernel și elemente ale rutinelor OS. În „Funcțiile nedocumentate ale Windows 2000”, Sven Schreiber vorbește despre lucrul cu API-ul nativ, utilizarea mecanismelor de depanare Windows 2000 și explorarea memoriei acestuia, accesarea nucleului sistemului din modul utilizator, dezvoltarea driverelor în modul kernel și multe altele. Așa că cartea va fi utilă specialiștilor care doresc să creeze cele mai eficiente aplicații și sunt gata să înțeleagă lucrările Microsoft la un nivel extrem de profund.

Scris de un dezvoltator profesionist, referința și tutorialul Windows Embedded vor fi utile nu numai pentru începători, ci și pentru programatori profesioniști, deoarece conține o gamă largă de informații practice - de la „sfaturi pentru începători” la secretele profesionale ale autorului.

Microsoft Windows Embedded 2009 este cel mai stabil și mai răspândit dintre toate sistemele Windows încorporate de astăzi, creat pe baza Windows XP. Cu toate asemănările sale cu XP, este totuși suficient de diferit de strămoșul său, încât să învețe să programeze pentru el necesită un studiu separat. Cartea lui Stanislav Pavlov „Fundamentals of Windows Embedded Standard 2009” acoperă nu numai problemele tehnice cu care se confruntă un dezvoltator de software Windows Embedded, ci și alte informații practice, despre care autorul manualului scrie pe baza experienței profesionale personale.

Manualul va fi util atât dezvoltatorilor începători - cu condiția să stăpânească constant materialul capitol cu ​​capitol - cât și programatorilor profesioniști care vor găsi aici o mulțime de informații utile de referință. Dezvoltatorii experimentați vor beneficia, de asemenea, de sfaturile profesionale ale autorului, care sunt susținute și de exemple practice „vii”.

Dedicat examinării conceptului de sisteme de operare ca atare, mai degrabă decât oricărui sistem de operare specific, acest manual este destinat studenților de licență și absolvenți care studiază informatică, mai degrabă decât programarea în sine.

Aprobată de Ministerul Educației, această carte este destinată studenților specialității „Informatică și Informatică” ca manual la disciplina „Sisteme de operare” și studenților absolvenți implicați în latura teoretică a informaticii în înțelegerea sa inițială, adică , „știința procesării informațiilor”. Aici nu veți găsi informații despre asamblarea nucleului de sistem pentru un anumit procesor, configurarea modurilor plăcii video sau optimizarea sistemului de fișiere, gestionarea rolurilor utilizatorilor și grupurilor - spre deosebire de multe ateliere și cărți de referință dedicate Windows sau Unix, acest tutorial tratează ea din punct de vedere pur teoretic puncte de vedere despre conceptul de sisteme de operare ca atare. Principiile fundamentale ale proiectării sistemelor de operare discutate în această carte sunt valabile pentru aproape toate sistemele de operare existente astăzi.

Pentru specialiștii IT practicanți, manualul „Sisteme de operare în rețea” de Natalya și Victor Oliferov poate fi util și ca sursă de cunoștințe „academice” atunci când intervievează în companii unde se concentrează în primul rând pe natura academică a educației oficiale, mai degrabă decât pe abilitățile practice. a solicitantilor.



Articole înrudite: