CPU (Central Processing Unit) =Unitatea de control + Unitatea Aritmetico-Logica
Memoria contine atat datele cat si instructiunile programelor. Memoria este adresabila si pentru realizarea lor fizica se utilizeaza
semiconductori ai caror continut se pierde la oprirea calculatorului. Accesul la memorie trebuie sa fie foarte rapid, deoarece timpul de acces influenteaza timpul de executie al procesului.
Program = un set de instructiuni care rezolva o anumita problema. Pe parcursul executiei unui program, procesorul pe baza continutului registrului PC (Program Counter) incarca o instructiune din memorie, o decodifica si o executa, dupa care incrementeaza PC (adresa urmatoarei instructiuni). Acest ciclu se numeste ciclu Neumann.
1. Transfer programat (polling):
Procesorul in mod continuu verifica perifericele si daca gaseste informatii, atunci citeste de acolo. Dezavantajul metodei este ca procesorul este in mod continuu ocupat si verifica chiar daca nu sunt date pe periferice.
2. Transfer pe baza de intreruperi ( Interrupted Request - IRQ )
Perifericul pe o linie proprie informeaza procesorul ca necesita transfer de date. Daca cererea este acceptata atunci unitatea centrala (procesorul) isi intrerupe activitatea curenta (memoreaza punctul de intrerupere) rezolva transferul de date cu perifericul, iar dupa ce a terminat transferul isi continua activitatea de la punctul de intrerupere. In cazul acestei metode timpul procesorului se pierde in salvarea starii procesului intrerupt si reluarea executiei procesului intrerupt.
3. Transfer direct de memorie (DMA - Direct Memory Access)
Transferul este realizat cu ajutorul unei unitati de control independent si microprocesorul nu este ocupat de aceasta treaba. La inceputul transferului microprocesorul trebuie sa furnizeze unitatii de control adresa de inceput si dimensiunea blocului de memorie destinat transferului.
7. Aplicatii
6. Limbaje de programare de nivel inalt
5. Limbaje de programare de nivel scazut
4. Sistem de operare
3. Hardware
2. CPU: microprocesor, registri
1. Circuite logice
Program (task): Un set de instructiuni care rezolva o anumita problema si este scris intr-un limbaj de programare.
Proces: Un program aflat in executie. (Un program poate crea mai multe procese).
Dupa ce se executa si ultima instructiune se termina procesul. Intr-un sistem de operare multiuser si multitasking esista o multime de procese care se executa de catre microprocesor. Gestionarea acestor procese este treaba sistemului de operare.
Orice proces are atasat un PCB (Process Control Block)-bloc de control al procesului. Acest PCB contine urmatoarele campuri:
PID - identificatorul procesului
PC - valoare Program Counter
starea procesului
continutul registrilor
zone de memorie atasate procesului
tabela descriptorilor de fisiere

Resursele pot fi:

Aceste apeluri sistem sunt realizate cu intreruperi software si realizeaza transferul controlului la kernel. Protectia proceselor se
realizeaza prin cele doua moduri de executie al unui proces:
USER MODE: in acest mod procesul poate executa un set restrans de instructiuni. In acest mod nu poate accesa o anumita resursa.
KERNEL MODE : procesul poate executa orice instructiune
Un proces pe parcursul executiei isi poate schimba modul de executie. Cand are nevoie de resurse atunci trece in modul kernel, iar cand isi termina treaba cu resursa atunci revine in mod user.
Deservirea apelurilor sistem
#include <stdio.h.>
main(){
int c;
while( read(0,c,1) !=EOF )
write(1, c, 1);
return 0;
}
cc prog.c -o prog.x
In exemplul de mai sus am utilizat doua apeluri sistem: read si write

Procesoarele au de obicei terminale (pini) la care sosesc toate semnalele de intreruperi. La sosirea unui asemenea semnal in primul rand trebuie stabilita sursa acestui semnal. Modul cel mai simplu in care se poate stabili acest lucru este interogarea tuturor perifericelor (polling). Mult mai eficient este sistemul de intreruperi cu un vector. Fiecare element al acestui vector contine adresa unei rutine de tratarea unei exceptii.
Tratarea intreruperilor
2. Codul sursa trebuie convertit intr-un set de instructiuni care este inteles de catre microprocesor. Aceasta operatie este realizata de catre compilator. Rezultatul acestei faze este un fisier care se numeste COD OBIECT. Codul obiect inca nu contine adrese absolute si presupune ca modulul program incepe de la adresa 0. Un program poate fi compus din mai multe module. Aceste module pot fi toate scrise de catre noi sau putem utiliza module din biblioteca de sistem.
3. Editarea legaturilor este realizata de catre linker. Sarcina acestui program este sa rezolve legaturile dintre diferitele module ale aceluiasi program si sa produca un COD EXECUTABIL.
Nici codul executabil nu poate sa contina adrese absolute, fiindca nu se stie unde va fi incarcat respectivul program in memorie. Daca concomitent se ruleaza mai multe programe atunci programele intotdeauna vor fi incarcate in zone de memorie libere.
Cu noile medii de dezvoltare integrate pentru diferite limbaje de programare nici nu se vad aceste faze ale executiei programului. La apasarea unor combinatii de taste se realizeaza compilare, editare de legaturi si executie.