ru:about

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ru:about [2013/03/14 20:02] – [Contributing] valeriusru:about [2020/02/11 02:46] (current) – [Зачем нужна реимплементация OS/2 с нуля?] valerius
Line 3: Line 3:
 ==== Что такое osFree? ==== ==== Что такое osFree? ====
  
-osFree это проект по созданию [[wp>FOSS|открытой]] операционной системы, основанной на микроядре [[wp>L4_microkernel_family|L4]], целью которого является бинарная совместимость с [[wp>OS/2|OS/2]] (IA32). Также, возможно параллельное сосуществование API различных операционных систем, построенных поверх одного и того же микроядра.+osFree это проект по созданию [[wp>FOSS|открытой]] операционной системы, основанной на микроядре [[wp>L4_microkernel_family|L4]], целью которого является бинарная совместимость с [[ru:os_2|OS/2]] (IA32). Также, возможно параллельное сосуществование API различных операционных систем, построенных поверх одного и того же микроядра.
  
 ==== Зачем нужно микроядро? ==== ==== Зачем нужно микроядро? ====
  
-  * микроядро может служить базой для параллельных API, реализованных поверх него. Эти API могут существовать независимо, имея минимальную общую базу, состоящую из самого микроядра и некоторого набора общих сервисов (называемых personality-нейтральными сервисами). Это позволяет иметь параллельную (non-layered) реализацию параллельных API.+  * микроядро может служить базой для параллельных API, реализованных поверх него. Эти API могут существовать независимо, имея минимальную общую базу, состоящую из самого микроядра и некоторого набора общих сервисов (называемых personality-нейтральными сервисами). Это позволяет иметь независимую (non-layered) реализацию параллельных API.
   * API ОС поверх микроядра реализуется полностью в пространстве пользователя, оставляя только микроядро в режиме ядра. Такие компоненты ОС как планировщики процессов, менеджеры памяти, процесс подкачки, и даже компоненты, осуществляющие прямой доступ к оборудованию и обработку прерываний, также перемещены в пространство пользователя.   * API ОС поверх микроядра реализуется полностью в пространстве пользователя, оставляя только микроядро в режиме ядра. Такие компоненты ОС как планировщики процессов, менеджеры памяти, процесс подкачки, и даже компоненты, осуществляющие прямой доступ к оборудованию и обработку прерываний, также перемещены в пространство пользователя.
