cooperativ multifuncțional și preemptiv
cooperativ multifuncțional și preemptiv. Procese, fire de execuție. Scalar, super-scalar, vector, SMTprotsessory. acces la memorie și de autobuz NUMA.
cooperativ multifuncțional și preemptiv
Multitasking (multitasking engleză.) - proprietatea sistemului de operare, sau mediul de programare, permit paralela (sau pseudo) prelucrarea a mai multor procese. Adevărat sistem de operare multi-tasking este posibilă numai în sistemele de calcul distribuite.
medii multitasking primitive oferi „partajarea de resurse“ pur în cazul în care pentru fiecare sarcină atribuită anumită porțiune de memorie, iar sarcina este activat într-un interval de timp strict definite.
Alocarea mai avansată a resurselor de sistem multitasking se realizează în mod dinamic, atunci când sarcina începe în memorie sau părăsește memoria în funcție de prioritatea și strategia sistemului. Un astfel de mediu multitasking are următoarele caracteristici:
· Fiecare sarcină are o prioritate, potrivit căreia timpul primite și memoria
· Sistemul organizează cozi de sarcini, astfel încât toate sarcinile date resursele, în funcție de prioritățile și strategiile sistemului
· Sistemul organizează manipulare de întrerupere, care sarcinile pot fi activate, dezactivate și șterse
· La sfârșitul sarcinii felie de timp poate pune scos temporar din memorie, oferind resurse pentru alte sarcini, și apoi, după o anumită perioadă de timp a sistemului de recuperare de memorie (swap)
· Sistemul oferă o protecție de memorie împotriva intervențiilor neautorizate din alte sarcini
· Sistemul detectează accidente și se blochează sarcinile individuale și le oprește
· Sistemul rezolvă conflictele de acces la resurse și dispozitive, evitând deadlocks atârnă generale cu privire la așteptările de resurse blocate
· Sistemul asigură fiecare sarcină, va fi activat mai devreme sau mai târziu
· Sistemul se ocupă interogări în timp real
· Sistemul permite comunicarea între procese
Tipuri de un pseudo multi-tasking
1. non-preemptive multitasking
tip multitasking, în care încărcarea sistemului de operare în memorie în același timp, două sau mai multe aplicații, dar timpul procesorului este dat numai la cererea principală. Pentru a efectua o aplicație de fundal, acesta trebuie să fie activat.
2. multitasking comune sau în colaborare
tip multitasking, în care sarcinile de fond sunt executate numai în timpul timpul de lucru al procesului principal și numai în cazul în care a primit permisiunea de a procesului principal.
cooperativ multifuncțional poate fi numit multitasking „a doua etapă“, deoarece utilizează tehnici mai avansate decât sarcini simple de comutare, realizate de mai multe programe bine cunoscute (de exemplu, shell MS-DOS de la MS-DOS 5.0 prin simpla comutare a programului activ primeste tot timpul de procesor, și aplicații de fundal complet congelate. În multitasking cooperativ se poate apuca de fapt, la fel de mult timp CPU după cum consideră potrivit. Toate aplicațiile împart timpul CPU perioperatorie Cally prin trecerea de control la următoarea sarcină.
3. multitasking sau de prioritate (în timp real)
Un fel de multitasking în care sistemul de operare transferă automat de control de la un alt program de funcționare. distribuție timp CPU este realizată prin procesele planificator. Acest tip de multitasking permite un răspuns mai rapid la acțiunile utilizatorului.
Preemptive multitasking - un tip de multitasking în care procesul de planificare se bazează pe prioritățile absolute. Procesul de la (de exemplu, programul de utilizator) inferior prioritate poate fi preempted în timpul execuției unui proces cu prioritate mai mare (de exemplu, programul sistemic sau de diagnostic). Uneori, acest tip de multitasking numit prioritate.
Procese fire de execuție
Multitasking sistem (multi-proces) permite două sau mai multe programe pentru a rula simultan. Multi-threaded sistem (multi-threaded) permite un program pentru a executa mai multe fire simultan. Sistemele de operare moderne combina ambele aceste proprietăți.
Procesul - un concept care se referă la sistemul de operare. De fiecare dată când porniți aplicația, sistemul creează și începe un nou proces. Cu fiecare sistem de proces de link-uri de resurse, cum ar fi:
· Codul de executabilă și date;
Stream (fir) - un element de bază al sistemului, pe care sistemul de operare alocă timpul mașinii. Un fir poate executa orice parte a procesului de ansamblu a codului, inclusiv partea care în acest moment se execută deja un alt fir.
· Structura (fir) determină o secvență de execuție a codului în proces.
· Procesul are nimic, pur și simplu servește ca un container fluxuri.
· Fluxurile sunt întotdeauna create în contextul unui proces, și toată viața lor este numai în limitele sale.
· Curente pot purta același cod și să manipuleze aceleași date și partaja descriptorii obiect nucleu, descriptori de masă generate, deoarece nu fluxuri și procese separate.
· Având în vedere că debitul este în mod substanțial mai puține resurse decât procese, încearcă să rezolve problemele lor, prin utilizarea unor fire suplimentare, și pentru a evita crearea de noi procese (dar abordarea acest lucru cu inteligenta).
Scalar, super-scalar, vector, SMTprotsessory
arhitecturi paralele de clasificare Flynn (M. Flynn)
Sistem informatic cu un flux de comenzi și date (calculator uniprocesor - SISD, flux unic de instrucțiuni printr-un flux unic de date).
Sistemul de calcul cu un flux comun de instrucțiuni (SIMD, singură instrucțiune, date multiple - flux de instrucțiuni și un singur flux de date multiple).
Sistemul de calcul cu flux de instrucțiuni multiple și flux de date unică (MISD, instrucțiuni multiple de date unică - calculator pipeline).
Sistemul de calcul cu mai multe comenzi și fluxul de date (MIMD, instrucțiuni multiple de date multiple).
procesor scalar - este doar o clasă de microprocesoare. Procesorul scalar procesează un singur element de date pentru o singură instrucțiune (procesor SISD, elemente tipice de date pot fi numere întregi sau numere reale cu virgulă).
procesor superscalar este mai mult decât un (scalar) procesor convențional serial. Spre deosebire de acesta din urmă, se poate efectua mai multe operații într-un singur ciclu de ceas. Principalele componente ale unui procesor superscalar este un dispozitiv pentru interpretarea comenzilor furnizate cu logica, care permite să se determine dacă echipa independentă, și număr suficient de unități de execuție. În realizarea de dispozitive pot fi benzi transportoare. procesoare superscalare să pună în aplicare la nivel de instruire paralelism.
Termenul „conducta“ se referă la arhitectura de calculator. transportor. Ideea transportoare este de a sparge o operație complexă pe platourile de filmare de mai simple, care pot fi rulate simultan. Atunci când se deplasează obiecte de pe o bandă transportoare la diverse site-uri pentru a efectua operații diferite, iar atunci când obiectul de fiecare capăt al transportorului, el va procesat complet. Transportoarele sunt utilizate ca în procesarea comenzilor și operații aritmetice. Pentru punerea în aplicare efectivă a următoarelor condiții trebuie îndeplinite de conducte:
· Sistemul efectuează operațiuni repetitive;
· Această operație poate fi divizată în părți independente, care sunt mic grad de suprapunere;
· Complexitatea sub-operațiunilor este aproximativ aceeași.
Numărul de sub-operațiuni numite conducte adâncime. O condiție importantă pentru funcționarea normală a transportorului este absența conflictului, adică, date este alimentat la transportorul trebuie să fie independentă. În cazul în care următorul operand depinde de rezultatul operației anterioare, există perioade ale transportorului ( „bule“), atunci când acesta este gol. Aceasta este o altă problemă în sistemele de transport.
Creșterea vitezei care pot fi obținute prin intermediul transportorului este dată aproximativ de următoarea formulă:
unde n - numărul de operanzi care urmează să fie încărcate în conducte, d - adâncimea transportorului. Să presupunem că doriți să efectuați o operație de adăugare de matrice bidimensională a 200 de elemente, care realizează plus necesare cinci operații. În acest caz, accelerația va fi (200 * 5) / (200 + 5) = 4,88. Desigur, aceasta este o situație ideală, imposibil de atins în viața reală, în special, se crede că nu există nici o „bule“ și așa mai departe. D. Aceasta implică, după cum sa menționat deja, independența reciprocă a datelor.
În conducta de instrucțiuni pot prezenta, de asemenea, întârzieri, sursa, care este relația dintre echipele. Astfel de situații apar în prezența ciclurilor ramură, și anume, declarații condiționale.
Un exemplu de un procesor de calculator superscalare este IBM RISC / 6000. Procesor de frecvență de ceas de la un calculator a fost de 62,5 MHz și performanța sistemului la testele aritmetice a ajuns la 104 Mflop (Mflop - măsurarea vitezei procesorului unitate - milioane operațiuni cu virgulă mobilă pe secundă). procesor superscalar nu necesită compilator vectorizat special, dar compilatorul trebuie, în acest caz, să ia în considerare caracteristicile arhitecturale.
Simultane Multithreading (SMT - multithreading simultan) - următorul pas în extinderea capacității procesorului, aplicații orientate spre performanță solicitante, precum și metoda de susținere a paralelizare a sarcinilor la mai multe instrucțiuni procesorului la canalele de prelucrare.
Nivelul simultană aplicație multithreading vă permite să „vezi“ doua procesoare în loc de unul implicate. În cazul în care SMT este dezactivat (prelucrarea singur fir), fiecare procesor fizic folosește una logică. Când modul SMT este activat, fiecare procesor execută în prezent comenzi de aplicații, utilizează două procesoare logice în loc de unul. Tehnologia multithreading se realizează datorită faptului că folosesc dispozitivul procesor diferit care vă permite să distribuiți fluxurile peste ele în îndeplinirea diferitelor echipe de aplicații.
acces la memorie și de autobuz NUMA
Nivelurile acestor semnale în orice moment dat determină starea sistemului în acest moment.
Magistrala de date este format din 16 linii. care pot fi transmise ca un singur octet. și cuvinte pe doi octeți. Când transferați octeți pot fi transferate și de peste 8 linii și mai tineri. magistrală de date bidirecțional, deoarece octetul de transfer și cuvânt poate fi realizată într-un microprocesor, și din acestea.
Bus de control format semnale care provin direct dintr-un microprocesor, semnalele de la controlerul de autobuz, iar semnalele provenind de la microprocesor la alte circuite și adaptoare periferice.
Microprocesorul utilizează controlerul de autobuz pentru generarea semnalelor de control care determină transferul pe magistrala de date. Acesta prezintă trei semnale - SO, - SI, M / -IO, care definesc tipul ciclului de magistrală (intrerup recunosc, citește port I / O, oprire, de citire a memoriei, memoria de scriere). Pe baza valorilor acestor semnale controlerului de autobuz generează semnale de control care controlează dinamica acestui tip de pneu.
Astfel, în cazul în care frecvența oscilatorului cuarț care determină frecvența de 20 MHz este CLK, atunci lățimea de bandă maximă a magistralei de date este egal cu (20/4) milioane de cuvinte pe secundă, sau 10 V / sec. Debitul real este semnificativ mai mic.
multiprocesor simetrica (Engl. multiprocesare simetrică, sau SMP), arhitectura este un calculator multiprocesor, în care două sau mai multe procesoare identice conectat la o memorie comună. Cele mai multe sisteme multiprocesor arhitectura utilizate în prezent SMP. Sistemele SMP permit orice procesor pentru a lucra la orice sarcină, indiferent în cazul în care datele sunt stocate în memorie pentru această sarcină; cu suport din cauza sistemului de operare, sistemele SMP se pot deplasa cu ușurință sarcini între procesoare distribuie în mod eficient sarcina. Pe de altă parte, memoria este CPU mult mai lent, care este accesat, chiar și mașinile cu un singur procesor are să-și petreacă o mulțime de timp pentru a prelua datele din memorie. Situația SMP este și mai agravată, deoarece doar un singur procesor poate accesa memoria la un moment dat.
SMP este doar o abordare pentru a construi un multi-car; O altă abordare este de a NUMA, care oferă băncilor procesoare separate de memorie. Acest lucru permite procesorului să funcționeze în paralel cu memorie, și poate crește foarte mult de lățime de bandă de memorie, într-un caz în care datele sunt legate de un anumit proces (și, prin urmare, procesorul). Pe de altă parte, Numa crește costul mișcării de date între procesoare, echilibrând astfel sarcina este mai scump. Beneficiile sunt limitate la un anumit interval NUMA de sarcini în serverul principal, în cazul în care datele sunt adesea strâns legate de sarcini sau anumiți utilizatori.