Найти в Дзене
Электромозг

Что означает «написание операционной системы с нуля»?

Ранее я неоднократно топил за написание отечественной операционной системы не на базе ядра Линукса, а «с нуля», а также очень скептически отзывался об «опенсорсе», чем постоянно вызывал раздражение приверженцев этой философии. В комментариях к таким статьям каждый раз появлялись какие то радикалы, доводящие любую мысль до абсурда. Наверное, это такой риторический приём — прочитать фразу буквально, вне контекста, развить её, доведя до крайности, а затем полученный результат опровергнуть. Поэтому я решил немного разъяснить то, что я имею ввиду под словами «с нуля». Нет, я не призываю с нуля писать код различных мелких алгоритмов. Не призываю писать ОС вне языков программирования, непосредственно в машкодах, или создавать для этого свой язык программирования (хотя последнее под задачу было бы, наверное, неплохо). Есть прекрасно работающий «опенсорсный» код сортировки — пожалуйста, используем. Есть код работы с USB-портом — используем. Ещё раз. В контексте операционных систем и многочисле

Ранее я неоднократно топил за написание отечественной операционной системы не на базе ядра Линукса, а «с нуля», а также очень скептически отзывался об «опенсорсе», чем постоянно вызывал раздражение приверженцев этой философии.

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

Поэтому я решил немного разъяснить то, что я имею ввиду под словами «с нуля». Нет, я не призываю с нуля писать код различных мелких алгоритмов. Не призываю писать ОС вне языков программирования, непосредственно в машкодах, или создавать для этого свой язык программирования (хотя последнее под задачу было бы, наверное, неплохо). Есть прекрасно работающий «опенсорсный» код сортировки — пожалуйста, используем. Есть код работы с USB-портом — используем.

Ещё раз. В контексте операционных систем и многочисленных форков Линукса нельзя понимать слова «с нуля» буквально. Ведь понятно, что имеется ввиду. Под операционной системой, написанной с нуля, понимается операционная система с новой, более проработанной (например, в плане безопасности и/или быстродействия) архитектурой, не более того.

Разумеется, в ней не запрещается использовать уже имеющиеся наработки по различным алгоритмам и даже слоям, если они гармонично вписываются в новую архитектуру и не противоречат целевым принципам новой системы. Например, разработчики операционной системы KasperskyOS, написанной с нуля, посчитали допустимым интегрировать в свою систему элементы графического стека Линукса:

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

Вот что говорит о свободном программном обеспечении Дмитрий Завалишин, создатель и генеральный директор группы компаний DZ Systems, разработчик «Яндекс.Маркета»:

Опенсорс — это, в первую очередь, код, причём зачастую низкого качества. Превратить его в продукт — масштабная работа. Она включает в себя тестирование и стабилизацию самого опенсорсного кода, разработку административных и пользовательских интерфейсов для него, проработку сценариев разворачивания и использования, обучение, интеграцию — то есть тщетно надеяться, что можно просто взять и использовать опенсорс, что называется, «с полки».
Бездумно опираться на поступающие из Интернета обновления опенсорсных частей коммерческого решения значит находиться в постоянном риске. Представьте, что пара органов вашего организма доступна вам дистанционно, и вы точно не знаете, что с ними происходит. Так и с СПО — любое поступление обновлений должно контролироваться весьма серьёзным образом.
Это подразумевает детально проработанную и строго поддерживаемую архитектуру тестирования решения в целом и его компонент по отдельности. Мысль кажется очевидной, но по факту далеко не все проекты могут похвастаться хотя бы 50% покрытия кода тестами.
Глубина использования СПО в финальном продукте бывает очень разной. Практически весь софт на планете использует какой-то кусочек СПО. Например, библиотеки компилятора Си, как правило, открыты и их использует любая программа. Открыт огромный объём кода в экосистеме Java, и так далее. Есть множество небольших СПО-библиотек с узкой функциональностью, например, обработка изображений или компрессия/декомпрессия данных.
Использование таких вещей почти неотвратимо и больших рисков не несёт. Другое дело, когда СПО-решение является буквально ядром коммерческого продукта. В такой ситуации риски возрастают кратно.

Об этом же всё это время твержу и я. Архитектура, ядро должны быть свои. А не наоборот, как это с радостью происходит сейчас со всеми этими «российскими» линуксами.

А программное обеспечение для новой ОС — оно нарастёт, если архитектура системы окажется удачной и востребованной. А востребовано сейчас у нас два направления, о которых я упомянул выше, и о которых чуть подробнее напишу ниже.

  • Кибербезопасность. Количество взломов и атак только увеличивается, и в дальнейшем будет только расти. Всё больше аспектов нашей жизни переходит в цифровую плоскость — банки, удостоверения личности, цифровые подписи и т.д. и т.п. С другой стороны, нарастает противостояние в мире, что грозит не только возрастанием количества атак мошенников, но и профессиональным ударам кибервойск, которые могут использовать любой пользовательский компьютер, как промежуточный плацдарм. То есть, более защищённая операционная система нужна всем.
  • Производительность. Поскольку наши возможности по производству микропроцессоров в ближайшие годы будут сильно ограничены по топологической норме, отечественные процессоры по быстродействию будут ниже, чем у конкурентов. Соответственно, будут предъявляться более жёсткие требования к эффективности программного обеспечения, в том числе и к производительности операционной системы, дабы та не тормозила выполнение запущенных под ней программ.

Что касается того, что написание ПО для новой системы займёт много времени и будет стоить очень дорого, так и сегодняшний переход с Windows на Linux, который всё равно проходит, тоже требует портирования и доработки огромного числа продуктов. Так что опыт портирования будет. Сначала это будут все основные программные пакеты с открытым исходным кодом, которые в кратчайшие сроки покроют потребности 90% обычных пользователей и 70% потребностей офисного планктона. Ну а там со временем допишут и всё остальное, как сейчас дописывают под Линукс.

В общем, думаю, что перевод ПО с Линукса под новую систему пройдёт проще и быстрее, чем идёт сейчас с Windows на Linux. Будет уже и опыт, и написанный код. И да, в новую ОС можно изначально внедрить и wine для облегчения перехода. Да и виртуальные машины никто не отменял.

А вопрос с драйверами тоже решается довольно просто — ограничением аппаратного разнообразия. А там и собственная аппаратная часть подоспеет. Всё равно уже всем понятно, что всё идёт именно к этому.

На сегодня всё. Ставьте нравлики, делитесь своими мыслями в комментариях и обязательно подпишитесь на мой канал, если вы этого ещё не сделали. Тогда вы точно не пропустите у меня ничего нового :-) Удачи!