All streams
Search
Write a publication
Pull to refresh
82
0
Алексей Мандрыкин @alman

Пользователь

Send message
Упс. Алексей, я по невнимательности не заметил, что ты автор статьи. Знаешь, когда речь идёт об операционных системах (а я считаю, операционная система и есть платформа), то становлюсь немного невменяемым. Эх, рано ты тему поднял, я бы попиарил Хамелеона, а сейчас новая сборка не готова.
Люди, которые хотят сделать Linux национальной операционной системой, достойны газовой камеры порицания.

Я люблю и использую Linux с 1997 года, но это не повод, чтобы назвать его национальной операционной системой. Я могу понять, если бы финны позвали Торвальдса домой и признали Linux национальным. И то, с большой натяжкой — там кода от самого Линуса не более 10% — патчи присылают люди (и компании) со всего мира. Но когда этот самый Linux называют национальной российской платформой, моя рука автоматически тянется к пистолету.

Вспомните рассказ про Левшу, который подковал блоху. Повод для гордости? А то, что блоха была механическая и умела танцевать, это в расчёт не берётся. Т.е. получается что гвоздик выковать сложнее, чем сделать _механическое устройство_, заводимое ключом и способное танцевать. Ну-ну. Тьфу, только настроение испортилось. Нации, которые были в составе СССР, смогли запустить первого человека в космос, но не смогли осилить написание операционной системы и всего её составляющего. И сейчас никто из «братских народов» не осилил эту задачу.

Интересно, из всех отметившихся в этой теме, включая автора, хоть один человек написал хоть один полноценный драйвер какой-либо устройства для какой-либо операционной системы?

Спасибо. Я тоже склоняюсь к такому мнению. Тем более, если будет реализация select в двух местах, то при необходимости не составит особо труда написать обвязку для смешивания.

Пожалуй, мне понадобится некоторое время на реализацию хотя бы в сетевом сервисе.
С функцией sеlect очень удобно писать сетевые программы. Многие вещи упрощаются — из одного процесса и потока можно обслуживать несколько сокетов. Например, классический FTP сервер форкается при каждом новом соединении, при этом управляющий канал и канал данных обслуживаются через select — всё красиво и просто. Что даёт? Например, при посылке или приёме большого файла, вы можете послать по управляющему каналу команду ABORT.

Неиспользование select, это не доблесть, а ограничение — в Хамелеоне не реализован системный вызов select — ни в сетевой подсистеме, ни в файловой. Он поэтому и не реализован, потому что по стандарту этот системный вызов может принимать как дескрипторы файлов, так и дескрипторы сокетов, но вот беда — в отличие от монолитных, в микроядерных системах сетевой сервис и файловый сервис могут быть совершенно разными независимыми процессами. Более того, в какой либо конфигурации может не быть сетевой системы, а в другой конфигурации может не быть файловой. По логике — нужно писать отдельный диспетчер для select и других вызовов, с другой стороны не хочется плодить лишние сущности. И пока чаша весом не перевесила ни в одну сторону, было сказано: «Хрен с ним, пусть пока работает без select».

Тот самый. Уважаемый gribozavr не затрудняясь сломал сервер и вытянул его исходный код. В приватном сообщении он рассказал, каким образом удалось сломать — я ему очень за это благодарен — мне урок, ему почёт и уважение.

Таки мне есть чем возразить на велосипед с квадратными колёсами. Много Вы знаете FTP серверов для POSIX систем, не использующих функцию select()?

Появление этого «велосипеда с квадратными колёсами» объяснить очень просто — мне было необходимо отлаживать TCP/IP стек, а для такой задача FTP протокол подходит как нельзя лучше — во первых, протокол подразумевает как исходящие, так и входящие TCP соединения, во вторых, можно передавать большие объёмы информации в обе стороны. Лучшего теста для TCP/IP стека не придумаешь. При том, что существуют десятки, если не сотни, FTP клиентов для различных платформ. Можно ли придумать лучший тест? И это с учётом того, что мой велосипед «заточен» именно под отладку TCP/IP стека — пишет тонны отладочной информации в stdout и stderr.
Т.ч. я бы не был на Вашем месте столь категоричен. :)

