Инженер Microsoft рассказал, как создавал Диспетчер задач Windows размером всего 80 КБ
Дэйв Пламмер, ветеран Microsoft и создатель многих знаковых функций Windows, включая поддержку ZIP-архивов, в своём видео на YouTube раскрыл секреты разработки Диспетчера задач. По его словам, современная версия утилиты «весит» около 4 МБ, а оригинал, который он написал в 1990-х годах, занимал всего 80 КБ.
Главной задачей Пламмера было создать инструмент для спасения системы, который оставался бы отзывчивым даже тогда, когда всё остальное зависло. «Каждая строка имеет свою цену; каждое выделение памяти оставляет следы. Каждая зависимость — это сосед по комнате, который ест твою еду и никогда не платит за аренду», — пояснил инженер. — «И поэтому, когда я писал Диспетчер задач, я не подходил к нему как к современной утилите, где ты начинаешь с фреймворка, добавляешь девять слоёв комфорта, шесть слоёв защиты от будущего, а потом удивляешься, почему эта штука жрёт 800 МБ и требует мотивационной речи, чтобы отобразить несколько цифр».
Одна из любимых функций Пламмера — умный механизм запуска. В отличие от других приложений, которые просто проверяют, запущен ли уже экземпляр, Диспетчер задач отправляет существующему экземпляру приватное сообщение и ждёт ответа. Если ответа нет, он считает, что предыдущий экземпляр «упал», и запускает новый, чтобы помочь пользователю выйти из ступора системы.
Для экономии ресурсов инженер загружал часто используемые строки в глобальные переменные один раз, а редкие функции (например, извлечение док-станции) подгружались только по необходимости. Дерево процессов строилось эффективно: утилита запрашивала у ядра всю таблицу процессов сразу, а не опрашивала программы по одной, что сокращало количество вызовов API.
Ограничения вычислительной мощности компьютеров 90-х заставили Пламмера сделать Диспетчер задач максимально «тощим». «Диспетчер задач родился из совершенно иного мышления. Он пришёл из мира, где страничный сбой можно было почувствовать, где состояние нехватки памяти имело странный запах, где если ты заставлял неправильную вещь перерисовываться слишком часто, ты буквально слышал, как парни в офисах стонут», — вспоминает он. — «И хотя я абсолютно не хочу возвращаться к тому старому железу, я всё же жалею, что мы сохранили больше от того подхода. Не страданий, а вкуса — инстинкта группировать задачи, кэшировать правильные вещи, пропускать невидимую работу, сравнивать перед перерисовкой, спрашивать ядро один раз вместо ста, редко загружать редкие данные, быть подозрительным к удобству, когда удобство выставляет счёт пользователю».
Источник: Tomshardware.com







0 комментариев