Penguncian perangkat lunak adalah masalah komputer yang dapat terjadi pada sistem multiprosesor. Lockout ini dapat menyebabkan kinerja komputer turun drastis, dan mencegah penggunaan kemampuan prosesor tambahan. Dalam komputer multiprosesor modern, perangkat lunak sistem operasi khusus harus digunakan untuk menghindari malfungsi penguncian perangkat lunak.
Terjadinya penguncian perangkat lunak pertama kali dijelaskan oleh ilmuwan IBM™ Stuart Madnick pada tahun 1968. Pada tahap awal dalam sejarah komputer ini, Madnick memperkirakan bahwa komputer pribadi akan menjadi lebih kecil dan lebih murah selama beberapa dekade berikutnya, tetapi akan terus terbatas pada kira-kira kecepatan transfer data yang sama. Prediksi ini terbukti sebagian besar benar, dan kekuatan komputer yang berguna sering kali ditingkatkan hanya dengan menambahkan prosesor tambahan.
Penyebab utama penguncian perangkat lunak bukanlah kesalahan semata, melainkan fitur. Dalam komputer dengan beberapa prosesor yang dihubungkan bersama, tidak ada keuntungan memiliki beberapa prosesor yang masing-masing menangani bagian informasi yang sama. Faktanya, prosesor yang berbeda masing-masing mencoba untuk memodifikasi satu sumber data dapat merusak catatan asli. Untuk mencegah beberapa unit membuka informasi yang sama, hanya satu prosesor yang diizinkan mengakses sementara komponen pemrosesan lainnya “dikunci” dari file.
Metode penguncian ini efektif untuk komputer dengan jumlah prosesor yang rendah. Pendekatan menjadi masalah, bagaimanapun, di perangkat dengan berbagai unit pemrosesan yang terhubung. Penguncian perangkat lunak sangat membatasi skalabilitas dan efektivitas penambahan beberapa prosesor ke komputer, karena ada batasan seberapa cepat data dapat didistribusikan antara ruang penyimpanan dan prosesor.
Tidak ada mesin, termasuk komputer, yang sepenuhnya efisien; inefisiensi yang melekat ini menjadi diperparah dalam komputer multiprosesor. Sebuah komputer dengan enam belas prosesor, misalnya, mungkin memiliki salah satu prosesor yang menganggur setiap saat karena data tidak dapat didistribusikan secepat yang dibutuhkan. Pada titik tertentu, inefisiensi majemuk berarti tidak lagi berguna untuk menambah jumlah prosesor di komputer. Menambahkan seribu prosesor ke sistem tidak berguna, karena kecepatan data terbatas dan sebagian besar prosesor yang berlebihan akan terjebak dalam penguncian perangkat lunak yang konstan.
Penguncian perangkat lunak dapat diminimalkan dengan menggunakan sistem operasi yang dirancang khusus untuk beberapa prosesor. Perangkat lunak khusus mampu memecah sumber data menjadi banyak bagian yang berbeda, dan mendistribusikan bagian-bagian ini ke prosesor. Pendekatan ini mengurangi kebutuhan untuk mengunci prosesor, karena setiap unit dapat memproses komponen kecil dari data asli. Pada dasarnya, perangkat lunak multiprosesor memastikan bahwa setiap unit pemrosesan selalu memiliki tugas, dan menjaga data mengalir dengan cara yang lebih terdistribusi dan merata.