Sunteți pe pagina 1din 12

http://www.coolinterview.

com/interview/4383/
Program- Secven de instruciuni pe care le execut procesorul una dup alta.
Programare Procesul de definire a instruciunilor care urmeaz sa le indeplineasca
procesorul
Variabil o zon de memorie care pstreaz date, care este folosit n procesul de
calcul i care are o etichet dup care este identificat.
1. What are static variables?,(Care sunt variabile statice?)
Variabile statice snt legate de funcionarea anumitor obiecte a cror instane folosesc n comun
aceste variabile. Variabilele statice sunt create atunci cnd codul specific clasei n care au fost declarate este
ncrcat n memorie i nu sunt distruse dect atunci cnd acest cod este eliminat din memorie.
Variabilele statice se aloca in zona de date a programului la incarcarea programului in memorie. Ele sunt
disponibile pe toata durata de existenta a programului in memorie.
Se cunosc 3 tipuri de declarari ale variabilelor statice:
variabila declarata static in corpul functiei isi pasteaza valoarea intre apelurile functiei.
variabila declarata static in cadrul unui modul ( dar in afara functiei ) si este accesibila altor
functii din acest modul. Dar nu este disponibila functiilor altui moudul. Ea este localizata global.
Functia declarata static intr-un modul poate de asemenea fi chemata de alte functii din acest modul.
Acesta este scopul functiei care este declarata.

2. What are volatile variables?,(Care sunt variabile volatile?)


Variabile volatile variabilele care se pot modifica instantaneu. Si lucrul cu o copie a acestei
variabile poate fi o sursa de erori , deoarece variabila se poate modifica in timpul operatiilor cu variabila.
Registrii Hardware periferici ( registrul de stare )
Variabilele non auto care se refera la subrutinele intreruperilor.
Variabile partajate de sarcini multiple( multi task ), ntr-un sistem cu multe fire de executie.Cuvntul cheie
volatil este destinat s mpiedice compilatorul s aplice orice optimizri pe obiecte care se pot schimba n
moduri care nu pot fi determinate de compilator.Obiectele declarate ca fiind volatile sunt omise de
optimizare, deoarece valorile lor pot fi schimbate n funcie de codul din afara domeniului de aplicare al
codului curent n orice moment. Sistemul ntotdeauna citete valoarea curent a unui obiect volatil din
locaia de memorie, mai degrab dect pstrarea valorii sale n registrul temporar la punctul n care este
cerut, chiar dac o instruciune anterioar a cerut o valoare din acelai obiect. Deci, ntrebarea este simplu,
modul n care se poate aprecia de o schimbare variabil n aa fel nct compilator nu poate prezice. Lua i n
considerare urmtoarele cazuri de rspuns la aceast ntrebare.

3. What do you mean by const keyword ?,( Ce vrei s spui prin cuvinte cheie const?)
Const este un calificativ asemenea celui volatile care are utilitatea de a proteja variabila ca sa nu
primeasca atribuiri in decursul programului, ci sa fie Read Only.
Pentru a fi modificata este necesar un pointer catre o variabila de tip const.

4. What is interrupt latency?,( Ce este laten de ntrerupere?)


Latenta intreruperii timpul din momentul aparitiei evenimentului si pina la exucutarea codului
propriu zis al intreruperii.
Este condiionat de mai multi factori :
1. Timpul necesar sistemului de a marca evenimentul in registri.
2. Timpul necesar de finalizare a unei intreruperi de lunga durat.
5. How you can optimize it?,( Cum poi s-l optimizai?)
Cum se poate micsora latenta intreruperii - reducerea se poate face prin scrierea concisa a codului
din subrutina pentru a nu intirzia pentru mai mult timp.

6. What is size of character, integer, integer pointer, character pointer?,( Care este dimensiunea
caracterului, ntreg, pointer ntreg, indicatorul de caractere?)
Pointerul nu este decit o adresa de memorie care pastreaza o adresa adresa.
Care sint marimile variabilelor:
Char 1 byte
Integer ( depinde de arhitectura ) 2 byte , 4 byte .
Integer point 2 bytes sau 4 bytes.
Character Pointer 1 byte

