Содержание
Дэйв Пламмер, ветеран Microsoft и автор нескольких знаковых функций Windows, рассказал, что оригинальный Windows Task Manager занимал всего 80 КБ. По его словам, сегодняшняя версия диспетчера задач разрослась примерно до 4 МБ, а тогда утилиту специально делали максимально лёгкой, чтобы она оставалась отзывчивой на железе 90-х.
Пламмер пояснил логику просто: диспетчер задач — инструмент «последней надежды». Он должен работать быстро даже тогда, когда система уже подвисла и ресурсы на исходе.
Почему 80 КБ были принципиальны для ПК 90-х
Пламмер говорит, что подход к разработке был другим: «Every line has a cost; every allocation can leave footprints. Every dependency is a roommate that eats your food and never pays rent». В пересказе это про дисциплину: каждая строка кода и каждая зависимость увеличивают аппетит программы и цену для пользователя.
Он противопоставляет это «современному» стилю, когда разработчик берёт фреймворк, добавляет слои «комфорта» и удивляется, что утилита начинает потреблять сотни мегабайт ради пары цифр на экране.
Трюк с запуском: Task Manager проверял, не зависла ли копия
Одна из любимых деталей Пламмера — то, как Task Manager обрабатывал повторный запуск. Многие приложения просто проверяют, запущен ли уже процесс, и активируют окно.
Оригинальный диспетчер задач шёл дальше. Он отправлял уже запущенному экземпляру приватное сообщение и ждал ответ. Если ответ приходил, значит, копия жива и можно просто переключиться на неё. Если в ответ тишина, утилита считала, что тот экземпляр тоже «залип», и запускала новый, чтобы вытащить пользователя из зависшего состояния.
Как экономили ресурсы: кэш строк, ленивые функции и запросы к ядру
- Строки интерфейса: часто используемые строки грузились в глобальные переменные один раз, а не запрашивались повторно.
- Редкие функции: редко нужные возможности (например, сценарии вроде «ejecting a docked PC») подгружались только при необходимости.
- Дерево процессов: вместо опроса программ по одной утилита запрашивала у ядра всю таблицу процессов целиком, сокращая число API-вызовов.
- Буфер под таблицу: если буфер оказывался мал, Task Manager увеличивал его и повторял запрос.
В итоге диспетчер задач оставался быстрым даже на системах, которые уже «сыпались» по памяти или зависали по вводу.
Пламмер описывает ту эпоху образно: тогда «page fault was something you felt», а неправильная перерисовка интерфейса слишком часто ощущалась буквально физически. И добавляет, что возвращаться к старому железу он не хочет, но скучает по «вкусу» оптимизации: батчить работу, кэшировать нужное, не делать невидимую работу, диффать перед перерисовкой и реже дёргать ядро.
Цифры из его рассказа звучат как маркер времени: 80 КБ у первой версии Task Manager против 4 МБ у текущей.