Отзывчивость системы - приоритет для пользователей

Дейв Проберт, архитектор ядра операционной системы Windows, считает, что настало время пересмотреть базовую архитектуру современных операционных систем, основанную на параллельных вычислениях с помощью нескольких ядер. По его мнению, необходимо пересмотреть систему базовых абстракций, на которых основана работа ОС.

Проберт считает, что современные компьютеры не используют возможности многоядерных систем на полную мощность. "Почему при всех этих параллельных аппаратных вычислениях нам до сих пор приходится ждать, когда компьютер завершит какую-то операцию?" - спрашивает он.

В своей речи в Иллинойском университете специалист объяснил, как должна выглядеть современная операционная система, если создавать ее полностью с нуля. По его мнению, такая система очень сильно отличалась бы от привычных для всех Windows и Linux.

Типичный современный настольный компьютер воспроизводит несколько программ одновременно: например, можно работать в интернете и слушать музыку. По мнению Проберта, ключевым фактором является "отзывчивость" системы. Он задает вопрос: "Как операционной системе определить, какая задача более приоритетна?". Никто не хочет ждать, когда запустится Microsoft Word просто потому, что антивирусная программа решила начать в этот момент сканирование файлов.

В большинстве ОС есть функции приоритета, но они неэффективны и пока не решают всех проблем. Корень проблемы - неэффективное использование многоядерной архитектуры. Ключ к ее решению - совершенствование параллельных вычислений, считает эксперт. Нужно научиться правильно использовать возможности ядер, а не просто механически их увеличивать.

На заре компьютеров одна программа работала на одном процессоре. Со временем появилась многозадачность, и процессорное время стали делить на несколько частей для разных программ: создавалась иллюзия, что каждая программа выполняется на собственном процессоре. При многозадачном режиме операционной системе необходимо защищенное пространство, изолированное от пользователя и других программ. Так появились режим ядра и режим пользователя, ставшие, по сути, абстракциями двух разных процессоров.

Однако при такой системе, по словам Проберта, возникает проблема: как определить, какому "виртуальному" процессору выделять ресурсы процессора реального? От постоянного переключения между виртуальными процессорами страдает отзывчивость системы, и особенно эта проблема усугубляется, когда реальных процессорных ядер несколько.

Эксперт полагает, что в современной операционной системе нужно полностью отказаться от таких абстракций, как режимы ядра и пользователя. "Когда ядер много, процессоры могут снова стать процессорами, - говорит он. - Если их достаточно, то можно выделять их отдельным программам".

При такой модели операционная система выполняет роль прослойки между виртуальной машиной и реальными аппаратными компонентами. Программы возьмут на себя функции распределения ресурсов. ОС будет назначать для программы процессор и какой-то объем памяти, после чего программа уже сама на основе метаданных компилятора будет решать, как воспользоваться этими ресурсами.

Проберт признался, что этот подход очень сложен для тестирования, поскольку для него нужно написать много программного обеспечения. Однако, по его мнению, результаты этой работы стоят приложенных усилий.

©  @Astera