7. What is NULL pointer and what is its use?,( Ce este pointer NULL i ceea ce este utilizarea?)
Un pointer Null este un pointer care are valoarea Null(0) si este rezervat pentru ca nu pointeaza nicaieri.
Atunci cind nu mai ai nici o adresa atunci pointerului i se atribuie Null.

8. What is void pointer and what is its use?,( Ce este nul(void) pointer i ceea ce este utilizarea?)
Void Pointer este un tip de date - Un pointer care indic o anumit loca i care nu are nici un tip
specific.

9. What is ISR?,( Ce este ISR?)


O intrerupere este un mecanism de detectare a evenimentelor fizice interne sau externe (schimbarea
nivelului logic la un pin, sfritul unei perioade de timp sfritul unei operaii de transmisie sau recepie,
sfritul unei conversii etc) . Intrerupe firul de executie in scopul rezolvarii problemelor prioritare

10. What is return type of ISR?,( Ce este tipul de ntoarcere ISR?)


Care este tipul returnat de intreruperi ?
O intrerupere este chemata de catre sistemul hardware si nu din cod deaceea nu se pot transmite
parametri. O intrerupere nu returneaza nimic deoarece nu este nici un cod care sa citeasca valorile
returnate.

11. Can we use any function inside ISR?,( Putem folosi orice funcie n interiorul ISR?)
Putem folosi funcia n interiorul ISR, atta timp ct aceast funcie nu este invocat de cealalt parte a
codului.

12. Can we use printf inside ISR?,( Putem folosi printf n interiorul ISR?)
Funcia printf n ISR nu este acceptat, deoarece funcia printf nu este reintrare, fir de siguran i
folosete alocarea dinamic a memoriei, care necesit mult timp i poate afecta viteza unui ISR pn ntr-o
mare msur.

13. Can we put breakpoint inside ISR?,( Putem pune breakpoint n interiorul ISR?)
Punerea unui punct de pauz(breakpoint) n interiorul ISR nu este o idee bun, deoarece
depanare(compilarea, debugging) va dura ceva timp i o diferen de jumtate sau mai multe secunde va
duce la un comportament diferit al hardware-ului. Pentru compilarea ISR, definitiv este mai bine (logs).

15. What is Top half & bottom half of a kernel?,( Ce este Top jumatate si jumatatea de jos a unui
nukleu?)
Uneori, pentru indeplinirea ntreruperii, o cantitate substanial de munc trebuie s fie fcut. Dar,
aceasta intr n contradictie cu nevoia de vitez pentru o tratare a ntreruperii. Pentru a rezolva aceast
situaie, Linux mparte compilatorul n dou pri - o jumtate superioar(Top half) i o jumtate de
fund(bottom half). Prima jumtate este rutina care de fapt reac ioneaz la ntrerupere. Jumtatea inferioar,
pe de alt parte, este o rutin care este planificat de jumtatea superioar care se va efectua mai trsiu ntr-
un timp mai sigur.
Toate ntreruperile sunt permise n timpul executrii jumtii de jos. Jumtatea superioar salveaz
datele dispozitivului ntr-un buffer special, graficile jumtii de jos i eirilor. Jumtatea de jos face restul.
In acest fel jumatatea superioara poate deservi o nou ntrerupere n timp ce jumtatea de jos lureaz la codul
anterior.

