| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 20:32:41
|
mcirqueira
JavaChild
![[Avatar]](/images/avatar/b76dbcdb50233a9ac2503749fd0037a5.jpg)
Membro desde: 19/07/2011 15:31:29
Mensagens: 128
Localização: São Luís - Maranhão
Online
|
Olá,
Pretendo criar um sistema operacional básico, em assembly e java.
Como gosto de assembly e também de java, em vez de pegar o kernel do linux (que é em assembly) e utilizar C para programar o sistema, optei por criar o meu próprio kernel. Vai ser fácil criar o kernel, pego o código fonte do java (se não me engano o java é livre), e ele chamará o java automaticamente para executar o sistema.
Como o assembly vai invocar programa em C(o java)?
This message was edited 1 time. Last update was at 08/02/2012 21:44:31
|
Entrem lá no meu blog:
http://www.marciomeucanto.blogspot.com.br/
"Em terra onde não há carne, urubu é frango."
"Caíste sozinho ou foi o camelo que te arremessou? Tanto faz: o fato é que eu caí."
"Por causa da rosa, a erva daninha acaba sendo regada."
"Um centavo economizado é um centavo ganho."
"Todos os gatos adoram peixe, mas odeiam ficar com as patas molhadas."
"Com a mentira se consegue o almoço, mas não o jantar."
"Alimenta teu cão e ele guardará tua casa; faze jejuar teu gato e ele te comerá os ratos."
Não fazem mais GNU/Linux como antigamente!=)
Você não precisa ser inteligente, basta ter motivação.
"Tudo tem o seu tempo determinado, e há tempo para todo o propósito debaixo do céu", Ec 3,1
"Se quer ser famoso, faça um bom programa de código livre, se quer dinheiro, escreva um pago e não sendo código livre"
http://www.facebook.com/mcirqueira11/
Eu e Deus !!! EnJAVAndo os Neurônios!!!
while (EuViver() == true ){
Estudo();
Trabalho();
LouvarDeus();
} |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 20:56:28
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
Cara, não dá pra usar Java pra fazer um sistema operacional. O Java roda em cima de uma máquina virtual e ela abstrai o hardware. Você não pode acessar um kernel usando Java.
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 21:28:44
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
sozinho você iria levar no mínimo uns 100 anos para fazer isso. A equipe da microsoft no singularity é enorme, e o projeto tá na prancheta desde 2000. Para você ver como essa idéia não é muito viável. http://research.microsoft.com/apps/pubs/default.aspx?id=52716 http://research.microsoft.com/en-us/projects/singularity/ Só diferenciando o android do singularity - O primeiro é um kernel escrito em linguagem c trocando mensagens com uma máquina virtual. O segundo é um kernel escrito em c#, onde até os módulos também são escritos nessa linguagem.
This message was edited 1 time. Last update was at 07/02/2012 21:32:52
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 21:41:36
|
bitjesse
Thread.start()
![[Avatar]](/images/avatar/a6fd904dd62bff2cbecc42b14318049a.jpg)
Membro desde: 30/05/2010 19:49:19
Mensagens: 31
Offline
|
mcirqueira wrote:Olá,
Pretendo criar um sistema operacional básico, em assembly e java.
Como gosto de assembly e também de java, em vez de pegar o kernel do linux (que é em assembly) e utilizar C para programar o sistema, optei por criar o meu próprio kernel. Vai ser fácil criar o kernel, pego o código fonte do java (se não me engano o java é livre), e ele chamará o java automaticamente para executar o sistema.
Como o assembly vai invocar programa em C(o java)?
O kernel do Linux é escrito em quase sua totalidade em C, é claro que existe código em assembly mas não majoritariamente.
Veja no artigo abaixo que a Linguagem C é usada em 97% no kernel Linux enquanto a Linguagem Assembly é usada em pouco mais de 2%.
http://www.h-online.com/open/features/Kernel-Log-15-000-000-lines-of-code-3-0-promoted-to-long-term-kernel-1408062.html
|
Gessé Rocha
Tecnológo em Análise e Desenvolvimento de Sistemas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 09:02:02
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
mcirqueira wrote:Olá,
Pretendo criar um sistema operacional básico, em assembly e java.
Como gosto de assembly e também de java, em vez de pegar o kernel do linux (que é em assembly) e utilizar C para programar o sistema, optei por criar o meu próprio kernel. Vai ser fácil criar o kernel, pego o código fonte do java (se não me engano o java é livre), e ele chamará o java automaticamente para executar o sistema.
Como o assembly vai invocar programa em C(o java)?
Leia o fonte do Java; você vai ver que ele tem uma porção de dependências em relação ao sistema operacional.
O mais fácil no seu caso é pegar a versão do fonte do Java que roda em Linux/Solaris.
O seu sistema operacional, para poder rodar confortavelmente o Java, terá provavelmente de ser uma distribuição do Linux - não um sistema operacional pequeninho em Assembly.
Outra forma é pegar os fontes do Java e começar a remover as dependências em relação ao sistema operacional - o que é bastante difícil, na verdade. Você vai ver quanto trabalho vai dar
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 15:19:47
|
mcirqueira
JavaChild
![[Avatar]](/images/avatar/b76dbcdb50233a9ac2503749fd0037a5.jpg)
Membro desde: 19/07/2011 15:31:29
Mensagens: 128
Localização: São Luís - Maranhão
Online
|
matheuslmota wrote:Cara, não dá pra usar Java pra fazer um sistema operacional. O Java roda em cima de uma máquina virtual e ela abstrai o hardware. Você não pode acessar um kernel usando Java.
Eu vou criar um kernel em assembly para comunicar com a mémoria do computador e chamar o java para rodar o programa. "Você não pode acessar um kernel usando Java", mas em c eu posso (o java não é em c?). Se você não sabe o que é kernel veja aqui: http://pt.wikipedia.org/wiki/N%C3%BAcleo_(inform%C3%A1tica)
Esses caras conseguiram em menos de 100 anos fazer o que eu estou querendo fazer: http://www.jnode.org/ http://pt.wikipedia.org/wiki/JNode O sistema é todo em java, e o kernel é todo em assembly.
This message was edited 1 time. Last update was at 08/02/2012 15:21:49
|
Entrem lá no meu blog:
http://www.marciomeucanto.blogspot.com.br/
"Em terra onde não há carne, urubu é frango."
"Caíste sozinho ou foi o camelo que te arremessou? Tanto faz: o fato é que eu caí."
"Por causa da rosa, a erva daninha acaba sendo regada."
"Um centavo economizado é um centavo ganho."
"Todos os gatos adoram peixe, mas odeiam ficar com as patas molhadas."
"Com a mentira se consegue o almoço, mas não o jantar."
"Alimenta teu cão e ele guardará tua casa; faze jejuar teu gato e ele te comerá os ratos."
Não fazem mais GNU/Linux como antigamente!=)
Você não precisa ser inteligente, basta ter motivação.
"Tudo tem o seu tempo determinado, e há tempo para todo o propósito debaixo do céu", Ec 3,1
"Se quer ser famoso, faça um bom programa de código livre, se quer dinheiro, escreva um pago e não sendo código livre"
http://www.facebook.com/mcirqueira11/
Eu e Deus !!! EnJAVAndo os Neurônios!!!
while (EuViver() == true ){
Estudo();
Trabalho();
LouvarDeus();
} |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 18:10:29
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
Cara, o que vocÊ tá querendo fazer não é trivial. Além do mais, o JNode que você citou e que suponho que você entrou no site e viu os detalhes do projeto é algo meio embrionário. Fazer um kernel e fazer um sistema em java para evocar o kernel é algo extremamente difícil. Como você irá comunicar o kernel com os bytecodes do Java?
Agora vou fazer aquela velhar perguntinha: qual o objetivo do seu projeto?
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 20:54:41
|
mcirqueira
JavaChild
![[Avatar]](/images/avatar/b76dbcdb50233a9ac2503749fd0037a5.jpg)
Membro desde: 19/07/2011 15:31:29
Mensagens: 128
Localização: São Luís - Maranhão
Online
|
matheuslmota wrote:Cara, o que vocÊ tá querendo fazer não é trivial. Além do mais, o JNode que você citou e que suponho que você entrou no site e viu os detalhes do projeto é algo meio embrionário. Fazer um kernel e fazer um sistema em java para evocar o kernel é algo extremamente difícil. Como você irá comunicar o kernel com os bytecodes do Java? Agora vou fazer aquela velhar perguntinha: qual o objetivo do seu projeto?
Ou me expressei mal ou vocês não estão entendendo, quando ligar o PC a BIOS vai procurar pelos 512 bytes gravados no primeiro setor do pendrive ( Cabeça: 0, Trilha: 0, Setor: 1 ). Caso não encontre, ele busca por um sistema operacional na MBR ( Master Boot Record ) do HD. Aí eu vou fazer um Loader, que é basicamente uma seqüência de instruções ( com no máximo 512 bytes para caber no primeiro setor ), que é responsável por carregar o Kernel do disco para a memória. Após isso ele deverá executar o programa Java SDK modificado para poder rodar no kernel, que por sua vez executar o .class do sistema ( o programa que eu vou criar para mostrar hora, editar textos e etc. ). Por exemplo: Em java, tenho um programa Teste.java: E tenho o Menu.java: O que eu quero fazer é exatamente isso que está n linha 4, chamar o método responsável por executar o java, pelo assembly ( o kernel ) eu chamo o java, e o java chama o programa.class, que no programa está na linha 4, chamo o programa responsável de executar o .class, que está em c no assembly.
This message was edited 1 time. Last update was at 08/02/2012 20:58:00
|
Entrem lá no meu blog:
http://www.marciomeucanto.blogspot.com.br/
"Em terra onde não há carne, urubu é frango."
"Caíste sozinho ou foi o camelo que te arremessou? Tanto faz: o fato é que eu caí."
"Por causa da rosa, a erva daninha acaba sendo regada."
"Um centavo economizado é um centavo ganho."
"Todos os gatos adoram peixe, mas odeiam ficar com as patas molhadas."
"Com a mentira se consegue o almoço, mas não o jantar."
"Alimenta teu cão e ele guardará tua casa; faze jejuar teu gato e ele te comerá os ratos."
Não fazem mais GNU/Linux como antigamente!=)
Você não precisa ser inteligente, basta ter motivação.
"Tudo tem o seu tempo determinado, e há tempo para todo o propósito debaixo do céu", Ec 3,1
"Se quer ser famoso, faça um bom programa de código livre, se quer dinheiro, escreva um pago e não sendo código livre"
http://www.facebook.com/mcirqueira11/
Eu e Deus !!! EnJAVAndo os Neurônios!!!
while (EuViver() == true ){
Estudo();
Trabalho();
LouvarDeus();
} |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 21:08:41
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
mcirqueira wrote:
matheuslmota wrote:Cara, o que vocÊ tá querendo fazer não é trivial. Além do mais, o JNode que você citou e que suponho que você entrou no site e viu os detalhes do projeto é algo meio embrionário. Fazer um kernel e fazer um sistema em java para evocar o kernel é algo extremamente difícil. Como você irá comunicar o kernel com os bytecodes do Java?
Agora vou fazer aquela velhar perguntinha: qual o objetivo do seu projeto?
Ou me expressei mal ou vocês não estão entendendo, quando ligar o PC a BIOS vai procurar pelos 512 bytes gravados no primeiro setor do pendrive ( Cabeça: 0, Trilha: 0, Setor: 1 ). Caso não encontre, ele busca por um sistema operacional na MBR ( Master Boot Record ) do HD. Aí eu vou fazer um Loader, que é basicamente uma seqüência de instruções ( com no
máximo 512 bytes para caber no primeiro setor ), que é responsável por carregar o Kernel do disco para a memória. Após isso ele deverá executar o programa Java SDK modificado para poder rodar no kernel, que por sua vez executar o .class do sistema ( o programa que eu vou criar para mostrar hora, editar textos e etc. ).
Por exemplo:
Em java, tenho um programa Teste.java:
E tenho o Menu.java:
O que eu quero fazer é exatamente isso que está n linha 4, chamar o método responsável por executar o java, pelo assembly ( o kernel ) eu chamo o java, e o java chama o programa.class, que no programa está na linha 4, chamo o programa responsável de executar o .class, que está em c no assembly.
Cara, basicamente tu tá querendo é implementara uma máquina virtual. Um arquivo .class contém bytecodes e você não pode processá-los diretamente usando assembly. Ou seja, não dá pra invocar diretamente um arquivo compilado em Java usando assembly.
Sua pergunta está respondida?
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 21:43:46
|
mcirqueira
JavaChild
![[Avatar]](/images/avatar/b76dbcdb50233a9ac2503749fd0037a5.jpg)
Membro desde: 19/07/2011 15:31:29
Mensagens: 128
Localização: São Luís - Maranhão
Online
|
matheuslmota wrote:Cara, basicamente tu tá querendo é implementara uma máquina virtual. Um arquivo .class contém bytecodes e você não pode processá-los diretamente usando assembly. Ou seja, não dá pra invocar diretamente um arquivo compilado em Java usando assembly.
Sua pergunta está respondida?
É basicamente isso, a unica coisa que o kernel vai fazer é o contato com hardware e servir de base para o Java SDK, aí depois o java entra em ação, o kernel vai ser só pra alocar a mémoria e etc.
E corrigindo assembly para assembler, assembly é para microcontroladores e assembler é para computadores pessoais e etc.
Eu só estou e dúvida é como é que eu vou chamar o Java para rodar ( chamar em assembler o programa em c ).
|
Entrem lá no meu blog:
http://www.marciomeucanto.blogspot.com.br/
"Em terra onde não há carne, urubu é frango."
"Caíste sozinho ou foi o camelo que te arremessou? Tanto faz: o fato é que eu caí."
"Por causa da rosa, a erva daninha acaba sendo regada."
"Um centavo economizado é um centavo ganho."
"Todos os gatos adoram peixe, mas odeiam ficar com as patas molhadas."
"Com a mentira se consegue o almoço, mas não o jantar."
"Alimenta teu cão e ele guardará tua casa; faze jejuar teu gato e ele te comerá os ratos."
Não fazem mais GNU/Linux como antigamente!=)
Você não precisa ser inteligente, basta ter motivação.
"Tudo tem o seu tempo determinado, e há tempo para todo o propósito debaixo do céu", Ec 3,1
"Se quer ser famoso, faça um bom programa de código livre, se quer dinheiro, escreva um pago e não sendo código livre"
http://www.facebook.com/mcirqueira11/
Eu e Deus !!! EnJAVAndo os Neurônios!!!
while (EuViver() == true ){
Estudo();
Trabalho();
LouvarDeus();
} |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 22:09:41
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
mcirqueira wrote:
matheuslmota wrote:Cara, basicamente tu tá querendo é implementara uma máquina virtual. Um arquivo .class contém bytecodes e você não pode processá-los diretamente usando assembly. Ou seja, não dá pra invocar diretamente um arquivo compilado em Java usando assembly.
Sua pergunta está respondida?
É basicamente isso, a unica coisa que o kernel vai fazer é o contato com hardware e servir de base para o Java SDK, aí depois o java entra em ação, o kernel vai ser só pra alocar a mémoria e etc.
E corrigindo assembly para assembler, assembly é para microcontroladores e assembler é para computadores pessoais e etc.
Eu só estou e dúvida é como é que eu vou chamar o Java para rodar ( chamar em assembler o programa em c ).
Nada disso. Assembly é uma linguagem de montagem. Assembler é a ferramenta que traduz o código assembly para linguagem de máquina.
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2012 07:09:47
|
rmendes08
GUJ Master
![[Avatar]](/images/avatar/9ee855f3ce4dd40182183463232e2162.jpg)
Membro desde: 29/05/2008 14:09:28
Mensagens: 1617
Offline
|
Cara, você vai ter quer fazer 2 trabalhos que exigem equipes enormes:
1 - implementar um kernel próprio
2 - implementar uma JVM para o seu kernel
Eu imagino que esse trabalho lhe trará muita satisfação pessoal para você abrir mão do que já está pronto.
|
"A Técnica é transformada em Arte por quem a emprega"
"O futuro pertence àqueles que acreditam na beleza de seus sonhos"
Computadores Fazem Arte
http://www.uaijug.com.br
"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2012 07:39:13
|
douglaskd
GUJ Ranger
![[Avatar]](/images/avatar/836e08ad1864b72840258c910b729fb6.jpg)
Membro desde: 04/07/2010 00:51:49
Mensagens: 839
Localização: Campinas - SP
Offline
|
vai na fé cara...
ja vi um linux feito com javascript puro
o lance é montar "emular" o kernel
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2012 07:43:48
|
Longino
JavaGuru
Membro desde: 22/01/2011 10:08:43
Mensagens: 235
Offline
|
mcirqueira wrote:Só diferenciando o android do singularity - O primeiro é um kernel escrito em linguagem c trocando mensagens com uma máquina virtual. O segundo é um kernel escrito em c#, onde até os módulos também são escritos nessa linguagem.
Esses caras conseguiram em menos de 100 anos fazer o que eu estou querendo fazer:
http://www.jnode.org/
http://pt.wikipedia.org/wiki/JNode
O sistema é todo em java, e o kernel é todo em assembly.
Eu lhe indicaria justamente o JNode, mas parece que você já está por dentro de como essas coisas funcionam. Se conseguir fazer algo interessante nos avise.
Um projeto assim deve ser bem legal de se fazer.
This message was edited 2 times. Last update was at 09/02/2012 07:44:35
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2012 09:15:15
|
luistiagos
GUJ Expert
![[Avatar]](/images/avatar/98785ca89cfbbe933921bfe68a94553b.jpg)
Membro desde: 10/07/2006 10:37:23
Mensagens: 3161
Offline
|
boa sorte... e não esqueça de passar seu projeto para seus filhos e dizer a eles passarem para seus netos quem sabe daqui a uns 200 anos seus tataranetos estarão finalizando o mesmo...
|
SCJP 1.5
SCJA 1.0
IBM DB2 Associate |
|
|
 |
|
|