User:Pcmattman: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
Content added Content deleted
No edit summary
No edit summary
Line 10: Line 10:


[[Porting Newlib]] - a simple tutorial that covers a newlib port for your OS.
[[Porting Newlib]] - a simple tutorial that covers a newlib port for your OS.

== Scratch Space ==

(this is for a Design Considerations article) http://www.osdever.net/tutorials/design.php

When designing your OS, you should take into account multiple considerations that may assist you later on when you attempt to implement them.

== Architecture ==

The architecture you plan for your OS to be built upon will impact your design decisions more than any other factor. It doesn't matter if you want your system to be portable across several different architectures, as even in this case you need to make decisions about how to support different architectures seamlessly.

For instance, if you are writing for x86 you know that you'll need to write a lot of initialization code (GDT, IDT, PMode, and so on) before you can actually start on your kernel proper. You also know a lot of standard locations in which MMIO can take place (ie, the framebuffer at 0xB8000). However, for an architecture such as ARM, the initialization is a lot simpler but your kernel will need to have some method of writing to serial devices before you can output data to a terminal.

== Subsystems ==

A kernel is, at the most basic level, a set of subsystems working together. A subsystem could be, for example, your VFS. It will help a lot to make sure that you design (at least a basic diagram) how each of these subsystems work and how they interact with the rest of the kernel. It also helps to be able to tell someone who knows nothing about your kernel your ideas about the subsystem (with any luck, you should have an idea of how to implement it).

For instance, your FAT driver can't be written until you have, at least, an ATA driver, a device manager, and a VFS (or other method of file access).

== Memory Model ==

Segmented or paged? This depends on your architecture and your OS experience. Segmentation is easier but makes life harder later on when you want to setup processes. Paging is a lot harder to setup and understand but works well with processes. Make sure you know what you want to do, and how it will work.

==

Revision as of 07:20, 26 October 2007

This is my user page, I'll keep it up to date with information about my OS, articles I have here on the wiki, and other weird and wonderful things...

My OS

Mattise - a simple x86 hobby OS with a microkernel architecture.

SourceForge.net project page, Official website

My Articles

Porting Newlib - a simple tutorial that covers a newlib port for your OS.

Scratch Space

(this is for a Design Considerations article) http://www.osdever.net/tutorials/design.php

When designing your OS, you should take into account multiple considerations that may assist you later on when you attempt to implement them.

Architecture

The architecture you plan for your OS to be built upon will impact your design decisions more than any other factor. It doesn't matter if you want your system to be portable across several different architectures, as even in this case you need to make decisions about how to support different architectures seamlessly.

For instance, if you are writing for x86 you know that you'll need to write a lot of initialization code (GDT, IDT, PMode, and so on) before you can actually start on your kernel proper. You also know a lot of standard locations in which MMIO can take place (ie, the framebuffer at 0xB8000). However, for an architecture such as ARM, the initialization is a lot simpler but your kernel will need to have some method of writing to serial devices before you can output data to a terminal.

Subsystems

A kernel is, at the most basic level, a set of subsystems working together. A subsystem could be, for example, your VFS. It will help a lot to make sure that you design (at least a basic diagram) how each of these subsystems work and how they interact with the rest of the kernel. It also helps to be able to tell someone who knows nothing about your kernel your ideas about the subsystem (with any luck, you should have an idea of how to implement it).

For instance, your FAT driver can't be written until you have, at least, an ATA driver, a device manager, and a VFS (or other method of file access).

Memory Model

Segmented or paged? This depends on your architecture and your OS experience. Segmentation is easier but makes life harder later on when you want to setup processes. Paging is a lot harder to setup and understand but works well with processes. Make sure you know what you want to do, and how it will work.

==