Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme



Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Calculatoare


Index » educatie » » informatica » Calculatoare
» Cum lucreza un program de calculator ?


Cum lucreza un program de calculator ?




Cum lucreza un program de calculator

Unui calculator trebuie sa i se explice pas cu pas ce trebuie sa faca. Cat de in detaliu? IN TOATE DETALIILE, si intr-o forma pe care o pricepe. Orice calculator „vorbeste nativ” o singura limba, si anume codul masina, care ii permite executarea unui numar mare (dar limitat) de instructiuni pentru :

  • calcul aritmetic si logic
  • transfer date
  • control al executiei programului.

Aceste instructiuni sunt aplicate unor tipuri de date, care pot fi:




  • logice (adevarat sau fals);
  • numerice (intregi sau reale);
  • sir de caractere.

Prezentam in continuare o aproximare grosiera a modului in care pe un „calculator von Neumann”ruleaza un program simplu, care citeste doua numere, le aduna si apoi afiseaza rezultatul adunarii. Programul va ocupa octeti succesivi in memoria interna, incepand cu locatia 1000. Numerele sunt reprezentate pe 4 octeti, iar instructiunile sunt codificate pe 2, 4 sau 8 octeti. Executia programului incepe de la locatia 1012 (este adresa care se incarca initial in contorul program). Unitatea de control citeste primul octet din memorie, il decodifica si stie deja lungimea instructiunii – deci cati octeti mai trebuie cititi si decodificati pentru executia completa a primei instructiuni. Tot din aceasta analiza se poate calcula si adresa urmatoarei instructiuni, care este plasata in contorul program[1]. Octetii primei instructiuni (4 cu totul) sunt copiati in zonele interne de lucru, decodificati si executati, folosind si unitatea aritmetica si logica. Dupa terminarea executiei primei instructiuni, unitatea de comanda citeste octetul a carui adresa se afla deja in contorul program si ciclul anterior se reia. De retinut ca din punctul de vedere al unitatii centrale, fiecare instructiune trece prin ciclul regasire – decodificare – executie

Cum gandeste omul

Ce i se explica calcu la­to­ru­lui sa faca

Observatii

A

B

C

Citeste A

Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 0

instructiune de transfer date

Citeste B

Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 4

instructiune de transfer date

Calculeaza C A+B

Aduna continutul a 4 celule de memorie (care incep la adresa 0) cu continutul a 4 celule de memorie (care incep la adresa 4) si pune rezultatul in 4 celule de memorie (care incep la adresa 8)

instructiune de calcul aritmetic

Tipareste C

Scrie pe display continutul a 4 celule de memorie (care incep la adresa 8)

instructiune de transfer date

Dupa cum se vede, in calculator mai intai se rezerva spatiu pentru cele trei variabile folosite (cate patru octeti pentru A, B si C), dupa care se executa secvential programul. De ce? Simplu: cate variabile ne trebuie se poate afla rapid citind programul o data. Daca le-am rezervat spatiu la inceput, dupa aceea programul se poate lungi oricat.

Nimeni nu scrie un program pentru a aduna doua numere. Un program mai aproape de realitate ar aduna perechi de numere, si ar arata cam asa:

Cum gandeste omul

Ce i se „explica” calcu la­to­ru­lui sa faca

A

B

C

Citeste A

Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 0

instructiune de transfer date

Citeste B

Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand    cu adresa 4

instructiune de transfer date

Calculeaza C A+B

Aduna continutul a 4 celule de memorie (care incep la adresa 0) cu continutul a 4 celule de memorie (care incep la adresa 4) si pune rezultatul in 4 celule de memorie (care incep la adresa 8)

instructiune de calcul aritmetic



Tipareste C

Scrie pe display continutul a 4 celule de memorie (care incep la adresa 8)

instructiune de transfer date

Ia-o de la inceput

Reia executia programului de la adresa de memorie 1012 (salt la 1012)

instructiune de control al programului

Analizind structura programului, se observa un lucru foarte interesant. Dupa citirea si decodificarea instructiunii de la adresa 1032, contorul program nu va primi adresa 1034 (care din punct de vedere fizic ar fi locatia de memorie a urmatoarei instructiuni), ci 1012. Aceasta transfer al executiei programului la o alta instructiune decat cea urmatoare fizic permite luarea deciziilor bazate pe anumite conditii, lucru care da calculatorului “inteligenta”.

A doua versiune are un cusur evident: nu se va opri vreodata. Probabil ca versiunea urmatoare este mai apropiata de realitate

Cum gandeste omul

Ce i se „explica” calcu la­to­ru­lui sa faca

A

B

C

Citeste A

Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 0

instructiune de transfer date

Citeste B

Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 4

instructiune de transfer date

Calculeaza C A+B

Aduna continutul a 4 celule de memorie (care incep la adresa 0) cu continutul a 4 celule de memorie (care incep la adresa 4) si pune rezultatul in 4 celule de memorie (care incep la adresa 8)

instructiune de calcul aritmetic

Tipareste C

Scrie pe display continutul a 4 celule de memorie (care incep la adresa 8)

instructiune de transfer date

Daca e cazul, ia-o de la inceput

Daca mai sunt date, salt la 1012

instructiune de control al programului

O noua observatie: desi la adresa 1032 este tot o instructiune de salt (i.e. contorul program va primi valoarea 1012), lungimea instructiunii este mai mare (4 octeti), datorita faptului ca este un salt conditionat.



se aduna la valoarea deja existenta in contorul program lungimea instructiunii executate in acest moment (se incrementeaza contorul program)

fetch, decode, execute






Politica de confidentialitate


Copyright © 2020 - Toate drepturile rezervate