Простите, кажется уже второй раз отвечаю мимо комментария — не со злым умыслом, а по спешке и невнимательности. Мне, право, неудобно за свою неуклюжесть.

Для удовлетворения собственного любопытства, разумеется. Читать, изучать, отлаживать, взламывать, улучшать, специализировать, генерализировать и т.д. Код — не роскошь.

Я Вас хорошо понимаю, но прошу понять и меня. Я потратил лучшие годы своей жизни на проект — ночи за компьютером, скандалы и развод с первой супругой, отказ от выгодных предложений работы (в том числе в заграничных компаниях). И всё это для того, чтобы мог заниматься любимым делом и верить, что рано или поздно проект даст плоды. Сейчас, когда Linux похоронил несколько коммерческих операционных систем, его путь повторить невозможно — место занято.

Это вдвойне странно, учитывая что есть другие реализации L4, открытые и свободные, взгляните на эту табличку.

Дык, Хамелеон построен сверху Pistachio, а Pistachio распространяется под Two Clause BSD license. Но я Вам так скажу, насколько бы прекрасно не было Pistachio (а это микроядро прекрасно), его спецификация ещё лучше: www.l4ka.org/l4ka/l4-x2-r7.pdf — это одна из лучших спецификаций, с которыми мне приходилось сталкиваться за всю карьеру разработчика.
И вот под какой лицензией она распространяется:

Permission to copy and distribute verbatim copies of this specification in any medium for any purpose without fee or royalty is hereby granted. No right to
create modifications or derivates is granted by this license. The L4Ka Team may make changes to this specification at any time, without notice. The latest
revision of this document is available at l4ka.org/.

No modifications nor derivates

Его лицензия противоречива: я встрою сервис в виде исходного кода в свой пакет и буду распространять исходные коды своего пакета. Зачем вы изобретаете велосипед на ровном месте?

Легко. Вы можете встраивать сервис под любой лицензией, если она прямо не запрещает использовать продукт совместно с Хамелеоном. Хоть под MS EULA, если EULA этого не запрещает.

Закрадывается подозрение что и в исходном коде вашего продукта водятся подобные велосипеды.

Хмм. Ядро (которое поверх микроядра и ниже userspace) уже превысило 100 тыс. строк. Вероятно, там есть и велосипеды, и баги, и светлые идеи, а также максимально оптимизированные места соседствуют с кодом, написанным «на авось» и «потом переделаю». Меня радует уже то, что когда писал libc, хватило ума не изобретать велосипед, а обратиться к стандарту POSIX. Т.ч. насчёт велосипедов — я не согласен.

Помимо этого Хамелеон использует несколько оригинальных алгоритмов, которые назвать велосипедом — язык не поворачивается. Например, L4 позволяет аллокировать страницы виртуальной памяти с размером, отличным от размера страниц поддерживаемым архитектурой процессора. Грех было этим не воспользоваться и не написать свою реализацию работы с памятью. Насколько я знаком со внутренней архитектурой Linux и Windows, они используют другие принципы работы с виртуальной памятью.

