Professional Documents
Culture Documents
0. INTRODUCERE
1. BAZELE ARITMETICE ALE SISTEMELOR DE CALCUL
1.1. Sisteme de numeraţie
1.2. Coduri
1.3. Reprezentarea numerelor întregi
1.4. Reprezentarea IEEE 754
2. BAZELE LOGICE ALE SISTEMELOR DE CALCUL
2.1. Latici şi algebre Boole
2.2. Funcţii booleene. Forme normale
2.3. Aplicaţii
3. STRUCTURA SISTEMELOR DE CALCUL
3.1. Resursele fizice ale sistemelor de calcul
3.1.1. Generaţii de calculatoare
3.1.2. Procesor. Caracteristici. Set de instrucţiuni
3.1.3. Memorii
3.1.4. Dispozitive periferice
3.1.5. Viteza de procesare
3.1.6. Clasificarea sistemelor de calcul
3.1.7. Modelarea sistemelor digitale
3.2. Resursele logice ale sistemelor de calcul
3.2.1 Introducere în sisteme de operare
3.2.2. Iniţiere în utilizarea sistemelor de calcul bazate pe UNIX
3.2.3. Iniţiere în utilizarea PC/Windows
3.2.4. Resurse logice privind programarea calculatoarelor
4. CALCULATORUL MMIX
4.1. Instrucţiunile calculatorului MMIX
4.2. Programarea calculatorului MMIX
4. Bibliografie facultativă
[5] G. Albeanu, Sisteme de operare, Editura Petrion, Bucureşti, 1996, ISBN 973-9116-04-3.
[6] D. Knuth, Arta programării calculatoarelor, Vol. I, Editura Teora, 1999, ISBN 973-601-
910-1.
[7] D. Knuth, MMIXware. Lecture Notes in Computer Science, Vol. 1750, Springer Verlag,
1999.
6. Aplicaţii: Fiecare capitol cuprinde exemple, studii de caz, teme de casă, teste.
Terminologia este explicată acolo unde apare prima dată. Capitolul următor, dacă depinde de
cele anterioare, utilizează, tacit, definiţiile, formulele de calcul şi teoremele prezentate în
capitolele anterioare.
8. Evaluarea computerizată sub formă de teste de tip grilă: Sunt incluse teste similare
celor prezentate în finalul fiecărei unităţi sau in fişierul ASC_lista_probleme_propuse.pdf.
Întrebările sunt clasificate în uşoare (u), medii (m) şi dificile (d).
ARHITECTURA SISTEMELOR DE CALCUL
INTRODUCERE
1
Un sistem de calcul (calculator) este o structură destinată prelucrării datelor. El este alcătuit din
resurse fizice (hardware), resurse logice (software) şi resurse informaţionale (fişiere de configurare,
registre de profil etc.) care cooperează pentru satisfacerea cerinţelor utilizatorilor privind introducerea,
memorarea (stocarea), prelucrarea, transmiterea (către un alt sistem de calcul), precum şi regăsirea
(prin interogare) datelor. Se face distincţie între sistemele de calcul digitale (numerice) şi sistemele de
calcul analogice.
2
Un algoritm este o reţetă care descrie un proces de calcul şi este asociat rezolvării problemelor
decidabile.
3
Bazele de numeraţie îşi vor dovedi utilitatea atât în contextul programării calculatoarelor (limbaj de
asamblare, limbajul C, limbajul C++ etc.), cât şi în contextul utilizării calculatoarelor (de exemplu, la
specificarea culorii textului când se realizează pagini Web: pentru culoarea având structura 40% roşu,
20% verde şi 40% albastru, se obţine 40% din 255 = 102 = #66; 20% din 255 = 51 = #33, iar codul
final al culorii se obţine prin concatenare: #663366).
4
Teorema împărţirii cu rest: dacă a (deîmpărţit) şi b (împărţitor) sunt numere întregi (b nenul), atunci
există şi sunt unice numerele întregi q (câtul) şi r (restul), astfel încât a = b x q + r, 0 ≤ r < |b|, unde |b|
reprezintă modulul (valoarea absolută) a numărului b.
5
Partea fracţionară a unui număr real a, notată {a}, este diferenţă dintre numărul a şi partea sa
întreagă, notată [a], adică {a} = a – [a].
6
Conform principiului lui Arhimede, pentru orice număr real pozitiv x şi pentru orice număr real a,
există un număr întreg n, unic, astfel încât (n-1)x ≤ a < nx. Pentru x = 1, numărul întreg n se numeşte
partea întreagă a numărului a şi se notează cu [a]. Deci, [a] este cel mai mic număr întreg mai mic sau
egal cu a: [a] ≤ a < [a]+1.
Conversia binară a numărului zecimal 24,25 este 11000,01. Numărul zecimal 2002,2003 este
reprezentat în sistem octal cu 10 poziţii în partea fracţionară (b = 8) prin şirul:
3722,1464011651. Numărul zecimal 1961,25 este reprezentat în format hexazecimal (b = 16)
prin şirul: 7A9,4.
Pentru a transforma un şir de simboluri ale sistemului de numeraţie în baza b (b ≥ 2),
în zecimal, se va calcula suma produselor dintre cifra corespunzatoare (din şir) şi baza7
ridicată la puterea specificată de poziţia acesteia. Trebuie observat că poziţiile sunt indicate:
1. pentru partea întreagă, de la dreapta la stânga, prin numerele 0, 1, … ş.a.m.d.
2. pentru partea fracţionară, de la stânga la dreapta, prin numerele: -1, -2, … ş.a.m.d.
Şirul binar 01100110101,10101 corespunde numărului zecimal: 821,65625 (= 1x29 + 1x28 +
0x27 + 0x26 + 1x25 + 1x24 + 0x23 + 1x22 +0x21 +1x20 +1x2-1 +0x2-2 +1x2-3 +0x2-4 +1x2-5).
Şirul octal 765,567 corespunde numărului zecimal: 501,732421875. Şirul hexazecimal 3A5,4
reprezintă numărul zecimal 933,25.
Conversia din binar în octal, hexazecimal şi invers se bazează pe observaţia conform
căreia 8 = 23 şi 16 = 24, Astfel, folosind proprietăţile de calcul, se obţine o strategie de
conversie automată între aceste sisteme. Conversia binar → octal, respectiv octal → binar
foloseşte corespondenţa:
Octal: 0 1 2 3 4 5 6 7
Binar: 000 001 010 011 100 101 110 111
Hexazecimal: 8 9 A B C D E F
Binar: 1000 1001 1010 1011 1100 1101 1110 1111
Şirul cu 64de poziţii binare:
0111.0110.1110.1101.1011.1011.1010.1010.1110.1011.0101.0101.0101.0101.0101.0111
se va “traduce” în şirul octal: 0733555672535325252527, respectiv în şirul hexazecimal:
76EDBBAAEB555557. Se observă rolul sistemului binar ca sistem intermediar de conversie
pentru sistemele de numeraţie în care baza este o putere a numărului doi.
Operaţiile aritmetice cu numere binare, octale, respectiv hexazecimale se efectuează
similar operaţiilor cu numere zecimale. La adunare va interveni transportul către ordinul
superior, la scădere va interveni împrumutul de la ordinul superior, iar înmulţirea se va
desfăşura prin totalizarea unor produse parţiale, analog modului de calcul zecimal.
Pentru numere octale şi hexazecimale, operaţiile aritmetice sunt efectuate conform
următoarelor reguli:
7
Aici este vorba de numărul b (baza de numeraţie considerată; b ≥ 2)
Tabla înmulţirii octale:
8
Alte denumiri sunt: crumb, quad, quarter, tayste, tydbit, conform http://www.fullbooks.com/The-
New-Hacker-s-Dictionary-version-4-2.html, http://dictionary.reference.com/browse/crumb etc.
9
Cuvântul hardware descrie totalitatea resurselor fizice ale unui sistem de calcul. Conform
dicţionarului de informatică [DINF1981], hardware (din limba engleză) reprezintă un "termen general
desemnând circuitele, dispozitivele şi echipamentele componente ale unui sistem de calcul", adică
"toate unităţile fizice existente, cu funcţii bine determinate, în cadrul unui sistem de calcul; funcţiile
sale, specificate de către fabricant, sunt la dispoziţia utilizatorului care le poate exploata cum doreşte."
10
Cuvântul software descrie atât programele de bază cât şi pe cele aplicative. Conform [DINF1981],
software (din limba engleză) reprezintă un "termen utilizat pentru a desemna: a) totalitatea programelor
cu care este echipat un sistem de calcul; b) preocupările corespunzătoare realizării produselor program
şi, în cel mai larg sens, analizei şi cercetărilor efectuate în raport cu activităţile conexe realizării
programelor."
căreia îi aparţin numerele, operaţiile aritmetice fiind efectuate de către dispozitive aritmetice
specializate (sumatoare, multiplicatoare etc.).
Reprezentarea numerelor naturale se realizează pe un număr fix de poziţii binare (de
regulă 8, 16, 32, sau 64) prin conversia numărului zecimal în baza 2. Pentru numărul natural
x, această reprezentare este numită reprezentare aritmetică şi furnizează aşa numitul cod
direct cd(x).
Prin utilizarea a n poziţii binare (n ≥ 1) se pot reprezenta aritmetic toate numerele
naturale din plaja: 0 .. 2n-1. Se spune că aceste date sunt fără semn (eng. unsigned). Domeniile
de valori acoperite de reprezentarea aritmetică sunt:
Numerele reale (mai precis numerele raţionale) se reprezintă sub formă fracţionară
prin intermediul codificării în virgulă mobilă. Operaţiile aritmetice cu numere în virgulă
mobilă sunt, fie realizate software (biblioteca metodelor de calcul numită şi API (eng.
Application Programmer Interface)), fie prin intermediul unor dispozitive electronice
specializate (procesoare de calcul în virgulă mobilă; FPU – Floating Point Unit).
Fie q şi b numere naturale nenule, iar x ∈ R dat. Numim reprezentare cu virgulă
mobilă a numărului x, cu excesul q, în baza b, perechea (e, f) cu semnificaţia: x = f⋅be-q şi
f<1. Componenta e se numeşte parte exponenţială, iar componenta f, parte fracţionară.
Dacă reprezentarea impune utilizarea a p ≥ 1(p ∈ N*) cifre în baza b atunci -bp ≤ bpf < bp.
Notăm cu e(x) (respectiv f(x)) cantitatea e (respectiv f) pentru a specifica numărul x
luat în considerare.
11
De asemenea, dacă b>1 este baza unui sistem de numeraţie, iar x<0 este un număr a cărui
reprezentare în baza b are n simboluri pentru partea întregă a valorii absolute, atunci complementul faţă
de b al numărului x, notat cb(x) este definit astfel încât cb(x) = bn + x.
12
Trebuie subliniat că aceste domenii împreună cu operaţiile de adunare şi înmulţire nu formează
structurile algebrice cunoscute. De exemplu nu orice întreg cu semn reprezentabil pe 64 de biţi are un
opus.
Fie x, y numere reale, q şi b ca mai sus, dar fixate. Relaţia de ordine ">" este definită
astfel: x > y ⇔ e(x) > e(y) sau ( e(x) = e(y) şi f(x) > f(y) ).
Despre un număr cu virgulă mobilă (e, f) se spune că este reprezentat normalizat dacă
cifra cea mai semnificativă a reprezentării componentei f este nenulă, adică
1/b ≤ f<1 pentru f ≠ 0 sau
componenta e are cea mai mică valoare posibilă pentru f = 0.
Fie emin, emax numere întregi fixate. Mulţimea numerelor reale cu virgulă mobilă
reprezentabile exact, în baza b, cu excesul q, folosind exact p poziţii pentru partea
fracţionară este Fp,q={x ∈Q x = f⋅be-q, emin ≤ e-q ≤ emax , f = ± (c1b-1 + c2b-2+ ... + cpb-p), ci
∈{0, 1, ..., b-1}, i =1, 2, ...,p}. Fie x un număr real. Spunem că x este situat în domeniul de
valori numai dacă x ∈ Fp,q.
Exponentul minim emin este un număr întreg negativ, iar exponentul maxim emax este
un număr întreg pozitiv. De obicei se memorează btf folosind una dintre reprezentările cu
semn pentru numere întregi (cod invers sau cod complementar).
Observaţii:
e −1
1. Numerele k = b min şi K = b max (1 − b − p ) sunt: cel mai mic număr pozitiv reprezentabil,
e
respectiv cel mai mare număr reprezentabil. -K este cel mai mic număr reprezentabil. Dacă în
timpul operaţiilor aritmetice rezultă numere în valoare absolută mai mici decât k (resp. mai
mari decât K) se spune că s-au produs depăşiri aritmetice inferioare (respectiv, superioare).
2. Nu orice număr raţional x (x∈Q) poate fi reprezentat, chiar dacă k ≤ x≤ K. De exemplu, x
= 0,1 număr reprezentabil exact în baza 10, nu se poate reprezenta exact în baza 2. Acesta
face ca expresia: 3/5*5-3 să fie evaluată de către mediul de programare Turbo Pascal, la
valoarea 2.1684043450E-19, adică
0,00000000000000000021684043450,
un număr foarte mic, dar nenul.
3. Dacă x ∈ Fp,q atunci –x ∈ Fp,q. Totuşi, pentru x ∈ Fp,q se poate întâmpla ca 1/x să nu fie
reprezentabil sau să nu fie în domeniul de valori.
4. Sistemele de calcul actuale utilizează reprezentarea normalizată. În acest caz pentru f ≠ 0
avem c1 ≠ 0. Numărul 0 are o reprezentare specială care depinde de tipul sistemului de calcul.
Fie x ∈ R, valoarea reprezentării lui x aparţinând mulţimii Fp,q , se notează prin fl(x) şi
se defineşte astfel: numărul reprezentabil exact, cel mai apropiat de x (metoda rotunjirii) sau
cel mai apropiat număr reprezentabil, cu modul mai mic decât x (metoda trunchierii).
Rezultă:
x − fl ( x)
Oricare x∈R, x≠0, ≤ cb1− p , unde c = 0.5 în cazul metodei rotunjirii şi
x
c =1 în cazul metodei trunchierii.
Membrul stâng al inegalităţii de mai sus se numeşte eroarea relativă a reprezentării
numărului x. Acest rezultat este foarte important pentru interpretarea rezultatelor obţinute prin
prelucrarea numerică a datelor.
Observaţii:
1. Sistemele de calcul bazate pe reprezentarea cu rotunjire sunt de preferat celor bazate pe
trunchiere, deoarece în cazul trunchierii, eroarea relativă poate fi de până la o cifră a bazei în
ultima poziţie.
2. Cu cât lungimea reprezentării părţii fracţionare (p) este mai mare, cu atât eroarea relativă a
reprezentării este mai mică, adică precizia reprezentării este mai mare. De aceea, de multe ori,
numărul p se mai numeşte (prin abuz de limbaj) şi precizia reprezentării.
Fie p, b, e şi q fixate. Distanţa absolută dintre două numere consecutive din Fp,q este
constantă şi egală cu be-q-p. Această distanţă creşte însă cu e-q şi b pentru p fixat. Distanţa
relativă definită ca b-p/|f| scade o dată cu creşterea părţii fracţionare. Astfel se poate afirma,
din nou, că sistemele de calcul preferate sunt cele care utilizează baza 2.
Dacă f = 1/b atunci se obţine distanţa relativă maximă, εM = b1-p. În cazul multor
sisteme de calcul εM = 2εu unde εu este cel mai mic număr pozitiv reprezentabil pentru care
fl(1+εu)>1.
Pentru sistemele de calcul pentru care b = 2, în anul 1985, a fost elaborat standardul
IEEE 754. Un număr în virgulă mobilă este reprezentat cu ajutorul a c+m+1 biţi (un bit
pentru semn, m biţi pentru partea fracţionară şi c biţi pentru reprezentarea lui e-q (numit şi
caracteristică)) astfel încât numărul c+m+1 să fie un multiplu al lungimii cuvântului
sistemului de calcul.
Exemplificăm implementarea reprezentărilor în virgulă mobilă IEEE 754 pe 64 de
biţi (tipul de date double al limbajului Java). NaN, respectiv Inf sunt coduri care descriu
nederminarea, respectiv ∞ (infinit). Cei 64 de biţi sunt repartizaţi astfel: b63 - bit de semn, biţii
b52-b62 - caracteristica, iar biţii b0-b51 pentru reprezentarea părţii fracţionare. Valoarea
numărului reprezentat astfel, se obţine după cum urmează:
D1: Dacă 0 < c < 2047 atunci fl(x) = (-1)s.2(c-1023).(1.f).
D2: Dacă c = 0 şi f ≠ 0 atunci fl(x) = (-1)s.2(c-1022). (0.f).
D3: Dacă c = 0 şi f = 0 atunci fl(x) = (-1)s.0.
D4: Dacă c = 2047 şi f = 0 atunci fl(x) = (-1)sInf.
D5: Dacă c = 2047 şi f ≠ 0 atunci fl(x) =(-1)s NaN.
Ilustrăm aplicarea regulilor de mai sus pentru numărul 3.14. Folosind schema din
§1.1 obţinem: 3 = (11)2; 0.14 = 0.0(01000111101011100001) adică un număr binar periodic
mixt. Astfel şirul
11,0010001111010111000010100011110101110000101000111101011100001...
este transformat în
21 x 1,10010001111010111000010100011110101110000101000111101011100001 ...
ceea ce duce la
- bitul de semn: 0
- caracteristica: x-1023=1 ⇒ x = 1024 = (1000000000)2
- mantisa este:
10010001111010111000010100011110101110000101000111101011100001...
cu păstrarea a exact 52 de poziţii în reprezentarea cu trunchiere, respectiv
1001000111101011100001010001111010111000010100011111,
în reprezentarea cu rotunjire.
Prin asamblarea celor 64 de biţi, pentru modelul cu rotunjire, se obţine reprezentarea
IEEE 754 a numărului 3.14, pe 64 de biţi, cu afişare în sistemul de numeraţie hexazecimal:
40091EB851EB851F.
Totuşi, transformarea inversă a şirului
11,00100011110101110000101000111101011100001010001111
din baza 2 în baza 10 nu va duce la obţinerea cu exactitate a numărului 3.14, în nici una din
variantele posibile (cu rotunjire sau cu trunchiere), deoarece reprezentarea în baza doi a
numărului 3.14 este infinită, iar şirul de mai sus este unul finit.
Alte exemple de aproximări IEEE 754 sunt date în tabelul următor:
4. În cazul reprezentării cu semn (complement faţă de doi) pe 16 biţi (signed wyde) , afirmaţia
32767 + 2 = -32767 este:
a. adevărată b. falsă
Răspuns: a) Complementul faţă de doi al unui număr negativ este succesorul complementului
faţă de unu al valorii absolute a numărului. Pentru lungimea şi tipul de reprezentare
menţionate, 32767+1 = -32768, iar 32767 + 2 = -32767.
8. Repartizarea biţilor în reprezentarea IEEE 754 pe 32 de biţi (single, float) este: _________
___________________________________________________________________________
Răspuns: Reprezentarea IEEE 754 pentru single, respectiv float, utilizează 32 de biţi
repartizaţi astfel: b[31] - bit de semn (notat în continuare cu s), biţii b[23]-b[30] pentru
memorarea caracteristicii (c), iar biţii b[0]-b[22] pentru reprezentarea părţii fracţionare (f).
Valoarea fl(x), se obţine conform regulilor (prin * este redată operaţia de înmulţire):
S1: Dacă 0 < c < 255 atunci fl(x) = (-1)s*2(c-127)*(1,f).
S2: Dacã c = 0 şi f ≠ 0 atunci fl(x) = (-1)s*2(c-126)*(0,f).
S3: Dacã c = 0 şi f = 0 atunci fl(x) = (-1)s*0.
S4: Dacã c = 255 şi f = 0 atunci fl(x) = (-1)sInf (∞).
S5: Dacă c = 255 şi f ≠ 0 atunci fl(x) = NaN. (Not a Number - nedeterminare)
2. BAZELE LOGICE ALE SISTEMELOR DE CALCUL
În continuare vom considera că o algebră booleană sau, mai simplu, o algebră Boole este dată
prin ansamblul (B, +, •, ’, 0, 1), evidenţiind mulţimea nevidă B, operaţiile binare, operaţia
unară (pentru obţinerea complementului) şi elementele neutre. De asemenea pentru x•y vom
scrie, simplu, xy.
Se poate arăta că pentru a defini o algebră Boole este suficient ca, pentru oricare x, y,
z elemente ale mulţimii B, să fie satisfăcute relaţiile:
(15) x + y = y + x;
(16) xy = yx;
(17) x+yz = (x+y)(x+z);
(18) x(y+z) = xy + xz;
(19) x + yy’ = x;
(20) x(y+y’) = x;
Atunci, pentru oricare x şi y din B, avem xx’ = yy’ (rezultat notat cu 0) şi x + x’ = y + y’
(rezultat notat cu 1).
sau prin formule (între ghilimele trecem denumirea funcţiei conform logicii propoziţiilor):
Definiţia 2.2.1. Numim termen prim atât o variabilă cât şi complementul său. Numim
conjuncţie primă orice termen prim şi orice conjuncţie de termeni primi. Numim disjuncţie
primă orice termen prim şi orice disjuncţie de termeni primi. Conjuncţiile de termeni primi se
mai numesc şi monoame prime. Monoamele prime (respectiv, disjuncţiile prime) în care apar
toate variabilele sau complementul acestora, o singură dată, dar nu simultan variabila şi
complementul său, se numesc monoame (respectiv, disjuncţii) perfecte.
i i i
Pentru n variabile, un monom perfect este de forma x11 x 22 ... x nn , unde ik = 0, 1 ( k =
1, 2, ..., n) cu convenţia de notaţie: x k1 = x k , x k0 = x k' . În general, notăm, x1 = x şi x0 = x’
pentru oricare x ∈ B. Pentru n = 3, monoamele perfecte sunt: xyz, x’yz, xy’z, xyz’, x’y’z, x’yz’,
xy’z’, x’y’z’. Analog se pot descrie disjuncţiile perfecte.
Definiţia 2.2.2. Se numeşte formă normală disjunctivă (ND), disjuncţia oricărei
mulţimi de conjuncţii prime. Se numeşte formă normală conjunctivă (NC), conjuncţia oricărei
mulţimi de disjuncţii prime. Se numeşte formă normală perfectă acea formă normală formată
numai cu monoame perfecte (în cazul ND) respectiv sume perfecte (în cazul NC).
Propoziţia 2.2.1. Fie B algebra booleană de mai sus, (ci1 ,i2 ,...,in ) i1 ,i2 ,...,in ∈{0,1} ,
(d i1 ,i2 ,...,in ) i1 ,i2 ,...,in ∈{0,1} elemente din B şi x1, x2, ..., xn ∈ B. Următoarele proprietăţi sunt
adevărate:
(i1, i2, ..., in) ≠ (j1, j2, ..., jn) ⇒ x11 x 22 ... x nn • x1 1 x 2 2 ... x n n = 0,
i i i j j j
(21)
(i1, i2, ..., in, j1, j2, ..., jn ∈ {0, 1}),
(22) ∑x i1 i2
1 2 x ... x nin = 1,
i1 ,i2 ,...,in ∈{0,1}
'
(25) ∑
i1 ,i2 ,...,in ∈{0,1}
c x
i1i2 ...in 1
i1
x 2
i2
... x n =
in
∑
i1 ,i2 ,...,in ∈{0,1}
(ci1i2 ...in ) ' x1i1 x2 i2 ... xn in
Definiţia 2.2.3. Funcţiile booleene simple ale algebrei B sunt acele funcţii booleene a
căror expresie se obţine plecând de la proiecţii şi aplicând operaţiile algebrei booleene
asupra unor elemente constituite anterior. Funcţiile booleene (la modul general) ale algebrei
booleene se obţin ca şi cele simple, dar luând elemente de plecare atât proiecţiile cât şi
constantele algebrei Boole B.
Teorema 2.2.1. O funcţie f: Bn → B este booleană dacă şi numai dacă există
constantele ci1i2 ...in ∈ B, (i1 , i2 ,..., in ∈ {0,1}) astfel încât
(26) f ( x1 ,..., x n ) = ∑ ci1i2 ...in x1i1 x 2 i2 ... xn in , ∀x1 ,..., x n ∈ B.
i1 ,i2 ,...,in ∈{0,1}
Când (26) are loc, constantele ci1i2 ...in sunt unic determinate de
(27) ci1i2 ...in = f (i1 , i2 ,..., in ),( ∀i1 , i2 ,..., in ∈ {0,1}).
Propoziţia 2.2.2. O funcţie booleană de n variabile este simplă dacă şi numai dacă
(28) f(i1, i2, ..., in) ∈ {0, 1}, pentru oricare i1, i2, ..., in ∈ {0,1}.
Evident că o expresie de forma (26) transfomată astfel încât suma booleană se realizează
numai pentru constantele egale cu 1 este o funcţie booleană simplă.
Propoziţia 2.2.3. O funcţie booleană este funcţie booleană simplă dacă şi numai
dacă satisface:
(29) f ( x1 ,..., x n ) = ∑
x1i1 x 2 i2 ... x n in , ∀x1 ,..., x n ∈ B.
i1 ,i2 ,...,in ∈{0,1}
f ( i1 ,i2 ,...,in ) =1
Comentariu: Din cele de mai sus rezultă că mulţimea funcţiilor booleene pe B
coincide cu mulţimea funcţiilor booleene simple (cu acelaşi număr de variabile) dacă şi numai
dacă B = {0, 1}.
Exemplu: Pentru n=3, funcţia f73 (definită în tabelul de mai jos, unde numărul 73 este
convertit în baza doi) se poate scrie sub formă ND perfectă astfel: f73(x, y, z) = x’y’z + xy’z’ +
xyz.
Teorema 2.2.2. O funcţie booleană f este booleană simplă dacă şi numai dacă se
scrie astfel:
∏
0 0 0'
f ( x 1 , x 2 ,... , x n ) = f ( i 1 , i 2 , ... , i n ) + x 1i1 + x 2i 2 ...+ x nin ,
luând în considerare notaţiile şi convenţia de mai sus.
Exemplu: Funcţia f73 poate fi exprimată în formă NC perfectă astfel: f73(x, y, z) = (x
+ y + z) (x + y’ + z) (x + y’ + z’) (x’ + y + z’) (x’ + y’ + z).
2.3. Aplicaţii
1
Principalele aplicaţii ale funcţiilor booleene sunt în analiza şi sinteza sistemelor de calcul (de tip
numeric). De asemenea, reducerea complexităţii expresiilor booleene influenţează timpul de evaluare a
condiţiilor precizate în cadrul instrucţiunilor if, while..do, for, cond, do...while, repeat...until, etc. şi
deci viteza de executare a programelor.
2
Diagrama Karnaugh se construieşte cu ajutorul codului Gray, codul în care doi termeni succesivi
diferă printr-un singur bit, astfel că doi termeni vecini sunt cei între care există o diferenţă de un bit,
putându-se astfel extinde diagramele Karnaugh pentru oricât de multe variabile. Simplificarea
expresiilor booleene folosind diagramele Karnaugh se bazează pe gruparea termenilor şi utilizarea
identităţii x+x’ = 1 (care conduce la unificarea mintermenilor şi generarea unor termeni cu mai puţine
variabile).
Tabelul 2.3.1. Tabelul 2.3.2.
Aplicaţia 2.3.1. Fie B algebra Boole de mai sus şi funcţia f dată prin legea:
f(x1, x2, x3) = x1x2+x1x2’x3+x1’x2’+x1’x2x3’.
Forma ND perfectă este: f(x1, x2, x3) = x1x2x3+x1x2x3’+x1x2’x3+x1’x2’x3+x1’x2’x3’+x1’x2x3’ şi
corespunde tabelului 2.3.1. Forma NC perfectă este f(x1, x2, x3) = (x1+x2’+x3’) (x1’+x2+x3) a
cărei evaluare necesită 3 operaţii de negare (NOT), 4 disjuncţii (OR) şi o conjuncţie (AND).
După aplicarea regulilor de calcul asupra formei ND perfecte se pot obţine următoarele
exprimări posibile:
( *) f(x1, x2, x3) = x1x2+x2’x3+x1’x3’ şi
(**) f(x1, x2, x3) = x1x3+x2x3’+x1’x3’
ambele necesitând 3 operaţii NOT, 2 operaţii OR şi 3 operaţii AND.
Aplicaţia 2.3.2. Operaţia de adunare a doi biţi se realizează conform tabelului 2.3.2.
Cum z şi tout sunt funcţii booleene (folosind t în loc de tin), obţinem:
z = xy’t’+x’yt’+x’y’t+xyt; şi
tout = xyz’+xy’t+x’yt+xyt = xy + xt + yt (după simplificare).
Circuitul sumator are trei intrări (cei doi biţi x şi y şi bitul de transport anterior tin) şi două
ieşiri (bitul rezultat z şi bitul de transport următor tout). Pentru adunarea a două cuvinte a n biţi
fiecare este necesar să se înserieze n astfel de sumatoare. Dacă considerăm că cele două
cuvinte care se adună sunt situate iniţial în două registre (registrul X şi Y), iar rezultatul se va
obţine în registrul Z (registrele X, Y şi Z de aceeaşi capacitate) şi are loc transport la
sumatorul asociat cifrei cu rangul maxim atunci se va activa (trece în poziţia on) bitul de
transport din registrul de stare al procesorului. Acest bit se numeşte Carry.
Aplicaţia 2.3.3. Considerăm două numere binare a câte doi biţi fiecare (x1, x2 biţii
primului număr; x3, x4 biţii numărului al doilea). Funcţia booleană va fi evaluată la 1 dacă
primul număr este cel mai mare şi va avea valoarea 0, în caz contrar. Tabelul asociat funcţiei
booleene de comparare este:
x1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
x2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
x3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
x4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
fc 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0
Cea mai simplă formă ND este: fc (x1, x2, x3, x4) = x1x3’+x1x2x4’+x2x3’x4’, iar circuitul poate fi
reprezentat grafic ca mai jos.
2.4. Exerciţii
Conform teoremei de reprezentare sub forma normală disjunctivă rezultă că f83(x,y,z) = x’ y’z
+ x’ y z + x y z’ + x y z (= x y + x’ z + y z).
1
Pentru detalii istorice şi vizite virtuale puteţi accesa: http://archive.computerhistory.org/search/
2
Alte sisteme de calcul românesti au fost CET (IFA Bucureşti), DACICC (Cluj), MECIPT
(Timişoara) etc. pentru a menţiona numai sistemele proiectate şi instalate înainte de 1970. Pentru mai
multe detalii se poate consulta: Mihai Drăgănescu, Realizarea de calculatoare şi retele de calculatoare
în România, http://www.atic.org.ro/anexe/MD.htm, ATIC, 2001.
Architecture), EISA (eng. Extended Industry Standard Architecture), PCI (eng. Peripheral
Component Interconnect), etc.
Prin intermediul magistralei se asigură o arhitectură deschisă, astfel că utilizatorii pot
extinde sistemul prin inserarea de plachete, cum a fost precizat mai sus. Totuşi numărul
sloturilor este limitat. Conectarea unui număr suplimentar de dispozitive se poate realiza prin
intermediul unui adaptor SCSI (eng. Small Computer System Interface – se pronunţă
“scazzy”). Se pot conecta până la 7 dispozitive: imprimante, discuri rigide, unităţi CD-ROM /
CD-RW, etc.
Minicalculatoarele sunt sisteme de calcul cu dimensiune şi performanţe de prelucrare
situate între cele ale microcalculatoarelor şi sistemelor mainframe. Ele sunt utilizate de
companiile medii sau departamentele companiilor mari pentru monitorizarea proceselor de
fabricaţie, gestiunea economică sau cercetare.
Sistemele mainframe sunt calculatoare de dimensiune mare care necesită condiţii
speciale de funcţionare (de exemplu, aer condiţionat), dar au putere mare de calcul şi pot
stoca cantităţi “uriaşe” de date. Sunt utilizate de organizaţiile mari – companii multinaţionale,
agenţii guvernamentale, bănci, universităţi etc. – pentru a prelucra un număr foarte mare de
tranzacţii pe unitatea de timp.
Supercalculatoarele sunt cele mai puternice sisteme de calcul. Ele sunt utilizate în
cercetare de organizaţii puternice pentru explorarea resurselor, simulări, predicţii etc.
3
De fapt, trebuie să facem diferenţă între denumirile adoptate în sistem decimal (folosit în afaceri) şi
cele caracteristice sistemului binar (folosit în programare). Astfel, sunt în uz următoarele prefixe:
prefix zecimal binar
kilo (K) 1000 = 103 1024 = 210 = 1.024
mega (M) 10002 = 106 10242 = 220 = 1.048.576
3 9
giga (G) 1000 = 10 10243 = 230 = 1.073.741.824
4 12
tera (T) 1000 = 10 10244 = 240 = 1.099.511.627.776
5 15
peta (P) 1000 = 10 10245 = 250 = 1.125.899.906.842.624
6 18
exa (E) 1000 = 10 10246 = 260 = 1.152.921.504.606.846.976
7 21
zetta (Z) 1000 = 10 10247 = 270 = 1.180.591.620.717.411.303.424
8 24
yotta (Y) 1000 = 10 10248 = 280 = 1.208.925.819.614.629.174.706.176
Ultima actualizare a acestui sistem a fost realizată în 1991. A se vedea http://www.bipm.fr/fr/CGPM/db/19/4/ şi
http://www.techno-science.net/?onglet=glossaire&definition=1653.
4
Firmware este un cuvânt care iniţial a fost folosit pentru a desemna microprogramele cu ajutorul
cărora se realiza unitatea de comandă şi control a unui procesor. Astăzi desemnează şi secvenţele de
cod (în limbajul procesorului) ce implementează interpretoare, nuclee de intrare-ieşire etc. De
asemenea, această componentă este utilă în implementarea stardardului PnP (eng. Plug and Play) util în
reconfigurarea automată a sistemelor de calcul.
5
Memoria de tip cache poate aparţine atât procesorului (fiind integrată acestuia), dar şi spaţiului RAM.
De aceea, recent, se utilizează organizarea stratificată – pe niveluri - a memoriei cache.
datelor şi instrucţiunilor solicitate frecvent de către procesor. Memoria cache este primul loc
unde procesorul caută datele de care are nevoie. Numai dacă acestea nu se află în memoria
cache ele vor fi căutate în memoria principală (fiind transferate blocuri de date/instrucţiuni în
memoria cache).
Există mai multe tipuri de module DRAM utilizate în sistemele de calcul moderne:
SDRAM (eng. Synchronous DRAM), RDRAM (eng. Rambus DRAM), DDR şi DDR2
(Double-Data-Rate Synchronous DRAM) ş.a.
Circuitele de stocare nevolatile se încadrează în următoarele clase:
- PROM (eng. Programmable Read-Only Memory) – pentru înregistrarea codului
cu ajutorul unui echipament special, odată ce este scris nu se mai poate schimba;
- EPROM (eng. Erasable Programmable Read-Only Memory) – circuit de stocare
de tip ROM care poate fi şters cu ajutorul unui mediu în ultraviolet, iar apoi poate
fi rescris,
- Flash (un tip de memorie înrudit cu EPROM).
6
Terminalul (Consola) virtual(ă) poate fi vazut(ă) ca o aplicaţie de serviciu care permite a) terminalelor
unei reţele multiuser să interacţioneze cu alte sisteme pe baza tipului şi caracteristicilor terminalului; b)
accesul la distanţă pentru managementul resurselor logice ale unui sistem de calcul; c) crearea mai
multor instanţe terminal etc.
7
A nu se confunda cu sensul precizat în DEX’1996.
3. Tastatura numerică conţine tastele pentru cifre şi operaţiile aritmetice: + (adunare),
- (scădere), * (înmulţire) , / (împărţire) şi . (punct) ca separator între partea întreagă şi
partea zecimală a unui număr (conform sistemului englezesc de scriere).
4. Tastele funcţionale: cele 12 butoane F1, F2, …, F12 cărora li se pot asocia diferite
acţiuni de către programatorul de aplicaţii. Un utilizator, înainte de utilizarea tastelor
funcţionale, în cadrul unei noi aplicaţii, trebuie să inventarieze lista asocierilor.
Aplicaţii diferite fac asocieri diferite, pentru aceeaşi tastă. Chiar, în cadrul aceleiaşi
aplicaţii, asocierea se poate schimba de la un nivel funcţional la altul.
Unele taste sunt de tip "cald" (eng. hotkeys), iar altele de tip "rece" (eng. coldkeys). Tastele
reci nu generează cod către calculator ci se folosesc împreună cu tastele calde pentru a realiza
combinaţii. Tastele reci sunt: Shift, Ctrl, Alt. De exemplu, majoritatea programelor aplicative
folosesc combinaţiile: Ctrl+N (pentru lansarea unui nou proiect: program, document, imagine,
desen tehnic etc;eng. New), Ctrl+O (încarcă un proiect existent pentru actualizare, tipărire etc;
eng. Open), Ctrl+S (înregistrează pe un suport de memorare externă proiectul curent; eng.
Save), Ctrl+P (imprimă “imaginea” proiectului curent folosind o imprimantă sau trimite
proiectul prin intermediul unui adaptor de tip fax; eng. Print), Ctrl+X (mută o parte a unui
proiect într-o zonă a memoriei RAM, numită clipboard; eng. Cut), Ctrl+C (copiază o parte a
unui proiect în clipboard; eng. Copy), Ctrl+V (copiază conţinutul zonei clipboard în proiectul
curent, în locul specificat de utilizator; eng. Paste) etc.
O tastatură are şi taste comutator (cu două stări): CapsLock (asigură comutarea între
starea care generează litere mici şi starea care generează litere mari), NumLock (comută între
starea numerică şi starea de editare pentru blocul tastelor numerice), Insert (comută între
corectura prin inserare şi corectura cu suprascriere).
***
Monitorul: Monitorul oricărui terminal (compus din ecran şi circuite de generarea
imaginii) poate lucra în două moduri: modul text şi modul grafic.
În modul text ecranul este împărţit în rânduri (eng. rows) şi coloane (eng. columns).
Numărul de rânduri şi numărul de coloane este dat de modul de lucru permis de monitor. De
obicei sunt 25 de rânduri şi 80 de coloane. La intersecţia unei linii cu o coloană se generează
un caracter printr-o matrice de puncte luminoase. Pentru fiecare poziţie de afişare, se vor
păstra (din motive de reîmprospătare a imaginii) codul ASCII (Unicode) al caracterului şi
atributul caracterului (cel care controlează aspectul caracterului afişat şi depinde de adaptorul
folosit). De exemplu, pentru calculatoare personale, codul caracterului este stocat folosind 8
biţi, iar atributul folosind alţi 8 biţi. Atributul pentru afişarea color este format din trei
elemente: culoarea peniţei (eng. foreground), culoare hârtiei (eng. background) şi elementul
de control al clipirii (eng. blink). Culoarea este specificată cu ajutorul a trei componente
fundamentale: R-roşu (eng. Red), G-verde (eng. Green) şi B-albastru (eng. Blue).
În modul grafic ecranul este o suprafaţă de puncte luminoase numite pixeli (elemente
de imagine; eng. picture element). Fiecare pixel este caracterizat prin codul culorii.
Următoarele elemente caracterizează un anumit mod grafic:
• Rezoluţia - numărul de puncte de pe ecran;
• Definiţia - distanţa dintre două puncte pe ecran;
• Numărul de culori.
Toate aceste elemente depind de modul grafic suportat de monitor. De exemplu
modul VGA (eng. Video Graphics Array) asigură o rezoluţie de 640 x 480 puncte şi 16 culori,
iar modul SVGA (eng. Super VGA) standard asigură rezoluţia de 800 x 600 pixeli în 256
culori. Modul XGA (eng. eXtended Graphic Array) afişează mai mult de 18 milioane de
culori pentru o rezoluţie de până la 1024 x 768 de pixeli.
Generarea unor imagini complexe, la o viteză de prelucrare mare, fără aportul
procesorului sistemului de calcul, este asigurată astăzi de coprocesoarele grafice (numite şi
acceleratoare) care realizează în mod independent: trasarea liniilor, generarea suprafeţelor
definite prin contur, desenarea umbrelor, deplasarea textului, deplasarea blocurilor de imagine
etc.
Monitoarele sunt de tip desktop (la locul de muncă sau acasă) şi portabile.
Monitoarele desktop, numite şi sisteme CRT (eng. Cathode-Ray Tubes) sunt similare ca
dimensiune şi tehnologie cu receptoarele emisiunilor de televiziune. Sunt de tip întreţesut
(eng. interlaced) – cu realizarea imaginii pe rândurile impare şi apoi pe cele pare şi, de tip
neîntreţesut (noninterlaced). Întreţeserea provoacă pâlpâirea, şi deci oboseala ochilor.
Monitoarele portabile echipează sistemele de tip laptop, notebook, subnotebook şi PDA.
***
Dispozitive pentru introducerea informaţiei grafice: În categoria dispozitivelor
periferice de intrare sunt incluse şi echipamentele: mouse8, joystick, trackball, tabletă grafică
sau digitizor (eng. digitizer), creion optic (eng. light pen) etc. Primele trei dispozitive de
interacţiune controlează deplasarea unui cursor pe ecranul unui sistem de calcul. Ele diferă
numai constructiv. Mausul dispune de butoane a căror apăsare este interpretată de programele
sistemului de calcul care generează o secvenţă de operaţii specifică locului cursorului,
butonului apăsat şi funcţiilor programului în executare. Creionul optic este un dispozitiv de
selecţie şi se utilizează numai în combinaţie cu terminale speciale, pentru aplicaţii speciale
(ex. proiectare grafică, pictură asistată de calculator etc.). Tableta grafică este un digitizor ce
poate fi folosit fie pentru selecţie, fie pentru introducere de date în aplicaţii de proiectare
înclusiv pentru arhitectură, sisteme informatice geografice etc.
Mausul se poate deplasa pe o masă reală (eng. pad) şi va antrena deplasarea unui
cursor pe ecran. Mausul are mai multe butoane utile în efectuarea următoarelor operaţii:
1. indicare (eng. point) - cursorul mausului este deplasat pentru a indica un anumit
punct de pe ecran (deci reprezentarea unui anumit obiect);
2. clic (eng. click) - se acţionează, foarte scurt, un buton al mausului. Codul ce
controlează funcţionarea mausului va trata evenimentul apărut;
3. clic dublu (eng. double click) - se acţionează, foarte scurt, de două ori, un buton al
mausului;
4. tragere (eng. drag) - se asigură deplasarea mausului pe masa reală, acesta având un
buton apăsat continuu.
Tabletele grafice se pot clasifica pe baza a două criterii: a) după dimensiunea
suprafeţei active: A4, A3, A0; b) după precizie şi acurateţe: pentru digitizare de planuri şi
pentru meniuri. Ele pot fi echipate cu un stylus sau un puck cu 4-16 butoane programabile.
Un alt periferic de intrare, cu aplicaţii în introducerea imaginilor, este scanerul (eng.
scanner). După citirea imaginii, aceasta poate fi prelucrată: mărită, micşorată, rotită, colorată,
suprapusă cu alte imagini şi analizată folosind diferite metode. Principiul fundamental al
funcţionării scanerului îl reprezintă modificarea intensităţii unui fascicul luminos la întâlnirea
unei suprafeţe de o culare oarecare. Scanarea unui document se desfăşoară în două faze. Un
fascicul luminos, în prima fază, baleiază (scanează) documentul linie cu linie, iar fascicolul
luminos care se reflectă este direcţionat (cu ajutorul unui sistem de oglinzi şi lentile) spre o
mulţime de celule fotosensibile CCD (eng. Charge-Coupled Device). În etapa următoare,
CCD-ul transformă semnalele luminoase recepţionate în semnale electrice care după o
conversie analog-digital sunt trimise programului care va salva imaginea. Scanerele color
obţin trei versiuni ale documentului de scanat: una de culoare roşie (eng. red), una de culoare
verde (eng. green) şi una de culoare albastră (eng. blue) care contribuie la imaginea finală.
Observăm că ceea ce se introduce nu este un punct ci o suprafaţă de puncte. Caracteristicile
unui scaner sunt: a) rezoluţia optică- numărul de puncte pe unitatea de suprafaţă pe care le
poate citi (eng. dots per inch); b) numărul de culori şi c) viteza de scanare (explorare).
Alte scanere sunt specializate: cititorul de bare (eng. Bar Code Reader), cititorul de
taloane (eng. Badge Reader), cititorul de text (eng. Document Scanner sau OCR Scanner),
cititoare cu cerneală magnetică a înscrisurilor bancare (eng. Magnetic Character Ink Reader)
etc.
Transmiterea/Recepţionarea documentelor la/de la distanţă se poate realiza, pe linie
telefonică, folosind un adaptor special (modem) şi un fax (eng. facsimile transmission
8
Acest dispozitiv este denumit maus (plural: mausuri) în DEX’1996: "dispozitiv acţionat manual,
conectat la un computer, a cărui deplasare pe o suprafaţă antrenează deplasarea cursorului pe ecran."
machines). În prezent cele două componente sunt integrate pe o plachetă numită internal fax-
modem sau într-un dispozitiv extern care se cuplează la un sistem de calcul prin portul serial.
***
Echipamente de ieşire: Din categoria echipamentelor de ieşire ne vom referi la
următoarele: imprimanta, plotterul şi fotoplotterul. Plotterele au fost primele dispozitive
periferice care au oferit sistemelor de calcul posibilitatea de a produce ieşiri în formă grafică.
Plotterele pot fi cu peniţă, cu jet de cerneală, de tip termic şi de tip electrostatic.
Plotterele au în componenţă procesoare grafice proprii. De exemplu, plotterele cu
peniţă recunosc primitive grafice precum: linie, poligon, arc de cerc, text etc. Dacă suportul
de informaţie este filmul fotografic atunci dispozitivul asemănător plotterului, dar instalat în
codiţii specifice se numeşte fotoplotter.
Imprimantele sunt dispozitive de afişare alfanumerică sau grafică. Ele pot fi: cu ace,
cu jet de cerneală, cu transfer termic sau pe bază de laser.
Sistemele multimedia acceptă şi intrare/ieşire sonoră dispunând de dispozitive
specializate pentru analiza/sinteza vocii. Conversia vocii unei persoane în code numeric se
realizează în scopul recunoaşterii vorbirii. Sunt disponibile sisteme integrate pentru
recunoaşterea vorbirii (la nivel discret şi la nivel continuu). Acestea sunt sisteme speciale care
realizează şi traducerea dintr-o limbă în alta, a mesajului vorbit.
***
Alte echipamente, a căror prezentare nu este realizată aici, sunt destinate redării unor
aspecte ale realităţii virtuale: mănuşa de date (eng: data glove), casca VR (HMD: Head
Mounted Display), camera VR (CAVE: Cave Automatic Virtual Environment) etc.
Observaţii
- Prelucrarea instrucţiunilor fără pipeline: Dacă fiecare etapă consumă o unitate
de timp, de-a lungul a patru unităţi de timp se procesează o singură instrucţiune.
- Prelucrarea instrucţiunilor în regim pipeline: Începând cu unitatea de timp 4, în
fiecare unitate de timp se lucrează simultan asupra a patru instrucţiuni. La fiecare
nouă unitate de timp se va încheia procesarea completă a unei instrucţiuni. Acesta
este motivul pentru care prelucrarea pipeline este numită prelucrare în regim
bandă de asamblare.
Interpretorul de comenzi UNIX acceptă cel puţin o comandă pe linie. Dacă se doreşte
specificarea mai multor comenzi pe acelaşi rând, acestea trebuiesc separate prin caracterul ";".
Comenzi informaţionale
O mare parte din comenzile sistemului UNIX afişează şi modifică anumite entităţi.
Unele comenzi sunt numai informaţionale. Printre acestea se pot enumera:
F.1. cat afişează un fişier la ieşirea standard. Dacă sunt specificate mai
multe fişiere, acestea vor fi afişate unul după altul.
F.2. pg afişează paginat un fişier. Afişarea este întreruptă la apăsarea
tastei "q".
F.3. more afişează ecran cu ecran fişierele specificate (vezi şi pg);
F.4. cd schimbă catalogul curent;
F.5. mkdir creează un nou catalog;
F.6. rmdir şterge cataloagele specificate. Acestea trebuie să fie vide.
F.7. rm şterge unul sau mai multe fişiere. Folosind opţiunea -r se pot
şterge şi cataloage ce nu sunt vide.
F.8. mv mută sau redenumeşte fişierele şi cataloagele. Comanda mv
acţionează conform următoarelor reguli:
- Dacă sursa este un fişier existent, iar destinaţia este
nume de fişier, atunci are loc operaţia de redenumire.
- Dacă sursa este un fişier, iar destinaţia este tot un fişier
(existent), atunci fişierul existent este înlocuit cu
fişierul sursă.
- Dacă sursa este un catalog, iar destinaţia este un nume,
atunci catalogul este redenumit.
- Dacă sursa este un catalog, iar destinaţia este un
catalog existent, atunci mută catalogul sursă astfel încât
să devină un subcatalog al catalogului existent.
- Dacă sunt specificate unul sau mai multe fişiere în
sursă, iar destinaţia este un catalog existent, atunci
fişierele sunt mutate în acest catalog.
F.9. cp copiază unul sau mai multe fişiere sursă într-un fişier destinaţie.
Dacă destinaţia este numele unui catalog, atunci fişierele sunt
copiate în catalogul specificat.
F.10. mount/umount creează o intrare în tabela dispozitivelor (operaţia de montare)
sau şterge intrarea din această tabelă (demontare). Montarea
unui dispozitiv într-un catalog nevid, face inaccesibil (pe
durata montării) conţinutul acestuia.
F.11. chmod schimbă modul de acces al unuia sau mai multor fişiere. Numai
proprietarul unui fişier sau un utilizator privilegiat poate
schimba modul de acces.
F.12. chown schimbă proprietarul unuia sau mai multor fişiere. Numai
proprietarul curent sau un utilizator privilegiat poate modifica
proprietarul unui fişier.
F.13. cmp compară două fişiere;
F.14. diff compară două fişiere şi arată modificările care trebuie efectuate
pentru a avea aceeaşi formă;
F.15. diffdir afişează diferenţele dintre două cataloage;
F.16. find caută unul sau mai multe fişiere care satisfac anumite criterii
Alte comenzi
Lansarea spre executare a programelor este posibilă prin intermediul comenzii RUN din
meniul START, prin activarea aplicaţiei înregistrate în oricare submeniu al meniului START
sau prin activarea pictogramei corespunzătoare.
Sistemul de operare Windows 2000/XP dispune de o colecţie bogată de comenzi
executabile în mod text. Comenzile interne MS-DOS sunt, în continuare, utilizabile. În plus
sunt prezente comenzi precum cele din tabelul următor.
9
Pentru testarea programelor se pot folosi uneltele puse la dispozitie pe pagina grupului de lucru de la
FHM: http://www.cs.fhm.edu/~mmix/tools/tools.html
redundanţele din corpul programului. Unele compilatoare efectuează anumite optimizări
înainte de generarea codului.
O funcţie importantă a compilatorului constă în detectarea erorilor din programul
sursă şi corectarea sau acoperirea lor. Spre deosebire de compilatoare, interpretoarele
efecuează şi executarea programului odată cu traducerea programului sursă, furnizând la
ieşire rezultatele programului. Mai precis, diferenţa faţă de un compilator este aceea că
interpretorul nu produce un program obiect ce urmează a fi executat după interpreatare, ci
chiar execută acest program. Din punct de vedere structural, un interpretor se aseamănă cu un
compilator, dar forma intermediară obţinută nu e folosită la generarea de cod, ci pentru a
uşura decodificarea instrucţiunii sursă în vederea executării ei. Este cazul interpretorului
sistemului AUTOCAD care analizează linia de comandă şi, dacă comanda este corectă,
realizează funcţia solicitată.
Un editor de texte este un program on-line (răspunsul la comenzi este imediat), ce
acceptă comenzi introduse de la terminal pentru a scrie şi/sau şterge caractere, linii sau
grupuri de linii din programul sursă sau din orice fişier text.
Editoarele de texte pot lucra în mod linie şi/sau mod ecran. Ele pun la dispoziţie
comenzi privind deplasarea cursorului în text (pe linie, în cadrul unui bloc sau în cadrul
întregului fişier), manipularea blocurilor de text (marcare, deplasare, copiere, ştergere),
comenzi de formatare a ieşirii etc. Exemplificăm prin Edit (Ms-DOS, Windows 2000),
Notepad (Windows), vi sau emacs (UNIX) etc.
3.3. Exerciţii
3. Fie comenzile:
a. ASSOC k. FIND
b. AT l. FINDSTR
c. CACLS m. FTYPE
d. CHKNTFS n. GRAFTABL
e. CMD o. PUSHD
f. COLOR p. POPD
g. COMPACT q. RECOVER
h. CONVERT r. REPLACE
i. SETLOCAL s. START
j. ENDLOCAL t. VERIFY
Alegeţi comanda Microsoft Windows 2000/XP potrivita care:
25. Solicită verificarea scrierii corecte a datelor pe disc
26. Deschide o fereastră pentru executarea unui program sau a unei comenzi
27. Afişează / Modifică asocierea extensiilor fişierelor
28. Lansează o noua instanţă a interpretorului de comenzi
29. Initiază localizarea variabilelor de mediu într-un fişier batch
30. Recuperează informaţia de pe discuri cu defecte
31. Planifică comenzi şi programe pentru a fi executate mai tarziu
32. Afişează / Modifică verificarea discului în momentul incărcării sistemului de operare
33. Afişează / Modifică compresia fişierelor din partiţiile NTFS
34. Salvează dosarul curent şi apoi îl modifică
35. Afişează / Modifică listele de control privind accesul la fişiere
36. Stabileşte culorile implicite ale consolei
37. Încheie localizarea variabilelor de mediu dintr-un fişier batch
38. Caută şiruri de caractere (ASCII / UNICODE) în fişiere
39. Reface valoarea anterioara acţiunii PUSHD
40. Înlocuieşte fişiere
41. Afişează / Modifică tipurile de fişiere utilizate în lista de asociere
42. Caută un şir de caractere într-un fişier sau o listă de fişiere
43. Permite sistemului de operare să afişeze setul de caractere extins în mod grafic
44. Converteşte volumele FAT în NTFS.
Răspuns: (25, t), (26, s), (27, a), (28, e), (29, i), (30, q), (31, b), (32, d), (33, g), (34, o), (35,
c), (36, f), (37, j), (38, l), (39, p), (40, r), (41, m), (42, k), (43, n), (44, h).
4. Calitatea imaginii unui display este dată de: a) memorie, b) rezoluţie, c) firma
producătoare.
5. Ce reprezintă rezoluţia display-ului? A) numărul de pixeli pe orizontală x numărul de pixeli
pe verticală, b) numărul de culori.
6. Unitatea de măsură a ecranului este: a) MB, b) inch, c) Hz
7. Asociaţi tatele speciale cu funcţia pe care o îndeplinesc:
a) ESC (Escape) g) Print screen (PrtSc) m) Internet
b) Tab h) Scroll Lock (ScrLk) n)E-mail
c) Ctrl (Control), Alt i) Pause
d) Caps Lock j) Num Lock (NumLk)
e) Backspace k) Win
f) Enter l) Application
Lista funcţiilor este:
45. Salt la următoarea zonă de tabulare
46. Foloseşte / Comută spre tastaura numerică sau specială
47. Oprirea execuţiei unui program
48. Oprirea defilării ecranului
49. Execută o operaţie
50. Întrerupe acţiunea
51. Sterge caracterul aflat înaintea poziţiei curente
52. Preluarea imaginii ecranului
53. Se folosesc în combinaţie cu alte taste
54. Blocarea tastaturii pe litere mari
55. Simulează butonul drept al mausului
56. Deschide meniul Start
57. Accesează rapid E-mail
58. Accesează rapid Internetul.
Răspuns: A se vedea textul.
8. Procesorul are rolul de a: a) stoca informaţiile pe termen lung, b) controla activitatea altor
echipamente şi de a prelucra informaţiile, c) executa programele.
9. Memoria ROM este folosită pentru: a) citire, b) scriere, c) citire-scriere.
10. Memoria RAM este folosită pentru: a) citire, b) scriere, c) citire-scriere.
11. Care memorie este mai rapidă: RAM sau ROM?
12. Determinaţi capacitatea de memorie internă a sistemului de calcul pe care lucraţi.
13. La ce se referă termenul de partajare cănd ne creferim la discuri şi imprimante?
14. Cum creaţi o dichetă sistem? În ce cazuri este aceasta utilă?
15.Enumeraţi avantajele şi dezavantajele utilizării CD/DVD-ROM-urilor.
16. Enumeraţi şi descrieţi principalele tipuri de imprimante. Evidenţiaţi principalele avantaje
şi dezavantaje ale fiecărui tip.
17. Ce este un modem? Tipuri de modemuri, avantaje şi dezavantaje.
18. Ce principiu are la bază funcţionarea unui scanner? Tipuri de scanner-e, avantaje şi
dezavantaje.
19. Deschideţi o fereastră şi identificaţi butoanele pentru: a) închiderea unei ferestre, b)
redimensionarea unei ferestre, c) minimizarea unei ferestre.
20. Aflaţi răspunsul la următoarele întrebări:
a) Ce este o fereastră grup de aplicaţii?
b) Ce sunt ferestrele de dialog?
c) Cum se activează o fereastră de dialog?
d) Cum se poate activa meniul Start?
e) Ce opţiuni avem pentru crearea unui director (folder, catalog)?
f) Ce opţiuni avem pentru copierea unui folder sau fişier?
g) Ce opţiuni avem pentru mutarea unui folder sau fişier?
h) Ce opţiuni avem pentru redenumirea unui folder sau fişier?
i) Ce opţiuni avem pentru ştergerea unui folder sau fişier?
j) La ce foloseşte o aplicaţie Explorer?
21. Se consideră lista extensiilor:
a) EXE b) TXT c) COM d) WAV
e) MP3 f) MID g) BMP h) AVI
i) XLS j) DBF k) PAS l) CPP
m) SYS n) HLP o) GIF p) PPT
Alegeţi tipul de fişier corespunzător:
59. fişier text
60. fişier aplicaţie (executabil)
61. fişieri magine bitmap (hartă de pixeli)
62. fişier audio
63. fişier video
64. fişier prezentare realizat folosind Microsoft PowerPoint
65. Fişier sursă C++
66. Fişier imagine, posibil animată.
67. fişier bază de date
68. fişier registru realizat folosind Microsoft EXCEL
69. fişier sursă Pascal
70. fişier Help
71. fişier cu informaţii pentru sistemul de operare.
Răspuns: Consultaţi lista de asocieri implicite: Tools/Folder Options/ File types
22. Care este diferenţa dintre formatarea fizică şi cea logică a discutrilor?
23. Explicaţi necesitata existenţei registrelor procesorului?
24. Asemănări şi diferenţe între componentele unui procesor SISD.
25. Care este legătura între instrucţiunile aritmetice ale unui procesor şi noţiunile teoretice
prezentate în primul capitol?
26. Care este diferenţă dintre un terminal serial şi un terminal memorie?
27. Prin ce diferă arhitecturile SISD şi SIMD?
28. Care sunt principalele tipuri de reţele? Explicaţi difereţele dintre acestea.
29. Ce asemănări şi deosebiri există între componentele hardware ale reţelelor locale?
30. Care este diferenţă dintre multiprogramare şi multitasking?
31. Care este diferenţa dintre un driver şi un controler (card sau cuplor)?
32. Asemănări şi diferenţe între sistemele de operare Windows de la Microsoft şi distribuţiile
de Linux?
33. Asemănări şi deosebiri relative la arhitecturile MIMD.
34. Asemănări şi deosebiri între arhitecturile RISC şi CISC.
35. Asemănări şi deosebiri între un interpretor şi un compilator.
36. Comparaţie între analizorul lexical şi analizorul sintactic.
37. Descrieţi principalele funcţii ale unui editor de text pentru programatori.
38. Asociaţi tastele speciale de deplasare şi prelucrare a unui text conform funcţiei îndeplinite:
a) Insert b) Delete c) Home
d) End e) PageUp f) Page Down
g) Left Arrow h) Right Arrow i) Up Arrow
j) Down Arrow
Lista funcţiilor îndeplinite este:
72. deplasare în sus cu un rând
73. deplasare în jos cu un rând
74. deplasare spre stânga cu un caracter
75. deplasare spre dreapta cu un caracter
76. mută cursorul la începutul paginii anterioare
77. mută cursorul la începutul paginii următoare
78. şterge caracterul indicat de către cursor
79. trece în modul de suprascriere şi invers
80. mută cursorul la sfârşitul rândului
81. mută cursorul la inceputul rândului
39. Care este rolul preprocesorului mediilor de programare bazate pe C?
40. Care este diferenţa dintre un limbaj de asamblare şi un limbaj de nivel mediu sau înalt?
4. Calculatorul MMIX1
Procesorul MMIX (arhitecură RISC) a fost propus de D. Knuth2 (1999). Are 264
celule de memorie (a câte un octet), 28 (= 256) registre cu rol general şi 25 (= 32) registre
speciale. Fiecare registru stochează 64 de biţi de date.
Celule de memorie sunt notate cu M[0], M[1], ..., M[264-1], registrele generale sunt
notate $0, $1, ..., $255, iar registrele speciale (tabelul 4.1) se numesc rA, rB, ..., rZ, rBB, rTT,
rWW, rXX, rYY şi rZZ.
Accesul la memorie poate fi realizat la nivel de byte, wyde, tetrabyte şi octabyte (a se
revedea secţiunea 1.3), folosind notaţiile M, M2, M4 şi M8: M2[2k] = M2[2k+1] =
M[2k]M[2k+1]; M4[4k] = M4[4k+1] = M4[4k+2] =M4[4k+3] =
M[4k]M[4k+1]M[4k+2]M[4k+3], respectiv M8[8k] = M8[8k+1] = ... M8[8k+7] =
M[8k]M[8k+1] ... M[8k+7], unde k parcurge intervalul discret de la 0 la cea mai mare valoare
admisă impusă de indicele folosit (exerciţiu).
Pentru uniformitate convenim să notăm M1[k] = M[k], oricare k în domeniul permis.
Dacă k ≥ 264 atunci considerăm M[k] ≡ M[k mod 264].
Fie x o secvenţă de biţi. Notăm prin s(x) întregul cu semn corespunzător secvenţei x,
în reprezentarea cu complement faţă de doi. Pentru întregi fără semn, se notează cu u(x)
numărul natural corespunzător secvenţei x. Considerăm ca o adresă de memorie A este un
întreg fără semn şi se evaluează întotdeauna modula 264. Vom face distincţie între notaţia $k
(registrul general cu indexul k) şi numărul natural k.
O instrucţiune MMIX este stocată pe 32 de biţi interpretaţi (un tetrabyte), fiecare
dintre cei patru bytes având semnificaţie separat sau pe baza unei transformări, în funcţie de
operaţia la care se referă. Cei patru bytes sunt denumiţi convenţional: OP (codul operaţiei sau
opcode), X, Y, Z (operanzi consideraţi întregi fără semn). Când instrucţiunea are numai doi
operanzi, unul este X, iar celălalt este valoarea desemnată de YZ. Când este un singur operand
atunci acesta este valoarea desemnată de XYZ.
Calculatorul MMIX dispune de următoarele seturi de instrucţiuni:
încărcare şi stocare (tabelul 4.2) operaţii aritmetice (tabelul 4.3)
instrucţiuni condiţionale (tabelul 4.4) operaţii la nivel de bit/octet (tabelul 4.5)
instrucţiuni imediate (tabelul 4.6) instrucţiuni de salt (tabelul 4.7)
operaţii în virgulă mobilă/fixă (tabelul 4.8) instrucţiuni avansate (tabelul 4.9)
Instrucţiunile de încărcare folosesc mnemonice LoaD cu sau fără semn pentru bytes,
wydes, tetrabytes and octabytes. Când un byte, wyde sau tetrabyte cu semn este convertit într-
un octabyte cu semn atunci bitul de semn este extins la toate poziţiile din stânga. Similar,
instrucţiunile de stocare folosesc mnemonice Store (tabelul 4.2). Dacă $Y şi $Z sunt utilizaţi
în formarea adresei atunci A ← (u($Y) + u($Z)) mod 264.
1
Pentru resurse şi informaţii actualizate verificaţi în mod regulat pagina web a autorului acestui proiect
deosebit: http://www-cs-faculty.stanford.edu/~knuth/mmix.html
2
D. Knuth (1999), MMIXware. Lecture Notes in Computer Science, 1750, Springer Verlag.
Tabelul 4.1. Registre MMIX speciale
unsigned byte.
#A6 STWU $X, $Y, $Z u(M2[A]) ← u($X) mod 216; memorează NU
unsigned wyde.
#AA STTU $X, $Y, $Z u(M4[A]) ← u($X) mod 232; memorează NU
unsigned tetrabyte.
#AE STOU $X, $Y, $Z u(M8[A]) ← u($X); memorează unsigned NU
octabyte.
#B2 STHT $X, $Y, $Z u(M4[A]) ← [u($X) / 232]; stochează tetrabyte-ul NU
superior.
#B4 STCO X, $Y, $Z u(M8[A]) ← X; stochează o constantă unsigned NU
byte ca octabyte.
Pentru fiecare instrucţiune din tabelele 4.2, 4.3, 4.4 şi 4.5 există şi varianta imediat. Dacă
sintaxa instrucţiuni, utilizează Z în loc de $Z (adică se specifică valoare constantă şi nu un
registru) atunci se generează instrucţiunea cu codul incrementat (de exemplu: STBI/STTI $X,
$Y, Z are asociat codul #A1, respectiv #A9). Instrucţiunea cu codul #22 poate fi decodificată
fie ca LDA, fie ca ADDU.
Tabelul 4.3. Operaţii aritmetice
3
Conţinutul registrelor speciale poate fi examinat folosind instrucţiunea GET. Iniţializarea unor
registre speciale (cele care permit scrierea) se poate realiza folosind instrucţiunea PUT.
4
Notaţia x << n (în limbajele C, C++, Java, etc.) descrie deplasarea valori binare x cu n poziţii la stânga.
5
Notaţia x >> n (în limbajele C, C++, Java, etc.) descrie deplasarea valori binare x cu n poziţii la dreapta.
Tabelul 4.4. Instrucţiuni condiţionale
Conţinutul unui registru este negativ dacă bitul său cel mai din stânga este 1 (bitul de semn) şi
este impar dacă bitul său cel mai din dreapta este 1. Mnemonicele care au C ca prim caracter
modifică conţinutul registrului $X prin copiere numai dacă este îndeplinită condiţia, iar cel
care au Z ca prefix modifică întotdeauna conţinutul (fie prin copiere, fie prin iniţializare cu
zero).
Operaţiile la nivel de bit/octet au numeroase aplicaţii şi presupun organizarea şirului de biţi ca
un tablou liniar/bidimensional a câte 64 de componente. În cazul bidimensional este vorba de
o matrice booleana 8x8, cu liniile de sus în jos reprezentând octeţii şirului de biţi de la stânga
la dreapta. Dacă operaţiile la nivel de bit sunt utile în analiza semnalelor, realizarea sistemelor
de operare etc., operaţiile la nivel de octet pot fi întâlnite în procesarea textelor şi grafica pe
calculator, pentru a menţiona doar câteva domenii. Dacă x şi y sunt valori de tip
byte/wyde/tetrabyte sau octabyte, notăm prin xTy = max(0, x-y) diferenţa saturată dintre x şi
y. La nivel de bit vor fi folosite notaţiile and, or, xor şi not utilizate asupra algebrei Boole B
= ({0, 1}, or, and, not). Dacă x este un octabyte atunci v(x) reprezintă tabloul unidimensional
cu biţii lui x, b(x) tabloul unidimensional cu datele de tip byte, w(x) tabloul unidimensional
cu datele de tip wyde, t(x) tabloul unidimensional cu datele de tip tetrabyte, o(x) valoarea de
tip octabyte, m(x) reprezintă matricea formată cu biţii lui x, iar mT(x) este transpusa matricei
m(x). Operaţiile mor şi mxor între matricele booleene A = (aij)1≤i≤m,1≤j≤n şi B = (bjk)1≤j≤n,1≤k≤p
conduc la matricele C = A mor B şi D = A mxor B, cu elemente cik = (ai1 and b1k) or (ai2 and
b2k) or ... or ( ain and bnk), respectiv dik = (ai1 and b1k) xor (ai2 and b2k) xor ... xor ( ain and
bnk), unde 1 ≤ i ≤ m şi 1 ≤ k ≤ p.
Programele sursă MMIX (fişier text cu extensia .mms) constituite din declaraţii şi
instrucţiuni, trebuie asamblate folosind programul mmixal care produce un fişier obiect (cu
extensia .mmo). Interpretarea codului obiect se va realiza folosind simulatorul MMIX.
Programul poate admite argumente în linia de comandă (similar limbajelor C, C++, Java),
numărul argumentelor se va stoca în $0, iar adresa de început a şirului de argumente (primul
fiind numele programlui) este plasată în $1.
Instrucţiunile unui program MMIX încep întotdeauna de la locaţia simbolică Main.
Programele MMIX conţin simboluri (secvenţe de litere şi cifre care încep obligatoriu cu
literă), constante (zeimale – baza 10, hexazecimale – baza 16 – încep cu #), caracter (între
apostrofuri), şiruri de caractere încadrate de ghilimele), expresii şi instrucţiuni. Unele
simboluri sunt predefinite. Există elemente primare (simboluri, constante, @, expresie
încadrată de paranteze, operator unar urmat de element primar) şi termeni (unul sau mai multe
elemente primare separate prin operatori binari puternici: *, /, //, %, <<m >>, &). Expresiile
sunt formate cu operatori binari slabi: +, -, |, ^. O instrucţiune are trei câmpuri: zona etichetei
(spaţiu sau simbol), zona operaţiei OP (conform tabelelor de mai sus, sau o pseudo-operaţie
MMIXAL), zona expresilor (separate prin virgulă) şi eventual zona comentariu. Comentariile
de tip linie încep cu %, ; sau //, iar cele de tip bloc sunt delimitate de /* şi */.
Procesul de asamlare decurge în trei paşi astfel: locaţia curentă este aliniată la
multiplu de 8 (OP = OCTA), 4 (OP = TETRA sau operaţie MMIX), 2 (OP =WYDE); se
defineşte simbolul @ ca fiind eticheta, în afara cazului în care OP = IS sau OP = GREG. Dacă
OP este o operaţie MMIX atunci zona operaţie şi zona expresie definesc un tetrabyte, iar @
este incrementat cu 4. Daca OP este o pseudo-operaţie MMIXAL atunci se analizează
operaţia şi se realizează următoarele acţiuni:
a) Dacă OP = IS atunci simbolul din zona etichetei devine echivalent cu valoarea
unicei expresii prezente în zona expresiilor.
b) Daca OP = LOC atunci locaţia curentă @ devine valoarea unicei expresii, care
trebuie să aibă o valoare pură.
c) Dacă OP = BYTE, WYDE, TETRA sau OCTA, atunci în zona expresiilor sunt
prezente mai multe expresii stocabile pe 1, 2, 4 sau 8 octeţi începând cu adresa indicată
simbolic în zona etichetei.
d) Daca OP = GREG, atunci unica expresie evaluată la o valoare pură x se atribuie
acelui registru global (în mod read only) al cărui cel mai mare număr nealocat încă este
asociat simbolului din zona etichetă.
Un comportament important al oricărui asamblor este cel relativ la operaţiile de
intrare-ieşire. Dacă considerăm stilul limbajului C pentru operaţiile Fopen, Fclose, Fread,
Fgets (extins şi la Fgetws), Fwrite, Fputs (extins şi la Fputws), Fseek, şi Ftell, aceste pot fi
simulate conform tabelului 4.10.
Relativ la operaţiile de intrare-ieşire, următoarele simboluri sunt predefinite în
MMIXAL: Fopen = 1, Fclose = 2, Fread = 3, Fgets = 4, Fgetws = 5, Fwrite = 6, Fputs = 7,
Fputws = 8, Fseek = 9, Ftell = 10, TextRead = 0, TextWrite = 1, BinaryRead = 2,
BinaryWrite = 3, BinaryReadWrite = 4.
Tabelul 4.10. Operaţii de intrare-ieşire
Exemplul 4.1. Programul de mai jos afişează la mediul de ieşire (StdOut) mesajul compus
dintr-un şir introdus în linia de comandă, spaţiu, şi BRAVO. Observaţi că #a este caracterul
ASCII de trecere la linie nouă, iar #0 este terminatorul de şir.
argv IS $1
LOC #100
Main LDOU $255,argv, 0
TRAP 0, Fputs, StdOut
GETA $255, String
TRAP 0, Fputs, StdOut
TRAP 0, Halt,0
String BYTE " BRAVO", #a, 0
Exemplul 4.2. Un experiment asupra şirului Fibonacci poate fi realizat folosind programul:
sp GREG
fp GREG
n GREG
fn IS n
LOC #100
GREG @
Fib CMP $1,n,2 Termenii şirului
PBN $1,1F Fibonacci sunt:
STO fp,sp,0 0, 1, 1, 2, 3, 5, 8, 13,
SET fp,sp 21, 34, 55, 89 etc.
INCL sp,8*4
STO $0,fp,8
STO n,fp,16 Termenul de rang n este
SUB n,n,1 suma termenilor de
GO $0,Fib rang n-1 şi n-2.
STO fn,fp,24 // F[n-1]
LDO n,fp,16
SUB n,n,2 f0 = 0; f1 = 1;
GO $0,Fib fn = fn-1 + fn-2.
LDO $0,fp,24
ADDU fn,fn,$0
LDO $0,fp,8
SET sp,fp
LDO fp,sp,0
1H GO $0,$0,0
Main SETH sp,Data_Segment>>48
SET n,5
GO $0,Fib
4.3. Exerciţii
2. Folosind descrierile de mai sus, prin analiza pas cu pas, stabiliţi ce realizează următorul
program MMIX6?
A IS $0
B IS $1
n IS $2
C IS $3
i IS $4
tt IS $5
j IS $6
ax IS $7
bx IS $8
cx IS $9
t IS $255
LOC #200
Main SRU n,n,6
SET tt,n
SLU tt,tt,3
ADDU tt,C,tt
SET t,1
SET i,0
S CMP t,i,n
BZ t,1F
SLU j,i,3
LDO ax,A,j
6
Ivonne Mehlfeld, S. Mehlfeld, FAUXPAS 3000, http://www.fauxpas3000.de/Kontakt.html
LDO bx,B,j
AND cx,ax,bx
STO cx,C,j
XOR cx,ax,bx
STO cx,tt,j
INCL i,1
JMP S
1H TRAP 0,Halt,0
3. Să se verifice dacă un şir de caractere este palindrom (se citeşte la fel prin parcurgerea de la
stânga spre dreapta şi retur.)
Răspuns: Programul de mai jos verifică dacă la adresa String se află sau nu stocat un
palindrom.
s IS $0
t IS $255
poz IS $2
test IS $5
R IS $3
Q IS $4
LOC Data_Segment
GREG @
String BYTE "COJOC",0
%String BYTE "ELENESEDUCCUDESENELE", 0
%String BYTE "ROTITOR", 0
%String BYTE "AUONAVANOUA", 0
%String BYTE "PUPUPUP", 0
%String BYTE "ETALATE", 0
%String BYTE "ENEPURTAPATRUPENE", 0
LOC #200
LDA s,String
4. Domeniile de valori pentru tipurile byte, wyde, tetra şi octa sunt: ---------------------
Răspuns:
signed byte -128 .. 127
signed wyde -32.768 .. 32.767
signed tetra -2.147.483.648 .. 2.147.483.647
signed octa -9.223.372.036.854.775.808 .. 9.223.372.036.854.775.807
5. Care este codul ASCII (în baza 16) pentru fiecare dintre simbolutile: A, +, *, a, @?
Răspuns: Se utilizează tabelul:
2. Fie comenzile:
a. ASSOC k. FIND
b. AT l. FINDSTR
c. CACLS m. FTYPE
d. CHKNTFS n. GRAFTABL
e. CMD o. PUSHD
f. COLOR p. POPD
g. COMPACT q. RECOVER
h. CONVERT r. REPLACE
i. SETLOCAL s. START
j. ENDLOCAL t. VERIFY
Alegeţi comanda Microsoft Windows 2000/XP potrivita care:
25. Solicită verificarea scrierii corecte a datelor pe disc
26. Deschide o fereastră pentru executarea unui program sau a unei comenzi
27. Afişează / Modifică asocierea extensiilor fişierelor
28. Lansează o noua instanţă a interpretorului de comenzi
29. Initiază localizarea variabilelor de mediu într-un fişier batch
30. Recuperează informaţia de pe discuri cu defecte
31. Planifică comenzi şi programe pentru a fi executate mai tarziu
32. Afişează / Modifică verificarea discului în momentul incărcării sistemului de operare
33. Afişează / Modifică compresia fişierelor din partiţiile NTFS
34. Salvează dosarul curent şi apoi îl modifică
35. Afişează / Modifică listele de control privind accesul la fişiere
36. Stabileşte culorile implicite ale consolei
37. Încheie localizarea variabilelor de mediu dintr-un fişier batch
38. Caută şiruri de caractere (ASCII / UNICODE) în fişiere
39. Reface valoarea anterioara acţiunii PUSHD
40. Înlocuieşte fişiere
41. Afişează / Modifică tipurile de fişiere utilizate în lista de asociere
42. Caută un şir de caractere într-un fişier sau o listă de fişiere
43. Permite sistemului de operare să afişeze setul de caractere extins în mod grafic
44. Converteşte volumele FAT în NTFS.
Răspuns: (25, t), (26, s), (27, a), (28, e), (29, i), (30, q), (31, b), (32, d), (33, g), (34, o), (35,
c), (36, f), (37, j), (38, l), (39, p), (40, r), (41, m), (42, k), (43, n), (44, h).
Sistemele SIMD sunt de mai multe categorii: a) matriceale - prelucrează datele în mod paralel
şi le accesează prin adrese în loc de index şi valoare; b) cu memorie asociativă - operează
asupra datelor accesate asociativ (prin conţinut). În loc de adresă, specificarea datelor se face
prin valoare, cum ar fi: "mai mare decât", "mai mic decât", "între limitele", "egal cu" etc.; c)
matriceal-asociative - sunt sisteme de tip asociativ ce operează asupra tablourilor multidimen-
sionale (matrice şi masive de date); d) ortogonale - fiecare element procesor corespunde la un
cuvânt (32 biţi) de memorie şi, astfel, biţii de acelaşi rang ai tuturor cuvintelor pot fi prelucraţi
în paralel. Acest procedeu mai este numit procesare serială pe bit şi paralelă pe cuvânt.
Test autoevaluare 4
3. Scrieţi un program MMIX care afişează, la mediul standard de ieşire, textul format
din numele unui student (introdus în linia de comandă) şi ‘EXAMEN ’
Răspuns: Programul de mai jos afişează la mediul de ieşire (StdOut) mesajul compus dintr-
un şir introdus în linia de comandă, spaţiu, şi EXAMEN.
argv IS $1
LOC #100
Main LDOU $255,argv, 0
TRAP 0, Fputs, StdOut
GETA $255, Sir
TRAP 0, Fputs, StdOut
TRAP 0, Halt,0
Sir BYTE " EXAMEN", #a, 0
Răspuns:
Prin executarea pas cu pas se obţine următorul conţinut al memoriei, respectiv
registrelor afectate (folosind MMIXAL şi simulatorul mmix).
1. 0000000000000200: c6010101 (XOR) $1=l[1] = #4000000000000008 ^ #4000000000000008 =
= #0
2. 0000000000000204: 35010001 (NEGI) $1=l[1] = 0 - 1 = -1
3. 0000000000000208: b5010101 (STCOI) M8[#ffffffffffffffff+1] = 1
4. 000000000000020c: 33010101 (CMPUI) $1=l[1] = #ffffffffffffffff cmp 1 = 1
5. 0000000000000210: a0010101 (STB) M1[#1+#1] = 1, M8[#0]=#10000000001
6. 0000000000000214: 8e010101 (LDOU) $1=l[1] = M8[#1+#1] = #10000000001
7. 0000000000000218: e4010001 (INCH) $1=l[1] = #10000000001 + #1000000000000 =
= #1010000000001
8. 000000000000021c: 2e010101 (16ADDU) $1=l[1] = #1010000000001 <<4+ #1010000000001 =
= #11110000000011
9. 0000000000000220: 1a010101 (MULU) $1=l[1] = #11110000000011 * #11110000000011 =
= #244420000000121, rH=#12343210000
10.0000000000000224: f7150001 (PUTI) rA = 1 = #1
11.0000000000000228: a5010101 (STWI) M2[#244420000000121+1] = 163328054259613985,
M8[#244420000000120]=#12100000000, rA=#00041
12.000000000000022c: db010101 (SADDI) $1=l[1] = nu(#244420000000121\1)= 7
13.0000000000000230: 08010001 (FLOT) $1=l[1] = (flot) 7 = 7.
14.0000000000000234: f6000001 (PUT) rB = 4619567317775286272 = #401c000000000000
15.0000000000000238: c7010101 (XORI) $1=l[1] = #401c000000000000 ^ 1
=#401c000000000001
16.000000000000023c: 5701ffff (PBODB) 4619567317775286273 odd? Yes, -> #238
17.0000000000000238: c7010101 (XORI) $1=l[1] = #401c000000000001 ^ 1
=#401c000000000000
18.000000000000023c: 5701ffff (PBODB) 4619567317775286272 odd? No (bad guess)
19.0000000000000240: c4010101 (NOR) $1=l[1] = #401c000000000000 ~| #401c000000000000 =
= #bfe3ffffffffffff
20.0000000000000244: 3d010101 (SRI) $1=l[1] = -4619567317775286273 >> 1
= -2309783658887643137
21.0000000000000248: 3f010101 (SRUI) $1=l[1] = #dff1ffffffffffff >> 1
= #6ff8ffffffffffff
22.000000000000024c: 00000000 (TRAP) Halt(0)
Arhitectura sistemelor de calcul
Lista problemelor propuse
1. Numărul zecimal 0,6 se reprezintă cu exactitate în memoria sistemelor de calcul binare.
Această afirmaţie este:
a. adevărată întotdeauna c. adevărată pentru microprocesoare INTEL
b. falsă întotdeauna d. adevărată pentru procesoarele supercalculatoarelor
4. În cazul reprezentării cu semn (complement faţă de doi) pe 16 biţi (signed wyde) , afirmaţia
32767 + 2 = -32767 este:
a. adevărată b. falsă