Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Blokada systemowa

Termin Definicja
Blokada systemowa

Blokada systemowa to ogólne określenie mechanizmu chroniącego zasoby serwera przed jednoczesnym, konfliktowym dostępem.

Blokada systemowa jako kontrola dostępu do zasobu

Blokada systemowa jest mechanizmem synchronizacji, który ogranicza jednoczesne korzystanie z tego samego zasobu przez wiele procesów, wątków albo usług. Zasobem może być plik, rekord w bazie danych, urządzenie wejścia-wyjścia, fragment pamięci, kolejka komunikatów lub inny obiekt zarządzany przez system operacyjny albo oprogramowanie serwerowe. Celem blokady jest zachowanie spójności danych i uniknięcie sytuacji, w której dwa wykonujące się równolegle działania zmienią ten sam stan w sposób nieprzewidywalny.

Najprostszy scenariusz występuje wtedy, gdy jeden proces otwiera zasób do zapisu, a drugi próbuje wykonać operację wymagającą wyłącznego dostępu. Drugi proces może zostać wstrzymany, otrzymać komunikat o zajętości zasobu albo kontynuować działanie, jeżeli używana blokada ma charakter doradczy i aplikacja nie sprawdza jej poprawnie. Sama obecność blokady nie gwarantuje więc bezpieczeństwa. Oprogramowanie musi jeszcze konsekwentnie ją zakładać, respektować, zwalniać oraz obsługiwać sytuacje awaryjne.

Rodzaje blokad i zakres ich działania

Blokada współdzielona pozwala wielu procesom odczytywać zasób równocześnie, ale zwykle uniemożliwia jego modyfikację przez proces posiadający blokadę wyłączną. Blokada wyłączna daje jednemu wykonawcy prawo do zapisu albo innej operacji wymagającej pełnej kontroli. W systemach plików można spotkać blokady dotyczące całego pliku lub określonego zakresu bajtów. Blokada zakresowa pozwala kilku procesom pracować nad różnymi częściami tego samego pliku, o ile zakresy nie nachodzą na siebie.

W programowaniu współbieżnym podobną rolę pełnią muteksy, semafory i mechanizmy typu read-write lock. Muteks dopuszcza jednego właściciela sekcji krytycznej, czyli fragmentu kodu, który powinien być wykonywany bez równoczesnej ingerencji innego wątku. Semafor może ograniczać liczbę jednoczesnych użytkowników zasobu, na przykład do kilku połączeń. W środowisku rozproszonym stosuje się także blokady oparte na dzierżawie, zwanej lease. Taka blokada wygasa po określonym czasie, co ogranicza ryzyko jej pozostawienia po awarii procesu.

Konflikty, zakleszczenia i wygasanie blokady

Nieprawidłowa obsługa blokad może prowadzić do zakleszczenia, czyli sytuacji, w której proces A czeka na zasób zajęty przez proces B, a proces B czeka na zasób zajęty przez proces A. Żaden z nich nie może przejść dalej. System albo aplikacja może wykrywać taki cykl oczekiwania i przerywać jedną z operacji, lecz nie każdy mechanizm blokad zapewnia automatyczne wykrywanie zakleszczeń. Czas oczekiwania na blokadę powinien być ograniczony, ponieważ nieskończone oczekiwanie może zatrzymać obsługę żądań i zwiększyć liczbę zależnych procesów pozostających w kolejce.

Problemem bywa również blokada osierocona. Powstaje wtedy, gdy proces uzyskał dostęp do zasobu, lecz zakończył się awaryjnie przed jego zwolnieniem. W zależności od rodzaju mechanizmu system operacyjny może usunąć blokadę automatycznie po zamknięciu procesu, natomiast blokada zarządzana przez aplikację albo zewnętrzną usługę może pozostać aktywna. Przydatne są wtedy identyfikatory właściciela, znaczniki czasu, limity TTL oraz kontrolowane procedury odzyskiwania. Usunięcie blokady bez sprawdzenia właściciela może jednak doprowadzić do równoczesnego zapisu i uszkodzenia spójności danych.

Rozpoznawanie blokady podczas diagnostyki systemu

Objawami blokady systemowej mogą być zawieszanie operacji, powolne otwieranie plików, błędy zapisu, komunikaty o zajętości zasobu, rosnąca kolejka żądań albo okresowe przekroczenia limitu czasu. Sam objaw nie wskazuje jeszcze, czy przyczyną jest prawidłowa konkurencja o zasób, zakleszczenie, awaria właściciela blokady, problem z systemem plików, przeciążenie nośnika czy błąd aplikacji. Diagnostyka wymaga ustalenia, jaki proces uzyskał blokadę, jak długo ją utrzymuje, o jaki zasób chodzi oraz czy oczekiwanie jest zgodne z projektem programu.

W praktyce analizuje się dzienniki aplikacji i systemu, identyfikatory procesów, czasy rozpoczęcia i zakończenia operacji, liczbę oczekujących żądań oraz powtarzalność problemu. Warto rozdzielić blokadę od zwykłego opóźnienia: proces może długo wykonywać legalną operację bez blokowania zasobu, ale może też szybko oczekiwać na blokadę utrzymywaną przez inny proces. Naprawa zależy od ustalonego źródła problemu i może obejmować uporządkowanie kolejności zdobywania blokad, skrócenie sekcji krytycznej, poprawę obsługi wyjątków, zmianę limitów oczekiwania albo odtworzenie uszkodzonego komponentu systemu. W przypadku laptopa lub komputera PC konieczne jest zachowanie ostrożności, aby ręczne zakończenie procesu albo usunięcie pliku blokady nie przerwało zapisu i nie pogorszyło stanu danych.

Warszawskie Pogotowie Komputerowe wykonuje profesjonalną naprawę laptopów i komputerów PC, w tym diagnostykę problemów z blokadami plików i zawieszaniem się systemu.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę