O blocare software este o problemă de computer care poate apărea în sistemele multiprocesor. Această blocare poate duce la o scădere dramatică a performanței unui computer și poate împiedica utilizarea capacității suplimentare de procesor. În computerele moderne cu multiprocesor, software-ul special al sistemului de operare trebuie utilizat pentru a evita defecțiunea de blocare a software-ului.
Apariția blocării software a fost descrisă pentru prima dată de omul de știință IBM™ Stuart Madnick în 1968. În această etapă timpurie a istoriei computerelor, Madnick a prezis că calculatoarele personale vor deveni mai mici și mai puțin costisitoare în următoarele decenii, dar vor continua să fie limitate la aproximativ aceleași viteze de transfer de date. Această predicție s-a dovedit a fi în mare parte corectă, iar puterea utilă a computerelor este adesea crescută prin simpla adăugare de procesoare suplimentare.
Cauza principală a blocării software-ului nu este o eroare în sine, ci mai degrabă o caracteristică. Într-un computer cu mai multe procesoare legate între ele, nu există niciun avantaj în a avea mai multe procesoare care manipulează fiecare aceeași informație. De fapt, diferite procesoare care încearcă fiecare să modifice o singură sursă de date pot deteriora înregistrarea originală. Pentru a împiedica mai multe unități să deschidă aceleași informații, doar unui procesor i se permite accesul, în timp ce componentele de procesare rămase sunt „blocate” din fișier.
Această metodă de blocare este eficientă pentru computerele cu un număr redus de procesoare. Abordarea devine totuși o problemă în dispozitivele cu o gamă largă de unități de procesare legate. Blocarea software-ului limitează sever scalabilitatea și eficacitatea adăugării mai multor procesoare la computere, deoarece există limite la cât de repede pot fi distribuite datele între spațiul de stocare și procesoare.
Nicio mașină, inclusiv un computer, nu este complet eficientă; această ineficiență inerentă se agravează în computerele multiprocesor. Un computer cu șaisprezece procesoare, de exemplu, ar putea avea unul dintre procesoarele lui inactiv în orice moment, deoarece datele nu pot fi distribuite atât de repede cât este necesar. La un moment dat, ineficiența compusă înseamnă că nu mai este utilă extinderea numărului de procesoare dintr-un computer. Adăugarea a o mie de procesoare la un sistem este inutilă, deoarece viteza datelor este limitată și majoritatea procesoarelor redundante ar fi blocate constant în software-ul.
Blocarea software-ului poate fi minimizată prin utilizarea unui sistem de operare care este special conceput pentru mai multe procesoare. Software-ul specializat este capabil să spargă o sursă de date în mai multe bucăți diferite și să distribuie aceste părți către procesoare. Această abordare reduce necesitatea de a bloca procesoarele, deoarece fiecare unitate poate procesa o mică componentă a datelor originale. În esență, software-ul multiprocesor se asigură că fiecare unitate de procesare are întotdeauna o sarcină și păstrează fluxul de date într-un mod mai distribuit și mai uniform dispersat.