16. Difference between RISC and CISC processor?,( Diferena ntre RISC i procesor CISC.)
RISC (Reduced Instruction Set Computer) poate efectua cteva seturi de instruciuni simple
simultan. Mai puini tranzistori sunt utilizai pentru fabricarea RISC, ceea ce face RISC mai ieftin. RISC are
un sinhur set de instruciuni i aceste instruciuni sunt, de asemenea, mai puine la numr. Din cauza
numrului mai mic de instruciuni precum i instruciuni fiind mai simple, calculatoarele RISC sunt mai
rapide. RISC pun accentul mai mult pe software-ul, dect pe hardware-ul. RISC poate executa instruc iuni
ntr-un singur ciclu main.
CISC (Complex Instruction Set Computer) este capabil s execute mai multe operaii printr-o singur
instruciune(comand). CISC au un bogat i complex set de instruciuni i mai multe regimuri de moduri de
adresare. CISC pune accentul pe hardware-ul, dect pe software-ul, fcndu-l mai scump dect RISC. El are
o dimensiune de cod mic, cicluri mari pe secund i aceasta se inimpl mai lent n comparaie cu RISC.

17. What is RTOS?,(Ce este RTOS?)


ntr-un sistem de operare, exist un modul numit planificatorul, care planific diferite sarcini i
determin cnd un proces se va executa pe procesor. In acest fel, se realizeaz multi-tasking(mai multe
operatii). Scheduler ntr-un sistem real de operare n timp (RTOS) este proiectat pentru a oferi un model de
execuie previzibil. ntr-un sistem integrat, un anumit eveniment trebuie s se distreze n timp strict definite.
Pentru a ndeplini cerinele n timp real, comportamentul programatorul trebuie s fie previzibil. Acest
tip de sistem de operare, care au un programator cu model de execuie previzibil este numit Real Time OS
(RTOS). Caracteristicile unui RTOS sunt:
Context de comutare laten ar trebui s fie scurt.
Se ntrerupe laten ar trebui s fie de scurt durat.
Se ntrerupe expedierea de laten ar trebui s fie de scurt durat.
mecanisme de proces ntre timp legat de ncredere i.
ar trebui s sprijine nucleu de preemiune.

26. What is virtual memory?,(Ce este memoria virtual?)


Memoria virtual este o tehnic care permite proceselor s aloce memorie n caz de lips de memorie
fizic utiliznd alocarea automat de stocare la cerere. Avantajul memoriei virtuale este faptul c programul
poate avea o memorie mai mare dect memoria fizic. Acesta permite memoriei virtuale mari s fie asigurat
atunci cnd numai memorie fizic este mai mic disponibil. Memoria virtual poate fi implementat cu
ajutorul cutrii apelului.
Un sistem de paging este destul de similar cu un sistem de paging cu schimbarea. Cnd vrem s se
execute un proces, l schimbm n memorie. Aici vom folosi un swapper lene numit pager, mai degrab
dect schimbarea ntregului proces n memorie. Atunci cnd procesul va fi schimbat n, pager ghice te care
pagini vor fi utilizate pe baza unor algoritm, nainte de nceperea procesului este schimbat din nou. n loc de
pompare ntregului proces, pager aduce doar paginile necesare n memorie. Prin acest mod, se evit citirea
paginilor de memorie care nu sunt necesare, reducerea timpului de swap i cantitatea de memorie fizic.

27. What is kernel paging?,( Ce este kernel paginare?)


Paginare este un sistem de management al memoriei prin care computerele pot stoca i prelua date
de stocare de memorie secundar atunci cnd este necesar, n memoria primar. n acest sistem, sistemul de
operare preia datele din memoria secundar n blocuri de aceeai mrime numite pagini. Schema de paginare
permite spaiul de adrese fizic a unui proces care s fie non continuu. Paging permite sistemului de operare
pentru a utiliza spaiul de stocare secundar pentru datele care nu se ncadreaz n ntregime n memoria
fizic.

28. Can structures be passed to the functions by value?,( Care structuri pot fi transmise la funciile de
valoare?)
Trecnd structura prin valoarea sa ntr-o funcie este posibil, dar nu este bun practic pentru
programare. n primul rnd, dac trecem structura prin valoarea i funcia modific unele dintre aceste valori,
atunci modificarea valorii nu este reflectat n funcie de apelant. De asemenea, n cazul n care structura este
mare, apoi structura trece prin valoarea nseamn copierea ntregii structuri la func ia argument stiva care
poate ncetini programul printr-o valoare semnificativ.

