Codificando um SO. Em que linguagem?

11 respostas
D

Primeiramente desculpem a minha total ignorância em SO’s mas agora a pouco vi uma matéria sobre o lançamento do Windows 8 blablabla.

Daí veio instantaneamente em minha cabeça. Em que linguagem o core de um sistema operacional é codificado? E a interface gráfica? E as aplicações em geral que vem no pacote do software? Linguagens comuns ou linguagem especificas usadas somente para cada SO?

Assembly? Java (acho que não né)? C/C++(acho que sim, mas não tenho certeza)? HTML (brincadeirinha rsrsrs, óbvio que não)?

11 Respostas

WRYEL

Assembly, C e C++ é de lei que eu saiba, aguarde a resposta de um especialista no assunto :slight_smile:

Jesuino_Master

Acho que o windows tem bastante C++. Me disseram também que tem muito python no Windows.

O kernel do linux é feito em C.

Seria legal alguém experiente falar sobre a parte de vdd do SO, não aquelas coisinhas arquiteturais, tipo, semáforo, I/O e tals…

rmendes08

Não deve ter muito segredo não. Assembly nos drivers, C no kernel e C++/C#/Java para aplicativos que vem com o sistema operacional, claro, com uma boa dose de código nativo no caso do C# e do Java.

davidbuzatto

Vê lá! Segredo nenhum. Trabalhinho de final de semana :shock:
Afinal de contas, o que é um SO não é mesmo :?
C# em aplicativos do Windows até dá p/ acreditar, mas Java? Difícil hein…
Não entendi a do “com uma boa dose de código nativo no caso do C# e do Java.”.

Python dentro do Windows? Será?

rmendes08

Vê lá! Segredo nenhum. Trabalhinho de final de semana :shock:
Afinal de contas, o que é um SO não é mesmo :?
C# em aplicativos do Windows até dá p/ acreditar, mas Java? Difícil hein…
Não entendi a do “com uma boa dose de código nativo no caso do C# e do Java.”.

Python dentro do Windows? Será?

Técnicas para projetos de SO não são segredo nenhum mesmo, a literatura é vasta e temos vários exemplos open-source. Agora, o fato do conhecimento estar disponível não quer dizer que o volume de trabalho seja pequeno.

Quanto ao Java, bem, é praticamente impossível ter alguma coisa em Java no Windows, mas se eu não me engano muita coisa no Solaris é feita em Java.

Não entendi a do "com uma boa dose de código nativo no caso do C# e do Java.".

Tanto Java quanto C# permitem que você chame bibiliotecas escritas em código nativo, tratando-se de aplicativos específicos para o SO acredito que não se faça muita questão de abstrair determinados recursos.

Mikhas

Achei essa Wiki aqui a algum tempo que tem bastante coisa para quem quer desenvolver um S.O.

Qualquer dia vou trabalhar em um basico para ver no que dá.

http://wiki.osdev.org/Main_Page

V

4 boas referencias bem conhecidas:

*Sistemas Operacionais Modernos - Tanenbaum
*Sistemas Operacionais - Tanenbaum / WoodHull

O segundo eh bem parecido com o primeiro, a diferença eh que vem com o codigo fonte do minix no livro e em um cd.

*Fundamentos em programacao assembly - Manzano
*C Completo e Total - Osborne

davidbuzatto

Que existe literatura para o assunto todo mundo sabe. O problema é fazer. Por mais que tenha exemplos e tudo mais, tente fazer um baseado somente na literatura e não copiar algo pronto. Acho muita inocência da sua parte achar que é algo tão simples assim por existir literatura sobre o assunto.

Enfim, cada um pensa de um jeito não é?

duduribeiro

o Jnode é escrito em java
=]

Jesuino_Master

Vê lá! Segredo nenhum. Trabalhinho de final de semana :shock:
Afinal de contas, o que é um SO não é mesmo :?
C# em aplicativos do Windows até dá p/ acreditar, mas Java? Difícil hein…
Não entendi a do “com uma boa dose de código nativo no caso do C# e do Java.”.

Python dentro do Windows? Será?

É então, isso é bem controverso. Uma vez teve um treinamento de Python aqui na onde trabalho e o instrutor falou que boa parte do windows XP (acho que 30%) é feito em Python e com Python é possível dominar o sistema. Ele disse isso no treinamento, eu ouvi (eu não fazia parte), daí perguntei pro pessoal que estava no treinamento e confirmaram.

Mas morreu nisso, não sei se é verdade…

J

O código do win 2000 vazou a muito tempo e não postarei o link aqui por razões éticas e para evitar problemas, mas basta pesquisar no google para encontrar.

Um sistema desse nível normalmente possui um bootstrap em assembly que carrega o restante do sistema na memória ram. O bootstrap é escrito em assembly, e não hà outro modo.

O sistema pode ser escrito em qualquer linguagem que vá gerar instruções nativas do processador. Isso pode incluir java ou qualquer outra linguagem, desde que o compilador crie o arquivo no formato específico (rom).

O windows é inteirinho escrito em c++(e pasmem, usa o compilador da intel e não o da própria empresa).
Unix são inteiramente escritos em linguagem c por essa permitir praticamente tudo o que o assembly faz com nível mais alto.

http://www.codeproject.com/KB/system/CosmosIntro.aspx

Um bom exemplo de embarcação de máquina virtual num sistema é o android.

Criado 22 de fevereiro de 2011
Ultima resposta 23 de fev. de 2011
Respostas 11
Participantes 9