Differences

This shows you the differences between two versions of the page.

Link to this comparison view

patr:laboratoare:10 [2022/01/13 13:54]
alexandru.ionita99 [Introducere]
patr:laboratoare:10 [2022/01/13 14:00] (current)
alexandru.ionita99
Line 7: Line 7:
 FreeRTOS utilizează următoarele tipuri de semafoare, pe care le vom detalia în continuare: FreeRTOS utilizează următoarele tipuri de semafoare, pe care le vom detalia în continuare:
   * Semafoare binare   * Semafoare binare
-  * Mutexuri 
   * Semafoare generalizate   * Semafoare generalizate
 +  * Mutexuri
  
 În cadrul acestui laborator, vom discuta despre semafoarele binare și cele generalizate,​ urmând ca în următorul să fie prezentate mutexurile. În cadrul acestui laborator, vom discuta despre semafoarele binare și cele generalizate,​ urmând ca în următorul să fie prezentate mutexurile.
Line 31: Line 31:
 === Semafoare binare === === Semafoare binare ===
  
-După cum am specificat anterior, există câteva diferențe între ​semafoarele binare ​și mutexuri. Întrucât pot fi deblocate de orice task, semafoarele binare sunt mai potrivite atunci când avem nevoie de o sincronizare ​a două taskuri. De exemplu, un task mai rapid poate fi blocat la un semafor până când un task mai lent ajunge într-un punct în care îl deblochează. \\+O situație în care semafoarele binare ​se pretează este sincronizarea ​a două task-uri. De exemplu, un task mai rapid poate fi blocat la un semafor până când un task mai lent ajunge într-un punct în care îl deblochează. \\
  
 +Diferențele dintre mutexuri și semafoarele binare vor fi prezentate în cadrul laboratorului viitor. Momentan, ne vom orienta atenția către crearea semafoarelor binare. ​
  
 Pentru a crea un semafor binar, este utilizată funcția ** xSemaphoreCreateBinary() **. Aceasta alocă spațiu în heap pentru semaforul binar și îl creează, cu starea inițială este "​blocat"​. Dacă valoarea întoarsă este NULL, nu există suficientă memorie disponibilă. \\ Pentru a crea un semafor binar, este utilizată funcția ** xSemaphoreCreateBinary() **. Aceasta alocă spațiu în heap pentru semaforul binar și îl creează, cu starea inițială este "​blocat"​. Dacă valoarea întoarsă este NULL, nu există suficientă memorie disponibilă. \\
Line 72: Line 73:
  
 În exemplul de mai sus, handle-ul a fost declarat în interiorul unui task și nu sub formă de variabilă globală. ​ În exemplul de mai sus, handle-ul a fost declarat în interiorul unui task și nu sub formă de variabilă globală. ​
-=== Mutexuri === 
  
-Utilizate în principal pentru gestionarea accesului la o resursă partajată, mutexurile sunt create cu ajutorul funcției ** xSemaphoreCreateMutex()**. ​ 
- 
-**Exemplu:​** 
-<code c> 
-SemaphoreHandle_t xSemaphore; 
-void vATask( void * pvParameters ) 
-{ 
- ​xSemaphore = xSemaphoreCreateMutex();​ // Apelare funcție creare mutex 
- if( xSemaphore == NULL ) 
- { 
- /* Spațiu de memorie insuficient */ 
- } 
- else 
- { 
- /* Mutexul poate fi utilizat */ 
- } 
-} 
- 
-</​code>​ 
  
  
patr/laboratoare/10.1642074840.txt.gz · Last modified: 2022/01/13 13:54 by alexandru.ionita99
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0