И что, будете изымать этот код из проданных экземпляров? (:

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

Наконец, используя API, предоставляемое Хамелеоном, Вы можете распространять модули без исходного кода. Например, Вы разработали драйвер звуковой карты и согласовали с нами его системные вызовы. Мы можем договориться о включении этого драйвера в систему даже без исходного кода. Т.е. Ваши идеи и наработки останутся Вашими и если в какой-то момент Вам покажется, что сотрудничество не выгодно, или другой разработчик предложит Вам более выгодные условия, взамен потребовав убрать код из других систем, то сможете это сделать просто известив нас об этом. Что касается протокола взаимодействия с Вашим драйвером, то тут всё сложнее — мы не заинтересованы в потере протоколов. Даже не знаю, как быть в такой случае.

Спасибо за комментарий. Не желаю, чтобы в этой теме «светились» минусы за комментарии — каждый имеет право на своё мнение.

Хотелось бы задать вопрос, а для чего Вам лично нужен исходный код? Исходный код какого модуля/сервиса Вам интересен?

В нашем проекте пока (слава Богу) нет лойеров, поэтому лицензии пишем сами как умеем. Вот, к примеру, продукт, который распространяется в исходном коде. Его лицензия проста:

Приобретая продукт, Вы имеете право:

вносить любые изменения в исходный код;
встраивать сервис в любые программные пакеты.

Вы не имеете право:

распространять исходные тексты продукта.


Пусть это называется «лицензия Хамелеон».

Что касается цитаты «собственность разработчиков», то наша команда готова предоставить разработчикам необходимые инструменты, а также мы готовы продвигать решения сторонних разработчиков для системы Хамелеон. Для этого случая и существует оговорка — «код принадлежит его разработчику». Т.е. если, не дай Бог, возникнут какие-либо разногласия, то автор кода вправе требовать не использовать его в проекте.
Кстати, а Ваш подход весьма не плох. Не хочу пугать, говоря, что написание ОС — титанический труд, но написание своего линкера — это очень хороший ход. Я без иронии — сам мечтаю о линкёре, который бы мог бы связывать объектные файлы, созданные разными компиляторами, в пределах одной архитектуры. Например, слинковать объектные файлы, созаднные gcc и MS Visual C++. А если бы ещё ключиком можно было указать тип исполняемого формата, например Elf или PE, то этому линкёру цены бы не было.

Я не знаю, напишите ли Вы свою ОС или нет, но знайте, что есть люди, которым интересен Ваш линкер. Удачи в осуществлении задуманного!

Спасибо за справедливое замечание. Ночь, усталость, спешка — получаются такие ляпы. Впредь буду внимателен к терминам, а статью исправлю, как только наберусь сил и приведу мысли в порядок.
Спасибо, за то что сподвигли меня на написание следующей статьи: habrahabr.ru/blogs/system_programming/122216/
В ней я ответил на некоторые Ваши вопросы.
Для чего нужен IPO? Чтобы компания могла привлечь деньги на развитие или продвижение технологии/товара/услуги. В идеале развиваться нужно с прибыли, чтобы компания как можно меньше зависела от кризисов на фондовой бирже.

Кому выгоден расцвет нетехнологических компаний? (Мы ведь не считаем, что Facebook, Groupon и прочие новомодные компании, имеют прямое отношение к созданию технологий?) Полагаю, «расцвет» молодых компаний выгоден технологическим лидерам, типа IBM, Oracle, Microsoft, Cisco и другим лидерам — во первых, «новомилиардники», предоставляющие онлайн услуги — потребители технологий, во вторых, «новомилиардники» оттягивают деньги инвесторов, которые могли бы пойти потенциальным конкурентам технологических лидеров.

Иными словами, если вы владелец автозавода, то когда инвесторы инвестируют в банк, который кредитует покупателей ваших автомобилей — вы счастливы, когда инвестор инвестирует в конкурирующий автозавод, у вас проблемы.

Вот вот. А ещё не стоит забывать, что если бы не IBM, то Microsoft так бы и осталось маленькой софтверной компанией широко известной в узких кругах.

А ещё IBM создала AIX.

Неудивительно, что статью заминусовали — таки за МКАДом жизнь есть :)

А также за МКАДом есть люди, которые летом живут и работают на даче, пользуясь svn для синхронизации и jabber для коммуникации с коллегами и руководством. И некоторые из этих людей живут более чем в1000 километров от Красной площади. И коммуникации за МКАДом тоже есть. Например, такие:

image

Морской пресноводный пляж. В Москве. В Строгино.

