Мультипроцессорная обработка – это такая организация вычислительного процесса в мультипроцессорной системе, при которой несколько задача (процессов, потоков) одновременно выполняются на разных процессорах.
Первые попытки мультипроцессорной обработки предпринимались с середины 50-х годов. Однако, в то время стоимость каждого процессора была настолько велика, а организация собственно многопроцессорной обработки настолько сложна, что предпринимались эти попытки в основном для повышения надежности некоторых систем, например, таких как ядерные реакторы.
Теперь все иначе: использование многопроцессорных систем для создания видеоэффектов известно уже давно, а настольные мультипроцессорные вычислительные системы – реальность сегодняшнего дня. Распространению многопроцессорных систем способствует также выпуск ведущими производителями многоядерных процессоров (в последней игровой консоли от фирмы Sony использован 9-ядерный процессор).
Следует различать мультипроцессорную и мультипрограммную обработку. В мультипрограммных системах возможна параллельная работа различных внешних устройств, обрабатывающих заявки различных программ, но центральный процессор в каждый момент времени обрабатывает лишь одну программу. То есть, мультипрограммная обработка – это последовательная обработка процессором различных программ, которая лишь кажется одновременной. В мультипроцессорной системе различные задачи обрабатываются на различных процессорах, и происходит это на самом деле одновременно. Так что мультипрограммная и мультипроцессорная обработка – это различные термины, которые могут относиться, как к одной и той же системе, так и к различным.
При мультипроцессорной обработке существенно усложняется управление ресурсами, так как основная часть ресурсов системы является общей для всех процессоров и, соответственно, планировать и распределять ресурсы приходится для нескольких процессоров. Конечно, в некоторых системах каждый процессор (или каждое ядро) имеет свой кэш, но это – лишь малая часть ресурсов, которыми приходится управлять.
При наличии нескольких процессоров или ядер возрастает количество конфликтов, возникающих при обращении к совместно используемым ресурсам и программам. При этом существенно увеличивается вероятность возникновения различного рода блокировок, возникающих при обращении к одним и тем же ресурсам. Для разрешения возникающих проблем операционная система должна тщательнее планировать и распределять ресурсы между процессами и программами. Она должна также минимизировать взаимозависимости между одновременно выполняемыми задачами, а также между частями самой операционной системы.