06 сентября 2023 г.
ПК на диете. Или что вам на самом деле нужно от ОС.
…
Современные операционные системы непринужденно потребляют гигабайты ОЗУ, перманентно согревая карманы и помещения циклами процессора своим несметным числом фоновых процессов. macOS, например, очень любит разбирать ваши фотографии из iCloud, размечая на них лица. Android сканирует Wi-Fi сети вокруг вас и считает шаги. iOS слушает ваше "Привет, Сири", которое звучит дважды после покупки iPhone и более никогда. На носимых устройствах для поедания ресурсов есть естественный ограничитель — батарея, поэтому iOS просто запрещает фоновую работу большинства приложений, Android также всячески противится. Но на десктопных и серверных ОС ограничений нет — электричество бесконечное и бесплатное, а значит можно счастливо высаживать в ноль батарею вашего ноутбука.
Но что из того, что происходит за кадром, действительно нужно именно вам, как пользователю? Когда ресурсов гора, дела никому нет, а мне выпала прекрасная возможность разобраться в вопросе, превращая компьютер за 20$ в рабочую машину.
Встречайте красавца — Raspberry Pi Zero 2 W. Процессор Arm Cortex-A53, 4 ядра, 1 ГГц и 512 Мб ОЗУ, наравне с Wi-Fi, HDMI и Bluetooth дерзко возвращают нас во времена больших деревьев, когда сопоставимой мощности коробка не влезала не только в часовой карман джинсов, но разве что в багажник авто. Подключаем монитор, мышь и клавиатуру, накатываем Raspberry Pi OS, загружаемся, открываем Google Chrome и наблюдаем полное молчание в радиоэфире. В смысле вообще, он просто не открывается. Смотрим на свободную память и выясняем, что наша красивая, как Renault Logan, ОС только что заняла порядка 50% ОЗУ, а то и больше. И современный браузер вдруг отказывается открывать сайт размером в 50 Мб в сжатом виде при свободных 200 Мб ОЗУ. Он даже интерфейс свой загрузить в это не способен.
Меняем дистрибутив на диетический (DietPi), и о чудо — жалкие 30 секунд и искомый сайт открыт! Визуально не поменялось приблизительно ничего, а машинка дело сделала.
Выясняем, что наша ОС похудела в своих памятных ожиданиях до жалких 119 Мб. И для меня, как пользователя, не изменилось ничего. Кроме работоспособности нужного софта.
Ну так и что мне правда нужно, чтобы тыкать мышкой в браузер?
Давайте разберем процессы незамутненной лишним ОС — только самое необходимое лично вам.
На примере Linux. И в слегка ограниченном числе, без совсем уж низкоуровневых, где нужно 2 тома академических прочитать для начала. Для Windows, macOS, iOS, Android, QNX, FreeBSD, NeXTSTEP, Solaris, OS/400 и любых прочих фактически отличаться будут лишь названия, а смысл и назначение останется тем же.
Начнем с процессов суперпользователя, то есть самой ОС, без них у нас ничего не получится:
init— координирует процесс загрузки и конфигурации окружения для пользователя, мать драконов и отец всех прочих процессовsshd— сервер для удаленных подключений к ОС по SSHrngd— демон для заполнения энтропией генератора псевдослучайных чисел, то есть собиратор всякого мусора со всех железных устройств ПК, чтобы случайные числа в системе были более, ну, случайнымиcron— планировщик задач, запускает всякое по расписанию, например отправить в Google все собранные по вам данные за последнюю минутуpolkitd— контролёр привилегий процессов, когда черни нужно пообщаться со старшими, вместо аудиенции с оными предоставит писчего, бересту и курьерский сервис для доставки мессаджа, проще говоря — когда процессу нужны ресурсы, не даёт их целиком, а чутко следит за их использованиемbluetoothd— когда мышкой делаем тык-тык, доставляет тык-тык до нашей странички, а ещё регулярно теряет эту мышку и снова находит, но чаще первоеhciattach— подключает последовательные асинхронные приемо-передатчики к стеку Bluetooth, фактически физический протокол передачи данных от железа к ОС и обвязка к немуdhclient— DHCP клиент, нижайше просит дать роутер нам адресок какой, чтоб в сети были видные, самостоятельные и от других компьютеров всякое интересное получатьsystemd-udevd— менеджер железа, управляет подключениями к ОС разных клавиатур, флешек, принтеров, джойстиков и всего, что в компьютер воткнуть можно без молоткаsystemd-logind— вас тут много, а он один, и следит, чтоб каждому юзеру выдали консоль, процессов пачку и чтоб обиженным никто не ушел, а ещё следит за нажатием кнопки ВЫКЛ.systemd-journald— хранитель логов, сшивает вашу коллекцию Playboy, любовные письма, события ядра и прочее происходящее с системойlogin— стоит у ворот, тыкает алебардой в вас и спрашивает, кто такой, чего желаешь, и открывает ворота при правильном паролеdbus-daemon --system— менеджер системы доставки сообщений между процессами,--systemчасть занимается особо важными, мол новую флешку занесли, товарищ ядро, чего делать будем?
Вышеперечисленное нужно с виду самому ядру, но нам в том числе, иначе Bluetooth, мышка с клавой и сеть админить придется руками, а вы так быстро не сумеете.
Теперь лично наши процессы:
top— спонсор нашего текста, собирает и выводит информацию о запущенных в системе процессахsystemd --user— отвечает за все пользовательские подкапотные процессы, например включить вам Steam при запуске ОС, или перезапустить торрент-клиент, если его кто убилdbus-daemon --session— вышеназванный менеджер системы доставки сообщений, но уже для пользовательских приложений, мол товарищ телеграм, там у нас вайфай отвалился с концами, уведомляю, всего доброго, хорошего настроенияsd-pam— сложная система проверки прав на методы (не спрашивайте, правда сложная)bash— хранит доисторические мемы про патчинг KDE2 под FreeBSD, а также командный интерпретатор UNIX — место, где можно команды разные компьютеру давать с клавиатурыstartx— входная точка, запускающая нам курсор мыши и дающая дальше включить менеджер окон, панельки, часики и прочее на экран не в режиме 80x25 символовxinit— скрипт для непосредственного запуска менеджера окон, рисования панелек, часиков и прочего на экранlxqt-session— запуск сессии GUI для пользователя, грузит не просто панельку, а именно вашу, любовно настроенную панельку с часамиssh-agent— хранилище разных ключей и паролейopenbox— менеджер окошек, чтобы мышкой можно было туда-сюда двигать наш браузерlxterminal— окошко, в котором будет запущен bashlxqt-policykit-agent— агент аутентификации для фреймворка обработки привилегий процессов внутри LXQt (потерпите, мы уже заканчиваем)xorg— великая и ужасная оконная система Linux, используемая для построения графического интерфейса пользователя
И всё! Неужели в самом деле всё — спросит меня читатель, внимательно ознакомившийся со всем списком гаек и болтов Линукса, ничего не проскроллив и не забив на этот список все возможные огромные болты. В самом деле всё — отвечает ему писатель.
А как же распознавание лиц на фотографиях из облака? А где отправка телеметрии в Microsoft? А что передаст товарищу майору метаданные моих взаимоотношений с миром? Кто же будет выдавать подключенным к моему хотспоту пользователям IP адреса? Кто будет искать горячих пользователей Интернета, желающих пообщаться рядом со мной?
А вот и занятный факт. На самом деле, чтобы вы могли двигать мышкой по экрану, смотреть на бегущее время и запустить Google Chrome, вашей ОС нужно в современном мире порядка 128 Мб, да и то на небольшой зоопарк подключенного всеми способами железа. А куда запущенная винда съела ещё 6 Гб сверху — вопросы к Microsoft, Apple, Google и Спортлото.
P.S. Работать на Raspberry Pi в качестве десктопа и правда можно, что очень отрадно и достойно для компьютера размером с половину банковской карты и ценой в 3 шаурмы. Но современный мир уже привык к тому, что сайт можно сделать размером в 100 Мб, а клиент для чатиков сделать прямо в браузере вместо написания нативного приложения, поэтому приходится в конце вздохнуть, и сесть обратно за ноутбук, на котором в шестьдесят четыре раза больше памяти, и на котором сайтик с твитами откроется пошустрее.