Mutex a Semafor w RTOS?

Mutex a Semafor w RTOS?
cpp_beginer
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 105
0

Cześć,
Nie do końca rozumiem, jaka jest różnica pomiędzy mutex'em a semaforem. Do tej pory używałem tylko mutex, ów aby zabezpieczyć sekcje krytyczne. Np.

Kopiuj
//Task 1
takeMutex(&mutex1);
criticalSection1();
giveMutex(&mutex1);

//Task 2
takeMutex(&mutex1);
criticalSection1();
giveMutex(&mutex1);

Jakie jest zastosowanie semaforów w RTOS'ach i systemach embedded.

AL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1493
1

Często podobne. W skrócie możesz myśleć o muteksie jako o specjalnym przypadku semafora, tj. takim, który trzyma informację kto go zajął oraz ma stan zajęty/wolny, podczas gdy semafor może być zajmowany wielokrotnie.

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
1

Do tego co napisał @alagner, dodałbym, że w przypadku mutexa-tylko właściciel zwalnia założoną blokadę, zaś w przypadku semafora "każdy" może zwiększyć/zmniejszyć wartość.

cpp_beginer
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 105
0

Jest jakiś przykład gdzie mógłbym lub gdzie muszę użyć semafora zamiast mutexu'a w RTOS, najlepiej na przykładzie małych systemów embedded np. STM32 pracujący pod kontrolą FreeRTOS?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.