Skip to content

rorshik/pos

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Добро пожаловать в POS

POS - это персистентная операционная система. Ее основная цель - обеспечить среду для программ, которые выживают после перезагрузки ОС. Такая среда значительно упрощает разработку программного обеспечения и позволяет писать программы, которым, например, не нужна файловая система.

Тем не менее, POS поддерживает файловые системы и все функции современной операционной системы.

Для получения подробной информации, пожалуйста, обратитесь к Руководству программиста Phantom OS.

Для вопросов и обсуждения, пожалуйста, посетите чат или Группу Google.

Что такое POS

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

Известно, что код успешно компилируется с cygwin/linux gcc 4.3.4. Поддержка архитектуры:

  • IA32 - является наиболее полной и стабильной,
  • ARM - находится в активной разработке, но очень нестабильна,
  • MIPS - только что запущен - компилируется и может дышать секунду :),
  • amd64 - неполон и не работает компилировать вообще.

Текущее состояние

Смотрите список изменений, взгляните на скриншот. Вот последний:

Другие скриншоты: https://github.com/dzavalishin/phantomuserland/wiki/ScreenShots

Документы

Статус документов

Web Документация and PDF, и есть много информации в Wiki

Сборка

Установите переменную окружения PHANTOM_HOME в путь к корневому каталогу POS репозитория и make all там.

В Windows для этого вам понадобится Cygwin. Выберите как минимум: gcc4, subversion, binutils, make, gdb (смотрите etc/cygwin_get.cmd)

Смотрите также НАБОР ИНСТРУМЕНТОВ

Запуск

Run phantom.cmd/phantom.sh in /run

Смотрите doc/RUNNING для получения более подробной информации

Отладка

Run QEMU (смотрите выше), а затем - gdb в /oldtree/kernel/phantom

Консоль ядра логируется в /run/serial0.log

Ядро может отправлять информацию о протоколировании в syslogd по UDP. В настоящее время адрес syslogd жестко закодирован в net_misc.c.

Каталоги

  • oldtree/kernel/phantom - ядро
  • phantom - библиотеки и пользовательская среда unix (user/apps)
  • plib/sys/src - нативный код POS
  • run - Среда запуска/тестирования QEMU
  • tools/plc - компилятор POS / транслятор байт-кода java

Продолжайте и принимайте участие!

Как принять участие

Ядро и компилятор

Creating an unusual operating system is a very interesting thing to do. There are challenges on each and every step. Just to start with:

  • Persistent memory garbage collector. Suppose we're in a 64 bit world and persistent memory size is some 20 Tb. The current GC is incomplete.
  • If we touch memory too much, the snapshot engine will spend a lot of IO to store the difference. A fast and good allocator can reduce IO load. There is one, but it could be better.
  • There's need for a fast alpha-blending image transfer (bitblt) code.
  • The Unix subsystem is very limited. There is no signal delivery, for example. It waits for the one who will implement the missing parts.
  • It is theoretically possible to implement a persistent Unix environment. Quite challenging.
  • Drivers - current set is minimal, The AHCI driver is not complete, USB needs optimization, some more must be ported or written.
  • It would be interesting to add a Python frontend to the Phantom compiler. Are you a Python fan? Can help?
  • Phantom bytecode supports classes, inheritance, but does not support interfaces. It is not really trivial to implement interfaces in an efficient way.
  • Even a simple JIT engine will help a lot.
  • The TCP stack is not ideal and needs someone to lend a hand.

Porting Phantom

Ports to ARM and MIPS were started, but long time no progress. I'm looking for one who can help with that.

Bringing it to 64 bit Intel/AMD is actual task too.

Current kernel is basically SMP ready, but SMP support is not finished completely.

Userland

There's a need to implement demo applications for Phantom - even simple ones will help.

More serious task is to bring in some simple HTML renderer and get a basic browser working.

Build and CI

  • There is a need for a good CI setup which can run system in a specific configurations and following special scenarios.
  • Bytecode engine needs to be tested with random garbage execution.
  • It is a good idea to keep a set of tools that for sure build a correct OS kernel. cc, binutils, qemu, etc.
  • Need setup to build an ISO image of the system to run on different machines and emulators.
  • There is a real need to do CI on a real hadrware. Need corresponding scripts.

If you feel interested to take part in the project, please leave me a note. An issue on a GitHub is the ideal communications channel.

Issues to start with

Badges

Codacy Badge

Build Status

Code coverage

Communications

The easiest way is to Write AN e-mail to Dmitry Zavalishin

Or leave a message in the Google group

Or leave an issue in the tracker

There is a Phantom Website, but since you're here you better look at the Wiki.


Best regards, Dmitry Zavalishin, [email protected]

About

Persistent Operating System

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 95.1%
  • Java 1.9%
  • C++ 1.6%
  • Assembly 0.6%
  • Perl 0.3%
  • Roff 0.2%
  • Other 0.3%