-  * это позволяет создать устойчивую систему с очень стабильным отлаженным крошечным ядром и менее стабильными компонентами из пространства пользователя, которые (как показывает, например, дизайн [[http://www.minix3.org/|Minix]]) могут быть перезапущены (причем, даже автоматически) после того, как возникла неисправность.+  * это позволяет создать устойчивую систему с очень стабильным отлаженным крошечным ядром и менее стабильными компонентами из пространства пользователя, которые (как показывает, например, дизайн [[http://www.minix3.org/|Minix]]) могут быть перезапущены (причем, даже автоматически) после того, как возникла неисправность. Само микроядро может быть очень отлажено, и даже верифицировано формальными методами на отсутствие ошибок. Поэтому ошибка в микроядре маловероятна, а другие компоненты могут быть не столь критичными.
   * это также позволяет использовать обычные ("прикладные") технологии разработки для драйверов, так как драйвер в микроядерной системе не отличается кардинально от обычных приложений.   * это также позволяет использовать обычные ("прикладные") технологии разработки для драйверов, так как драйвер в микроядерной системе не отличается кардинально от обычных приложений.
   * микроядерная архитектура также улучшает структурированность системы, то есть, зависимости между ее компонентами более четкие. Серверы работают поверх микроядра, взаимодействуют только через жестко заданные интерфейсы и скрывают свое внутреннее устройство, что имеет четкие параллели с объектно-ориентированным подходом.   * микроядерная архитектура также улучшает структурированность системы, то есть, зависимости между ее компонентами более четкие. Серверы работают поверх микроядра, взаимодействуют только через жестко заданные интерфейсы и скрывают свое внутреннее устройство, что имеет четкие параллели с объектно-ориентированным подходом.
Line 17: Line 17:
 ==== Почему L4? ==== ==== Почему L4? ====
  
-  * L4 это микроядро второго поколения, значительно улучшающее общую производительность системы. Это может быть наглядно заметно на примере l4linux. L4linux -- это, в сущности, порт обычного ядра Linux на новую архитектуру "l4". Его код, напрямую работающий с оборудованием, изменен таким образом, что оно становится доступно не напрямую, а через механизмы L4. Производительность ядра Linux может быть оценена при помощью тестов (benchmarks), которые показывают потерю всего около 2% производительности, по сравнению с "родным" ядром Linux. Мы пробовали запускать l4linux на реальной машине и не заметили никакого различия в производительности. Это показывает, что L4 дает замечательную производительность с очень маленькими накладными расходами.+  * L4 это микроядро второго поколения, значительно улучшающее общую производительность системы. Это может быть наглядно заметно на примере l4linux. L4linux -- это, в сущности, порт обычного ядра Linux на новую архитектуру "l4". Его код, напрямую работающий с оборудованием, изменен таким образом, что оно становится доступно не напрямую, а через механизмы L4. Производительность ядра Linux может быть оценена помощью тестов (benchmarks), которые показывают потерю всего около 2% производительности, по сравнению с "родным" ядром Linux. Мы пробовали запускать l4linux на реальной машине и на глаз не заметили никакого различия в производительности. Это показывает, что L4 дает замечательную производительность с очень маленькими накладными расходами.
   * Его минимальность и перемещение всей логики работы (policies) вне ядра, с оставлением внутри него только минимального набора механизмов, делает его почти универсальным и позволяет реализовать практически любое нужное API.   * Его минимальность и перемещение всей логики работы (policies) вне ядра, с оставлением внутри него только минимального набора механизмов, делает его почти универсальным и позволяет реализовать практически любое нужное API.
   * Мы не хотим изобретать велосипед, и L4 содержит практически все нужные нам механизмы.   * Мы не хотим изобретать велосипед, и L4 содержит практически все нужные нам механизмы.
   * Для L4 уже реализованы наборы готовых сервисов общего назначения, то есть, у нас уже есть готовый "конструктор", а не только голое ядро.   * Для L4 уже реализованы наборы готовых сервисов общего назначения, то есть, у нас уже есть готовый "конструктор", а не только голое ядро.
   * В качестве базы для Linux personality можно использовать уже готовый l4linux. Он все еще в стадии отладки, но почти все, тем не менее, работает. На нашем ноутбуке, только PCMCIA модем не заработал, из всего оборудования (это можно, впрочем, исправить, сделав ioremap на другие адреса -- исходные адреса, используемые драйвером, заняты в L4-based системе). Wi-fi, bluetooth стек, USB стек, файловые системы, запись CDROM -- все это заработало! Да, еще одно неудобство: так как видео работает поверх родной графической L4 консоли, которая на данный момент работает в режиме VESA (только избранные видеокарты поддерживаются с акселерацией), то поддержка видео, конечно, ограниченная.    * В качестве базы для Linux personality можно использовать уже готовый l4linux. Он все еще в стадии отладки, но почти все, тем не менее, работает. На нашем ноутбуке, только PCMCIA модем не заработал, из всего оборудования (это можно, впрочем, исправить, сделав ioremap на другие адреса -- исходные адреса, используемые драйвером, заняты в L4-based системе). Wi-fi, bluetooth стек, USB стек, файловые системы, запись CDROM -- все это заработало! Да, еще одно неудобство: так как видео работает поверх родной графической L4 консоли, которая на данный момент работает в режиме VESA (только избранные видеокарты поддерживаются с акселерацией), то поддержка видео, конечно, ограниченная. 
-  * Device Driver Environment (DDE) может быть использовано в будущем в качестве модели драйверов устройств. Оно делает возможным портирование драйверов Linux (DDE/Linux) и FreeBSD (DDE/FreeBSD) в L4 userlevel. Таким образом, большая база драйверов Linux может быть использована в будущем. В отличие от драйверов Windows, они доступны в виде исходного кода и могут быть портированы для работы в user-level.+  * Device Driver Environment (DDE) может быть использовано в будущем в качестве модели драйверов устройств. Оно делает возможным портирование драйверов Linux (DDE/Linux) и FreeBSD (DDE/FreeBSD) в L4 userlevel. Таким образом, огромная кодовая база драйверов Linux может быть использована в будущем. В отличие от драйверов Windows, они доступны в виде исходного кода и могут быть портированы для работы в user-level.
  
 ==== Зачем нужна реимплементация OS/2 с нуля? ==== ==== Зачем нужна реимплементация OS/2 с нуля? ====
  
-OS/2 имеет одно из самых стабильных, надежных и высокопроизводительных ядер. Написанное примерно на 40% на ассемблере, оно очень хорошо оптимизировано и на 100% задействует возможности архитектуры i386. Его модульная структура позволяет легко заменять компоненты более улучшенными и менее ресурсоемкими, отрывать GUI, или настраивать систему под надобности пользователя. Она является очень гибко настраиваемой. Нам нравится ее компактное и "вылизанное" API, простота использования и интуитивный гибкий [[wp>Workplace_Shell|объектно-ориентированный интерфейс]]. Она использует один из лучших общеупотребительных скриптовых языков -- [[wp>REXX]] -- в качестве встроенного в систему и многие приложения скриптового механизма. OS/2 рекламировалась фирмой IBM как "DOS лучше чем DOS и Windows лучше чем Windows". Это правда -- ее VDM была практически лучшей из существующих. И это верно не только для DOS/Windows. Поддержка Java и XFree86 была также очень мощной. Поэтому, мы полюбили OS/2 как мощную интегрирующую платформу (Integration Platform, (TM) by IBM) на основе единого десктопа. Она широко использовалась множеством маргиналов и нонконформистов многие годы и всегда имела свой собственный "way of doing things". Мы хотим, продолжать следовать этому пути ;) Мы можем спать спокойно, зная, что наша система не популярна среди хакеров и вирусописателей -- они обычно атакуют мейнстрим... Но мы не можем спокойно жить, как раньше -- начиная с декабря 2006 года IBM-овское начальство решило похоронить OS/2, и оставило OS/2 сообществу быстро устаревающую систему и ядро без исходников, и, самое главное, ухудшающаяся поддержка оборудования. Драйверов стали писать все меньше и меньше, и, в основном, новые драйвера являются портами с Linux. [[Петиции]] к IBM об открытии исходников также не дали результатов. Тем не менее, мы хотим продолжить жить и работать в OS/2. Самая важная задача -- это написание нового ядра. Нам всегда были интересны эксперименты IBM's с OS/2 поверх микроядра. Мы читали редбук от IBM про OS/2 Warp (PowerPC edition). Поэтому мы с энтузиазмом поддержали идею использования L4 как основы для реализации OS/2 API. Это дало толчок началу этого проекта.+OS/2 имеет одно из самых стабильных, надежных и высокопроизводительных ядер. Написанное примерно на 40% на ассемблере, оно очень хорошо оптимизировано и на 100% задействует возможности архитектуры i386. Его модульная структура позволяет легко заменять компоненты более улучшенными и менее ресурсоемкими, отрывать GUI, или настраивать систему под надобности пользователя. Она является очень гибко настраиваемой. Нам нравится ее компактное и "вылизанное" API, простота использования и интуитивный гибкий [[wp>Workplace_Shell|объектно-ориентированный интерфейс]]. Она использует один из лучших общеупотребительных скриптовых языков -- [[wp>REXX]] -- в качестве встроенного в систему и многие приложения скриптового механизма. OS/2 рекламировалась фирмой IBM как "DOS лучше чем DOS и Windows лучше чем Windows". Это правда -- ее VDM была практически лучшей из существующих. И это верно не только для DOS/Windows. Поддержка Java и XFree86 была также очень мощной. Поэтому, мы полюбили OS/2 как мощную интегрирующую платформу (Integration Platform, (TM) by IBM) на основе единого десктопа. Она широко использовалась множеством маргиналов и нонконформистов многие годы и всегда имела свой собственный "way of doing things". Мы хотим, продолжать следовать этому пути ;) Мы можем спать спокойно, зная, что наша система не популярна среди хакеров и вирусописателей -- они обычно атакуют мейнстрим... Но мы не можем спокойно жить, как раньше -- начиная с декабря 2006 года IBM-овское начальство решило похоронить OS/2, и оставило OS/2 сообществу быстро устаревающую систему и ядро без исходников, и, самое главное, ухудшающаяся поддержка оборудования. Драйверов стали писать все меньше и меньше, и, в основном, новые драйвера являются портами с Linux. [[ru:petitions|Петиции]] к IBM об открытии исходников также не дали результатов. Тем не менее, мы хотим продолжить жить и работать в OS/2. Самая важная задача -- это написание нового ядра. Здесь следует отметить, что OS/2 до сих пор имеет 32-битное ядро. Существующее ядро, даже при наличии исходников, не переносимо на другие аппаратные платформы, главные из которых -- ARM и x86_64. Современное ПО быстро разбухает, поэтому скоро мы должны столкнуться с ограничениями 32-битной архитектуры, самое главное из которых -- невозможность использования более 4 Гб оперативной памяти. Уже сейчас веб-браузеры и офисы легко съедают гигабайты ОЗУ. Кроме того, одними из главных потребителей памяти являются виртуальные машины. А мы должны не забывать о позиционировании OS/2 как интеграционной платформы, в том числе и для виртуальных машин. Поэтому OS/2 требуется новое ядро. Нам всегда были интересны эксперименты IBM's с OS/2 поверх микроядра. Мы читали {{downloads:docs:os2power.pdf|редбук от IBM про OS/2 Warp (PowerPC edition)}}. Поэтому мы с энтузиазмом поддержали идею использования L4 как основы для реализации OS/2 API. Это дало толчок началу этого проекта.
  
 ==== Почему бы не мигрировать на другую ОС? ==== ==== Почему бы не мигрировать на другую ОС? ====
Line 52: Line 52:
 ==== Объектно-ориентированная ==== ==== Объектно-ориентированная ====
  
-osFree делает попытку улучшить дизайн рабочего стола OS/2 и других частей системы, используя принципы ООП. Мы используем [[wp>SOM]] как базовую объектную модель, как предусмотрено дизайном IBM для рабочего стола OS/2 и других частей системы. Кроме того, мы выдвигаем идею CPI+, GPI+, PM+, т.е., планируем сделать OO обертки API различных частей системы (на основе [[wp>SOM]]) (((OS/2 kernel Control Program Interface)), GPI ((Graphics Programming Interface)) и [[wp>Presentation_Manager|PM]], соответственно). Также возможна реализация доступа к более низкоуровневым частям системы в виде SOM объектов.+osFree делает попытку улучшить дизайн рабочего стола OS/2 и других частей системы, используя принципы ООП. Мы используем [[wp>SOM]] как базовую объектную модель, как предусмотрено дизайном IBM для рабочего стола OS/2 и других частей системы. Кроме того, мы выдвигаем идею CPI+, GPI+, PM+, т.е., планируем сделать OO обертки API различных частей системы (на основе [[wp>SOM]]) (CPI ((OS/2 kernel Control Program Interface)), GPI ((Graphics Programming Interface)) и [[wp>Presentation_Manager|PM]], соответственно). Также возможна реализация доступа к более низкоуровневым частям системы в виде SOM объектов.
  
 ==== Помощь проекту ==== ==== Помощь проекту ====
  
-[[ru:teams|Нам]] предстоит много сделать, так что мы приветсвуем любую помощь проекту. Не только помощь в разработке и написании кода, но и написание документации, поддержка веб-страниц, поддержка дистрибутива ОС, и многое другое. См. [[ru:roadmap|Дорожная карта]] проекта для более подробной информации о целях и задачах проекта, а также основных этапах его развития.+[[ru:teams|Нам]] предстоит много сделать, так что мы приветствуем любую помощь проекту. Не только помощь в разработке и написании кода, но и написание документации, поддержка веб-страниц, поддержка дистрибутива ОС, и многое другое. См. [[ru:roadmap|Дорожную карту]] проекта для более подробной информации о целях и задачах проекта, а также основных этапах его развития.
  
-[[ru:teams|Мы]] также ищем разработчиков, желающих оказать помощь проекту. Для новичков, у нас есть довольно много [[en:smalltasks|простых задач]]. Если вы -- опытный разработчик, то у нас есть множество [[en:bigtasks|сложных задач]], которые могут раскрыть ваш талант. См. страницу [[en:develop|для разработчиков]] для подробностей о разработке проекта, также вы можете ознакомиться с [[en:legal|лицензиями]] на компоненты osFree.+[[ru:teams|Мы]] также ищем разработчиков, желающих оказать помощь проекту. Для новичков, у нас есть довольно много [[en:smalltasks|простых задач]]. Если вы -- опытный разработчик, то у нас есть множество [[en:bigtasks|сложных задач]], которые могут раскрыть ваш талант. См. страницу [[ru:develop|для разработчиков]] для подробностей о разработке проекта, также вы можете ознакомиться с [[en:legal|лицензиями]] на компоненты osFree
 + 
 +Наш IRC канал #osFree в сети [[irc://irc.inet.tele.dk/osfree|EFnet]] и [[irc://irc.ecomstation.com/osfree|eCSnet]].
  
-Наш IRC канал #osFree в сети [[irc://efnet/osfree|EFnet]] и [[irc://irc.ecomstation.com/osfree|eCSnet]].