Execuție (computer)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Schema de abstractizare de la utilizator până la execuția de către hardware

Odată cu execuția , în informatică , indicăm procesul prin care un sistem de procesare ( computer sau mașină virtuală ) execută ( procesează ) instrucțiunile unui program , urmând fluxul de execuție specificat în respectivul cod sursă , după fazele de compilare / interpretare și conectarea . În general, termenul „executați” este folosit pentru a indica începutul unui program instalat ; mai exact, execuția este starea în care se află un proces atunci când un procesor execută instrucțiunile care îl caracterizează (spre deosebire de alte momente în care poate fi, de exemplu, într-o stare suspendată ( inactiv ), sau chiar în așteptarea unui procesor este pus la dispoziție; vezi și programatorul ).

Descriere

Premise și context

Pictogramă lupă mgx2.svg Același subiect în detaliu: Cod obiect și interpret (IT) .

Contextul în care are loc execuția este crucial: în comparație cu numărul total de programe disponibile, sunt foarte puține care pot fi executate direct de pe un computer fără sprijinul sistemului de operare.

Programele conțin, în general, presupuneri implicite și explicite despre resurse accesibile în timpul rulării (de exemplu, disponibilitatea canalelor de comunicații standard sau un sistem de fișiere pe care să stocheze date). Majoritatea programelor rulează cu suportul sistemului de operare și al bibliotecilor specifice limbajului, care oferă servicii esențiale care nu sunt oferite direct de computer. Acest mediu de suport, de exemplu, oferă procese metode uniforme pentru a accesa chiar și dispozitive radical diferite și, în același timp, le împiedică să le acceseze direct și astfel să creeze conflicte între procese și utilizatori.

Un program scris în limbaj de asamblare sau într-un limbaj de programare la nivel înalt ( cod sursă ), poate fi executat numai prin compilarea codului sursă în cod obiect sau prin traducerea acestuia în limbajul mașinii, care va da apoi viață programului executabil , sau prin folosind un interpret .

Indicații în interfața grafică

În sistemele de operare moderne multitasking , shell-urile grafice și textuale permit utilizatorului să indice un program de rulat (prin meniuri, pictograme sau specificându-l pe o linie de comandă ); când se întâmplă acest lucru, shell - ul invocă un apel de sistem care creează un proces secundar în care sunt încărcate datele și instrucțiunile programului de executat. De exemplu, în sistemele de operare Unix și Unix-like , apelul la sistemul fork (adică „fork” sau „bifurcație”) creează un nou proces făcând o copie a procesului de apelare; noul proces își poate înlocui în întregime datele și instrucțiunile cu cele ale programului prin invocarea unuia dintre apelurile de sistem ale familiei exec .

La sfârșitul execuției sale, procesul solicită terminarea sistemului de operare printr-un apel de sistem (de exemplu, ieșire în sistemele Unix) care face ca valoarea de ieșire să fie disponibilă procesului părinte și să elibereze resursele care au fost ocupate de proces . Executarea unui proces se poate termina prematur, fără ca acesta să se ceară să fie terminat, de exemplu atunci când utilizatorul sau sistemul de operare îi trimit un semnal pentru a solicita terminarea acestuia (prin apelul de sistem kill pe sistemele Unix). Un tip particular și important de execuție este execuția în fundal .

Tipuri

De sistemul de operare

Schema unui programator
Pictogramă lupă mgx2.svg Același subiect în detaliu: Planificator , Proces (calcul) și Executarea fundalului .

În majoritatea computerelor moderne, bazate pe arhitectura von Neumann , executarea unui program binar necesită ca, sub activitatea și controlul sistemului de operare , programul în sine să fie încărcat inițial în memoria primară (de exemplu, RAM ), pornind de obicei de la o masă dispozitiv de stocare (sau stocare secundară ), cum ar fi un hard disk . „ Punctul de intrare ” al programului (adică prima instrucțiune) este apoi identificat, iar adresa de memorie respectivă este copiată într-un registru de procesor numit contor de programe . În acest moment, un proces de preluare-executare este pornit în procesor, de către unitatea de control , care preia în mod repetat instrucțiunea „îndreptată” de contorul de program , crește contorul de program pentru a-l îndrepta către următoarea instrucțiune și execută instrucțiuni încărcate secvențial în ordine.

Se poate vedea că bucla de preluare-executare implicit implică, prin urmare, executarea secvențială a instrucțiunilor programului. Instrucțiunea curentă, totuși, poate modifica contorul programului : această operațiune corespunde unei instrucțiuni de salt la salt sau unei instrucțiuni de salt condițional care este mecanismul fundamental pe care se implementează cele mai avansate structuri de control de către compilatori și interpreți. Un program care rulează este văzut de sistemul de operare ca un proces sau un set de procese, gestionat prin apeluri de sistem , iar mai multe programe / procese pot fi rulate simultan prin orice multitasking oferit de sistemul de operare în sine și gestionat de programator .

Din partea hardware-ului

Pictogramă lupă mgx2.svg Același subiect în detaliu: Ciclul procesorului .
Ciclul procesorului (fetch-execute) după faza inițială de boot

Un program scris direct sau convertit în limbajul mașinii poate fi executat direct de pe un computer, înțeles ca hardware . Executarea codului de către o mașină hardware în ciclul de preluare-executare este posibilă datorită capacității procesorului de a executa o serie de instrucțiuni de bază ( set de instrucțiuni ), pe care programul este mapat / tradus la nivelul limbajului mașinii., grație circuitelor electronice de bază ( circuite integrate ) care alcătuiesc procesorul în sine. Din punct de vedere al utilizatorului, în computerele moderne, acest lucru se întâmplă de obicei datorită exercițiului, gestionării sau controlului resurselor hardware (procesor, memorie etc ...) operate de sistemul de operare care acționează ca platformă software a sistemului. Singura excepție apare atunci când computerul este pornit, când pornește și rulează firmware - ul care se ocupă de testarea electronice și încărcarea sistemului de operare. Odată ce procesul de boot a trecut controlul către sistemul de operare, niciun program nu poate fi rulat direct de pe hardware.

De-a lungul timpului, a devenit rar ca un program să fie potrivit pentru executarea directă de către un computer destinat doar hardware ; în mod obișnuit, necesită o mașină virtuală care include hardware-ul computerului cu adăugarea unuia sau mai multor straturi de software care ajută la crearea mediului de execuție potrivit pentru program. Aceleași programe executabile necesită de obicei prezența unui anumit sistem de operare , a anumitor biblioteci și așa mai departe. Deși liniile generale ale funcționării unei mașini virtuale sunt uneori destul de similare cu cele descrise mai sus pentru mașina lui von Neumann, în multe cazuri diferă substanțial de aceasta, introducând numeroase concepte care nu sunt prezente în această arhitectură (de exemplu, înregistrările de activare a stivei) . Se poate spune că un limbaj de programare este cu atât mai înalt cu cât mașina virtuală corespunzătoare prezintă caracteristici care sunt conceptual distante de mecanismele fundamentale ale arhitecturii von Neumann (sau, în general, ale arhitecturii hardware de bază).

Elemente conexe

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