Если исходить из этой логики и перенять американский опыт, то в России придётся запретить импорт любой продукции, созданной транснациональными корпорациями — Боинги больше не покупаем, потому что компания Боинг производит и военную технику. В Самсунге есть подразделение, которое производит оборудование для ВПК, значит Самсунг туда же.
Если копнуть глубже и детальнее, то сложно будет найти корпорацию, которая не связана с ВПК. Ну вот может быть Apple ничего не делает для военных, и то не факт.
Хмм. Не скажу за всю китайскую кухню, но за корейскую — вполне. Из всего, что употребляют в пищу корейцы, я не смог заставить себя попробовать лишь живых осьминогов и пандеги — жареных личинок шелкопряда, которые для корейцев — как для нас семечки. Запах от приготовления пандеги способен вызвать рвоту у неподготовленного человека. Но те, кто пробовал, говорят, что на вкус они очень даже неплохие.
В остльном, корейскую кухню нужно всего-лишь распробовать и её можно даже полюбить. Например, некоторые супы поначалу вызывают опаску и кажутся неприятными на запах, но когда их распробуешь, одно лишь упоминание о них может вызвать выделение слюны, как у «собаки Павлова».
Это я к тому, что пищу, на которую «любой другой человек даже смотреть не сможет», иногда надо заставить себя попробовать и получить новые ощущения. Наша окрошка многим иностранцам тоже кажется несъедобной, но не попробовав — не полюбишь.
Ах да, раз уж сказал про корейцев, то надо упомянуть и о собаках. Вряд-ли вы увидите «собачий ресторан» в мегаполисах — они бывают только за городом или где-то в горах. Блюдо это дороге и число корейцев, пробовавших хотя бы раз собаку, пожалуй, меньше, чем число современных россиян, пробовавших хотя бы раз чёрную икру. Собачий суп — довольно дорогое «удовольствие», которое не каждый кореец себе может позволить.
Наконец, «корейская морковка», которую у нас продают повсеместно. У вас практически нет шансов найти её в Корее. Пожалуй, самая известная корейская еда — это кимчи (кимчхи) — острая маринованная пекинская капуста. Её практически всегда бесплатно подают к основному блюду.
На «первый вкус» она тоже может показаться не для европейского желудка, но однажды распробовав, её нельзя не любить.
Или, к примеру, рыба. Когда корейцам привезли в подарок сушеного леща, они обиделись, считая, что их захотели накормить «мертвечиной». В «отместку» они повели нас в ресторан, показали пальцем на рыбёшку в аквариуме, которую через 5 минут подали разделанной и… сырой. Вы ели сырую морскую рыбу, которая пять минут назад безмятежно плавала в аквариуме? Это действительно испытание для европейского желудка — поглощение в пищу существа, в клетках которого ещё теплится жизнь.
Извините за этот оффтопик, но мне кажется, Вы, уважаемый ICELedyanoj, слишком категоричны к дальневосточной кухне — она весьма питательна, полезна и, как говорят корейцы, повышает потенцию. Глядя на рост популяции дальневосточных стран, вполне можно поверить насчёт потенции.
Наконец, в порядке шутки — если от употребления ГМО пищи у меня вырастут жабры, то даже в этом можно найти что-то хорошее — можно никогда не брать нарокат акваланг. А если вырастут крылья — можно съэкономить на авиабилетах. ;-)
Если «поделитесь» самописным USB стеком, то будет очень интересно.
Что касается драйвера жесткого диска — то есть правильное место с исчерпывающей информацией — www.ata-atapi.com/ Там же можно найти проект для DOS версии Borland C, демонстрирующий различные режимы работы IDE контроллера. Для своего проекта я взял код именно оттуда, чему весьма рад.
Учёные NASA утверждают, что траектория «челябинского» метеорита значительно отличалась от траектории астероида 2012 DA14, что исключает зависимость между двумя этими объектами. Мы продолжаем собирать информацию о российском метеорите и на текущий момент имеем предварительный анализ. Метеорит на видео виден проходящим по направлению слева на право перед восходящим Солнцем, что означает, что он летел с севера на юг. Траектория астероида DA14 проходит в противоположном направлении — с юга на север.
Спасибо. Вы удовлетворили моё любопытство. Разрешите один вопрос. Какова вероятность падения крупного метеорита (аналогичного упавшему) именно в черте города? Например, исходя из площади планеты и площади города.
Летом я живу на даче и весьма часто наблюдаю ночами за звёдным небом. В некоторые дни можно наблюдать «метеоритный дождь» — вспышки различной интенсивности и продолжительности происходят с интервалом от одной до десяти минут. В подавляющем большинстве случаев — вспышки мгновенны и почти не оставляют след. Однако, очень редко попадаются довольно крупные метеоры — они оставляют яркий след, иногда даже в течение секунды. В такой момент смешиваются чувство удивления, восхищения и страха, Но ни один из этих (крупных) метеоритов никогда не долетал до горизонта.
О заграничной недвижимости Пехтина — председателя «Комитета по этике» Государственной Думы РФ. Вообще-то я живу в технической части рунета, но резонанс был очень велик — два дня в топе новостей Яндекса.
Что касается даты на видео, то раскаиваюсь — не учел, что время на регистраторе могло быть не выставлено.
Сегодня это видео было загнано в TOP на Ядексе — обсуждают все и каждый.
Посмотрите на дату — это же 31 декбаря прошлого года! Какое странное совпадение, что об этом заговорили именно сегодня, спустя полтора месяца. Наверное, это как-то связано с астероидом 2012 DA14. Да? Какова вероятность, что несколько метеоритов упадут в одном регионе? Это прям сценарий фильма «Армагеддон». Однако, ещё наши деды знали, что в одну и ту же воронку снаряд не попадает, чем и спасались при артилерийском обстреле. Кастую математиков, физиков и астрономов — какая вероятность падения двух метеоритов над Челябинском с интервалом ~45 дней?
Понимаете, к чему я клоню? Смотрели фильм «День радио» или «Хвост крутит собакой» (Wag the dog)? Один информационный повод заменяет другой информационный повод. Если вспомнить, о чём прелыдущие два дня до этого говорил рунет, то можно лишь похлопать господам, которые придумали этот информационный повод.
ну вот скажем я реализую аппаратный обмен сообщениями в ПЛИС (например, как дополнение к той же системе Amber) — это то, что Вы хотите или нет?
Возможно это то, что мы хотим. Без подробностей об этом сложно судить.
Для начала я бы предложил «уровнять в правах» регистры Fast Interrupt и регистры общего назначения. Т.е. чуть раньше сделать то, к чему рано или поздно прийдут все остальные.
Я просто пытаюсь понять коммерческий смысл в этой затее.
Запрыгнуть на поезд пораньше, чтобы занять лучшие места. :)
Переключение контекста слишком многогранное понятие. Например, можно ли считать переключением контекста вход прикладной задачи в ядро системы? Например, posix функция write, когда данные передаются ядру, это переключение контекста или нет?
В случае микроядра L4 взаимодействие любых задач происходит через обмен сообщениями. Сообщения поставлены во главу угла — системные вызовы и ответы на них, прерывания от устройств и исключения процессора — всё это сообщения. На этой базе строится абсолютно всё. Иногда это можно представить в терминах субъектного программирования — любой программный комплекс представляется в виде субъектов, которые обмениваются сообщениями.
> А как Вы видите свое аппаратное микроядро?
С точки зрения программиста — расширение системы команд какого-либо уже существующего процессора. Предоставленная выше спецификация вводит три новые команды:
захват буфера сообщения
команда обмена сообщениями
освобождение буфера сообщений
Организация работы с буфером сообщений на плечах разработчиков процессора. Если позоволяет система команд, то можно расширить количество РОН, дополнив их регистрами сообщений. Или же ввести команды для работы с регистрами сообщений.
> Для каких конкретно применений?
Планов громадьё, но в данном виде спецификация подходит лишь для микроконтроллеров. Как я уже говорил, чтобы на базе аппаратного микроядра сделать десктопную систему, понадобится решить две задачи — расширенный MMU для работы с универсальными виртуальными страницами и вытеснение задач из регистрового файла процессора в оперативную память. Таким образом конкретная область применения — встраиваемые системы.
> Или может Вы хотите, например, сделать свою PCIe плату, реализующую Ваш алгоритм для PC и заменить программный sheduler в ядре Linux?
Нет нет. В мире есть несколько проектов и команд разработчиков, пытающихся соединить Linux и микроядро L4. Даже с некотором успехом. Однако, я уверен что это не самый лучший путь — слишком разная архитектура у Linux и у микроядра. Таким образом добавляется лишь новый слой, который особых преимущест не даёт.
У меня ушло чуть более десяти лет на разработку операционной системы поверх микроядра L4 Pistachio. Собственно говоря, именно эта разработка и подтолкнула к идее, реализовать микроядро аппаратно — сначала было только желание, но несколько случайных обстоятельств подтолкнули к пониманию, как это можно реализовать в железе.
Если Вы заинтересовались — с радостью поддержу беседу и расскажу о секретах микроядра L4.
Не совсем. Описан базовый плагировщик, на основе которого можно строить различные методы планирования. Основная суть документа — обмен синхронными сообщениями между задачми. В данном случае планировщик выполняет роль функционального устройства для обмена синхронными сообщениями. Т.е. понятие «планировщик» трактуется более широко, чем в общепринятом смысле.
На текущий момент удалось формализовать приблизительно половину спецификации L4 X2 — не описан Memory Management Unit. Так же не решён вопрос вытеснения блока регистров задачи в оперативную память и обратно. Тем не менее, в текущем виде спецификация может быть использована для разработки микроконтроллеров.
Чтобы не ходить вокруг да около — вот собственно спецификация L2-X2, на основе которой мы предлагаем реализовать аппаратное микроядро — www.l4ka.org/l4ka/l4-x2-r7.pdf
Спасибо за статью! Вот если бы на пару дней раньше, то могли бы встретиться и поговорить — в прошлую пятницу я и мой компаньон были в Таганроге и общались со специалистами как раз на тему процессоров (предлагали вот такое расширение — l4os.ru/download/L4_Hard_20130119.pdf).
Раз уж мечтаете сделать свой процессор, то пожалуйста пожалуйста пожалуйста, примите во внимание мечту других разработчиков. Мы сами не потянем разработку процессора, но знаем как оптимально использовать это расширение. Если Вас заинтересовало наше расширение — будем рады сотрудничеству.
Вот вот — у меня точь в точь вопрос возник. Хотя, если внимательно прочитать статью, то можно обнаружить, что исследователи брали исходные данные не из «сырых» статей, а из "Semantic Web mirror of Wikipedia" в связке с "Large lexical database of English. Nouns, verbs, adjectives and adverbs are grouped into sets of cognitive synonyms (synsets), each expressing a distinct concept. Synsets are interlinked by means of conceptual-semantic and lexical relations " и "OpenCyc — hundreds of thousands of Cyc terms organized in a carefully designed ontology"
Имхо, очень здравая идея — решаемая задача стоúт где-то посредине между экспертной системой и искусственным интеллектом. Шаг в верном направлении.
Простите, но мне кажется, что Вы мыслите категориями ядра Linux.
Процессы версии Xameleon Concept — всё ядро в едином адресном пространстве:
Альфа версия Xamleon x64. Все драйвера в контексте «ядра», а файловая система в своём собственном процессе:
С случае микроядра L4, разработчик сам решает, в какое адресное пространство поместить задачу. Давайте не будем уводить тему в сторону сравнения монолита с микроядром.
Судя по возможностям современных x86, Интел не мучается, а двигается вперёд. Я согласен с Вами, что наследие предыдущих поколений несёт ворох проблем, но судя по всему Intel не бедствует.
> Чтобы её хотя бы догнать по этой костыльной дорожке, нужно много вложений в R&D.
С этим не спорю. В принципе, цели «догнать и перегнать» лично у меня нет. Документ родился из идеи «процессор моей мечты». Я довольно долго копался в исходниках L4Ka Pistachio и постепенно сформировалось представление, как это должно быть реализовано в кремнии.
> А в вашей системе этих регистровых файлов будет столько, сколько тасков. Сложность управления этим хозяйством возрастает на порядок.
Я честно сказал об этом в конце документа и предположил, что когда-нибудь появится версия документа, описывающая вытеснение задач в динамическое ОЗУ. Пока идея не сформировалась, но может быть именно вот этот наш диалог подкинет какие либо мысли. Это большая инженерная задача.
Однако, утверждаю, что на основе сообщений L4 всё ядро, вместе с драйверами, можно поместить в одну задачу. Для этого пришлось бы передалать существующую реализацию Хамелеона, но если возникнет необходимость. то вопрос вполне решаемый.
Если говорить о L4 Pistachio, то его авторы ввели универсальные страницы так же и для регионов I/O, Имхо, отдельное адресное пространство для портов ввода/вывода — устаревший подход. Идея отображения регистров устройств ввода/вывода в основное адресное пространство более перспективна.
Защита в L4 основывается на универсальных виртуальных страницах, по сути универсальная виртуальная страница это регион памяти, выравненный на размер минимальной страницы, младшие биты адреса используются для описания размера страницы по формуле MINMAL_PAGE_SIZE * (2 ^ N), где N это и есть младшие биты адреса страницы.
Я выше ответил qxfusion об адресных пространствах. По большому счёту микроядру нет разницы, происходит ли обмен сообщениями между задачами в одном адресном пространстве или в разных. Если обменивающиеся сообщениями задачи имеют общую таблицу страниц, то переключение адресного пространства не происходит.
Я понимаю Вашу озабоченность о быстродействии, но всегда приходится искать компромисс между быстродействием и защидённостью. Для тех, кто ищет, спецификация L4-X2 предоставляет очень гибкий и мощный набор примитивов, позволяющий организовать различные схемы взаимодействия задач. Начиная от «все задачи, включая ядро и драйвера, в одином адресном пространстве» и заканчивая «каждому потоку своё адресное пространство» — всё в руках разработчика.
Защита в микроядре L4 построена на основе адресных пространств. Представьте себе микроконтроллер без MMU — он имеет одно адресное пространство, в котором виртуальные адреса соответствуют физическим. Мы вот сейчас обсуждаем переключение адресных пространств, которые ещё не описаны.
С точки зрения текущей версии документа — адресное пространство лишь один внутренний регистр, привязанный к TCB. В случае передачи сообщения между задачами, чьи адресные пространства одинаковы, оверхеда на переключение контекста нет по определению.
Теперь об исполнении в конексте ядра и в userspace. Поскольку (с точки зрения микроядра) нить от процесса отличается лишь одним регистром, то можно написать драйвер таким образом, что его можно запустить как в одном адресном пространстве с «ядром», так и в выделенном адресном пространстве — с точки зрения микроядра они лишь отличаются ссылкой на таблицу страниц.
Вы волнуетесь о быстродействии, однако в терминах L4 можно описать прикладную программу, протокол и драйвер в одном адресном пространстве. Переключений страниц в этой схеме не будет вообще.
Если принять во внимание коммутацию, то с точки зрения исполнительного устройства — всё же абстракция.
Причём, коммутация это не обязательно физическое назначение контактов. В общем случае это может быть внутренний регистр, который используется для адресации TCB относительно начала большого регистрового файла. С этой точки зрения, согласитесь, регистр общего назначения — это абстракция.
Я специально не стал описывать методы коммутации, чтобы не связывать руки разработчикам, решившим добавить такой модуль к какому либо процессору.
> Все хорошо, Вы спроектировали систему и… в ней нету процессов? Тут у Вас выбор 1 из 2 — (1) консолидировать несколько процессов в один, что черевато или (2) 1 процесс = 1 процессу в ядре, для примера — посмотрите тот-же nginx
Процесс в ядре для каждого пользовательского процесса это самое жуткое применение микроядра. Компании, которые использовали этот способ в своём ядре, уже сошли с дистанции.
Сейчас моден другой подход — создавать один процесс-обработчик системных вызовов, который раскидывает запросы между обработчиками. Этот подход более оптимален и наиболее распространён в нынешнее время. Чем лучше реализация, тем выше отзывчивость системы.
> В этом и проблема — L4 синхронно, следовательно с новыми процессорами будут проблемы и сложность — если Вы слышали про SMP например…
Наоборот, простота и отсутствие архитектурных ограничений. Что касается SMP, то этой возможности посвящена небольшая глава в документе.
Если копнуть глубже и детальнее, то сложно будет найти корпорацию, которая не связана с ВПК. Ну вот может быть Apple ничего не делает для военных, и то не факт.
В остльном, корейскую кухню нужно всего-лишь распробовать и её можно даже полюбить. Например, некоторые супы поначалу вызывают опаску и кажутся неприятными на запах, но когда их распробуешь, одно лишь упоминание о них может вызвать выделение слюны, как у «собаки Павлова».
Это я к тому, что пищу, на которую «любой другой человек даже смотреть не сможет», иногда надо заставить себя попробовать и получить новые ощущения. Наша окрошка многим иностранцам тоже кажется несъедобной, но не попробовав — не полюбишь.
Ах да, раз уж сказал про корейцев, то надо упомянуть и о собаках. Вряд-ли вы увидите «собачий ресторан» в мегаполисах — они бывают только за городом или где-то в горах. Блюдо это дороге и число корейцев, пробовавших хотя бы раз собаку, пожалуй, меньше, чем число современных россиян, пробовавших хотя бы раз чёрную икру. Собачий суп — довольно дорогое «удовольствие», которое не каждый кореец себе может позволить.
Наконец, «корейская морковка», которую у нас продают повсеместно. У вас практически нет шансов найти её в Корее. Пожалуй, самая известная корейская еда — это кимчи (кимчхи) — острая маринованная пекинская капуста. Её практически всегда бесплатно подают к основному блюду.
На «первый вкус» она тоже может показаться не для европейского желудка, но однажды распробовав, её нельзя не любить.
Или, к примеру, рыба. Когда корейцам привезли в подарок сушеного леща, они обиделись, считая, что их захотели накормить «мертвечиной». В «отместку» они повели нас в ресторан, показали пальцем на рыбёшку в аквариуме, которую через 5 минут подали разделанной и… сырой. Вы ели сырую морскую рыбу, которая пять минут назад безмятежно плавала в аквариуме? Это действительно испытание для европейского желудка — поглощение в пищу существа, в клетках которого ещё теплится жизнь.
Извините за этот оффтопик, но мне кажется, Вы, уважаемый ICELedyanoj, слишком категоричны к дальневосточной кухне — она весьма питательна, полезна и, как говорят корейцы, повышает потенцию. Глядя на рост популяции дальневосточных стран, вполне можно поверить насчёт потенции.
Наконец, в порядке шутки — если от употребления ГМО пищи у меня вырастут жабры, то даже в этом можно найти что-то хорошее — можно никогда не брать нарокат акваланг. А если вырастут крылья — можно съэкономить на авиабилетах. ;-)
Что касается драйвера жесткого диска — то есть правильное место с исчерпывающей информацией — www.ata-atapi.com/ Там же можно найти проект для DOS версии Borland C, демонстрирующий различные режимы работы IDE контроллера. Для своего проекта я взял код именно оттуда, чему весьма рад.
Источник: www.nasa.gov/topics/solarsystem/features/asteroidflyby.html
Летом я живу на даче и весьма часто наблюдаю ночами за звёдным небом. В некоторые дни можно наблюдать «метеоритный дождь» — вспышки различной интенсивности и продолжительности происходят с интервалом от одной до десяти минут. В подавляющем большинстве случаев — вспышки мгновенны и почти не оставляют след. Однако, очень редко попадаются довольно крупные метеоры — они оставляют яркий след, иногда даже в течение секунды. В такой момент смешиваются чувство удивления, восхищения и страха, Но ни один из этих (крупных) метеоритов никогда не долетал до горизонта.
Что касается даты на видео, то раскаиваюсь — не учел, что время на регистраторе могло быть не выставлено.
Посмотрите на дату — это же 31 декбаря прошлого года! Какое странное совпадение, что об этом заговорили именно сегодня, спустя полтора месяца. Наверное, это как-то связано с астероидом 2012 DA14. Да? Какова вероятность, что несколько метеоритов упадут в одном регионе? Это прям сценарий фильма «Армагеддон». Однако, ещё наши деды знали, что в одну и ту же воронку снаряд не попадает, чем и спасались при артилерийском обстреле. Кастую математиков, физиков и астрономов — какая вероятность падения двух метеоритов над Челябинском с интервалом ~45 дней?
Понимаете, к чему я клоню? Смотрели фильм «День радио» или «Хвост крутит собакой» (Wag the dog)? Один информационный повод заменяет другой информационный повод. Если вспомнить, о чём прелыдущие два дня до этого говорил рунет, то можно лишь похлопать господам, которые придумали этот информационный повод.
Возможно это то, что мы хотим. Без подробностей об этом сложно судить.
Для начала я бы предложил «уровнять в правах» регистры Fast Interrupt и регистры общего назначения. Т.е. чуть раньше сделать то, к чему рано или поздно прийдут все остальные.
Запрыгнуть на поезд пораньше, чтобы занять лучшие места. :)
В случае микроядра L4 взаимодействие любых задач происходит через обмен сообщениями. Сообщения поставлены во главу угла — системные вызовы и ответы на них, прерывания от устройств и исключения процессора — всё это сообщения. На этой базе строится абсолютно всё. Иногда это можно представить в терминах субъектного программирования — любой программный комплекс представляется в виде субъектов, которые обмениваются сообщениями.
> А как Вы видите свое аппаратное микроядро?
С точки зрения программиста — расширение системы команд какого-либо уже существующего процессора. Предоставленная выше спецификация вводит три новые команды:
Организация работы с буфером сообщений на плечах разработчиков процессора. Если позоволяет система команд, то можно расширить количество РОН, дополнив их регистрами сообщений. Или же ввести команды для работы с регистрами сообщений.
> Для каких конкретно применений?
Планов громадьё, но в данном виде спецификация подходит лишь для микроконтроллеров. Как я уже говорил, чтобы на базе аппаратного микроядра сделать десктопную систему, понадобится решить две задачи — расширенный MMU для работы с универсальными виртуальными страницами и вытеснение задач из регистрового файла процессора в оперативную память. Таким образом конкретная область применения — встраиваемые системы.
> Или может Вы хотите, например, сделать свою PCIe плату, реализующую Ваш алгоритм для PC и заменить программный sheduler в ядре Linux?
Нет нет. В мире есть несколько проектов и команд разработчиков, пытающихся соединить Linux и микроядро L4. Даже с некотором успехом. Однако, я уверен что это не самый лучший путь — слишком разная архитектура у Linux и у микроядра. Таким образом добавляется лишь новый слой, который особых преимущест не даёт.
У меня ушло чуть более десяти лет на разработку операционной системы поверх микроядра L4 Pistachio. Собственно говоря, именно эта разработка и подтолкнула к идее, реализовать микроядро аппаратно — сначала было только желание, но несколько случайных обстоятельств подтолкнули к пониманию, как это можно реализовать в железе.
Если Вы заинтересовались — с радостью поддержу беседу и расскажу о секретах микроядра L4.
На текущий момент удалось формализовать приблизительно половину спецификации L4 X2 — не описан Memory Management Unit. Так же не решён вопрос вытеснения блока регистров задачи в оперативную память и обратно. Тем не менее, в текущем виде спецификация может быть использована для разработки микроконтроллеров.
Чтобы не ходить вокруг да около — вот собственно спецификация L2-X2, на основе которой мы предлагаем реализовать аппаратное микроядро — www.l4ka.org/l4ka/l4-x2-r7.pdf
Раз уж мечтаете сделать свой процессор, то пожалуйста пожалуйста пожалуйста, примите во внимание мечту других разработчиков. Мы сами не потянем разработку процессора, но знаем как оптимально использовать это расширение. Если Вас заинтересовало наше расширение — будем рады сотрудничеству.
Имхо, очень здравая идея — решаемая задача стоúт где-то посредине между экспертной системой и искусственным интеллектом. Шаг в верном направлении.
Процессы версии Xameleon Concept — всё ядро в едином адресном пространстве:
Альфа версия Xamleon x64. Все драйвера в контексте «ядра», а файловая система в своём собственном процессе:
С случае микроядра L4, разработчик сам решает, в какое адресное пространство поместить задачу. Давайте не будем уводить тему в сторону сравнения монолита с микроядром.
> Чтобы её хотя бы догнать по этой костыльной дорожке, нужно много вложений в R&D.
С этим не спорю. В принципе, цели «догнать и перегнать» лично у меня нет. Документ родился из идеи «процессор моей мечты». Я довольно долго копался в исходниках L4Ka Pistachio и постепенно сформировалось представление, как это должно быть реализовано в кремнии.
> А в вашей системе этих регистровых файлов будет столько, сколько тасков. Сложность управления этим хозяйством возрастает на порядок.
Я честно сказал об этом в конце документа и предположил, что когда-нибудь появится версия документа, описывающая вытеснение задач в динамическое ОЗУ. Пока идея не сформировалась, но может быть именно вот этот наш диалог подкинет какие либо мысли. Это большая инженерная задача.
Однако, утверждаю, что на основе сообщений L4 всё ядро, вместе с драйверами, можно поместить в одну задачу. Для этого пришлось бы передалать существующую реализацию Хамелеона, но если возникнет необходимость. то вопрос вполне решаемый.
Защита в L4 основывается на универсальных виртуальных страницах, по сути универсальная виртуальная страница это регион памяти, выравненный на размер минимальной страницы, младшие биты адреса используются для описания размера страницы по формуле MINMAL_PAGE_SIZE * (2 ^ N), где N это и есть младшие биты адреса страницы.
Я выше ответил qxfusion об адресных пространствах. По большому счёту микроядру нет разницы, происходит ли обмен сообщениями между задачами в одном адресном пространстве или в разных. Если обменивающиеся сообщениями задачи имеют общую таблицу страниц, то переключение адресного пространства не происходит.
Я понимаю Вашу озабоченность о быстродействии, но всегда приходится искать компромисс между быстродействием и защидённостью. Для тех, кто ищет, спецификация L4-X2 предоставляет очень гибкий и мощный набор примитивов, позволяющий организовать различные схемы взаимодействия задач. Начиная от «все задачи, включая ядро и драйвера, в одином адресном пространстве» и заканчивая «каждому потоку своё адресное пространство» — всё в руках разработчика.
С точки зрения текущей версии документа — адресное пространство лишь один внутренний регистр, привязанный к TCB. В случае передачи сообщения между задачами, чьи адресные пространства одинаковы, оверхеда на переключение контекста нет по определению.
Теперь об исполнении в конексте ядра и в userspace. Поскольку (с точки зрения микроядра) нить от процесса отличается лишь одним регистром, то можно написать драйвер таким образом, что его можно запустить как в одном адресном пространстве с «ядром», так и в выделенном адресном пространстве — с точки зрения микроядра они лишь отличаются ссылкой на таблицу страниц.
Вы волнуетесь о быстродействии, однако в терминах L4 можно описать прикладную программу, протокол и драйвер в одном адресном пространстве. Переключений страниц в этой схеме не будет вообще.
Причём, коммутация это не обязательно физическое назначение контактов. В общем случае это может быть внутренний регистр, который используется для адресации TCB относительно начала большого регистрового файла. С этой точки зрения, согласитесь, регистр общего назначения — это абстракция.
Я специально не стал описывать методы коммутации, чтобы не связывать руки разработчикам, решившим добавить такой модуль к какому либо процессору.
Они могут использоваться в какой либо реализации микроядра, но лишь для того, чтобы реализовать ABI.
Процесс в ядре для каждого пользовательского процесса это самое жуткое применение микроядра. Компании, которые использовали этот способ в своём ядре, уже сошли с дистанции.
Сейчас моден другой подход — создавать один процесс-обработчик системных вызовов, который раскидывает запросы между обработчиками. Этот подход более оптимален и наиболее распространён в нынешнее время. Чем лучше реализация, тем выше отзывчивость системы.
> В этом и проблема — L4 синхронно, следовательно с новыми процессорами будут проблемы и сложность — если Вы слышали про SMP например…
Наоборот, простота и отсутствие архитектурных ограничений. Что касается SMP, то этой возможности посвящена небольшая глава в документе.