Вызывает сомнение факт, что гости столицы предпочтут пляж в Строгино вместо прогулки по Старому Арбату.

На вырученные от экскурсии деньги «Москву Сити» все-таки надеются достроить.

Кстати, одно из мест, где можно полюбоваться ММДЦ Москва-Сити.

Кто решит проводить выходные не на даче, следует помнить, что Москва — город немаленький, так что передвигаться лучше на машине.

Ну, не все так думают. Например, у меня проблема с точностью до наоборот. В отпуске думал махнуть в Москву своим ходом, но вот кататься по столице и стоять в пробках желания ну вообще нет — мне бы метро было бы в самый раз. Собственно, вопрос — где можно найти недорогой автокемпинг или стоянку для дальнобойщиков в ~50 км от МКАД, чтобы можно было недорого переночевать, покушать, помыться?
Скорее не куплю, чем куплю.

1. Мобильные устройства на аккумуляторах, за исключением телефонов и смартфонов, мне не нужны — большую часть жизни провожу в кресле за десктопом. Старые ноуты (Dell Inspiron, Compaq Presario, JVC Mininote) с устаревшими характеристиками и умершими батареями уже несколько лет пылятся в моих шкафах — новый купить дешевле и проще, чем искать батарею на раритетные модели.

2. Если бы устройство использовало архитектуру, отличную от x86 и ARM, то, возможно, был бы интерес «пощупать» что-то действительно оригинальное. Не факт, что пользовался бы, но на полке бы устройство пылилось. Но поскольку Atom базируется на системе команд x86, то азарта нет.

3. Использую Linux более 10 лет. Приходилось писать для различных экзотических embedded архитектур, работающих под Linux. Названия Android и Chrome ассоциируются у меня с «нескучными обоями» в BolgenOS — масштаб другой, но если внимательно разобраться, то смысл тот же. Для меня операционная система — это средство исполнения и хранения файлов, обеспечивающее API для прикладных программ и (необязательно) средства взаимодействия с пользователем. Графический сервер — необязательная часть операционной системы.

Резюме: Geek-девелоперам такие вещи не интересны. Разве что как модный подарок девушке/супруге, но не более. Маркетологи усиленно пытаются внедрить новое понятие операционной системы и скоро моё представление об ОС станет маргинальным.

Простите, а Вы не путаете НАТО и ООН? Это как бы разные организации.
Будьте добры, восстановите вот это изображение: habrastorage.org/storage/29e15dc9/a9992df3/e906c8d1/a48b6131.jpg
Очень интересен результат.
Удачи! В наше время не так много людей, мечтающих написать свой компилятор.
Где можно посмотреть на этот компилятор? Каков формат создаваемых объектных файлов?
Живу несколько лет без swap на девелоперской Slackware. Иногда (очень редко) во время компиляции make вылетает с ошибкой — не хватает памяти. К счастью, при повторном запуске make, проект (до)собирается без проблем. Иксы не использую. Собираю только свои проекты. Из сервисов запущена только Samba. Чуть не забыл — виртуальной машине, под которой работает Slackware, я отвёл 128Мб ОЗУ.

Что касается разделов, то использую следующую схему — поскольку самое ценное на девелоперской машине лежит в /home, то система и /home разнесены на разные виртуальные жесткие диски. Бэкап заключается в упаковке виртуального диска, содержащего /home и переносе его на внешние носители. Бэкап самой операционной системы не делается, поскольку она в стандартной конфигурации и всегда есть возможность установить систему с установочного диска.

Хочу заметить, что используемая мной конфигурация весьма специфична и имеет смысл, только если система используется исключительно для разработки и использует стандартные средства разработки, поставляемые в дистрибутиве. Единственное, что мне придётся править в случае установки системы — файлы конфигурации Самбы. Но это не проблема — дело ~5 минут.

Information

Rating
Does not participate
Location
Ростовская обл., Россия
Date of birth
Registered
Activity