psychomantys / minios Goto Github PK
View Code? Open in Web Editor NEWSmall OS home made
Small OS home made
Tem que existir uma forma de imprimir caracteres simples na tela, tem que criar uma classe que faça isso de forma lega a interface e que futuramente possa ser redirecionado para um arquivo ou algo assim. Talvez uma classe de log que pode ser usada para colocar informações na tela.
Tem umas coisas já feitas, mas tem que melhorar.
Olha ai umas referencias para usar o VGA:
http://wiki.osdev.org/VGA_Resources
http://www.osdever.net/FreeVGA/vga/graphreg.htm
Isso vai ser usado para memoria depois, a interface tem que ser parecida com:
class bitset::reference {
friend class bitset;
reference(); // no public constructor
public:
reference();() const; // return inverse value
operator bool () const; // convert to bool
reference& operator= ( bool x ); // assign from bool
reference& operator= ( const reference& x ); // assign from bit
reference& flip(); // flip bit value
bool operator
}
Só que tem que ser com reserve e dinâmico.
Fazer uma implementação propria do malloc e do free, para usar.
A usada antes era da lib c portada, que tende a dar problemas. Para isso, acho que o melhor para começar é entendendo:
http://wiki.osdev.org/Writing_a_memory_manager
Coisas legais a considerar e que tem varios links:
http://wiki.osdev.org/Page_Frame_Allocation
Para reservar tb a processos:
http://wiki.osdev.org/Memory_Allocation
Para a matéria que eu estou pagando:
http://www.jamesmolloy.co.uk/tutorial_html/6.-Paging.html
Assim como a biblioteca C, para ser usado no kernel a biblioteca padrão do C++ é preciso que ela seja ligada estaticamente ao kernel.
Para isso, pode ser usado um porte que pode ser adicionado ao projeto como a libc foi.
Algumas sugestões:
http://wiki.osdev.org/C%2B%2B#Standard_Template_Library
Possível api:
https://gist.github.com/4687463
Técnicas para melhorar:
http://wiki.osdev.org/Spinlock
Documentar como é usado a libc que o kernel esta usando, porqu eé mais ou menos portavel e como mudar a impl.
Suporte a exceções requer código especifico para funcionar no kernel, e isso não é uma coisa automática.
Verificar se isso já está funcionando, e ver algumas coisas com relação a isso.
Como implementar exceções deve passar por implementar RTTI, isso pode estar muito ligado.
Como o kernel tem suporte ao C++ itanium ABI, esse link pode ser útil:
http://wiki.osdev.org/C%2B%2B_Exception_Support
http://forum.osdev.org/viewtopic.php?f=1&t=17589
Para criar o gerenciador de build e para organizar o projeto foi seguido uma certa logica, tem que escrever isso em algum canto.
Além de falar sobre o como funciona o código especifico de algumas tecnologias que o gerenciador de build cuida fácil.
Tem que ver se fazer testes se aplica e se é legal usar isso no kernel.
E depois fazer os testes usando o cmake, que é uma coisa nova para minha pessoa.
Fazer o suporte a arquitetura x86_64, e gerar um libc no diretório old para essa arquitetura.
Implementar:
http://wiki.osdev.org/GCC_Stack_Smashing_Protector
Parece ser bem facil, o problema eh que eh especifico para o GCC, e não sei como se daria no build e para implementar apenas para um compilador.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.