29. Why cannot arrays be passed by values to functions?,( De ce nu pot fi matricele trecut prin valori
la funcii?)
n C, singurul nume ,,matrice,, reprezint adresa primului element. n aa fel, chiar dac vom trece
numele matrice ca argument, acesta va fi transmis ca referin i nu adresa acesteia.

30. Advantages and disadvantages of using macro and inline functions?,( Avantajele i dezavantajele
utilizrii funciilor macro i inline?)
Avantaj: Macrocomenzi i funcii inline sunt mai eficiente dect apelarea unei funcii normale. Timpii
de petrecere n apelarea funciei sunt salvat n caz de macro-uri i func ii inline, deoarece acestea sunt
incluse direct n codul.

Dezavantaj: Macrocomenzi i funcii inline a crescut dimensiunea de cod executabil.


Diferena n funcii inline i macro
1) Macro este extins prin preprocesor i funcia inline sunt extinse prin compilator.
2) Expresiile ca argumente inline functii sunt evaluate doar o singur dat n timp ce a trecut ca
argument a expresiei facturale la inline funcii sunt evaluate mai mult dect o dat.
Mai mult peste functiile inline sunt folosite pentru a depasi aeriene de apeluri de func ii. Macro-urile sunt
folosite pentru a menine readbility i maintainence uoar a codului.

31. What happens when recursion functions are declared inline?,( Ce se ntmpl atunci cnd funciile
recursie sunt declarate inline?)
Funciile inline i recursiv reduce overhead (aeriene) salvnd contextul pe stiv. Dar, inline este doar o
sugestie pentru compilator i nu garanteaz c o funcie va fi inline. Evident,c compilatorul nu va fi capabil
s inline o funcie recursiv infinit. Este posibil s nu-l inline deloc sau poate linie pe el, la doar cteva
niveluri n adncime.

