Jump to content
  • Advertisement
Sign in to follow this  

Complete Redirection of OS Design - Opinions?

This topic is 4074 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

For some time, I've been designing a smalltalk-based operating system. The one part that I could never get off the ground is the bootloader and the kernel. Both mostly because I don't want to initially target the horrifyingly ugly excersize in archaic design that the IA-32 line represents. I've wanted to start with targetting a PowerPC or some other well-designed Motorola processor, but there is a distinct lack of information out there about their BIOS-equivalents and their boot process. So I had an idea. Maybe I could, instead, build it on top of GRUB and the IA-64 linux kernel. That would eliminate the first year or two from my work, right off the bat. Also, I would still avoid IA-32... go straight to IA-64, never even consider the IA-32 as a target. I have a memory management scheme down pat (the Slab allocator used in SunOS), and I don't know if I'd have to add them it the kernel, or if I'd have to modify the kernel to replace the existing memory management. The kernel would be able to take several device-management tasks out of my hands, and leave me with just their interfaces. Still a fair bit to learn, but far less than previously. This leaves me with hunting down the interface to the linux kernel so I can wrap the object system around it; hunting down more information on the IA-64 so I can create my compiler (I'd be using nasm+gcc for bootstrap image builds); and implementing everything that's left. Opinions? Am I still planning to do too much work? Are there better ways to get this part of the workload pre-done? Are there better alternatives out there? Am I still targetting an obscene architecture?

Share this post


Link to post
Share on other sites
Advertisement
I wonder what purpose you are writing this OS for? Is it a full fledged OS for users, something to help you develop, or an academic exercise? If the latter, you might consider writing it for a much simpler architecture, such as might be found in a teaching emulator.

Share this post


Link to post
Share on other sites
One of my school projects was to write a RTOS to run on a Motorola ColdFire (68k subset). If you don't want something super-recent/blazingly fast, that might be a good option, as it's fully documented. We used a C cross-compiler, and an emulator as well (so no need to test right on the hardware every time).

All that being said, you seem to be working on something meant to be way more professional, so 68k might not be for you, but it's something to consider, depending on the application...

Share this post


Link to post
Share on other sites
Quote:
Original post by swiftcoder
I wonder what purpose you are writing this OS for? Is it a full fledged OS for users, something to help you develop, or an academic exercise? If the latter, you might consider writing it for a much simpler architecture, such as might be found in a teaching emulator.


Unless it's a more advanced academic exercise (something like a proof of concept). For my part, I welcome any study to make a smalltalk-based OS.

@OP: your main idea is quite interesting (although similar very high level OS may already exist, I'm not aware of a smalltalk one). But I have to warn you about something: if you consider the IA-32 architecture to be archaic and horrible, you'd be probably disapointed by the IA-64 architecture. The Internal architecture is probably better than the IA-32 one, but that's not you are adressing when you program the CPU - you are speaking to an interface, and such interface is still horribly... well, let's say it's still complex (for the lack of a better sarcastic euphemism).

As for booting the PowerPC (you know that it's more an IBM architecture than a motorola architecture, right?) architecture, you can find documentation on IBM website (you'll also find information on the Cell processors - maybe that can be of interest for your work if you really target modern processor architecture. Of course, the big issue is then: how can one implement anything that runs on a cell-based platform). The Linux source code contains many bits of information about how to boot up a PowerPC machine, so you should be able to find what you want (you'll have to dive into C and ASM, but that should not be very complex). The BonaFide project may also be of some help (although te quality of the tutorials really depends on the contributor. osdev.org seems to be more serious).

A quick internet search didn't lead me to very valuable resources (but I don't have the google-fu skills that many other guys have here). So your best bet is to browse the code of the different open source tools that exist.

Regards,

Share this post


Link to post
Share on other sites
Quote:
Original post by Emmanuel Deloget
As for booting the PowerPC (you know that it's more an IBM architecture than a motorola architecture, right?) architecture, you can find documentation on IBM website (you'll also find information on the Cell processors - maybe that can be of interest for your work if you really target modern processor architecture. Of course, the big issue is then: how can one implement anything that runs on a cell-based platform).

At that point, what about something relatively simple but a little more mainstream, such as SPARC? The interface should be far cleaner than any of the Intels, and I think even than the PowerPC...

Share this post


Link to post
Share on other sites
Do you realize that IA-64 is Itanium? Designations for the 64 bit evolution if IA-32 include AMD64 (original), EM64T (Intel rebranding), and x86-64 (generic).

Share this post


Link to post
Share on other sites
For booting, you should DEFINITELY use GRUB, unless you have some very good reasons. If you want a feature it doesn't support, like USB keyboards in the boot menu, or a new file system, you're better off extending GRUB itself.

As for the kernel (or generally abstracting the low-level stuff), you have several options. I'm not aware of resources for the IA-64 other than the linux kernel, which is too complex for such a project IMO. If you stick to IA-32, you can use Minix3, the OSKit, MIT's Exokernel, or OSLib.

Share this post


Link to post
Share on other sites
Quote:
Original post by Promit
Do you realize that IA-64 is Itanium? Designations for the 64 bit evolution if IA-32 include AMD64 (original), EM64T (Intel rebranding), and x86-64 (generic).


To be honnest, no [smile].

I though that the itanium architecture disapeared in the shadow of the past - seems I was wrong... The things is that getting an Itanium 2 (which is kind of necessary if you want to test the OS) is not going to be very easy (in fact, this statement is true for nearly all high end 64 bit processor, except those who use the x86 architecture).

I apologise.

Share this post


Link to post
Share on other sites
Quote:
Original post by Promit
Do you realize that IA-64 is Itanium? Designations for the 64 bit evolution if IA-32 include AMD64 (original), EM64T (Intel rebranding), and x86-64 (generic).


Well, there goes sensible marketing. IA-32 64-bit is even worse than normal IA-32. I'd thought IA-64 (which from what disassemblies I've been reading is much cleaner and comprehensible, and even feature-rich) would be more accessible. Pity.

Most of the reason for caving in and looking at these kinds of architectures is because most anything else I can find is too expensive for a hobby developer, or too underpowered to be usable once I get the thing really going.

Can anyone suggest any platforms with relatively painless memory management and device communication?

Share this post


Link to post
Share on other sites
Quote:
Original post by Emmanuel Deloget
As for booting the PowerPC (you know that it's more an IBM architecture than a motorola architecture, right?) architecture, you can find documentation on IBM website


Just remembered this interjection. Yes, I know it was jointly designed by IBM, Motorola, and (one other... Intel?), but Motorola got the rights to manufacture it. Also, the architecture and functionality bears Motorola's touch more than Intel's, so I call it a Motorola chip when I'm not being fussy about irrelevant details.

That documentation might help. One of the things I was considering was getting a Mac Mini for the target platform, before Apple went Intel.

I was also looking at using an ETRAX CRIS (http://www.axis.com/products/dev/index.htm), and hadn't decided which way I would go on this. These are acceptably powerful systems, with mature development boards and associated support. I'm still looking for good information on the RISC CPU that they use, to make sure its not too specialized or anything.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!