Baklås (datavetenskap)Baklås eller dödläge (deadlock på engelska) är en situation inom till exempel logistik eller programmering där två (eller flera) processer är inblandade och där var och en av processerna väntar på att den andra processen ska återlämna en resurs vilken krävs för att den första processen ska kunna bli klar med sitt åtagande.[1] Processerna väntar på varandra och ingen kan bli färdig, detta är programmeringens moment 22. Situationen kan lösas antingen genom att en av processerna tillförs mer resurser så att den kan bli klar och därefter återlämna resurserna, eller att någon av processerna backas så att dess resurser frigörs. Exempel
I verkligheten är det vanligt förekommande att det uppstår en process som varken kan backas eller tilldelas resurser, vilket kan orsaka stora problem. Undvika baklåsEdsger Dijkstra formulerade en algoritm för detta, bankiralgoritmen (Banker's algorithm), som anger villkor för hur resurser får allokeras i ett system. För att den ska fungera i praktiken utan att göra systemet ineffektivt måste emellertid systemet vara konstruerat på ett sådant sätt att resurser kan allokeras och återlämnas i lämpliga mängder, till exempel bör enkelspåriga järnvägar ha mötesplatser med dubbelspår med jämna mellanrum. Se även
Källor
|