32. #define cat(x,y) x##y concatenates x to y. But cat(cat(1,2),3) does not expand but gives preprocessor
warning. Why?( #define cat(x,y) x##y concateneaz x la y. Dar, cat(cat(1,2), 3) nu se extinde, dar d
avertisment preprocesor. De ce?)
n acest caz, cat(x, y) este macro care este definit utiliznd directiva preprocesorului, acest lucru va fi
substituit doar la locul n care este numit n acest exemplu se ntmpl aacat(1,2) ## 3, care va deveni
din nou 1 ## 2 ## 3;
aici dac folosim ## ntre ele ne putem uni sau concatenat doar dou variabile, de aceia d un avertisment
preprocesor. {i ## ncearc s fac un simbol din) i 3. Probabil ai primi un avertisment pentru c nu se
poate face un semn de la cei doi!};{ Un parametru din lista de nlocuire, cu excepia cazului precedat de un #
sau ## preprocesrii de simboluri sau urmat de un simbol ## preprocesare (a se vedea mai jos), se nlocuiete
cu argumentul corespunztor dup toate macro-urile coninute de acestea au fost extinse. "}
33. Poate o variabil s fie att de const i volatile?
Da. Modificatorul const nseamn c acest cod nu se poate schimba valoarea variabilei, dar asta nu
nseamn c valoarea nu poate fi modificat prin intermediul n afara acestui cod. De exemplu, n exemplul
din FAQ 8, structura a fost cronometrul accesat printr-un pointer const volatil. Funcia n sine nu a schimbat
valoarea timer-ul, aa c a fost declarat Const. Cu toate acestea, valoarea a fost modificat de hardware pe
computer, astfel nct a fost declarat volatile. n cazul n care o variabil este att const i volatile, cei doi
modificatorii pot aprea n orice ordine.
{ Acest lucru este posibil i cea mai mare parte utilizat n exemplul system.The ncorporat este de
ntrerupere Stare registru. Aa cum este un registru de stare, n program nu ar trebui s modifice aceast
variabil. Deci, ar trebui s fie o constant. Dar aceast variabil poate fi modificat de ctre procesorul sau
hardware-ul bazat pe starea de ntrerupere. Aa c, atunci cnd n program, dorim s citii valoarea acestui
varible, ar trebui s citeasc valoarea real cu orice optimizare. Din acest motiv, variabila poate fi declarat
ca volatil prea. }

34. ++*ip increments what? it increments what ip points to?,( ++*ip incrementeaz ce? ea
incrementeaz ce ip puncte la)

++*ip va crete valoarea la care punctele ip.


ex: * ip = 3;
++ * Ip;
printf ("% d", * ip);

ieirea va fi de 4 dup aceast operaie ip va indica spre aceeai loca ie de memorie. Aceasta nu
incrementeaz locaia de memorie n aceast operaiune.
35. Operations involving unsigned and signed unsigned will be converted to signed?,( operaiuni
care implic fr semn i semnat? fr semn va fi convertit la semnat?)

da, Uit-te la exemplul de mai jos

void foo (void)


{
int a nesemnate = 6;
int b = -20;
(A + b> 6)? pune ("> 6"):
("put <= 6");
}

Aici de ieire ar da "> 6". Motivul pentru aceasta este faptul c expresiile semnate i implicnd tipuri de
nesemnate au toate operanzi promovat la tipuri de nesemnate.

{n condiiile de mai sus terinaty (a + b> 6) returneaza -14 adic o baz non valoare zero, astfel c
verificarea cu o valoare diferit de zero, care este motivul pentru care imprim "> 6".

astfel nct, n acest caz, aceasta conditie rezultat trateaza defaultly ca signet. pn cnd, dac ai typecast
la unsignet.}

36. malloc(sizeof(0)) will return valid pointer?,( malloc(sizeof(0)) se va ntoarce - pointer valid? )

sizeof (0) returneaz mrimea ntreg a crui valoare este 0. De aceea malloc va aloca sizeof
(int) bytes i returneaz un pointer valid.

{Este echivalent cu liber () i returneaz pointer valid.


malloc () Funcia returneaz ntotdeauna
* Void (void pointer), ne-am explicit typecast}

37. main() {fork();fork();fork();printf("hello world"); } will print 8 times?,( main()


{fork();fork();fork();printf("hello world"); } - se va imprima de 8 ori? )

O va imprima 2 ^ 3 = 8 ori. Amintii-v, de fiecare dat cnd apelai fork, creai un proces copil, c procesul
de copil va continua executarea de la dreapta dup ce a fost n form de forked astfel nct acesta poate, de
asemenea, ea nsi fork. Copacul va arta astfel.
Deci, vom avea total de 8 proces (proces main i 7 procese forked), care ruleaz i imprimarea instruciunea
de imprimare. Ca o not: n cazul n care declaraia de imprimare a fost nainte de o forked, aceasta nu ar
obine executat printr-un proces nou forked.
{ ea se va imprima de 8 ori (2 ^ 3): fiecare fork genereaz un proces suplimentar - astfel nct s se ncheie
cu 2 procese la fiecare pas (printe i copil) i fiecare dintre ele continua execuia n etapa imediat dup fork.
Aa c prima forked -> 2 procese fiecare dintre acestea merge la fork 2 n care generai 2 procese
suplimentare, astfel nct s avei acum 4 procese fiecare a intra n a 3-a n cazul n care fiecare fork
genereaza un proces suplimentar - deci 8 procese care merg n linie cu printf! }
{ Fiecare furculi creeaz un nou copil. Fiecare copil are acelai cod ca printe. Astfel, copiii vor, de
asemenea, furculi.
Asa ca printe are 3 copii. Child1 are 2 copii. Child2 are un copil. Child11 are un copil.
Un total de 8 procese. 8 printf]}
{ Procesul 1 apeluri furc (). Acest lucru creeaz un
nou proces de copil, Proces 2, i ambele 1 i 2
transporta la execuie dup apelul prima furc (),
procednd la apelul a doua furc (). Procesul 1 creeaz
proces copil 3, iar procesul de 2 creeaz proces de
copil 4. Toate cele patru procese continue de dup a
doua furc (), procednd la apelul furcii finale ().
Procedeul 1 creeaz Procedeul 5; Procedeul 2 creeaz
proces de 6; Procedeul 3 creeaz Procedeul 7; i
Procesul 4 creeaz Procesul 8. }

