Eu tenho um projeto de classe para criar meu próprio sistema operacional. Tenho pensado muito sobre isso e agora tudo parece confuso

Eu tenho um projeto de classe para criar meu próprio sistema operacional. Tenho pensado muito sobre isso e agora tudo parece confuso

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:

  1. Um Bootloader: Para colocar o kernel na RAM, preparar os TLBs e fazer algumas tarefas domésticas

  2. 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.

  3. 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.

informação relacionada