- Notifications
You must be signed in to change notification settings - Fork62
Phantom: Persistent Operating System
License
dzavalishin/phantomuserland
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Phantom OS is a persistent operating system. Its primary goal is to provideenvironment for programs thatsurvive OS reboot. Such an environment greatlysimplifies software development and makes it possible to write programs thatfor example do not need a filesystem.
Nevertheless, Phantom supports filesystems and all of the modern OS features.
For the details please refer to thePhantom OS Programmer's guide.
For the questions and discussion please visitchat orGoogle Group.
See also:https://gitverse.ru/dzavalishin/phantom
- Phantom OS Programmer's guide
- Phantom Architecture in English
- Short article in English - TheRegister
- Big article in Russian - Open Systems Magazine
Basically, most of code we (the original team) upload is very straighforwardand, sometimes, dumb. That, to some extent, is on purpose. We want to havea working system first and polish it next. Besides, not all the concepts anddesign desicions are final, so it is of no use to finalize all theimplementation desisions now as well.
Code is known to compile successfully with cygwin/linux gcc 4.3.4. Only theIA32 target is most complete and stable, the ARM port is in active developmentbut very unstable, the MIPS port has just been started - compiles and canbreathe for a second :), the amd64 port is incomplete and does not compile at all.
See thechangelog,have a look atscreenshots.Here is the last one:
More screenshots:https://github.com/dzavalishin/phantomuserland/wiki/ScreenShots
Web Documentation andPDF, and there's a lot of info in theWiki
Set thePHANTOM_HOME
environment variable to the path of the Phantom repository root directoryandmake all
there.
On Windows you will needCygwin to do that. Select at least:gcc4
,subversion
,binutils
,make
,gdb
(seeetc/cygwin_get.cmd
)
See alsoTOOLCHAIN
Run phantom.cmd/phantom.sh in/run
Seedoc/RUNNING for more details
Run QEMU (see above) and then - gdb in/oldtree/kernel/phantom
Kernel console is logged to/run/serial0.log
Kernel is able to send logging info to syslogd by UDP.Currently syslogd address is hardcoded in net_misc.c.
oldtree/kernel/phantom
- kernelphantom
- libs and unix userland (user/apps)plib/sys/src
- native phantom userland coderun
- QEMU run/test environmenttools/plc
- phantom language compiler / java bytecode translator
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 memorygarbage 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 goodallocator can reduce IO load. There is one, but it could be better.
- There's need for a fast alpha-blendingimage transfer (bitblt) code.
- The Unix subsystem is very limited. There is nosignal delivery, for example. It waits for the one who will implement the missing parts.
- It is theoretically possible to implement apersistent Unix environment. Quite challenging.
- Drivers - current set is minimal, TheAHCI driver is not complete,USB needs optimization, some more must be ported or written.
- It would be interesting to add aPython 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 toimplement interfaces in an efficient way.
- Even asimple JIT engine will help a lot.
- TheTCP stack is not ideal and needs someone to lend a hand.
Ports toARM andMIPS were started, but long time no progress. I'm looking for one who can help with that.
Bringing it to64 bit Intel/AMD is actual task too.
Current kernel is basically SMP ready, butSMP support is not finished completely.
There's a need to implementdemo applications for Phantom - even simple ones will help.
More serious task is to bring in some simpleHTML renderer and get a basic browser working.
- There is a need for agood CI setup which can run system in a specific configurations and following special scenarios.
- Bytecode engine needs to be tested withrandom garbage execution.
- It is a good idea to keep aset of tools that for sure build a correct OS kernel.
cc
,binutils
,qemu
, etc. - Need setup to build anISO image of the system to run on different machines and emulators.
- There is a real need to doCI 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.
The easiest way is toWrite AN e-mail to Dmitry Zavalishin
Or leave a message in theGoogle group
Or leave an issue in thetracker
There is aPhantom Website, but since you're here youbetter look at theWiki.
Best regards, Dmitry Zavalishin,dz@dz.ru
About
Phantom: Persistent Operating System
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors6
Uh oh!
There was an error while loading.Please reload this page.