Страницы

Поиск по вопросам

вторник, 24 декабря 2019 г.

Возможно ли создание ОС, запускающую исполняемые файлы от Win, Mac, Linux

#windows #ос #macos #linux


Возник спор, решил спросить у аудитории (:
В общем, чисто теоретически возможно ли создание ОС, у которой исполняемыми файлами
будут являться .exe .deb и т.п. и они будут корректно интерпретированы и подобающе
работоспособными?
Получается что-то наподобие "Кроссплатформенной ОС", оксюморон прям (:    


Ответы

Ответ 1



Существует же wine и разные его дериваты, которые худо-бедно позволяют на никсах запускать виндовские приложения. Что-то подобное есть и для маков. И на виндах есть способы запускать линуксовые приложения. Так что не только теоретически, но и практически уже нечто подобное существует, хотя и очень далекое от совершенства. ADDENDA: deb - это не исполняемый файл, а установочный пакет Linux Debian и его производных (например, Ubuntu).

Ответ 2



Конечно возможно. Но на пути будет множество сложностей и придётся проделать очень много лишней работы. Это было бы очень неэффективно с точки зрения ресурсов разработчиков. Создание действительно полноценной ОС требует довольно больших ресурсов и много времени, тестирования и т.п. Сделать две ОС в одной потребует ещё больше усилий и терпения. Но теоретически всё это возможно. Ничто не мешает реализовать разные системные API одновременно, поддерживать несколько моделей организации файлов, разных абстракций, реализовать иксы и т.п. На уровне ядра придётся также реализовать сразу два вида API чтобы драйвера в ядре могли работать и не мешать друг другу. С другой стороны есть вероятность, что всё же будут ограничения на уровне ядра, связанные с разной архитектурой. Однако на прикладном уровне думаю это возможно, более чем. Такие вещи как wine доказывают, что это возможно. Только очень уж мучительно будет.

Ответ 3



Наверное, да. Т.е. подсистемы типа wine, cygwin, interix существуют, подкрутить загрузчик (+ подключение соответствующих разделяемых библиотек) тоже можно, хотя, на практике геморроя будет много. Интереснее другое продолжение темы. Кроссплатформенный standalown модуль (естественно я имею в виду машинные коды и следовательно речь идет об одной и той же процессорной архитектуре). Возможно к такой штуке нужен будет миниустановщик (меняющий magic и если потребуется формат файла для загрузчика ОС) в зависимости от ОС. Идея состоит в том, что функция в точке входа определяет (сама, на лету) текущее окружение и "подстраивается" к нему. Очевидно, что система разработки (компоновщик и библиотеки) должна "обладать знаниями" о возможных целевых ОС. IMHO идея интересная, но дальше теоретических размышлений сам не двигался. На практике же широко используются интерпретаторы типа python, perl ...

Комментариев нет:

Отправить комментарий