Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Systemy operacyjne
Systemy operacyjnemedium

Co powoduje deadlocki i jak im zapobiegać?

Tagi
#deadlock#locks#concurrency
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Deadlock wymaga czterech warunków: wzajemne wykluczanie, hold-and-wait, brak preempcji i cykliczne oczekiwanie. Zapobieganie polega na złamaniu przynajmniej jednego z nich (np. kolejność locków lub timeouty).

Odpowiedź zaawansowana

Głębiej

Strategie:

  • Kolejność locków zapobiega cyklom.
  • Try-lock + backoff unika hold-and-wait.
  • Timeouty i detekcja deadlocków umożliwiają recovery.
  • Mniej współdzielonych zasobów = mniej kontencji.

Przykłady

Reguła lock ordering:

Zawsze pobieraj locki w kolejności: A -> B -> C

Typowe pułapki

  • Niespójna kolejność locków w różnych ścieżkach.
  • Długie sekcje krytyczne zwiększają kontencję.
  • Ignorowanie deadlocków w rzadkich ścieżkach błędów.

Pytania uzupełniające na rozmowie

  • Kiedy wybrać detekcję zamiast prewencji?
  • Jak debugujesz deadlock w produkcji?
  • Czym jest livelock i czym się różni?

Powiązane pytania

Systemy operacyjne
Procesy vs wątki — jaka jest różnica i kiedy to ma znaczenie?
#processes#threads#concurrency
Testowanie
Jak testujesz kod asynchroniczny lub współbieżny?
#async#concurrency#determinism
PostgreSQL
Advisory locks: co to jest i kiedy się ich używa?
#postgres#locks
#advisory
PostgreSQL
MVCC w Postgresie: dlaczego odczyty nie blokują zapisów?
#postgres#mvcc#concurrency
Bazy danych
Deadlock: co to jest i jak bazy go rozwiązują?
#database#transactions#locks