Mașină abstractă

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică, termenul de mașină abstractă indică un model teoretic de hardware sau software , capabil să efectueze operații, să memoreze rezultatul și să urmeze fluxul algoritmului .

Mașinile abstracte sunt utilizate în teoria calculabilității pentru a analiza calculabilitatea și complexitatea algoritmilor. Prin utilizarea mașinilor abstracte este de fapt posibil să se calculeze cantitatea de resurse (timp, memorie etc.) necesare pentru a efectua o operație specifică, fără a fi nevoie să construim un sistem real.

Cel mai faimos exemplu de mașină abstractă este mașina Turing , dar există exemple mai complete, cu structură de date , registre și un set complet de instrucțiuni, cum ar fi mașina RAM , care permite accesul aleator la locațiile de memorie indexate sau cele mai abstracte nota mașinii C.

O mașină abstractă se poate referi, de asemenea, la proiectarea unui microprocesor , care nu a fost încă implementat (sau nu se intenționează a fi) implementat ca hardware. O mașină abstractă implementată ca software de simulare sau pentru care există un interpret se numește mașină virtuală .

Definiție

În ceea ce privește intrarea și ieșirea, o mașină abstractă tipică constă dintr-un set de operații fezabile, utilizate pentru a transforma intrarea în ieșire.

Furnizarea unei definiții detaliate și în același timp valabile pentru a încadra orice arhitectură prezentă și viitoare a computerului este departe de a fi simplă (dacă nu chiar imposibilă), deoarece fiecare mașină abstractă depinde de un anumit model de calcul. Mașinile abstracte bazate pe modelul Turing se numesc imperative, la baza acestui model se află conceptul de educație. Există alte modele de calcul care descriu stiluri de programare și mașini abstracte diferite de cele imperative, (de exemplu: logice, funcționale, orientate pe obiecte etc.)

Acordăm mai multă atenție mașinilor abstracte imperative, deoarece majoritatea mașinilor reale se bazează pe modelul arhitecturii von Neumann . Acest lucru nu se datorează calității mai bune a modelului imperativ, ci unui fapt pur tehnologic. În definiția mașinii abstracte imperative găsim toate conceptele deja prezente în formalismul mașinii universale Turing .

În mod formal, o mașină abstractă (imperativă) este un set de structuri de date și algoritmi capabili să stocheze și să execute programe. Principalele componente sunt:

  • un interpret;
  • o memorie , care conține programul și datele;
  • un set de operații primitive;
  • un control de secvență, care are sarcina de a obține instrucțiunile în urma fluxului algoritmului;
  • o unitate pentru controlul transferului de date, care se ocupă de recuperarea operanzilor și stocarea rezultatului;
schemă de interpret

Interpretul

Componenta fundamentală care oferă mașinii capacitatea de a executa programe este interpretul, este un algoritm simplu numit și ciclul FETCH / EXECUTE, care prin coordonarea celorlalte părți ale mașinii abstracte permite executarea instrucțiunilor până când este executat instrucțiunea ALT primitivă care determină ieșirea ciclului și oprirea mașinii.

Structura interpretului este întotdeauna aceeași pentru orice mașină abstractă, ce modificări sunt celelalte componente.

Realizarea unei mașini abstracte

Pictogramă lupă mgx2.svg Același subiect în detaliu: Traducător (informatică) .

Există 3 tehnici pentru realizarea unei mașini abstracte.

Realizare hardware

Implementarea în hardware este, în principiu, întotdeauna posibilă, dar este adecvată doar pentru mașini abstracte relativ simple. Motivația este de natură economică, producerea de mașini abstracte complexe în hardware este foarte costisitoare.

Realizarea prin interpretare

Se poate face prin firmware și prin software (printr-un emulator ). Prin firmware, algoritmii și structurile de date sunt realizate prin intermediul unui microprogram , într-o mașină gazdă microprogramabilă. Microprograma este constrânsă de caracteristicile mașinii, dar este mult mai rapidă decât realizarea prin software, care nu este constrânsă de caracteristicile mașinii.

Realizare prin compilare

Programul este complet tradus în limba mașinii gazdă. Traducerea este realizată de un program numit compilator .

Calculatoare moderne

Pictogramă lupă mgx2.svg Același subiect în detaliu: Sistem de operare .

Diferența de putere expresivă între mașina abstractă pe care vrem să o creăm și mașina abstractă gazdă (HOST) se numește decalaj semantic . De multe ori decalajul semantic dintre mașina care urmează să fie realizată și mașina HOST este atât de mare încât pentru a eficientiza sistemul este convenabil să creăm mașini abstracte intermediare.

Astfel se formează o ierarhie reală a mașinilor abstracte, unde la cel mai jos nivel există circuitele electronice și la cel mai înalt nivel există mașina abstractă la „nivelul” utilizatorului. În această ierarhie abstractă a mașinilor, un rol fundamental îl joacă sistemul de operare, care are sarcina de a oferi utilizatorului o interfață software pentru a accesa hardware-ul, a gestiona componentele hardware și programele care rulează pe acesta.

Calculatoarele moderne sunt realizate prin combinarea tuturor celor trei tehnici. O schemă larg utilizată implică inițial o fază de compilare, urmată de o fază de interpretare și, în final, de implementarea în hardware. Un exemplu este limbajul de programare Java . Scopurile acestei stratificări sunt multiple: gestionarea complexității, creșterea flexibilității și minimizarea costurilor.

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT