"Дмитрий Завалишин. Об ОС. Продолжение." - читать интересную книгу автораПродолжаем разговор c Карлсон. Разговор о том, как строились операционные системы последние
несколько десятков лет :-). Про десятки я подзагнул - в древность совсем уж лезть не хочется, но доля правды в том есть - от древнего ДОС ЕС современные модерновые оски не так уж и ускакали, увы. Концептуально, по крайней мере. Нынешняя мэйнстрим-ОС являет собой арену, на которой встречаются несколько классов неравноправных бойцов. Обобщая, можно назвать ядро, драйверы, разделяемые библиотеки и процессы. (Процессы - это то, что исполняет задачи. Например, вы сейчас читаете эту страничку броузером, а броузер исполняется в рамках собственного процесса.) В разных ОС по-разному называют эти компоненты, но суть мало меняется от того,что в Юниксе это называется "разделяемая библиотека", а в полуосе и windows - динамически подгружаемая. Все то же самое. Среди драйверов тоже встречаются некоторые различия. Так, в некоторых юниксах существуют подгружаемые модули ядра вообще, а драйверы - в частности. В OS/2 кроме драйверов есть менеджеры устройств по классам - CD-ROM-ы, диски, SCSI, ASPI... В NT драйверы могут делиться на обобщенный драйвер рода устройств (например, CD-writer-ы) и минидрайвер конкретного вида (модели). Можно долго обсуждать плюсы и минусы отдельных подходов, но, как, надеюсь, будет видно дальше, это не имеет смысла. Чем отличается драйвер от ядра, процесс от драйвера а DLL от процесса? Ну вот, например, у DLL-я нет своего контекста исполнения. Что такое контекст исполнения? "Да вас это не колышет, товарищ лейтенант!" c анекдот. Ну, вкратце, процесс имеет свой поток управления, свои открытые файлы, свои системные хендлы, окна, семафоры и прочее тряхозвоние, а DLL - только чужие. Вот видите - я же существовать сущности (DLL), котороая отличается от другой только отсутствием части прав и возможностей. Возьмем драйвер. Чем он отличается от братьев? Тем же поражением в правах, что и DLL, плюс еще живет на хлебах у ядра, и обладает доступом к аппаратуре. То есть тот же процесс, только допущеный к святым местам и слегка урезанный. Кто мешал сделать то, что делает драйвер, с помощью обычного процесса? Да никто - ответили апологеты микроядерных ОС, и создали новый мир. В нем, как я уже писал, было мелкое и ничего не умеющее ядро, и активно общающиеся процессы. Единым росчерком пера дизайнера вся эта кунсткамера была уничтожена и на свет явилась архитектура "клиент-сервер" во всем великолепии своей простоты. Нет DLL-ей, нет подсистем, нет драйверов - есть только процесс, который хочет и процесс, который может. Первый - клиент, обращается ко второму за услугой. Второй ее исполняет и возвращает результат. Все просто и красиво. А если реализовать с умом - то и ужасно хорошо интегрируется со всяческими сетями. Ибо клиенту все равно, в общем, где его сервер - тут, или в Актюбинске. Лишь бы запрос ушел и ответ вернулся. На получившееся посмотрели ценители объектной ориентированности и... прониклись. Потому, что в результате вышла ОО ОС. Если правильно проектировать, конечно. Что нетривиально. Ибо практическим воплощением идеи микроядра занялись Юниксоиды, обладающие в осостроении наибольшей социальной активностью. А юниксоиды что строить не начнут - все одно выходит юникс. Даже напильник не спасает. |
|
|