mashkov 03.08.2007 22:17
FreeBSD - изначально ядро разрабатывалось как многопроцессорное, с возможностью распределения задач между множеством процессоров, возможности работы приложений в полном защищенном режиме от сбоев в "железе" (на заре BSD сбои в "железе" имели место повсеместно).
Linux и производные - ИМХО ближе к рабочим станциям. Имеем упрощенное для понимания ядро и позволяет более простой код на совместимость. Плюсом Linux для пользователя является - простота реализации для рабочих станций.
Касаемо горячей замены диска на контроллере. Причем здесь операционная система, и боязнь замены диска при работе оной. Для операционной системы дисковый массив выглядит как просто диск, все операции работы с массивом делаются на уровне контроллера. Если контроллер позволяет без остановки на горячую менять жесткий диск в массиве, то почему нет? Например, старенький SR-150 (Infotrend) вообще, при правильной конфигурации RAID-5, в 5-ти дисковой корзине (4 диска в массив+1 на горячую замену без вмешательства, т.е подключен всегда) сам, прозрачно для пользователя проделывает операцию замены bad диска.
Давайте рассмотрим работу ОС на простых примерах.
Есть классические счеты с "косточками", для начала одни счеты – это один процессор. Есть приложения, которые умеют считать на счетах, есть пользователи которым приложения дают интерфейс допустимых манипуляций. Т.е. пользователь дергает приложение за запрограммированные рычаги, а приложение, обработав действия пользователя, щелкает по "костачкам" и возвращает результат пользователю. Конкретика. В идеологию FreeBSD изначально закладывалось возможность работа с множеством счет и с множеством пользовательских приложений, с распределением задач между счетами и более того, с отдельными планками "косточек" на счетах. В DOS (здесь - ОС) идеологии – это последовательно выполняемые обращения приложений к счетам аля "очередь за водкой". Windows и подобные, в развитии, получили защищенный режим работы с памятью. При любых операциях, необходимо выделить физически для работы приложений область памяти, причем защищенность Windows пошла по пути просто защиты от ошибок при работе с памятью. Например, сбои работы "кривых" драйверов. Это лечит от неверных операций с процессором, но не лечит от производительности, т.к. физическая память от bad приложений у Windows не освобождается, а свопится, дополнительно нагружая еще и дисковую подсистему. FreeBSD, работает иначе. Ядро системы рассматривает любые действия приложений как транзакцию с проверкой выполняемости каждого пункта в рамках логики. Ядро операционной системы FreeBSD не только имеет возможность раздавать порциями задачи счетам, а также умеет отслеживать неверные команды приложений, т.е держит в физической памяти только контрольные суммы процессов. В случае безошибочного процесса восстанавливает процесс полностью и передает свободным планкам "косточек" счет, работает с архитектурой процессора на прямую, без якобы облегчающих жизнь (кому?) наборов команд. В итоге, FreeBSD умеет использовать слабую вычислительную мощность рационально, а при достаточной вычислительной мощности показывает достаточную производительность. Словом, действительно масштабируемая ОС.
Здесь появляется интерфейс между пользователем и приложением. Графическая многооконность не значит - многозадачность. Windows пошла по проторенному пути, сначала раздача номерков в очереди, а потом деление очереди на нити (потоки). Приложения под Windows пишутся таким образом, что изначально порционно решается задача визуализации для пользователя, а скрытые процессы вычислений и полностью решение задачи выполняется в так называемом "фоновом режиме". В итоге все одно, два нехилых Зеона (Xeon) подчас решают одну задачу, скажем приложения ISA или AD. При всем этом, катастрофически забивается физическая память на предмет: неверно выполненных операций и откатов с сохранением переданных значений. Для FreeBSD все приложения равны, но FreeBSD не когда не "расскажет" какую вычислительную мощность можно пользовать приложению. Отсюда правила написания кода. Все приложения, FreeBSD обрабатывает с одинаковым приоритетом. При этом затрачивает вычислительную мощность из ходя из нужд приложения, ни когда не забывая о "соседях". И нет понятия "фонового выполнения" в ущерб "соседям". Поэтому машину под ОС FreeBSD "повесить" практически невозможно.
Я не специалист по всем UNIX системам. Пишу только за FreeBSD от BSD версии UNIX.
Henrietta