Lumber room
Comments 43
0
вставьте тег после абзаца, прочев который можно будет определить сабж топика. (обычно первый-второй абзац)
+1
Меня мысли о своей ОС не посещали.
ОС с нуля в наше время — это утопия.
-6
ну почему же? достаточно взять 40 тысяч обезъян и заставить их писать новую ось.
Есть подозрение, что именно так поступила Microsoft. Во всяком случае, ее операционки примерно такого качества. Хотя есть тенденция, с каждой новой системой, получается все лучше и лучше. Наверно фактор времени сработал :)
+1
в этом сообщении была доля юмора
но к сожалению и доля правды
да, не люблю windows и некоторые продукты от Microsoft
знаю, что большинство из вас — вендузятники
и тем не менее не боюсь сказать.
есть личный опыт сопровождения парка машин(пользовательских) на linux(debian) и windows xp. извините, но больше «трахов» было именно с виндами и ее составляющими. Отдельное фи Microsoft Outlook!
0
прямо такой классический линуксовый абзац у вас получился =) ну и про аутлук конечно же не забыли, может быть раскажете про его «фи»?
+1
Во-первых это неплохая практика, особенно для системного программиста. Желание написать что-то не обязательно означает «получить конечный продукт и продать», есть ещё написание в целях самообразования.

Под «ОС с нуля» вы видимо понимаете десктопную ОС? Потому как ОС для небольшой встраиваемой системы может начинаться от нескольки страниц кода.
UFO landed and left these words here
0
Это все бессмысленные споры о семантике. Windows NT и Mac OS X (вроде как тоже претендующие на микроядерность) тоже кучу драйверов в Ring0 держат.

Да, можно изобретать определения, которые позволят называть Linux монолитным, а другие, правильные ядра — микроядерными, но для меня с практической точки зрения гораздо важнее реакция на сбои в драйверах — ведь это всеми фанатами микроядер поднимается всегда на флаг, правда? С тех пор как Linux и другие Unix'ы обзавелись модулями и возможность динамоческой загрузки драйверов перестала быть чем-то, о чём можно шуметь на всех перекрёстках? Linux зачастую ведёт себя лучше чем Windows или MacOS X.
-1
A microkernel is a minimal computer operating system kernel which, in its purest form, provides no operating-system services at all, only the mechanisms needed to implement such services, such as low-level address space management, thread management, and inter-process communication (IPC). If the hardware has a kernelmode-usermode distinction, the microkernel is the only part of the system executing in a kernel mode. The actual operating-system services are provided by «user-mode» servers. These include device drivers, protocol stacks, file systems and user-interface code.

// WIKI

Взгляните повнимательнее на Mach и L4 и Вы поймёте, что возможность выгружать драйверы — это возможность выгружать драйверы. А микроядро — это нечто большее.
0
Взгляните на реально существующие системы и вы поймёте что ни Windows NT ни MacOS X (которую вы вроде как отнесли с микроядерным) ни даже Minix 2 (от одного небезизвестного апологета микроядер) не удовлетворяют вашему определению. Остаются разве что QNX и Minix3. То есть нишевые операционки. Неизвестно — можно ли на микроядре сделать что-то с разумной поддержкой, скажем, современных видеокарт (попытки держать драйвера видео вне ядра в Linux приводят к куче проблем и от них постепенно отказываются). И, главное, неясно: стоит ли за это бороться?
0
Microsoft по крайней мере пытается.
Сейчас замена графического драйвера может быть произведена без перезапуская обычных оконных приложений Windows и заметна только благодаря полсекундному мельканию экрана.
+1
на практике Linux и Windows используют монолитные ядра. Почему? Их проще реализовать.

Да нет же :-) Простота\сложность здесь не имеют никакого отношения. Единственная основная причина — это скорость, которая достигается за счет меньшего кол-ва переключения режимов из user-mode в kernel. Именно из-за этого, когда-то давным давно, в микро-ядро WinNT вошел целый модуль отвечающий за ввод\вывод и видео систему. (сейчас WinNT только с натяжкой можно называть микро-ядром).