38. Array of pts to functions void (*fptr[10])()?,( void (*fptr[10])())

Aceasta nu nseamn indicatorul de fiier s se dubleze, f reprezint funcia.

Acest lucru devine evident odat ce te uii la modul n care sunt definite funcii:

myfunc dublu ()
Daca vreau acum un pointer la o funcie care are argumente i returneaz un dublu ar fi de tip

dublu (*) ()
care este tipul de parametrul. Adugarea unui nume (fptr), pentru a rezulta n urmtoarele:

dublu (* fptr) ()
este un parametru numit fptr (prescurtarea de la pointer funcia), care este un pointer la o funcie care nu
are nici un argument i returneaz un dublu sau void,int.

sintaxa > type (*pointer)(); ----- int (*fptr)();


{ FPTR este un pointer S presupunem c funcia ca i n programul meu. De ce FPTR si * FPTR dau
aceeai valoare atunci cnd sunt tiprite? Ce * FPTR chiar nseamn? Am tiut doar c putem invoca o
funcie folosind indicatorul su (* FPTR) () sau ca FPTR (), dar ceea ce este * FPTR Numai atunci?}

{Un pointer este acela de a indica o locaie de memorie. O funcie este n memorie i are o adres de
pornire. V putei foarte bine dereferire numele funciei (care este un pointer) pentru a obine funcia de
la acea adres.}
{ Am vorbit anterior despre indicii pentru structuri de date i obiecte de clas, cu toate acestea, n C ++
putem avea, de asemenea, indicii pentru funcii. Aceste indicii se comporta un pic diferit ca celelalte
indicii de care le-am ajuns peste pana acum, dar pn la sfritul acestui tutorial ar trebui s ti i cum s
utilizeze indicii funcii, precum i cunoaterea de baza a ceea ce se poate i nu se poate face cu ele.
Cel mai confuz cu privire la indicii functiei este, probabil, sintaxa lor - scrie i tipul de date al func iei (e)
indicatorul se va indica, atunci numele cursorului, prefixat de un asterisc, n paranteze, atunci unele
suporti cu parametrii tipurile de funcii de puncte pointer-ul va lua. Aa cum acest lucru implic, indicii
funcii trebuie s indice funcii cu aceleai tipuri de date de tip i de parametri (precum i numrul de
parametri). Sintaxa, vizual, arata ca tip de date (* pointerName) (parametrii);. Cel mai simplu mod de a
obine utilizate pentru a funciona indicii este de a pstra doar folosindu-le. Cel mai simplu exemplu,
probabil, ar fi de a crea dou funcii simple, nule, iar apoi indicai indicatorul funcia fiecruia, apelarea
funciilor prin intermediul cursorului dup fiecare misiune.}

39. Which way of writing infinite loops is more efficient than others? there are 3 ways?,()
while (1)
{}
Acesta este cel mai bun mod de a pune n aplicare bucla infinita.
for (;;) i while (1) .......
putem folosi, de asemenea, aceasta
for(;;)
{
}
De fapt, cea mai bun cale este
for(;;)
deoarece nu depinde de nici o constant pentru a fi infinit.
https://www.codecademy.com/en/forum_questions/520d9f5fabf8219e4f00250f

40. Who to know whether system uses big endian or little endian format and how to convert
among them?,( Pe cine s tie dac sistemul utilizeaz endian mare sau format endian mic i
modul n care se convertesc ntre ele?)

Aici este un segment de cod mic pentru a determina Endianness unui sistem n timpul rulrii.

Short int number = 0x1;


char * byte = (char *) & number;
if (byte [0])
printf ("Micul endian");
else
printf ("Big endian");

