Доброе время суток! У меня возник вопрос и решил написать в эту часть форума... а вопрос состоит так: Как Вы думаете какой тип ядер лутчшый: монолитное, микроядро,гибрид,екзоядро или модульное??? Ответ пожалуста с коментариями. Зарание всём благодарен!.
AntiB никакой - есть +/- везде: монолитное наиболее просто в реализации и стало быть имеет большую вероятность устойчивой работы; многоядерность позволяет лучше использовать возможности мультипроцных систем и в случае сбоя одного ядра можно перераспределить работу на другие.
UbIvItS извиняюсь - может Вы не поняли к чему что - это к ОС (тоесть ядро ОС), если я всё верно понял вы о процессорах пишете
UbIvItS или я Вас не понимаю или Вы меня, я говорю про абстракное ядро, тоесть просто о архитектуре - без железа.
AntiB уберите из моих слов слово проц и Вы получите предложение об абстрактной оси. ответьте мне, пожалуйста, зачем нужна многоядерность оси и Вы ответите сами себе.
имхо, микроядро 1. возрастет надежность системы (чем меньше привилегированного кода, тем меньше количество возможных фатальных ошибок, которые приводят к краху системы) 2. модифицируемость (чем меньше связность отдельных модулей, тем более они модифицируемы независимо друг от друга) 3. более легкая отладка и тестирование системы 4. гибкость (нужная функциональность добавляется без затрагивания ядра) 5. портируемость (чем меньше ядро, тем меньше затраты по его переносу на другие платформы) из минусов, пожалуй, относительно невысокое быстродействие однако на современных процессорах это будет не столь заметно, если вообще заметно
rei3er У меня вопрос насчет надежности от вражески настроеного юзера (хакеров), на скока защищонное поведение драйверов и других частей ОС что находиться в ринг-3 ???
по определению, ринг-3 код не может убить систему а если может - в топку такую систему отсюда надежность микроядра
щас пишу свою ОС (не спрашивайте зачем): там реализовано микроядро с небольшими признаками гибрида. Вот )
rei3er А зачем убивать - например драйвер хдд, берет и наглым образом уничтожает даные с хдд, кому тогда ета система нужна? если я не ошибаюсь - то получить доступ может любая программа, если ОС даст добро, тоесть написал я прогу которая используя один из протоколв - и записую всё мусором - и капец Вашым даным! Такой вариант возможен в микроядре??? и еще чтобы запрещать программа доступ к портам нужно использовать tss (переключение которого - длинее програмного). могу и ошибаться Great и как Вы сделали переключения задачами и защиту от выше наведенного примера?
тогда нужно идти по примеру мс - делать верификацию драйверов, и только верифицированным драйверам давать вохможность заргузиться.
n0name ага, они ничего этим хорошо не сделали - наоборот навредили, так как их защита обходиться в "два клика"
и система умрет только родившись. МС вбухала большие деньги чтоб верифицировали. Можно закрыть драйвера, но это тоже плохое решение. Вообще говоря 100% защиты на драйверном уровне получить невозможно в принципе. В микроядре есть то достоинство, что когда появится идея как скажем защититься, можно будет ее воплотить без тотальной переписки/пересборки. Да и нет прямой зависимости между микоядром и тормозами. В реалтайм системах где чаще всего применяются микроядра тормоза появляются из-за заточености на как можно более быстрое начало обработки события.
"идти по примеру", и "полностью передирать систему" несколько различные понятия. Если правильно реализовать верификацию то такое обойти технически будет невозможно. гм, я не думал что предполагается писать ось-конкурент винде/nix'ам. Следует различать оси по критериям популярности/защищенности. Если нужна популярная ось - это одно, защищенная - другое.
Непопулярная ось как некрасивая женщина, автоматом защищена 100%. Да только жить долго не будет - пока вы интерес к ней не потеряете.
AntiB > Вы думаете какой тип ядер лутчшый: > монолитное, микроядро,гибрид,екзоядро или модульное??? если бы лучший тип был, остальные бы уже вымерли монолитное ядро на десткопе будет сосать, потому как включить в него драйвера под все железо - это можно сдохнуть сразу, а вот для встриваемых систем - самое то. монолитное ядро не нуждается в создании унифицированного интерфейса для работы с драйвером, да и понятие драйвера там вообще нет, что еще больше упрощает программирование. микроядро - ну в теории хорошо, а на практике... только на спец-железе. тут даже монитор виртуальных машин для аппаратной виртуализации на микроядро не тянет, это выходит уже целая ось ;( защищенность микроядер - легенда. упадет у тебя драйвер fs и вместе с ним весь дисковый том - что делать будем?! управление памятью в современных ЦП столь сложно, что в микроядро просто не лезет и проситься чтобы его вынесли в отдельный драйвер. ок, выносим. а теперь думаем - а что будет, если этот драйвер упадет? и мы останемся без памяти ;( плюс механизмы быстрого перехода между кольцами в x86 появились лишь недавно, да все равно они тормозят, а без них микроядро нереализуешь,т.к. если драйвера работают в том же кольце, что и микроядро, они могут порушить его... гибридные ядра - они тоже разные бывают. вот у NT какое ядро? хреновое у него ядро, хотя и гибрид. исключение в одном драйвере ложит всю систему, ms до сих пор ленится проанализировать в обработчике kebugcheckex - какая вероятность критических разрушений системы и если она равна нулю (например, как в случае int *p=0; return *p - нафига останавливать всю систему?! ну а вообще все это просто треп и словоблудие. предпочительный тип ядра определяется поставленной задачей и даже неоптимальное ядро может быть популярным в силу разных причин...
kaspersky Логика в Ваших мыслях есть. Лично я думаю что лутче использовать гибрид... тока нужно выбрать к чему он больше будет ити, к монолитам или к микроядре. Если Вы считаете что монолит на десктопах будет , а микроядро только на спец железе хорошо, тогда нарываеться вопрос - что тогда по Вашему мнению использовать? Гибрид? или всё же чётко ити к конкретной концепции?