среда, 16 июня 2010 г.

Архитектурные диверсии Unix

Unix был бы прекрасной операционной системой, если бы не множество архитектурных диверсий, повлиявших на него.

К ним можно причислить следующие вещи:

1. Система сокетов. Система сокетов не вписывается в идеологию Unix "всё есть файл", т.к. для создания сокетов используются дополнительные системные вызовы. Можно сказать, что сокеты существуют параллельно с файлами, в чём-то даже пересекаясь с ними, но тем не менее не становясь от этого файлами в полном смысле.

2. Графическая система X. Основана на всё тех же сокетах. Предоставляет к устройствам типа клавиатуры, мыши и дисплея не файловый, а всё тот же доступ через сокеты, систему событий и собственную клиентскую библиотеку.

3. Файловая система устройств. Как ни странно, но эта архитектурная диверсия была создана самими авторами Unix. В чём заключаются претензии к файловой системе устройств? А претензии всё те же - файловая система устройств существует как бы отдельно от простой файловой системы, лишь пересекаясь с ней. Нельзя создать новое устройство на файловой системе устройств тем же образом, каким создаётся файл.

Эти три архитектурных диверсии привели в конечном итоге к тому, что для того, чтобы вывести звук на другой компьютер, стало необходимо придумывать, например, звуковые серверы (NAS, PulseAudio). Для доступа к блочным устройствам стало необходимо придумывать различные специальные протоколы (iSCSI, AoE - ATA Over Eternet). Для доступа к учётным данным были придуманы NIS, LDAP, Kerberos. Для обмена файлами - HTTP, FTP, SMTP, POP3, IMAP. Для удалённого вызова процедур и взаимодействия объектов - RPC, CORBA, COM.

А ведь для доступа к любому устройству (звуковому устройству, графической плате, дисковому устройству, клавиатуре, мыши) по сети или просто для обмена информацией с другой системой можно было бы использовать единый интерфейс - интерфейс файловой системы. Протоколы бы от этого никуда не делись бы, но количество необходимых библиотек для работы по каждому протоколу стало бы гораздо меньше: достаточно было бы одного API доступа к файлам.

Авторы Unix поняли это слишком поздно. Когда они представили миру свою Plan 9, Unix уже оказался "достаточно хорош". То есть, с помощью уже имеющейся системы можно было решать большинство практических задач.

Архитектурные диверсии в Unix продолжаются и сейчас. Среди них можно назвать следующие:

1. Отрисовка шрифтов на стороне X-клиента. Стало невозможно использовать единый сервер шрифтов группой машин.

2. Игнорирование протокола XDMCP некоторыми Display Manager'ами, например slim.

3. Реестр. Вы уж простите, но это именно реестр. Настройки среды Gnome хранятся не в файлах, а в отдельном хранилище, доступ к которому осуществляется использованием специальной библиотеки через специальный демон.

4. Наличие HAL, управляющего правами доступа к устройствам и представляющее иерархию устройств в своём собственном виде,

5. API для доступа к файлам, продвигаемое Gnome. Программы, получающие доступ к файлам на дисках посредством этого API, похоже даже не монтируют диск в терминах Unix.

6. DRI - Direct Rendering Infrastructure. Эта штука позволяет рисовать на экране минуя X-сервер. С одной стороны, она кажется необходимой, т.к. протокол X - сетевой и поэтому непозволительно понижает производительность рисования на экране. А с другой стороны кажется этой самой диверсией, поскольку не позволяет программе, пользующейся DRI, обращаться единообразно к экрану локального компьютера и сетевого компьютера.

В настоящее время очарование Unix в значительной мере утрачено. Ныне это не та компактная стройная система, каковой она была с рождения. Сейчас практически любой Unix является нагромождением нелепостей в не меньшей мере, чем, например, Windows.

Комментариев нет:

Отправить комментарий