En programvarulåsning är ett datorproblem som kan uppstå i flerprocessorsystem. Denna låsning kan göra att en dators prestanda sjunker dramatiskt och förhindra användningen av ytterligare processorkapacitet. I moderna datorer med flera processorer måste speciell programvara för operativsystemet användas för att undvika programvarulåsningsfelet.
Förekomsten av programvarulåsning beskrevs först av IBM™-forskaren Stuart Madnick 1968. I detta tidiga skede av datorhistorien förutspådde Madnick att persondatorer skulle bli mindre och billigare under de kommande decennierna, men att de skulle fortsätta att vara begränsade till ungefär samma dataöverföringshastigheter. Denna förutsägelse visade sig vara mestadels korrekt, och den användbara kraften hos datorer ökas ofta genom att helt enkelt lägga till extra processorer.
Den primära orsaken till programvarulåsning är inte ett fel i sig, utan snarare en funktion. I en dator med flera processorer sammanlänkade är det ingen fördel med att ha flera processorer som var och en hanterar samma information. Faktum är att olika processorer som försöker modifiera en enda datakälla kan förstöra den ursprungliga posten. För att förhindra att flera enheter öppnar samma information, tillåts endast en processor åtkomst medan de återstående bearbetningskomponenterna är ”låsta” från filen.
Denna lockoutmetod är effektiv för datorer med ett lågt antal processorer. Tillvägagångssättet blir dock ett problem i enheter med ett brett utbud av sammanlänkade behandlingsenheter. Programvarulåsning begränsar kraftigt skalbarheten och effektiviteten av att lägga till flera processorer till datorer, eftersom det finns gränser för hur snabbt data kan distribueras mellan lagringsutrymme och processorerna.
Ingen maskin, inklusive en dator, är helt effektiv; denna inneboende ineffektivitet förvärras i flerprocessordatorer. En dator med sexton processorer, till exempel, kan ha en av sina processorer inaktiv hela tiden eftersom data inte kan distribueras så snabbt som behövs. Vid någon tidpunkt innebär sammansatt ineffektivitet att det inte längre är användbart att utöka antalet processorer i en dator. Att lägga till tusen processorer till ett system är värdelöst, eftersom datahastigheten är begränsad och en majoritet av de redundanta processorerna skulle ha fastnat i konstant mjukvarulåsning.
Programvarulåsning kan minimeras genom att använda ett operativsystem som är speciellt utformat för flera processorer. Specialiserad programvara kan dela upp en datakälla i många olika delar och distribuera dessa delar till processorerna. Detta tillvägagångssätt minskar behovet av att låsa ut processorer, eftersom varje enhet kan bearbeta en liten komponent av originaldata. I huvudsak ser multiprocessormjukvara till att varje processorenhet alltid har en uppgift och håller dataflödet på ett mer distribuerat och jämnt spridd sätt.