Mutex a Semafor w RTOS?

Mutex a Semafor w RTOS?
cpp_beginer
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 2 lata
  • 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:prawie 11 lat
  • Ostatnio:około 3 lata
  • 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:prawie 10 lat
  • Ostatnio:około 3 godziny
  • Postów:2370
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:około 6 lat
  • Ostatnio:ponad 2 lata
  • 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?

Satanistyczny Awatar
Slajdy o programowaniu i podstawowych problemach concurrent programming twym przyjacielem.

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.