Wednesday, June 13, 2018

Projeto Pessoal

Meu projeto pessoal de Informática.

Você pode ver mais sobre meu projeto pessoal na minha página no Facebook.
https://facebook.com/frednora

Detalhes sobre o sistema operacional:
==============================
É um sistema operacional x86 multitarefas de 32bit. Feito em C e Assembly.

Sobre a inicialização:
    Dois programas são responsáveis por carregar e inicializar o sistema. São eles: O Boot Manager (Assembly 16bit e Assembly 32bit) e o Boot Loader ( C 32bit e Assembly 32bit ).

Sobre o Kernel:
    O Kernel é do tipo híbrido. Feito em ( C 32bit e Assembly 32bit ) . Dá suporte à execução de threads em user mode e o escalonamento é preemptivo, por prioridade e com múltiplas filas. A paginação é do tipo multinível com páginas de 4KB.

Requisitos de memória:
    Funciona com no mínimo 16MB de memória RAM e 4MB de memória de vídeo.

Sobre o sistema de arquivos:
    O sistema de arquivos suportado é FAT16.

Sobre o disco:
    Suporte básico apenas à interface IDE.

Agradecimentos:
=============
    Ter chegado até aqui foi uma alegria para mim. Gostaria de agradecer àqueles que compartilharam seu conhecimento.

Literatura e fontes de informação:
==========================
    *Sistemas Operacionais, Conceitos e Aplicações. (Abraham Silberschatz, Peter Galvin, Greg Gagne).
    *Sistemas Operacionais. (Eloá Jane Fernandes Mateus).
    *Projeto Sombra -  (Mauro Joel Schütz).
    *MikeOS - (Mike Saunders).
    *OsDev - http://wiki.osdev.org/Main_Page

  Link para o meu projeto no Github:
  https://github.com/frednora/gramado

  Minha página no Facebook:
  https://facebook.com/frednora

Londrina, 10/10/2016 - Frederico Martins Nora. (frednora).

Thursday, May 31, 2018

gui


Application window.



                               

Friday, May 4, 2018

Executando programa

** Um momento de glória **


Finalmente Kernel Dev !

A partir de agora eu posso carregar e executar um programa usando o meu shell.
É tudo muito simples ainda, mas já posso simplesmente digitar o nome de algum programa que esteja no diretório e o shell vai carregar e executar esse programa.

Imagina só a quantidade de testes que vou poder fazer agora, apenas criando um programinha para cada teste ??

Ex: test1.bin test2.bin ...
[...]



Tuesday, April 17, 2018

Criando e executando um processo


** Criando e executando um processo **


Há muitas formas de criar e executar um processo.Nessa postagem vou pontuar alguns rumos pra nossa conversa.


[ visão geral ]

Dentro do kernel você vai ter uma função que cria um processo e esse processo terá uma thread primária e seu próprio diretório de páginas. Você poderá chamar essa função para criar um processo.


[fork malandro]

A função fork é só um jeito malandro de criar um novo processo, pois ao invés de criar um novo diretório de páginas para o novo processo, é apenas clonado provisoriamente o diretório de páginas do processo pai. Herdando também outros recursos como o fluxo padrão.


[threads]

+Existem threads criadas pelo kernel para rodarem em kernel mode e threads para rodarem em user mode. Um aplicativo em user mode pode chamar o kernel para criar threads.

+Existem threads criadas e gerenciadas pelos aplicativos. Essas threads precisarão de uma thread criada pelo kernel para rodarem. Ou seja, um gerenciador de threads que fica em user mode pode criar threads, mas para que suas threads rodem ele precisa de threads correspondentes criadas pelo kernel.


[criando o processo]

O kernel pode criar processos.O aplicativo em user mode pode chamar o kernel para criar processos.


[executando um processo]

O kernel pode executar um processo. Um aplicativo em user mode pode chamar o kernel para executar um processo.


[...]

Wednesday, March 14, 2018

Can't Take My Eyes Off You

You're just too good to be true
I can't take my eyes off you
You'd be like heaven to touch
I wanna hold you so much
At long last love has arrived
And I thank God I'm alive
You're just too good to be true
Can't take my eyes off you

Pardon the way that I stare
There's nothing else to compare
The sight of you leaves me weak
There are no words left to speak
But if you feel like I feel
Please let me know that is real
You're just too good to be true
I can't take my eyes off you

I love you baby
And if it's quite all right
I need you baby
To warm the lonely nights
I love you baby

Trust in me when I say

...

Can't Take My Eyes Off You - (Frank Valli)

Friday, March 9, 2018

files

Eu acredito que uma boa parte de vocês encontrem problemas com a inicialização, assim como eu. Por isso proponho uma discussão sobre o assunto.
No meu sistema o boot funciona assim:
>> O primeiro arquivo é o MBR, ele carrega o arquivo BM.BIN na memória e passa o comando para ele, além de passar como argumentos alguns parâmetros de disco. O MBR encontra o BM.BIN do diretório raiz de uma partição formatada em fat16. Isso é feito em 16bit usando recursos do BIOS.
>> O segundo arquivo é BM.BIN, Boot Manager, ele é feito em assembly 16/32bit. Já de cara, ainda em 16bit, usando recursos do BIOS, ele carrega na memória o arquivo BL.BIN, depois faz algumas inicializações em 16bit, muda para o modo protegido, de 32bit, e entra em um mini-shell feito em assembly 32bit, de onde eu posso efetuar comandos para verificar as propriedades de disco e outras coisas. Um dos comandos é o comando 'boot', que retorna para o modo real, muda para o modo gráfico usando VESA e depois comuta para o modo protegido e passa o comando para o arquivo BL.BIN. Além de passar um monte de argumentos para ele como parâmetros do sistema.
>> O terceiro é o BL.BIN, Boot Loader. Ele é feito em C e Assembly 32bit. Quando ele inicializa ele recebe e salva os argumentos, que são muito impotantes. Em seguida passa o comando para a parte em C 32bit, que carregará o KERNEL.BIN e vários outros arquivos, que estejam em um disco IDE formatado em fat16. Faz algumas inicializações de paginação e passa o comando para o Kernel.
>> O quarto é o kernel em si. Falarei detalhadamente sobre ele em outro post. Mas ele é feito em C e Assembly 32 bit. É do tipo híbrido, e contém quatro camadas. Chamadas /hal /microkernel / executive /gramado. A camada /hal é para abstrações de hardware, é a única camada e mexe diretamente com o hardware. A camada /microkernel, faz a inicialização, a comunicação entre processos, o dma e principalmente o gerenciamento de processos e threads. A camada /executive são rotinas de nível superior, longe do hardware, ela oferece rotinas mais elaboradas, principalmente para gerenciamento do sistema. Por último e acima de todas, está a camada /gramado, nela estão os recursos gráficos, as primitivas de suporte para logon, logoff e gerenciamento de usuário.
Por fim, o kernel irá passar o comando para os threads dos processos que estão em user mode e fica rodando esses threads dos processos, seguindo uma ordem de prioridades, ele intercala entre eles, deixando cada thread usar o processador na média por 8 ciclos do timer, cada ciclo tem 10 milisegundos. O thread com mais prioridade fica mais tempo.


Projeto Pessoal

Meu projeto pessoal de Informática. Você pode ver mais sobre meu projeto pessoal na minha página no Facebook. https://facebook.com/fredno...