unsigned int a = 0x01;


a = a>>1;
if(a){
printf("little endian");
}else{
printf("big endian");
unsigned char device_set_flag=0x01;
if((device_set_flag >> 1) & 0x01)
// little endian
else
// big endian

int number = 0x01;


if ( (number | 0xff) == 0x01 )
printf("Little endian");
else
printf("Big endian");

41. What is forward reference w.r.t. pointers in c?,( Ce se nainteaz w.r.t. de referin indicii n c?)
int a=10;
int *p=&a;
*p Se numete n fa referinei.

42. How is generic list manipulation function written which accepts elements of any kind?,( Cum este
funcia de list generic de manipulare scris care accept elemente de orice fel?)
Clasa de sabloane.

43. What is the difference between embedded systems and the system in which RTOS is running?,(
Care este diferena dintre sistemele integrate i sistemul n care RTOS ruleaz?)

Construit este doar combinaia de s / w i h / w, care este unele sisteme integrate pot avea unele osoase
nu pot acoperi RTOS este un sistem de operare.

RTOS pot include integrate i pot include, de asemenea. aceasta depinde de cerina. n cazul n care
sistemul trebuie s serveasc numai eveniment secvenial, nu este nevoie de RTOS. n cazul n care
sistemul necesit execuia n paralel a evenimentelor, atunci avem nevoie de RTOS.

Software embedded sisteme este lider de hardware i sarcinile sunt executate secven ial atunci cnd este
la fel de mic RTOS software-ul care poate fi utilizat n sistemele integrate i a aplica iilor de sarcin sunt
executate simultan, n cadrul constrngerilor de timp specifice.

Sau RTOS sistem de operare n timp real proiectat pentru aplicaii embedded. ntr-un sistem de sarcini
multiple, care se ocup de aplicaiile critice sistemele de operare trebuie s fie
1.deterministic de a aloca memorie
CPU 2.should permite diferitelor fire, sarcina, proces,
3.kernel trebuie s fie non-premptive, ceea ce nseamn c schimbarea trebuie s se ntmple numai
dup sarcina contextului de execuie. etc.
ferestre normale sau Linux OS poate fi utilizat.
RTOS n exemplul de sistem ncorporat: Satelites, Formula 1 autoturisme, sysytem de navigare CAR.

Sistemul integrat este o combinaie de hardware i software. software-ul poate fi .example sistem de
operare mobil i PC-uri sunt, de asemenea, un sistem integrat
dac vom folosi sistemul de operare RTOS n loc. urmrii apoi construit trebuie s ia msuri n timp
real, cum ar fi rachete.
sistem integrat: sistem proiectat pentru a ndeplini una sau cteva funcii dedicate.
Sistemul RTOS: Acesta poate fi, de asemenea, un dar natural embedde sistem RTOS va fi utilizat n
sistem real, care va trebui s ndeplineasc mai multe funcii.
Sistem de sistem n timp real, care poate oferi ieire ntr-un amout bine definit / prezis time.This nu este
real-time sistemele sunt mai rapide.
Diferena dintre cele dou:
Sistemele 1.normal Emabedded nu sunt sistem n timp real
2.Systems cu RTOS sunt sisteme n timp real.
{ sistem integrat poate include RTOS i nu pot include, de asemenea. aceasta depinde de cerina. n
cazul n care sistemul trebuie s serveasc doar secvenial caz, nu este nevoie de RTOS. n cazul n care
sistemul cere executarea n paralel a evenimentelor, atunci avem nevoie de RTOS. }

44. How can you define a structure with bit field members?,( Cum se poate defini o structur cu
membrii cmp de bii?)
Putem defini structura de membri cmp de bii cu operatorii Dot.
EXAMPLE:

#include <stdio.h>
int main(
{
Struct bit_field
{
Int x.4; // it allocates only 4 bits to x
Char C.6; // it allocates only 6 bits to C;
};
return 0;
}

{ Cred c n conformitate cu ANSI-bit struct c


cmp trebuie s fie de orice tip. Nu putem defini ca i soluia de mai sus dat aici. Ar trebui s ne definim ca mai jos ....
struct bit_field
{
unsigned int x:3;
unsigned int y:5;
unsigned int z:4;
};
main()
{
struct bit_field bit;
bit.x=3;
bit.y=15;
bit.z=22;
} // n cele de mai sus mrimea variabilei Structura este de 2 octei.
}
{ un punct mai mult vreau s adugai noi ar trebui s defineasc ntotdeauna cmp de bii, n acest fel dimensiunea
structurii ar trebui s vin mai multe de byts.
Ex.
struct bit_field
{
unsigned int x:3;
unsigned int y:5;
unsigned int z:4;
unsigned int reserved:4;
{ n general, cmpuri de bii n structura vor fi folosite pentru a seta registrele n domeniul
sistemelor integrate prin utilizarea unoin facilitate.
Ex.
typedef struct{
union{
unsigned short W ;
struct{
unsigned Short VAH :11 ;
unsigned short VFLIP :1 ;
unsigned short HFLIP :1 ;
unsigned short WOFF :1 ;
unsigned short TOFF :1 ;
unsigned short dmy :1 ;
}
}BIT ;
} BItfieldStruct
}
45. How do you write a function which takes 2 arguments - a byte and a field in the byte and
returns the value of the field in that byte?,( Cum v scrie o funcie care are 2 argumente - un octet
i un cmp n octet i returneaz valoarea cmpului n acel octet?)
bool F1(int byte,int pos)
{
return( (bool)(byte & 1<<pos)

{ In a called function:
byte = byte >> field;
byte = byte & 0x01;
return(byte); }
46. Which parameters decide the size of data type for a processor ?,( Care parametri decide mrimea
tipului de date pentru un procesor?)
De fapt, compilator este cel responsabil pentru dimensiunea tipului de date. Dar, este adevrat, atta
timp ct sistemul de operare permite acest lucru. n cazul n care nu este permis de sistemul de operare,
sistemul de operare poate fora dimensiunea.

47. What is job of preprocessor, compiler, assembler and linker ?,( Care este treaba de preprocesor,
compilator, de asamblare i de legtur?)
Comenzile de preprocesor sunt prelucrate i extinse de ctre preprocesor nainte de compilarea efectiv.
Dupa preprocesare, compilatorul ia ieirea preprocesorului i codul surs, i genereaz un cod de
asamblare. Odat ce compilator finalizeaz lucrrile, asambler ia codul de asamblare i produce o list
de asamblare cu decalaje i de a genera obiect fiiere.
Linker-ul combin fiierele obiect sau biblioteci i produce un singur fiier executabil. De asemenea, se
rezolva trimiteri la simboluri externe, atribuie adresele finale la funcii i variabile, precum i codul i
revizuiete datele pentru a reflecta noile adrese.
48. What is the difference between static linking and dynamic linking ?,( Care este diferena dintre
legarea static i dinamic de legtur?)
n legarea static, toate modulele de bibliotec utilizate n program sunt plasate n fi ierul executabil
final fcndul mai mare n dimensiune. Acest lucru se face prin linker. n cazul n care modulele utilizate
n program sunt modificate dup conectarea, este necesar apoi re-compilare. Avantajul linking static
este faptul c modulele sunt prezente ntr-un fiier executabil. Noi nu vrem s facem griji cu privire la
problemele de compatibilitate.
n cazul unei structurri dinamice, numai numele modulului utilizate sunt prezente n fiierul executabil
i legtura efectiv se face la run moment n modulele de bibliotec att programul i sunt prezente n
memorie. Acesta este motivul pentru care, executabilele sunt mai mici n dimensiune. Modificarea
modulelor de bibliotec utilizate nu foreaz re-compilare. Dar, legarea dinamic se poate confrunta cu
probleme de compatibilitate cu modulele de bibliotec utilizate.

49. How to implement a WD timer in software ?,( WD


?)

S-ar putea să vă placă și