virtuality (from "Your OS design")
Re:virtuality (from \
Sorry for being rude. I just don't think it's a good idea.
If you aren't going to interpret it, that might be more feasible. However, it sounds a lot more complicated to write. But I suppose if you're writing a real-time OS, the speed-up might be important enough. I guess I prefer a more traditional, time-tested approach to OS development.
I respect your views, of course, and since it's your own OS you may do as you please (you have my permission ;D )
BTW, I wouldn't write an OS in C++ (I'm not very skilled at C++) but I do think it's a good idea. Having re-read your post a bit I'm starting to see that it might work. I wouldn't want to go to the extra trouble of writing a JIT compiler myself, but it's your OS...
If you aren't going to interpret it, that might be more feasible. However, it sounds a lot more complicated to write. But I suppose if you're writing a real-time OS, the speed-up might be important enough. I guess I prefer a more traditional, time-tested approach to OS development.
I respect your views, of course, and since it's your own OS you may do as you please (you have my permission ;D )
BTW, I wouldn't write an OS in C++ (I'm not very skilled at C++) but I do think it's a good idea. Having re-read your post a bit I'm starting to see that it might work. I wouldn't want to go to the extra trouble of writing a JIT compiler myself, but it's your OS...
Re:virtuality (from \
Just remember, you could have some problems.
Since everything runs at RING-0, your JIT compiler had better check for problems- some 'bad person' might write a malicious program, and the JIT compiler would have to recognize the code and disallow it from going through.
Also, although sychronization might be eliminated by using "CLI", you'll probably have some other IPC problems.
These can all be fixed, but writing a JIT compiler for that purpose could become as difficult as writing the rest of the OS. So while it could, in theory, be faster, you'll have difficulties writing it.
Since everything runs at RING-0, your JIT compiler had better check for problems- some 'bad person' might write a malicious program, and the JIT compiler would have to recognize the code and disallow it from going through.
Also, although sychronization might be eliminated by using "CLI", you'll probably have some other IPC problems.
These can all be fixed, but writing a JIT compiler for that purpose could become as difficult as writing the rest of the OS. So while it could, in theory, be faster, you'll have difficulties writing it.
- Colonel Kernel
- Member
- Posts: 1437
- Joined: Tue Oct 17, 2006 6:06 pm
- Location: Vancouver, BC, Canada
- Contact:
Re:Your OS design
Your efforts to be more polite are noted and appreciated.NotTheCHEAT wrote:Sorry for being rude.
Preventing malicious or simply borked code from running in ring 0 is the main reason to go with a JIT in the first place:NotTheCHEAT wrote:Since everything runs at RING-0, your JIT compiler had better check for problems- some 'bad person' might write a malicious program, and the JIT compiler would have to recognize the code and disallow it from going through.
Basically, the idea is to disallow direct memory access at the language level, and maintain that same type-safety in the intermediate language as well.Colonel Kernel wrote:My understanding of IL is that it has a "safe" subset that only deals in object references and field offsets, not directly with memory addresses. This means that for a certain class of programs, you can prove whether or not the program is typesafe simply by looking at the IL and corresponding class metadata.
And yes, it would be hard to implement. The question is how desperate are we to avoid address-space switching overhead (if you go with a microkernel) or BSODs/panics (if you go monolithic).
Top three reasons why my OS project died:
- Too much overtime at work
- Got married
- My brain got stuck in an infinite loop while trying to design the memory manager
Re:virtuality (from \
*gasp*NotTheCHEAT wrote: You'll always need to write some parts of the OS in assembly, and assembly and Java/C++ are like polar opposites.
Don't throw Java and C++ into one box. Please. They're simply not playing in the same league.
Every good solution is obvious once you've found it.
Re:virtuality (from \
It might be true that other systems don't need a JIT, but a system based on this idea does not some need things that other operation systems need (different protected address spaces and then ways to pass information from space to space etc.)NotTheCHEAT wrote: These can all be fixed, but writing a JIT compiler for that purpose could become as difficult as writing the rest of the OS. So while it could, in theory, be faster, you'll have difficulties writing it.
Probably someone doesn't need to do more for a JIT-based OS, doing different things fits better!
Re:virtuality (from \
Remember that this was just a design idea, I don't think I will have that implemented within the next few months. Currently, I'm working on something different (have a look at the 'OS design' thread) and 'more traditional' anyway, to get something done, at least.NotTheCHEAT wrote: If you aren't going to interpret it, that might be more feasible. However, it sounds a lot more complicated to write. But I suppose if you're writing a real-time OS, the speed-up might be important enough. I guess I prefer a more traditional, time-tested approach to OS development.
Writing an OS in object oriented C++ is currently being done by (I guess) many people on this board, and has even been done by commercial and widely accepted projects around the world. Don't confuse C++ and Java, C++ by itself has nothing to do with virtual machines, JIT compilation, garbage collection and the like. It's a low level language like C, only that it has extensions for object oriented programming.BTW, I wouldn't write an OS in C++ (I'm not very skilled at C++) but I do think it's a good idea. Having re-read your post a bit I'm starting to see that it might work. I wouldn't want to go to the extra trouble of writing a JIT compiler myself, but it's your OS...
Writing a JIT compiler might of course be a difficult task when you don't have much knowledge of compilers and optimizers at all (I don't have, yet). But I hope the 'building compilers' course at the university, which I'm going to attend in the next few seasons, will shed some light on this issue.
cheers Joe
Re:virtuality (from \
I've just "read" most of this thread and the originating thread (http://www.mega-tokyo.com/forum/index.php?board=1;action=display;threadid=2741).
I was suprised to find how much the object (namespaces) method and virtual abstraction seem to mirror the Singularity research OS
Do check out their technical report!
I was suprised to find how much the object (namespaces) method and virtual abstraction seem to mirror the Singularity research OS
Do check out their technical report!
Re:virtuality (from \
Can you be sure who is mirroring who? The only thing I'm certain of is that we're very probably not mirroring them since they're not as public as we are.I was suprised to find how much the object (namespaces) method and virtual abstraction seem to mirror the Singularity research OS
Re:virtuality (from \
Well, in fact the Singularity OS goes into the very same direction, yes, and I was surprised about that too. I don't know how old the project actually is, but I can tell you that I hadn't heard anything about it until, say, august this year.
Just look at how Microsoft centralizes more and more areas of software development around the .net platform, I believe it was a rather logical step for them to take on a .net-based OS...
And about namespaces - plan9 already showed the concept years ago, so if there is an originator, they are.
cheers Joe
Just look at how Microsoft centralizes more and more areas of software development around the .net platform, I believe it was a rather logical step for them to take on a .net-based OS...
And about namespaces - plan9 already showed the concept years ago, so if there is an originator, they are.
cheers Joe
- Pype.Clicker
- Member
- Posts: 5964
- Joined: Wed Oct 18, 2006 2:31 am
- Location: In a galaxy, far, far away
- Contact:
Re:virtuality (from \
Yep, i've been talking with hobby OSdevers for about 4 years now through forums and the like ... Ideas like having a database of documents rather than a filesystem, of having 3D textured windows, of having a shell that integrates better with the running components are quite long-lived ... I don't think you can blame people that talk about that of "mirroring" MS's latest announcements: they just happened to follow the same track of thougts ...
I don't say people at MS research do just mirror ideas submitted in public board ... Seeing the same "good ideas" popping up independently in many minds is just the natural way things go, what probably worth keeping an eye on is that MS keeps actively trying to push those ideas to the masses.
Yet, i think it would be a thread-killer to argue *that* in this very thread.
I don't say people at MS research do just mirror ideas submitted in public board ... Seeing the same "good ideas" popping up independently in many minds is just the natural way things go, what probably worth keeping an eye on is that MS keeps actively trying to push those ideas to the masses.
Yet, i think it would be a thread-killer to argue *that* in this very thread.
Re:virtuality (from \
Hi,
Cheers,
Brendan
Well said. Now if you could only explain this to patent advocates...Pype.Clicker wrote:Seeing the same "good ideas" popping up independently in many minds is just the natural way things go...
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re:virtuality (from \
I didn't mean anything bad by the "mirror" thing . Just how similar certain ideas looked. It doesn't really matter either. It is very nice to see where things are going (including thoughts), or might be going.
From what I understand the Singularity OS is around 2 years old. It really developed in the last year or so. The technical report is a great read on certain design choices they made (JIT, safe verifiable code, messaging, no shared memory, namespaces, contracts etc.).
It would be interesting to see the system combined with an object store (perhaps similar to the WinFS system they are working on for XP/Vista, except without any other underlying filesystem) etc.
From what I understand the Singularity OS is around 2 years old. It really developed in the last year or so. The technical report is a great read on certain design choices they made (JIT, safe verifiable code, messaging, no shared memory, namespaces, contracts etc.).
It would be interesting to see the system combined with an object store (perhaps similar to the WinFS system they are working on for XP/Vista, except without any other underlying filesystem) etc.