Даже если почитать про Сингулярити, то первое что заявляют разработчики — это о полном пренебрежении скоростью, в целях сфокусироваться на других задачах. Что же касается сложности, то я даже предполажу что реализовать микро-ядро даже проще чем монолитное с точки зрения отладки и общей организации. Ну а вообще, делить системы только на два типа в данный момент довольно грубо. Сейчас их классификация значительно расширилась: Exokernel, Hybrid kernel, Monolithic kernel, Modular kernel. Почитайте последние издания Эндрю Таненбаума, он как раз об этом пишет.

Еще, если интересно, можете почитать перепеску между молодым Линусом и Таненбаумом 1992 года. Забавно смотреть как Линус, будучи студентом, с ошибками в английском спорит с Андрю. Можно почитать здесь

-2
Во-первых, переписка немного не в тему.
А во-вторых, среди PDFок о Singularity как раз есть одна, где рассматриваются преимущетва программной защиты процессов перед аппаратной и делается ставка на скорость. Там же есть сравнительные таблицы.
0
>>Во-первых, переписка немного не в тему

Наверное я тогда просто не понял смысл твоего поста, мне почему-то показалось что ты написал про операционные системы, про монолитные и микро ядра а так же свое желание поучаствовать в одном из проекте. Наверное действительно переписка студента Линуса, твоего ровесника, который в то время работал над подобным проектом, не относится к данному разговору. Я лишь предположил что это может быть интересно, увы — мимо.

>>А во-вторых, среди PDFок о Singularity как раз есть одна

Вполне допускаю что где-то на одной из пдф-ок сказано о производительности в каких-то случаях, но я бы тебе посоветовал почитать про переключения контекстов и про посылки сообщений, чтобы самому разобраться в этих понятиях. Может быть тогда ты не будешь думать о причинах монолитных ядрах в контексте «Их проще реализовать»
0
Обязательно нужно писать уточнение «Их проще реализовать быстрыми»?
0
Совсем нет, просто я считал что тебе будет интересно узнать о неточностях в твоем тексте. Как надо _обязательно_ писать и в каком стиле — это уже только твое дело. Наше дело прокомментировать текст и высказать свое мнение :-)
0
Кстати, обратите внимание на Распределенные Операционные системы и на их проблемы с которыми сталкиваются разработчики. Может быть тогда вы немного отвлечетесь от «сборщика мусора» и от «разработки с самого низкого уровня». Я даже предполагаю, что Сингулярити на самом деле — это лишь часть большого проекта. Только представьте — система которая состоит из множества подсистем, которые предоставляют разного рода мета-данные не только о запущенных программах, но и о своих внутренных процессах? Иди сделать распределенный менеджер памяти, скедулер и многое другое. Да, сейчас кое что из этого есть, но все далеко от идеала…
0
А я именно их и имел в виду, возможность сделать из них настоящую Distributed System на основе, скажем, Сингулярити если это возможно.

Писать свою операционную систему с нуля и расчитывать на успех — это утопия. За исключением, конечно, лично интереса, но я бы поучаствовал в существующих проектах — там набраться опыта, работая со многими другими людьми, быстрее.
0
Думаю существенно распределённую систему можно построить и на основе имеющихся ОС.
Здесь ни управляемый код, ни микроядерность ничего не даст, т. к. мы не можем быть уверены, что по ту сторону витой пары — корректная система. По крайней мере пока.
0
Ну я же говорил что стоит почитать Андрю :-)

>>«мы не можем быть уверены»

