Многопроцессорные системы

В последние годы потребности в обмене информацией и ресурсами привели к ши­рокому распространению связанных систем вычислительных машин, которые называются сетями (networks, или net). Сегодня большие машины, которые об­служивают много пользователей, уступили место множеству небольших машин, объединенных в сеть, с помощью которой пользователи коллективно используют ресурсы, такие как пакеты прикладных программ и средства хранения данных. Примером может служить Интернет (Internet).

Проблемы управления, которые возникают при разработке сетей, очень похо­жи на проблемы, возникающие при создании операционных систем. И на самом деле, программное обеспечение, которое управляет работой сети, можно рассмат­ривать как операционную систему сети. В этом свете разработка программного обеспечения для сети является естественным продолжением создания операци­онных систем. В то время как ранние сети представляли собой слабосвязанные отдельные машины, каждая из которых находилась под контролем своей соб­ственной операционной системы, сегодня разработка сетей направлена на созда­ние сетевых систем, в которых ресурсы сети совместно используются задачами, связанными с этой сетью. Этим ресурсам также приписаны задания в соответ­ствии с потребностями сети, независимо от их физического местоположения. На­пример, система доменных имен, которая используется в Интернете. Эта система позволяет множеству машин, разбро­санных по всему миру, переводить адреса Интернета из мнемонической формы, понятной человеку, в цифровую, совместимую с сетью.

Сети являются только одним из примеров многопроцессорного проектирова­ния, которое влечет за собой разработку новых операционных систем. В то время как сети представляют собой многопроцессорные системы, объединяющие ма­шины, каждая из которых может содержать только один центральный процессор, другие многопроцессорные системы представляют собой отдельные компьюте­ры, содержащие несколько процессоров. Операционная система для такой маши­ны должна не только координировать разные действия, выполняемые одновре­менно, но еще и контролировать назначение заданий процессорам машины. Этот процесс включает в себя выравнивание нагрузки (load balancing) — динамическое распределение задач различных заданий между процессорами для их эффектив­ного использования, и масштабирование (scaling) — разбиение задания на не­сколько подзаданий в соответствии с числом доступных процессоров.