The Way of the great learning involves manifesting virtue, renovating the people, and abiding by the highest good.

2009年2月7日星期六

Phantom operating system

Q: Is Phantom an open-source?

This subject is still discussed. Most of the system's code will definitely be an open source, but we are not sure aboul all of the code now. The licensing question is discussed with possible investors and that is why we can not tell you for sure now.

Q: Is Phantom a POSIX-compliant system?

A: No. It is possible to layer POSIX subsystem above the Phantom native environment, but it is not an idea per se.

Q: Is Phantom an object-oriented OS?

A: Yes. Basically you can speak about Phantom as a huge pool of fine-grained objects.

Q: Is Phantom a microkernel OS?

A: Yes. It is not enforced (kernel can be extended, if it is needed, and is fully multithreaded), but basic Phantom implementation requires a very small kernel. Generally, kernel contains threading and paging code only. All drivers except for the disk IO can be implemented in userland.

Q: Does Phantom have processes?

A: Phantom has threads. Process (group of threads, sharing some global state such as current directory and some other historical junk) is not needed in Phantom. But any group of threads can set up their own common object and keep common state in it.

Q: What about separate address spaces?

A: No. No! At this point you thought to yourself something like “than Phantom can not protect one application from another”, and were wrong. Phantom is one big address space. But, nevertheless, everything inside is protected. Protection is based on a simple idea. Phantom is a big virtual machine. And this VM has no means to convert integer to pointer – due to this it is impossible to scan through address space and gain access to anything you have no pointer to. That’s simple. And – yes, due to the absence of separate address spaces IPCs are really cheap in Phantom. And there are no context switches, which add effectiveness to the system. One can argue that VM makes system run slowly, but nowadays this problem is solved with effective JIT compilers, so we don’t expect real degradation due to the VM. Moreover, the result of JIT compilation can be stored so usual Java-like startup penalty won’t exist in Phantom either.

Q: File system?

A: Nope. Sorry. Nobody needs files in Phantom. All the operating system state is saved across shutdowns. Phantom is the only global persistent OS in the world, AFAIK. All the state of all the objects is saved. Even power failure is not a problem, because of the unique Phantom’s ability to store frequently its complete state on the disk. The most unusual Phantom property is its hybrid paging/persistence system. All the userland memory is mapped to disk and is frequently snapped. Snapshot logic is tied with the common paging logis so that snapshots are done cheap way. From the application point of view it means that all the user documents or any other program state doesn’t have to be squished into the linear filespace with the help of the serialization code, as it is in classic operating systems. Anything is kept in its internal, “graph of objects” form. This means that Phantom programs are much simpler and more efficient also. Opening text document in classic OS means reading file (transferring its data to specific place in process memory) and then converting its contents to program internal form (decoding and once more moving data), and just then – showing it to a user. Opening text document in Phantom means just executing some object’s printMe() method – all the data is ready and available directly without conversion.

Q: So what happens when Phantom reboots?

A: You will get your desktop in the same state as it was before a shutdown. Everything stayes intact.

Q: And if I had some, say, ssh or telnet connection?

A: It will die. Sorry. Of course, telnet app can restart connection for you – if some application needs to be informed about system restart, Phantom will provide special signaling. But most applications won’t even notice that shutdown happened.

Q: OS is based on VM – does it mean that not all the possible programming languages will be supported?

A: Yes. Say goodbye to C and Assembler. On the other side, everything is in Java or C# now, or even in some even more dynamic language, such as Javascript or even PHP. All these languages will be supported.

Q: So Phantom has no address arithmetic?

A: It has, but only inside the single object. And objects can be huge. No limit.

Q: Is it a 32 or 64 bit OS?

A: It is meaningless to have 32 bit Phantom because of single address space. We are going to have 64-bit version as mainstream one and the existing 32-bit implementation will, possibly, be left for small handheld devices.

没有评论: