Pour ceux que sa intéresse je développe un système d'exploitation. Enfin un kernel plus exactement pour le moment. Et je peux vous dire que c'est pas de la tarte.
Avant tout , je tien à préçiser que connaitre un language est simple, moi même comme certain de ce forum, j'ai maitrisé le C++ vers l'age de 12 ans. Mais il y a tellement de chose à connaitre en informatique que pouvoir aborder un sujet tel que les OS (qui concerne à peu près tout les aspets de l'informatique) est très périeux et long. En tout cas il ne faut pas abandoné.
On peu différentier les OS en 2 grandes catégories, ceux qui dispose d'un kernel 16 bits (mode réel) et ceux qui dispose d'un kernel 32 bits (mode protégé).
Le kernel 16 bits est beaucoup plus simple à réalisé car on peu appeller les intéruption du bios directement. J'ai pu créé un noyau qui permet simplement la prise d'une commande par l'utilisateur et l'affichage d'un texte en une après midi. Mais le problème du kernel 16 bits est qu'il faut connaitre l'assembleur et ce language est plutôt long à apprendre car il existe un nombre très important d'instructions qu'il faut absolument connaitre (il faut noté que l'usage de ce language est d'autant plus très restreint, surtout en mode 16 bits).
Le kernel 32 bits est difficile à réalisé et beaucoup plus long mais l'avantage et non négligeable et qu'il est possible de l'écrire en C. Par contre la notion de pointeur doit être comprise parfaitement ainsi que toute les subtilitée de ce language. La encore parfois de l'assembleur (32 bits cette fois-ci) sera nécéssaire, Ne serait-ce que pour optimisé vos routines de bases.
Enfin dernière chose, une très bonne connaissance de l'anglais est requise. On ne peut pas inventer un système d'exploitation en partant de rien. Il faut toujours lire des documents (pas des miliers d'ouvrage non plus hein...) techniques propre à la machine qu'on utilise (lorsque par exemple on decide de coder des drivers) et pour tout les fondement du système aussi.
Ca n'est pas impossible mais c'est long et fastidieux. Après il faut être réaliste, codé un OS comme Ms-Dos est techniquement réalisable, mais Windows ou Linux a moins d'avoir une très bonne équipe derrière soit tous compétent, c'est impossible. Il faut clairement fixé les objectifs du projet avant de se lancer dedans.
Voila un site très intéréssant (en anglais) qui regroupe des documents sur les système d'exploitation.
http://www.nondot.org/sabre/os/articles
Si vous desiré tout de même vous lancé dans l'aventure ( et je vous le conseille car c'est très instructif ) je vous conseille d'utiliser linux avec qemu, très pratique notament pour la possibilitée de débogage.
Enfin, je vais juste vous montrer un exemple de mon code source qui consiste à afficher une simple chaine de caractère, vous aller voir de quoi il en retourne :
void print_attr(const char *string, int attr){
int tmp;
char *ptr;
unsigned char* video = (unsigned char *)RAMSCREEN;
ptr = (char *)string;
while(*ptr){
if(*ptr == '\n'){
screen_x = 0;
screen_y ++;
}else if(*ptr == '\t'){
screen_x += 5;
}else{
video = (unsigned char *)RAMSCREEN + (screen_y*CHAR_PER_LINE) + (2*screen_x++);
*video = *ptr;
*(video+1) = attr;
if(screen_x > ((CHAR_PER_LINE/2) - 1)){ // 0xA0/2 - 1
screen_x = 0;
screen_y ++;
}
}
ptr ++;
}
}
Bonne chance