Pensei em criar um sistema operacional, contando agora com seus conselhos sobre por onde começar a fazê-lo.
Responder1
Você está falando sério? Quero dizer, existem muitos sistemas operacionais feitos por fãs, mas é um trabalho pesado e árduo!
Para começar, um sistema operacional deve ter, pelo menos:
Um Bootloader: Para colocar o kernel na RAM, preparar os TLBs e fazer algumas tarefas domésticas
Um Kernel: o kernel é a parte mais essencial de um sistema operacional e gerencia aspectos cruciais, como mapeamentos de memória física/virtual entre programas, multitarefa, agendamento de E/S, IPC, mutexes e assim por diante. Dependendo do sistema operacional, existem diversas filosofias (monolítica, como a arquitetura Linux; híbrida, como a arquitetura OS X; ou microkernel, como o inacabado Hurd). Dependendo disso, é o código do kernel ou o código do usuário que gerencia cada aspecto individual do sistema.
Aplicativos Userland, que darão ao usuário alguma interação com a máquina.
No mundo GNU/Linux e BSD, temos vários deles, como:
Carregadores de inicialização: GRUB2, GRUB, LILO, ISOLINUX...
Kernels: Linux, kFreeBSD...
Aplicativos Userland: GNU [ou] BSD Coreutils, Bash, Xorg e muitos mais :)
De qualquer forma, se essa é sua pergunta, aqui está sua resposta e, para obter mais informações, há muitas delas sobre como começar a coçar a cabeça em torno de decisões de design em cada aspecto no seguinte wiki:http://wiki.osdev.org/Main_Page
Há muitas informações sobre como funcionam os bootloaders, como programar no baremetal sem commodities como o stdio.h e, realmente, muitas informações úteis.