digitalmars.D - Operating System in D
- Trevor Parscal (16/16) Oct 11 2005 An Operating System In D...
- pragma (25/39) Oct 11 2005 I'm new to exokernels, thanks for the link. It reminds me a lot of prop...
- Sean Kelly (5/8) Oct 11 2005 Sumac: get the itch!
- pragma (17/25) Oct 11 2005 Nice. I might just use one of those. I might just use a 'fortune' style...
- Trevor Parscal (9/36) Oct 11 2005 You know, I wrote an XML parser designed to do just that, and than it tu...
- Trevor Parscal (5/13) Oct 11 2005 Wow, so oddly, the original name for my OS I wanted to make long ago, an...
- Niko Korhonen (13/16) Oct 11 2005 That's slightly too Javaish because it starts with a J. For some reason
- Trevor Parscal (5/21) Oct 12 2005 Yes, but.. AthenaOS is already taken.. :)
- Ameer Armaly (4/15) Oct 11 2005 I would be willing to lend whatever assistance I can, though I'm no OS
- Carotinho (5/23) Oct 11 2005 I'd put the garbage collector in the kernel, and if you want some memory...
- James Dunne (5/28) Oct 12 2005 Didn't anybody *read* the exokernel ideas? GC can go in a library above
- Trevor Parscal (5/37) Oct 12 2005 Thats true... Well, the thing is, you could do it either way... So, I gu...
- Sean Kelly (5/7) Oct 12 2005 I went through the slide presentation. Pretty impressive stuff--I'm int...
- Chris Sauls (12/19) Oct 12 2005 I say put the GC in a library (or actually multiple libraries, read on) ...
- Trevor Parscal (7/26) Oct 13 2005 Very good ideas.. I agree that there should be choice in which type of G...
- murpsoft hotmail.com (49/49) Oct 11 2005 ~~~~~~~~~~~
An Operating System In D... I have extreme ambition, tons of ideas, programming skills, and enough time to make a consistent effort. Perhaps I could get some help from some of you guys, and get a proof of concept together... Like pragma said... And yes, I have seen, and played with the beginings of a kernel in D that are posted on that wiki, and they should help us to get something together as well. Idea... A kernel - execute several different kinds of compiled code (DDL seems to help here) - has garbage collection (D's GC should work) - perhaps an exokernel design (http://pdos.csail.mit.edu/exo.html) Name... Honestly, as long as it's not an achronym, I am all for it... So, name ideas anyone? Thanks, Trevor Parscal
Oct 11 2005
In article <dih930$28uc$1 digitaldaemon.com>, Trevor Parscal says...An Operating System In D... I have extreme ambition, tons of ideas, programming skills, and enough time to make a consistent effort. Perhaps I could get some help from some of you guys, and get a proof of concept together... Like pragma said... And yes, I have seen, and played with the beginings of a kernel in D that are posted on that wiki, and they should help us to get something together as well. Idea... A kernel - execute several different kinds of compiled code (DDL seems to help here) - has garbage collection (D's GC should work) - perhaps an exokernel design (http://pdos.csail.mit.edu/exo.html)I'm new to exokernels, thanks for the link. It reminds me a lot of proper OO abstraction really, and makes sense: it gets you away from trying to be "everything to everyone" approach that seems to be the key problem with big OS designs (linux suffers here as much as windows). So I guess you could draft a root kernel easily (as it's understood to be *very* rudimentary and low-level) and build from there. So I guess the root kernel is where the GC lives? Works for me.Name... Honestly, as long as it's not an achronym, I am all for it... So, name ideas anyone?I'm not sold on any particular name yet, so here's a pile of suggestions instead. ;) If you want to extend the current greco/roman/planetary theme we have with D thus far, I would nominate the following: Janus - god of doorways, beginnings and endings Titan - the titans were the first among gods Atlas - 'sentenced' to bear the weight of the world on his shoulders Athena - godess of war and so the female counterpart to Ares/Mars (only with a more scrupulous reputation) . or anything else that fits. I know Kris has something going with names of tropical fruit/trees, with his "Mango" library. I've already decided that DSP's testbed server is going to be called "Sumac", after I went looking for other trees that had a taxonomical relationship to Mangos. Listing of Tropical Fruit - http://www.proscitech.com.au/trop/link.htm If I can think of anything more inspired, I'll post it to this thread. - EricAnderton at yahoo
Oct 11 2005
In article <dihb76$2amh$1 digitaldaemon.com>, pragma says...I've already decided that DSP's testbed server is going to be called "Sumac", after I went looking for other trees that had a taxonomical relationship to Mangos.Sumac: get the itch! Sumac, it really grows on you! (insert catchy slogan here) Sean
Oct 11 2005
In article <dihcan$2bsn$1 digitaldaemon.com>, Sean Kelly says...In article <dihb76$2amh$1 digitaldaemon.com>, pragma says...Nice. I might just use one of those. I might just use a 'fortune' style slogan field on the webpage, so I can use both. ;) A little while back I drafted a concept for a util that compiles XML data straight to D structures, as to eliminate the need for parsing XML at runtime. At first I called it "XML Configurator" which was quickly shortened to "XCON"... down the page, I scribbled the following slogans: - Freedom from markup lockup. - Break out of the XML stockade. - Is your application getting shived on performance? - Is your software doing 15 to life? - Because XML Parsers don't get time off for good behavior. - Rehabilitate your data. (I blame being stuck in a hotel room for a solid week, on business, with nothing to do but watch but the History Channel... I think it was "prison week" or something like that) - EricAnderton at yahooI've already decided that DSP's testbed server is going to be called "Sumac", after I went looking for other trees that had a taxonomical relationship to Mangos.Sumac: get the itch! Sumac, it really grows on you! (insert catchy slogan here)
Oct 11 2005
In article <dihi6h$43d$1 digitaldaemon.com>, pragma says...In article <dihcan$2bsn$1 digitaldaemon.com>, Sean Kelly says...You know, I wrote an XML parser designed to do just that, and than it turned into a really basic XML parser that I use an out of the box object in all my apps.. As it turns out, my parser was really fast, so, it defeated the purpose... :) If you ever want to see it, take a look at http://svn.dsource.org/projects/terra/trunk/terra/Source/Terra/Primitives/Structure.d Thanks, Trevor ParscalIn article <dihb76$2amh$1 digitaldaemon.com>, pragma says...Nice. I might just use one of those. I might just use a 'fortune' style slogan field on the webpage, so I can use both. ;) A little while back I drafted a concept for a util that compiles XML data straight to D structures, as to eliminate the need for parsing XML at runtime. At first I called it "XML Configurator" which was quickly shortened to "XCON"... down the page, I scribbled the following slogans: - Freedom from markup lockup. - Break out of the XML stockade. - Is your application getting shived on performance? - Is your software doing 15 to life? - Because XML Parsers don't get time off for good behavior. - Rehabilitate your data. (I blame being stuck in a hotel room for a solid week, on business, with nothing to do but watch but the History Channel... I think it was "prison week" or something like that) - EricAnderton at yahooI've already decided that DSP's testbed server is going to be called "Sumac", after I went looking for other trees that had a taxonomical relationship to Mangos.Sumac: get the itch! Sumac, it really grows on you! (insert catchy slogan here)
Oct 11 2005
If you want to extend the current greco/roman/planetary theme we have with D thus far, I would nominate the following: Janus - god of doorways, beginnings and endings Titan - the titans were the first among gods Atlas - 'sentenced' to bear the weight of the world on his shoulders Athena - godess of war and so the female counterpart to Ares/Mars (only with a more scrupulous reputation) . or anything else that fits.Wow, so oddly, the original name for my OS I wanted to make long ago, and since, was Apollo.... I have even tried to do this D kernel under that name before... So, now I feel like thats a good idea... Thanks, Trevor Parscal
Oct 11 2005
pragma wrote:Janus - god of doorways, beginnings and endingsThat's slightly too Javaish because it starts with a J. For some reason the Java people have a strong compulsion to name all their software J-something. I don't know if it's a part of Sun's Java EULA or something ('§8.7 The party hereby referred to as You must name all digital intellectual property hereby referred to as Software You create with the digital intellectual property copyrighted by Sun Microsystems hereby referred to as Java Software J-Something').Athena - godess of war and so the female counterpart to Ares/Mars (only with a more scrupulous reputation)Now that would be insanely cool! With a nice reference to Digital Mars too :) -- Niko Korhonen SW Developer
Oct 11 2005
In article <dii9pm$l85$1 digitaldaemon.com>, Niko Korhonen says...pragma wrote:Yes, but.. AthenaOS is already taken.. :) http://savannah.nongnu.org/projects/athena/ Thanks, Trevor ParscalJanus - god of doorways, beginnings and endingsThat's slightly too Javaish because it starts with a J. For some reason the Java people have a strong compulsion to name all their software J-something. I don't know if it's a part of Sun's Java EULA or something ('§8.7 The party hereby referred to as You must name all digital intellectual property hereby referred to as Software You create with the digital intellectual property copyrighted by Sun Microsystems hereby referred to as Java Software J-Something').Athena - godess of war and so the female counterpart to Ares/Mars (only with a more scrupulous reputation)Now that would be insanely cool! With a nice reference to Digital Mars too :) -- Niko Korhonen SW Developer
Oct 12 2005
"Trevor Parscal" <Trevor_member pathlink.com> wrote in message news:dih930$28uc$1 digitaldaemon.com...An Operating System In D...I would be willing to lend whatever assistance I can, though I'm no OS expert.- execute several different kinds of compiled code (DDL seems to help here) - has garbage collection (D's GC should work) - perhaps an exokernel design (http://pdos.csail.mit.edu/exo.html) Name... Honestly, as long as it's not an achronym, I am all for it... So, name ideas anyone? Thanks, Trevor Parscal
Oct 11 2005
Trevor Parscal wrote:An Operating System In D... I have extreme ambition, tons of ideas, programming skills, and enough time to make a consistent effort. Perhaps I could get some help from some of you guys, and get a proof of concept together... Like pragma said... And yes, I have seen, and played with the beginings of a kernel in D that are posted on that wiki, and they should help us to get something together as well. Idea... A kernel - execute several different kinds of compiled code (DDL seems to help here) - has garbage collection (D's GC should work) - perhaps an exokernel design (http://pdos.csail.mit.edu/exo.html) Name... Honestly, as long as it's not an achronym, I am all for it... So, name ideas anyone?I'd put the garbage collector in the kernel, and if you want some memory, you have to ask him the permission! So there is one big gc for everyone. No ideas about shared libs etc. though... Carotinho
Oct 11 2005
In article <dihjg2$4pc$1 digitaldaemon.com>, Carotinho says...Trevor Parscal wrote:Didn't anybody *read* the exokernel ideas? GC can go in a library above exokernel and apps can use it if they like, or not. Regards, James DunneAn Operating System In D... I have extreme ambition, tons of ideas, programming skills, and enough time to make a consistent effort. Perhaps I could get some help from some of you guys, and get a proof of concept together... Like pragma said... And yes, I have seen, and played with the beginings of a kernel in D that are posted on that wiki, and they should help us to get something together as well. Idea... A kernel - execute several different kinds of compiled code (DDL seems to help here) - has garbage collection (D's GC should work) - perhaps an exokernel design (http://pdos.csail.mit.edu/exo.html) Name... Honestly, as long as it's not an achronym, I am all for it... So, name ideas anyone?I'd put the garbage collector in the kernel, and if you want some memory, you have to ask him the permission! So there is one big gc for everyone. No ideas about shared libs etc. though... Carotinho
Oct 12 2005
In article <dike13$b70$1 digitaldaemon.com>, James Dunne says...In article <dihjg2$4pc$1 digitaldaemon.com>, Carotinho says...Thats true... Well, the thing is, you could do it either way... So, I guess you would have to decide how you wanted to do it... Thanks, Trevor ParscalTrevor Parscal wrote:Didn't anybody *read* the exokernel ideas? GC can go in a library above exokernel and apps can use it if they like, or not. Regards, James DunneAn Operating System In D... I have extreme ambition, tons of ideas, programming skills, and enough time to make a consistent effort. Perhaps I could get some help from some of you guys, and get a proof of concept together... Like pragma said... And yes, I have seen, and played with the beginings of a kernel in D that are posted on that wiki, and they should help us to get something together as well. Idea... A kernel - execute several different kinds of compiled code (DDL seems to help here) - has garbage collection (D's GC should work) - perhaps an exokernel design (http://pdos.csail.mit.edu/exo.html) Name... Honestly, as long as it's not an achronym, I am all for it... So, name ideas anyone?I'd put the garbage collector in the kernel, and if you want some memory, you have to ask him the permission! So there is one big gc for everyone. No ideas about shared libs etc. though... Carotinho
Oct 12 2005
In article <dike13$b70$1 digitaldaemon.com>, James Dunne says...Didn't anybody *read* the exokernel ideas? GC can go in a library above exokernel and apps can use it if they like, or not.I went through the slide presentation. Pretty impressive stuff--I'm interested to hear how things go with their upcoming testing. Overall, I very much like the idea of a heavily modular OS, which exokernel seems to support quite well. Sean
Oct 12 2005
James Dunne wrote:In article <dihjg2$4pc$1 digitaldaemon.com>, Carotinho says...I say put the GC in a library (or actually multiple libraries, read on) for two reasons. One, allow programs to forego GC and use malloc()/free() if they so choose. Although in this case the kernel should probably still have some way of keeping a really close eye on things. Two, allow programs to select from a small collection of GC's of differing styles. Useful for people who, for example, really prefer a copying GC for their program (or whatever variety). Maybe instead of literally leaving out GC, malloc()/free() programs could be assigned to a special GC library that just implements those two traditional memory functions and some mechanism to keep on eye on the program, to make sure it doesn't step out of bounds, to be sure its memory doesn't leak on termination, for example. -- Chris SaulsI'd put the garbage collector in the kernel, and if you want some memory, you have to ask him the permission! So there is one big gc for everyone. No ideas about shared libs etc. though...Didn't anybody *read* the exokernel ideas? GC can go in a library above exokernel and apps can use it if they like, or not.
Oct 12 2005
In article <dikv03$1m7t$1 digitaldaemon.com>, Chris Sauls says...James Dunne wrote:Very good ideas.. I agree that there should be choice in which type of GC, and also if you prefer not to use it at all.. And thats the great thing about an exokernel, the ability to put it all in a library... Titan should be modular... Thanks, Trevor ParscalIn article <dihjg2$4pc$1 digitaldaemon.com>, Carotinho says...I say put the GC in a library (or actually multiple libraries, read on) for two reasons. One, allow programs to forego GC and use malloc()/free() if they so choose. Although in this case the kernel should probably still have some way of keeping a really close eye on things. Two, allow programs to select from a small collection of GC's of differing styles. Useful for people who, for example, really prefer a copying GC for their program (or whatever variety). Maybe instead of literally leaving out GC, malloc()/free() programs could be assigned to a special GC library that just implements those two traditional memory functions and some mechanism to keep on eye on the program, to make sure it doesn't step out of bounds, to be sure its memory doesn't leak on termination, for example. -- Chris SaulsI'd put the garbage collector in the kernel, and if you want some memory, you have to ask him the permission! So there is one big gc for everyone. No ideas about shared libs etc. though...Didn't anybody *read* the exokernel ideas? GC can go in a library above exokernel and apps can use it if they like, or not.
Oct 13 2005
~~~~~~~~~~~ Use D + D asm {}! Everyone knows assembler is faster, but D is nicer to read. Use D to manage the namespaces, structures, etc, and use asm to write the speed-critical algorithms. By DMA'ing in the whole OS within the bootloader/setup we could easily set up the phobos.lib. Using asmutils or libasm or something like that to implement the "os" libraries makes sense (I think). In terms of what the OS should do: ~~~~~~~~~~~~ How about removing support for obsolete hardware? Most operating systems still run code to manipulate the 8259 PIC controller, but everyone since 1996 has had an APIC controller which completely supersets the 8259's capabilities. Likewise with non-DMA, non-LBA disk drive access. DMA/UDMA needs physical access to the first 16Mb. Most kernels use vm86 mode to provide that. Yuck. Try to look for a way around vm86 in graphics and you can completely not use it; and the OS will be MUCH faster. ~~~~~~~~~~ How about using multi-threading and separating Code/Heap/Stack? If you use a D array with an element for each agent, and for each agent give a pointer to a code section/data section/stack section. Organize it so that adding permissions is adding an item to the control structure. This is Capabilities which is FAR more powerful than the current Permissions system. To run code, the agent must have access to a code section. The scheduler doesn't need security - this alone provides an execute checkpoint. We can run as many threads as we like without loading the code section more than once. The heap/stack must be fresh allocated for each thread. Then we can optionally memcpy the heap/stack from another thread and JMP to that thread's current execution point (fork) Agents can then EASILY use and exchange shared memory (grant the capability to access a range of memory). It doesn't even have to be page granular. That means we have three IPC protocols: one for exchanging capabilities, one for ports, and one for exchanging messages that are too small and too infrequent to warrant the use of shared memory. Interestingly, Agents (programs) can also recieve more than one entry point (just by having more than one code section) This allows us to provide IPC event handlers, not just main(), so documentation, debugging etc, etc. ~~~~~~~~~~ Multithreading is MUCH easier with the above model, and in fact switching threads is a simple matter; understand below pseudocode: INT 0xNN -> PUSHA; PUSH ES,DS; MOV SS,[NEXT]; MOV ESP,[NEXT] POP DS,ES; POPA; IRET That is the foundation of the thread-switch. Everything else would be accounting/sleep/defer etc. ~~~~~ Drop a note, I'm clearly interested in the project. http://murpsoft.com/
Oct 11 2005