Каковы основные отличия Unix от других OS?
Unix состоит из ядра с включенными в него драйверами и из утилит
(внешних по отношению к ядру программ). Если надо изменить конфигурацию
(добавить устройство, изменить порт или прерывание), то ядро пересобирают
(перелинковывают) из обьектных модулей или (напр., во FreeBSD) из исходников.
/* Это не совсем верно. Некоторые параметры пожно поправить без пересборки.
Существуют также loadable kernel modules. */
В противоположность Unix'у Windows (если не уточняется, какая, то имеются
в виду 3.11, 95 и NT) и OS/2 при загрузке фактически на ходу прилинковывают
драйверы. При этом компактность собранного ядра и повторное использование
общего кода на порядок ниже, чем у Unix. Кроме того, при неизменной
конфигурации системы ядро Unix без переделки (потребуется изменить только
стартовую часть BIOS) может быть записан в ПЗУ и выполняться _не_загружаясь_
в ОЗУ. Компактность кода особенно важна, т.к. ядро и драйверы никогда
не покидают физическую оперативную память, не свопятся на диск.
Unix - самая многоплатформенная OS. WindowsNT пытается подражать ему,
но пока это плохо удается - после отказа от MIPS и POWER-PC, W'NT остались
всего на двух платформы - традиционная i*86 и DEC Alpha. Переносимость
программ с одной версии Unix на другую ограничена. Неаккуратно написанная
программа, не учитывающая различий в реализациях Unix, делающая необоснованные
предположения типа 'переменная integer должна занимать четыре байта' может
потребовать серьезной переделки. Но все равно это на много порядков легче,
чем например пернести с OS/2 на NT.