Так именно это и есть одна из многих задач современной Distributed системы. Между прочим если придумаешь как все сделать круто — доктора получишь. Говорю же — почитай про задачи, которые должна решать современная Distributed система, а потом еще раз прочитай про Операционные системы и можешь писать еще один пост. Просто мне кажется что у тебя не совсем ясное представление и об распределенных системах.
UFO landed and left these words here
0
Собственно это и будет исследовательский проект. Очень надеюсь, что смогу по этой теме написать курсовую или даже диплом в итоге.
UFO landed and left these words here
+1
Не очень корректно называть Windows NT монолитом.
Скорее, это классический пример т. н. гибридного ядра (http://en.wikipedia.org/wiki/Hybrid_kernel).

По первоначальной идее, Windows NT включила в ядро помимо обмена сообщениями только ввод-вывод (NT executive) как самую критичную часть, а многие важные функции были вынесены в режим пользователя (подсистемы LSA, Session Manager и т. д.).

В Windows 3.1 — 3.51 вне ядра также находились GDI и подсистема User32 (т. е. собственно «окошки»).
Они было выполнены по совершенно классической модели сервера, который принимает сообщения от других процессов — в общем, микроядро микроядром.

Уже позже (в Windows NT 4.0) перенесли т. н. подсистему Win32 в ядро, прежде всего, из соображений производительности.

Именно этот, гибридный подход (в ring0 находится ядро и драйвера устройств, критичных для производительности, а все остальное выносится в отдельный процессы) сейчас можно считать доминирующим в мейнстриме. Во всяком случае, Windows NT, Linux, Mac OS X/Darwin построены именно так, с большим уклоном в сторону микроядра (Darwin) или монолита (Linux).

А в «высокой науке» некоторое время были модны ультрамалые ядра вроде L4.
0
В статье про гибриды, на которую дана ссылка, отмечается, что этот термин некоторыми воспринимается как маркетинговый ход.
Я вхожу в их число.
0
Гм, мне кажется, что Windows NT не рекламировалась как система с «гибридным» ядром. Это вообще какое-то не рекламное слово.
А вообще — реальные производственные решение, как мне кажется, редко описываются одним словом.
Четко «монолит» или четко «микро-ядро» такого не об одном ядре сказать нельзя.
Что для вас признак микроядра? Что должно быть вынесено из ядра, чтобы можно было четко — сказать «микроядро»?
0
Я могу чётко сказать, что это монолит, т. к. драйверы работают в режиме ядра.
0
Драйвер аудио — теперь нет.
Драйвера принтера — очень часто и до этого.
И т. д.
0
А в Mac OS X (напоминаю, там Mach) — драйвера тоже в режиме ядра.
Mach не микроядро?
0
Именно так.

Собственно, я не ставлю себе цель разработать ОС.
Ядра и нескольких служб будет достаточно.
0
А что ты представляешь под ядром-то? Менеджер памяти? Paging? IO? IPC? Скедуллер? понятие _процесса_? Resource Manager? Критические секции, dead-lockи и. т. д… Что из этого списка ты бы хотел реализовать? :-) Про знание платформы в деталях даже не спрашиваю :)
0
Менеджер памяти, IPC, планировщик, средства синхронизации и HAL.
0
О, у нас с вами очень похожие интересы. Я написал рабочий прототип виртуальной машины (кодогенерация на lLVM), и понял, что дальше его развивать не имеет смысла без низкоуровневой почвы под ногами. Вот сейчас занялся изучением микроядра L4.
0
ILVM?
Какой виртуальной машины?
Я тоже смотрел в сторону L4, но, если им пользоваться, потеряется возможность использовать общее адресное пространство, разделённое между процессами благодаря защите на основе языка. Т.е. придётся делать переключение контекстов.
0
> ILVM?
Очепятка, LLVM (писал лёжа с айпадом).

> Какой виртуальной машины?
Своей собственной, см. github.com/ababo/AntOS

> Я тоже смотрел в сторону L4, но, если им пользоваться, потеряется возможность использовать общее адресное пространство, разделённое между процессами благодаря защите на основе языка. Т.е. придётся делать переключение контекстов.

Согласен с тем, что часть преимуществ единого адресного пространства теряется (придётся иногда переключаться в ядро). Однако число переключений можно минимизировать (как-никак, все сервисы и драйверы будут в том же адресном пространтсве, кроме того взаимодействие потоков внутри одного адресного пространство через локальные IPC существенно ускорены). В замен получаем унифицированный и переносимый интерфейс на основе синхронных IPC, базовый кастомизируемый планировщик и кучу других плюшек.
Only those users with full accounts are able to leave comments. , please.