Sistema Operacional feito em python

3,309 views
Skip to first unread message

Caroline Amado

unread,
Dec 19, 2012, 1:13:27 PM12/19/12
to python...@googlegroups.com
Então pessoal estou estudando sobre sistemas operacionais e me fiz a pergunta existe algum sistema operacional feito em python? 

Segunda pergunta, sendo uma linguagem de alto nível é tranquilo programar/organizar os modos de permissão (usuário, kernel, ou mais)? Como funciona isso?

Quem puder da uma luz, agradeço desde já!


Obrigada pela atenção! 
-- 
Caroline Amado @x66girl

Itamar Reis Peixoto

unread,
Dec 19, 2012, 1:15:26 PM12/19/12
to python...@googlegroups.com
2012/12/19 Caroline Amado <carolara...@gmail.com>:
atualmente 99.99% dos sistemas operacionais existentes sao escritos em
c e assembly, não é possivel escrever um sistema operacional em
python.



--
------------

Itamar Reis Peixoto

Filipe Cifali

unread,
Dec 19, 2012, 1:27:40 PM12/19/12
to python...@googlegroups.com
Caroline, justamente por ser uma linguagem de alto nível, ela usa linguagens de baixo nível no core dela para funcionar.

Mas depende, no caso de criar programas para gestão dos usuários é bem simples, a lib os permite ter contato direto com o sistema, sem precisar executar comandos externos em alguns casos.

Fica sempre a dúvida, para o trabalho que tu quer fazer, python é a ferramenta correta?

Criar um módulo no kernel é C, definitivamente, agora, gerenciar usuários, existe essa necessidade de fato já que já existem ferramentas que fazem isso?



--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*> Para visitar o site do grupo na web, acesse:
    http://groups.google.com/group/python-brasil

<*> Para sair deste grupo, envie um e-mail para:
    python-brasi...@googlegroups.com






--
[ ]'s

Filipe Cifali Stangler

Jonathan Reboucas

unread,
Dec 19, 2012, 2:13:46 PM12/19/12
to python...@googlegroups.com
Olá Caroline.
Já ouvi boatos sobre projetos de sistemas operacionais em python. Salvo engano, uma linguagem que pode desenvolver uma máquina de Turing é capaz de fazer qualquer coisa que outras linguagens como C fazem. E python é capaz! Ouvi falar de um projeto chamdo UNUNUNIUM que era totalmente open source, "óbvio" e estava carente de "helpers". Ouvi rumores que esse projeto foi abandonado, mas não cheguei a conferir. Mas, onde há fumaça há fogo. Se existe a idéia devem haver resultados.
espero ter ajudado.

Marcos Barbosa

unread,
Dec 19, 2012, 2:32:04 PM12/19/12
to python...@googlegroups.com
O problema é que o Python é linguagem interpretada, logo precisa de um interpretador. Um sistema operacional precisa ser em linguagem compilada, já que é necessário ter instruções em Assembly que serão executados pelo processador. <piada> A não ser que tu crie um processador que entenda Python </piada>.


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Marcos Barbosa <marcoseste...@gmail.com>

Leonardo Santagada

unread,
Dec 19, 2012, 2:40:12 PM12/19/12
to python...@googlegroups.com


2012/12/19 Marcos Barbosa <marcoseste...@gmail.com>

O problema é que o Python é linguagem interpretada, logo precisa de um interpretador. Um sistema operacional precisa ser em linguagem compilada, já que é necessário ter instruções em Assembly que serão executados pelo processador. <piada> A não ser que tu crie um processador que entenda Python </piada>.

Python consegue chamar assembly então esse não é o problema. E já teve gente falando sobre um hardware que entende python nativo, embora também já tenha muita pesquisa em que um software consegue otimizar python melhor do que o hardware.

O ununilenium (acho que era esse o nome) era um os feito em python, eles até chegaram a ter um negócio bootavel, mas não passou muito disso.

--

Leonardo Santagada

Danillo Souza

unread,
Dec 19, 2012, 2:40:56 PM12/19/12
to python...@googlegroups.com
Alguém me corrija se eu estiver errado, mas em teoria, se você escrever um bootloader em que carregue seus binários escritos em Python (creio que o PyPy é capaz de resolver isso, não?) com binds de C/C++ para tratar de situações mais específicas, seria possível criar um SO usando Python (não Python puro, já que você *precisaria* da ajuda de C ou Assembly para o bootloader e comunicação com o hardware).

Leonardo Santagada

unread,
Dec 19, 2012, 3:39:16 PM12/19/12
to python...@googlegroups.com
Não é c ou assembly é assembly e talvez C. Só com C não dá para fazer um sistema operacional completo também :)

O kernel do linux por exemplo precisa de 250k linhas de assembly

e provavelmente muitas outras de assembly inline no c.


2012/12/19 Danillo Souza <danil...@gmail.com>



--

Leonardo Santagada

Marcos Barbosa

unread,
Dec 19, 2012, 4:03:35 PM12/19/12
to python...@googlegroups.com
Pode escrever o bootloader para carregar um SO em Python, mas ele vai ter que carregar o interpretador para isso. E se não me engano o interpretador Python não é escrito em Python. E não adianta só chamar Assembly. Vai ter que ter o interpretador de qualquer maneira. É uma pilha: Hardware > kernel > interpretador > python. Não tem como mudar isso (pelo menos de forma fácil) para que o interpretador rode direto no hardware. Repetindo: Linguagens interpretadas não são boas de se fazer SO justamente por causa do interpretador.

Eduardo Tenorio

unread,
Dec 19, 2012, 4:57:57 PM12/19/12
to python...@googlegroups.com
Querer fazer um SO em Python é um direcionamento totalmente errado.
Quer fazer algo que fale diretamente com o hardware? Use C.

É aquela velha frase: "Quando só se tem um martelo, tudo se parece com um prego.".

d4n1

unread,
Dec 19, 2012, 5:25:35 PM12/19/12
to python...@googlegroups.com

Uma alternativa em alguns casos que não seja assembler é fazer em lua (256k compactada com libs e etc) é embutir em C ou fazer em C e criar alguns procedimentos em lua, mas como aqui é lista de Python, então como falaram, Python serve para muita coisa de alto nível (web, interface gráfica, scripts de rede e de softwares, terminais e etc), para baixo nível vai de C e assembler, e se quiser subir o nível e integrar com C mais facilmente com uma api que com as libs chega a 740K+- vai da linguagem tupiniquim Lua ;-)

Daniel Melo (d4n1)

Jonathan Reboucas

unread,
Dec 19, 2012, 5:37:01 PM12/19/12
to python...@googlegroups.com
Creio que "use C" não seja uma resposta adequada. Se falarmos em termos profissionais o ideal é aquilo que soluciona o problema e pronto. Mas em termos de ciências acredito ser errado descartar tal possibilidade impondo limitações que talvez só existam por que não sabemos executar tal procedimento. 
Na ciência o aspecto investigativo está acima do pragmatismo. Após várias discussões surge uma nova pergunta: "Python não é capaz de produzir um sistema operacional ou com o conhecimento que nós temos não conseguimos conceber tal coisa?"
Acredito essa ser a atitude mais humilde a se adotar.
Agora é um ótimo momento para a frase de Twain/Cocteau: "Não sabendo que era impossível, foi lá e fez."

Leonardo Santagada

unread,
Dec 19, 2012, 5:41:33 PM12/19/12
to python...@googlegroups.com


2012/12/19 Jonathan Reboucas <www.p...@gmail.com>

"Python não é capaz de produzir um sistema operacional ou com o conhecimento que nós temos não conseguimos conceber tal coisa?"

A resposta nem é tão triste, é na verdade "sim dá pra fazer mas dá trabalho e a performance provavelmente vai ser horrivel". É preciso reescrever partes do CPython ou do PyPy para que ele não dependa da libc, e vai dar um trabalhão no geral, mas para um sistema de aprendizado feito para rodar no virtualbox eu acredito que poderia ter um valor alto tanto de pesquisa quanto didatico.


--

Leonardo Santagada

Lucas Klassmann

unread,
Dec 19, 2012, 5:52:45 PM12/19/12
to python...@googlegroups.com
Eduardo Tenorio,

Eu concordo que o mais eficiente em hardware seja C, ou melhor, Assembly. Mas não devemos descartar as possibilidade e nem deixar de discutir, esse pergunta que a Caroline fez não foge das dúvidas que vários programadores iniciantes tem sobre SOs.

Já vi histórias de pessoas implementando um SO em Java, em .NET, temos até mesmo implementações do Kernel do Linux escritos em Javascript, e tudo isso no final das contas é para explorar além dos nossos limites e talvez encontrar soluções não antes pensadas.

O importante é criar, pensar além dos limites impostos.

E só porque todo mundo sabe da eficiência de C não vamos mais pensar em explorar outras possibilidades?

Vai que construir um SO em Python permita fazer módulos e sistemas gerenciados com uma maior simplicidade ou até mesmo uma manutenção mais fácil?

Att.

2012/12/19 Eduardo Tenorio <emb...@gmail.com>



--
Lucas KlassmannDesenvolvedor de Software
Desenvolvimento de aplicativos web, desktop e mobile
Email: <lucaskl...@gmail.com>
Web Site: http://www.lucasklassmann.com


Eduardo Tenorio

unread,
Dec 19, 2012, 6:17:53 PM12/19/12
to python...@googlegroups.com
Bem, Python com certeza quando foi pensada, não tinha esse foco de desenvolver um SO. Isso não é ser mente fechada, mas apenas ser pragmático.
Agora, que C se beneficiaria de algumas características do Python (simplicidade de codar, por exemplo), é algo indiscutível. O ideal seria que um código Python fosse compilado em um Assembly semelhante ao gerado por um código C bem escrito e otimizado.

Lucas Klassmann

unread,
Dec 19, 2012, 6:22:08 PM12/19/12
to python...@googlegroups.com
Um Python escrito em Assembly seria de uma performance muito grande acredito, mas para codificar o interpretador talvez se torne um pouco complexo, mas a ideia é boa :P

Como comentei, talvez escrever uma Kernel que interprete Python, e como você disse, em Assembly, talvez fosse a resposta para a Caroline.

2012/12/19 Eduardo Tenorio <emb...@gmail.com>

Christiano Anderson

unread,
Dec 19, 2012, 7:15:41 PM12/19/12
to python...@googlegroups.com
Em uma conversa de boteco com alguns amigos, entramos exatamente nesse assunto e a conversa quase virou a noite. :-)

Posso fazer uma comparação meio grosseira ao GNU/Linux. Linux = Kernel, desenvolvido em C, Assembly e outras linguagens e o GNU que é um conjunto de utilitários, que faz o sistema operacional ser mais amigável, provendo comandos como ls, cd, ps, entre dezenas de outros, em sua maioria, desenvolvidos em C. 

O Python poderia substituir essa camada GNU, provendo esses utilitários. O Unununium (que já foi citado aqui) segue esses princípios. 

Ou seja, se houver um kernel como Linux, BSD, Hurd [ou_o_seu_favorito_aqui], a camada intermediária de utilitários unix-like poderia ser em Python. 

Um sistema operacional 100% Python só seria possível se o processador já tivesse um interpretador Python embutido. 

Bom, essa é apenas minha viagem filosófica acerca do tema! :-)

[]s


2012/12/19 Lucas Klassmann <lucaskl...@gmail.com>

Leonardo Santagada

unread,
Dec 20, 2012, 7:28:23 AM12/20/12
to python...@googlegroups.com


2012/12/19 Lucas Klassmann <lucaskl...@gmail.com>

Um Python escrito em Assembly seria de uma performance muito grande acredito, mas para codificar o interpretador talvez se torne um pouco complexo, mas a ideia é boa :P

Não, um interpretador escrito em assembly fazendo a mesma coisa que o cpython faz seria só marginalmente mais rápido e a linguagem python é ultra complexa para desenvolver ela toda em assembly seria um mega trabalho e não ajuda em nada para fazer um sistema operacional.

--

Leonardo Santagada

Leonardo Santagada

unread,
Dec 20, 2012, 7:30:10 AM12/20/12
to python...@googlegroups.com


2012/12/19 Christiano Anderson <christian...@gmail.com>

Um sistema operacional 100% Python só seria possível se o processador já tivesse um interpretador Python embutido. 

Um sistema operacional nunca é 100% outra linguagem sem ser assembly, porque não dá, mas ele poderia ser 95% python sim hoje, "só" portando o cpython para não usar a libc e fazendo um bootloader e outras ferramentas necessárias (que poderiam ser pegas emprestado do linux/bsd/mach).

--

Leonardo Santagada

Lucas Klassmann

unread,
Dec 20, 2012, 7:38:45 AM12/20/12
to python...@googlegroups.com
Santagada,

Como o Christiano respondeu, se um processador tivesse um interpretador python embutido talvez fosse possível criar um sistema operacional 100% Python.

http://stackoverflow.com/questions/5526783/python-cpu-and-os

E como eu já mencionei, dentro da arquitetura atual dependemos do bootloader que deverá ser escrito em Assembly por exemplo, e mesmo tendo um kernel que interprete python, este kernel deverá ser escrito em C ou Assembly.

Att.

2012/12/20 Leonardo Santagada <sant...@gmail.com>

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 

Marcos Barbosa

unread,
Dec 20, 2012, 7:43:56 AM12/20/12
to python...@googlegroups.com
Foi basicamente o que eu disse a long thread ago in a message far far away. Só se o processador entender Python é possível fazer um SO em Python. Mesmo um bootloader escrito em Assembly teria que carregar um interpretador Python, que acho que seria escrito em C. O problema de tudo é o interpretador. Não dá pra fazer um interpretador de Python em Python por que o interpretador teria que ser interpretado, e quem faria isso? Logo tu precisa de uma base C/Assembly antes de fazer algo em Python. Quanto a usar utilitários em Python, é possível, mas não vejo por que reinventar a roda e reescrever os utilitários GNU que são tão bem escritos.
Marcos Barbosa <marcoseste...@gmail.com>

Christiano Anderson

unread,
Dec 20, 2012, 8:08:52 AM12/20/12
to python...@googlegroups.com
Ou seja, com a arquitetura mais comum na maioria dos computadores (x86/AMD), não tem como fugir da base em C/Assembly. Concordo que reescrever todos os utilitários GNU é besteira, já que funcionam muito bem, mas essa reescrita faria sentido se alguém quiser ser bem purista e ter tudo rodando em Python! :-) 

[]s


2012/12/20 Marcos Barbosa <marcoseste...@gmail.com>



--

Luciano Ramalho

unread,
Dec 20, 2012, 8:10:04 AM12/20/12
to python...@googlegroups.com
2012/12/19 Marcos Barbosa <marcoseste...@gmail.com>:
> O problema é que o Python é linguagem interpretada, logo precisa de um
> interpretador. Um sistema operacional precisa ser em linguagem compilada, já
> que é necessário ter instruções em Assembly que serão executados pelo
> processador. <piada> A não ser que tu crie um processador que entenda Python
> </piada>.

Não é bem assim: nada impede que um interpretador Python gere o código
de máquina necessário. De fato, isso já existe: o PyPy tem um JIT
(compilador just-in-time) que gera linguagem de máquina em tempo de
execução.

É como o Jonathan falou: qualquer linguagem de programação "Turing
completa" pode fazer qualquer coisa que outra linguagem de programação
"Turing completa" pode fazer. Claro que haverão diferenças de
desempenho e dificuldade.

Antes que alguém fale: mas como você faz o interpretador Python
começar a funcionar no hardware de uma nova plataforma para poder
gerar o código de máquina? A resposta é: da mesma forma que se faz com
C. Para começar o desenvolvimento você usa uma plataforma conhecida
onde tem as ferramentas necessárias e a partir dessa plataforma gera o
código mínimo necessário para rodar na nova plataforma. Um dia você
consegue portar o suficiente para poder rodar tudo na nova plataforma.

[ ]s
Luciano
Luciano Ramalho / OFICINAS TURING
Twitter: @ramalhoorg

Autor e professor dos cursos:

* Objetos Pythonicos --> http://turing.com.br/oopy
* Python para quem sabe Python --> http://turing.com.br/ppqsp

Alejandro Mesias

unread,
Dec 20, 2012, 8:23:24 AM12/20/12
to python...@googlegroups.com
Queria aproveitar o que o Ramalho falou, houve uma discussão aqui sobre compilar o código C gerado pelo fonte python e usar isso como otimização.

Seria válido fazer isso ? o ganho pode ser grande ? acho que a conversa ficou que com as máquinas de hoje a diferença é muito pequena entre usar a VM do python e o binário nativo

2012/12/20 Luciano Ramalho <luc...@ramalho.org>



--
======================================
Alejandro Mesias André Nebra Perez
Java/Python/Js/Something else Developer
Twitter: @meszias
Linux User #442506
Campinas - SP - Brasil - South America
======================================

Leonardo Santagada

unread,
Dec 20, 2012, 11:31:12 AM12/20/12
to python...@googlegroups.com
Só para reforçar o que o ramalho falou, é sim possivel fazer tudo que se faz em C em python e como num sistema operacional em C vai precisar de partes em assembly.

2012/12/20 Luciano Ramalho <luc...@ramalho.org>

Não é bem assim: nada impede que um interpretador Python gere o código
de máquina necessário. De fato, isso já existe: o PyPy tem um JIT
(compilador just-in-time) que gera linguagem de máquina em tempo de
execução.

E para um sisop isso não é requisito, depois do boot, muito possivelmente dá para fazer tudo com um interpretador. 
 
É como o Jonathan falou: qualquer linguagem de programação "Turing
completa" pode fazer qualquer coisa que outra linguagem de programação
"Turing completa" pode fazer. Claro que haverão diferenças de
desempenho e dificuldade.

Antes que alguém fale: mas como você faz o interpretador Python
começar a funcionar no hardware de uma nova plataforma para poder
gerar o código de máquina? A resposta é: da mesma forma que se faz com
C. Para começar o desenvolvimento você usa uma plataforma conhecida
onde tem as ferramentas necessárias e a partir dessa plataforma gera o
código mínimo necessário para rodar na nova plataforma. Um dia você
consegue portar o suficiente para poder rodar tudo na nova plataforma.



--

Leonardo Santagada

Leonardo Santagada

unread,
Dec 20, 2012, 11:32:40 AM12/20/12
to python...@googlegroups.com


2012/12/20 Alejandro Mesias <ale.m...@gmail.com>

Queria aproveitar o que o Ramalho falou, houve uma discussão aqui sobre compilar o código C gerado pelo fonte python e usar isso como otimização.

Seria válido fazer isso ? o ganho pode ser grande ? acho que a conversa ficou que com as máquinas de hoje a diferença é muito pequena entre usar a VM do python e o binário nativo

Tudo é válido, mas o ganho é pequeno e o esforço ridiculamente alto se tu precisa de toda a linguagem python (e não um subset). Os ultimos a tentarem essa ideia foram o pessoal do Facebook com o compilador de PHP que eles estão aposentando depois de verem que uma vm é mais rápida.


--

Leonardo Santagada

Christian S. Perone

unread,
Dec 20, 2012, 12:32:21 PM12/20/12
to python...@googlegroups.com
Alejandro, você habilitou o turbo mode ? O turbo mode está causando corrupção do SD em vários RPis.


2012/12/20 Leonardo Santagada <sant...@gmail.com>

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
"Forgive, O Lord, my little jokes on Thee, and I'll forgive Thy great big joke on me."

Guto Maia

unread,
Dec 20, 2012, 12:36:26 PM12/20/12
to python...@googlegroups.com
Christian... oq é o Turbo mode? (newbie em RP)
Guto Maia
@gutomaia


Em 20 de dezembro de 2012 15:32, Christian S. Perone
<christia...@gmail.com> escreveu:

Eric Kinoshita

unread,
Dec 20, 2012, 12:39:56 PM12/20/12
to python...@googlegroups.com
A maioria de vocês devem saber disso, mas certamente há quem não saiba.

Ao contrário do que muita gente pensa, a interface de usuário não é necessariamente parte do sistema operacional. Por exemplo, nos Linux a parte gráfica é um módulo distinto. Então há o kernel que faz a comunicação/gerência direto com a máquina, e em cima desse núcleo, há as camadas gráficas do shell, do X11, entre outros. E por sua vez, em cima do X11, há os gerenciadores de desktop como o Gnome, o KDE e entre tantas outros.

(Me corrijam pois não sou perito nesse assunto.)

Hoje em dia, que não temos uma estrutura de máquina que interprete Python, acredito que seja plenamente possível desenvolver camadas externas ao kernel (camada de aplicação) com Python (seja um shell, uma interface gráfica ou até um gerenciador de desktop).

Concordam?

Christian S. Perone

unread,
Dec 20, 2012, 12:40:23 PM12/20/12
to python...@googlegroups.com
Opa Guto, o Turbo Mode [1] é um modo que eles habilitaram no Raspberry Pi pra fazer overclock/overvolt de 700Mhz até 1Ghz (dá pra ir até 1.3Ghz também) sob demanda sem perder a garantia do Raspberry Pi, quando chega em 85 graus a temperatura do processador ele baixa a frequencia do processador para resfriar. O problema é que mesmo com overclocks baixos de 900Mhz o RPi está corrompendo o cartão SD, infelizmente tive esse problema com o meu também =(



2012/12/20 Guto Maia <gu...@guto.net>

Christian S. Perone

unread,
Dec 20, 2012, 12:42:48 PM12/20/12
to python...@googlegroups.com
Postei no tópico errado pessoal, desculpem.


2012/12/20 Eric Kinoshita <eric...@gmail.com>
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 

Leonardo Santagada

unread,
Dec 20, 2012, 12:50:49 PM12/20/12
to python...@googlegroups.com


2012/12/20 Eric Kinoshita <eric...@gmail.com>

Hoje em dia, que não temos uma estrutura de máquina que interprete Python, acredito que seja plenamente possível desenvolver camadas externas ao kernel (camada de aplicação) com Python (seja um shell, uma interface gráfica ou até um gerenciador de desktop).

Concordam?

Claro, mas onde você quer chegar? Que dá pra ter um kernel linux e o resto todo em python? Isso não só é possivel como talvez seja até bastante util, existe um shell feito em python que se chama fish e tem mais de um gerenciador de janelas feito todo em python.

Mas o assunto era: "Dá pra fazer um kernel de SO em Python", e a resposta é "SIM". Não vai ficar rápido (ao menos não agora) e provavelmente só vai ser util para testar teorias de SO usando python para ser mais rápido de desenvolver, mas talvez seja muito divertido.

--

Leonardo Santagada

Luciano Ramalho

unread,
Dec 20, 2012, 1:10:52 PM12/20/12
to python-brasil

Um ponto básico que eu queria ressaltar: um compilador e um assembler são apenas programas que lêem código fonte na linguagem x e geram código de maquina, e este programa (o compilador ou o assembler) pode ser escrito em qualquer linguagem, nem precisa ser uma linguagem particularmente eficiente. Portanto sim, tudo isso pode ser feito em Python.

--

Eduardo Tenorio

unread,
Dec 20, 2012, 2:45:57 PM12/20/12
to python...@googlegroups.com
A galera tá numa viagem massa...
"A alternativa seria fazer um processador que entenda Python"

Cara... Quero ver isso algum dia. Um processador com um interpretador Python dentro.
Antes de sair chutando, vamos dar uma olhadinha em como um processador é implementado né galera?!

Marcos Barbosa

unread,
Dec 20, 2012, 3:11:47 PM12/20/12
to python...@googlegroups.com
Pelo que eu sei tu pode gerar código compilado, mas é como no caso do código rodando em máquina Java. Não é código de máquina, apenas uma otmização para agilizar a execução do programa. Logo tu vai precisar do pacote Python também para executar esse código.
Marcos Barbosa <marcoseste...@gmail.com>

Vinicius Assef

unread,
Dec 20, 2012, 3:14:46 PM12/20/12
to python...@googlegroups.com
Eduardo, não vou me lembrar agora do fabricante, mas em 2009 eu
trabalhei num projeto de computação embarcada que havia alternativa de
usarmos um módulo que rodava python no processador.

Na época optamos por usar a Beagle Board, mas essa alternativa de
Python embedded já existia. Não sei como era o interpretador lá
dentro, mas que o processador fazia, isso fazia.


2012/12/20 Eduardo Tenorio <emb...@gmail.com>:

Eduardo Tenorio

unread,
Dec 20, 2012, 9:09:50 PM12/20/12
to python...@googlegroups.com
Mas ele vinha com um programa já gravado na flash? Porque mesmo deste jeito, ainda é uma solução irreal.
É uma otimização desnecessária.

Caroline Araujo Amado

unread,
Dec 20, 2012, 9:15:45 PM12/20/12
to python...@googlegroups.com
Agora sim, faz todo o sentido para mim. Desde que eu esteja gerando em código de máquina, está tudo perfeito. 
--
Caroline Amado @x66girl http://x66girl.blogspot.com/ 

Luciano Ramalho

unread,
Dec 20, 2012, 9:21:40 PM12/20/12
to python...@googlegroups.com
2012/12/20 Vinicius Assef <vinic...@gmail.com>:
> Eduardo, não vou me lembrar agora do fabricante, mas em 2009 eu
> trabalhei num projeto de computação embarcada que havia alternativa de
> usarmos um módulo que rodava python no processador.
>
> Na época optamos por usar a Beagle Board, mas essa alternativa de
> Python embedded já existia. Não sei como era o interpretador lá
> dentro, mas que o processador fazia, isso fazia.

Talvez fosse esse projeto PyMite:

http://code.google.com/p/python-on-a-chip/

Note que é um projeto de um interpretador Python reduzido (então algo
parecido com aqueles outros baseados em JS que discutimos em outra
thread).

Apesar de ser divertido, "python-on-a-chip" é um certo exagero. O que
o projeto oferece é um interpretador de um sub-set de Python, escrito
em C, que pode ser compilado para rodar em microcontroladores sem
precisar de um SO.

Tem mais sobre Python embarcado no Wiki oficial do Python.org:

http://wiki.python.org/moin/EmbeddedPython

[ ]s
Luciano

Eduardo Tenorio

unread,
Dec 20, 2012, 9:26:23 PM12/20/12
to python...@googlegroups.com
Luciano, então basicamente a idéia é aproveitar a vantagem do Python de ser fácil de codar e usá-la, ao invés de usar o C puro, mais díficil de codar. É isso? Se for, está de acordo com o que eu disse anteriormente (usar a sintaxe do Python e outras vantagens em um código compiládo).

Alejandro Mesias

unread,
Dec 21, 2012, 3:46:55 AM12/21/12
to python...@googlegroups.com
Bom, pelo menos isso é Python Embarcado "de verdade", não sei se Raspberry pode ser considerado embarcado. Me parece que não.

2012/12/21 Eduardo Tenorio <emb...@gmail.com>



--

Fábio Barrionuevo

unread,
Dec 20, 2012, 5:48:47 AM12/20/12
to python...@googlegroups.com
Saiu na EuroPython 2012..

Nuitka - The-Python-Compiler[1][2]


[1] http://www.nuitka.net/
[2] https://ep2012.europython.eu/conference/talks/nuitka-the-python-compiler
Fábio C. Barrionuevo da Luz
Acadêmico de Sistemas de Informação na Faculdade Católica do Tocantins - FACTO
Palmas - Tocantins - Brasil - América do Sul

Lucas Klassmann

unread,
Dec 19, 2012, 4:51:41 PM12/19/12
to python...@googlegroups.com
Caroline,

Como vimos muitas pessoas discutirem aqui, um sistema operacional, para arquiteturas (vamos falar de x86, amd64) em sua maioria são criadas com linguagens como Assembly, C, C++.

Se é possivel escrever um sistema operacional em Python dai depende de como será o desenho desse sistema operacional, porque os SOs possuem diversas formas de implementação.

Normalmente o que você faz é:

[ Daqui em diante seria aplicativos de usuarios ]
======================
=  CLI/Applicativos              = Aplicativos basicos de linhas de comando
======================
======================
=  Biblioteca                        = Bibliotecas basicas C, stdlib, stdio, etc
======================
====================== Possui implementado os recursos básicos do SO, como gravar em disco, ler teclado, desenhar na tela
=  Kernel                             = gerência de memoria, sistema de arquivos, e pode ser dividido em módulos.
====================== 
====================== Um software pequeno, normalmente escrito em Assembly e com um tamanho fixo de 512 bytes
=  Bootloader                       = serve para carregar o restante do sistema operacional, como o Kernel e outros utilitários, este
====================== pequeno software é gravado no começo das trilhas do disco rígido, e é lido pela BIOS ao dar boot no Kernel
======================
=  Hardware/BIOS               = Interrupções básicas
======================

Se considerarmos as arquiteturas x86, amd64, seria possível implementar um SO em python, mas não 100%, pois precisaríamos de um interpretador, mesmo que básico, e só conseguiríamos fazer isso do Kernel para cima, logo o mínimo seria:
- Bootloader: Assembly
- Kernel+Interpretador Python: C ou C++
   - Se o próprio Kernel interpretasse o python, poderíamos criar o restante dos módulos de gerência de memoria, sistema de arquivos e tal em Python.
- Restante do sistema: Python

Isso é um pouco do que li e estudei, pois tenho interesse em implementações de sistemas operacionais, é uma área muito interessante, junto com VM e Compiladores.

** Eu não considerei hardwares que interpretam Python diretamente, neste caso talvez fosse possível escrever 100%, mas essa não é a realidade pelo menos para Desktops. :)

Abraços e espero ter ajudado a esclarecer um pouco as suas dúvidas.

Álvaro Justen [Turicas]

unread,
Dec 19, 2012, 5:27:41 PM12/19/12
to python...@googlegroups.com
2012/12/19 d4n1 <d4n1...@gmail.com>:
> Uma alternativa em alguns casos que não seja assembler é fazer em lua (256k
> compactada com libs e etc) é embutir em C ou fazer em C e criar alguns
> procedimentos em lua, mas como aqui é lista de Python, então como falaram,
> Python serve para muita coisa de alto nível (web, interface gráfica, scripts
> de rede e de softwares, terminais e etc), para baixo nível vai de C e
> assembler, e se quiser subir o nível e integrar com C mais facilmente com
> uma api que com as libs chega a 740K+- vai da linguagem tupiniquim Lua ;-)

Bem lembrado!
Existe um projeto que ajuda a criar sistemas embarcados em Lua -- não
sei se poderíamos caracterizá-lo exatamente como um SO, mas a ideia é
bem parecida:
http://www.eluaproject.net/

[]s
--
Álvaro Justen "Turicas"
http://blog.justen.eng.br http://twitter.com/turicas
http://CursoDeArduino.com.br http://github.com/turicas
+55 21 9898-0141

Álvaro Justen [Turicas]

unread,
Dec 19, 2012, 5:23:44 PM12/19/12
to python...@googlegroups.com
2012/12/19 Eduardo Tenorio <emb...@gmail.com>:
> Querer fazer um SO em Python é um direcionamento totalmente errado.
> Quer fazer algo que fale diretamente com o hardware? Use C.

Eu não concordo totalmente com isso. Python pode ser utilizado para
gerar e otimizar código de mais baixo nível de maneira mais simples.
Um grande exemplo é o PyPy. O "código final" não precisa ser Python,
mas Python pode ser usado para facilitar o trabalho de gerar e
melhorar o "código final".

Luciano Ramalho

unread,
Dec 20, 2012, 8:37:07 AM12/20/12
to python...@googlegroups.com
2012/12/20 Alejandro Mesias <ale.m...@gmail.com>:
> Queria aproveitar o que o Ramalho falou, houve uma discussão aqui sobre
> compilar o código C gerado pelo fonte python e usar isso como otimização.

Qual código C gerado pelo fonte Python? Isso acontece no Pypy, mas não
no ambiente de uso normal, e sim no ambiente de desenvolvimento do
próprio Pypy. Em tempo de execução o Pypy não gera código C, gera
bytecode e, quando o JIT entra em ação, linguagem de máquina.

O CPython gera bytecode.

Veja esta sessão no CPython 2.7.1:

######################
>>> def fatorial(n):
... return 1 if n < 2 else n*fatorial(n-1)
...
>>> fatorial(5)
120
>>> fatorial(50)
30414093201713378043612608166064768844377641568960512000000000000L
>>> fatorial.__code__.co_code
'|\x00\x00d\x01\x00k\x00\x00r\x10\x00d\x02\x00S|\x00\x00t\x00\x00|\x00\x00d\x02\x00\x18\x83\x01\x00\x14S'
######################

O último resultado acima é o bytecode da função fatorial. Para
inspecionar o bytecode exist o módulo dis (disassembler):

######################
>>> from dis import dis
>>> dis(fatorial)
2 0 LOAD_FAST 0 (n)
3 LOAD_CONST 1 (2)
6 COMPARE_OP 0 (<)
9 POP_JUMP_IF_FALSE 16
12 LOAD_CONST 2 (1)
15 RETURN_VALUE
>> 16 LOAD_FAST 0 (n)
19 LOAD_GLOBAL 0 (fatorial)
22 LOAD_FAST 0 (n)
25 LOAD_CONST 2 (1)
28 BINARY_SUBTRACT
29 CALL_FUNCTION 1
32 BINARY_MULTIPLY
33 RETURN_VALUE
######################

> Seria válido fazer isso ? o ganho pode ser grande ? acho que a conversa
> ficou que com as máquinas de hoje a diferença é muito pequena entre usar a
> VM do python e o binário nativo

Não é pequena a diferença, é bem grande.

Mas tem outra coisa que faz muita diferença: é a natureza estática x
dinâmica do código que está sendo executado. Por exemplo, o Pypy
consegue ganhos imensos de desempenho porque inspeciona o código
Python em tempo de execução e detecta que determinada estrutura
dinâmica e heterogênea, por exemplo uma lista, de repente pode ser
representada em um determinado contexto como uma estrutura estática e
homogênea, como um array de ints, e ele faz essa transformação naquele
contexto específico.

[ ]s
Luciano

Álvaro Justen [Turicas]

unread,
Dec 19, 2012, 4:32:51 PM12/19/12
to python...@googlegroups.com
2012/12/19 Caroline Amado <carolara...@gmail.com>:
> Então pessoal estou estudando sobre sistemas operacionais e me fiz a
> pergunta existe algum sistema operacional feito em python?

Há muito atrás fiquei
sabendo[http://mail.python.org/pipermail/python-announce-list/2004-July/003220.html]
de um projeto chamado Unununium[http://unununium.org/], que tinha a
ideia de criar um SO feito em Python, mas atualmente não sei qual o
estado dele...

Lucas Klassmann

unread,
Dec 20, 2012, 7:34:00 AM12/20/12
to python...@googlegroups.com
Foi o que eu quis dizer, a performance provavelmente seria alta, mas como já é escrita em C, já possui uma performance grande. Desenvolver o interpretador e permitir fazer o que o python faz hoje seria de uma complexidade grande em implementar em Assembly, mas acredito que não seja também impossível.

Mas se considerarmos criar um interpretador mínimo talvez seja interessante como mencionado no link que enviei.

O que poderia ser feito é um interpretador que permitisse realizar apenas operacoes de baixo nivel com python, sem a complexidade de OO, e os módulos todos que compõe o python por exemplo.

2012/12/20 Leonardo Santagada <sant...@gmail.com>


2012/12/19 Lucas Klassmann <lucaskl...@gmail.com>
Um Python escrito em Assembly seria de uma performance muito grande acredito, mas para codificar o interpretador talvez se torne um pouco complexo, mas a ideia é boa :P

Não, um interpretador escrito em assembly fazendo a mesma coisa que o cpython faz seria só marginalmente mais rápido e a linguagem python é ultra complexa para desenvolver ela toda em assembly seria um mega trabalho e não ajuda em nada para fazer um sistema operacional.

--

Leonardo Santagada

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--

Lucas Klassmann

unread,
Dec 19, 2012, 7:49:33 PM12/19/12
to python...@googlegroups.com
Olhem só:
http://forum.osdev.org/viewtopic.php?f=1&t=6650

2012/12/19 Christiano Anderson <christian...@gmail.com>
Em uma conversa de boteco com alguns amigos, entramos exatamente nesse assunto e a conversa quase virou a noite. :-)

Posso fazer uma comparação meio grosseira ao GNU/Linux. Linux = Kernel, desenvolvido em C, Assembly e outras linguagens e o GNU que é um conjunto de utilitários, que faz o sistema operacional ser mais amigável, provendo comandos como ls, cd, ps, entre dezenas de outros, em sua maioria, desenvolvidos em C. 

O Python poderia substituir essa camada GNU, provendo esses utilitários. O Unununium (que já foi citado aqui) segue esses princípios. 

Ou seja, se houver um kernel como Linux, BSD, Hurd [ou_o_seu_favorito_aqui], a camada intermediária de utilitários unix-like poderia ser em Python. 

Um sistema operacional 100% Python só seria possível se o processador já tivesse um interpretador Python embutido. 

Bom, essa é apenas minha viagem filosófica acerca do tema! :-)

[]s


2012/12/19 Lucas Klassmann <lucaskl...@gmail.com>
Um Python escrito em Assembly seria de uma performance muito grande acredito, mas para codificar o interpretador talvez se torne um pouco complexo, mas a ideia é boa :P

Como comentei, talvez escrever uma Kernel que interprete Python, e como você disse, em Assembly, talvez fosse a resposta para a Caroline.


2012/12/19 Eduardo Tenorio <emb...@gmail.com>
Bem, Python com certeza quando foi pensada, não tinha esse foco de desenvolver um SO. Isso não é ser mente fechada, mas apenas ser pragmático.
Agora, que C se beneficiaria de algumas características do Python (simplicidade de codar, por exemplo), é algo indiscutível. O ideal seria que um código Python fosse compilado em um Assembly semelhante ao gerado por um código C bem escrito e otimizado.

Em 19 de dezembro de 2012 19:52, Lucas Klassmann <lucaskl...@gmail.com> escreveu:
Eduardo Tenorio,

Eu concordo que o mais eficiente em hardware seja C, ou melhor, Assembly. Mas não devemos descartar as possibilidade e nem deixar de discutir, esse pergunta que a Caroline fez não foge das dúvidas que vários programadores iniciantes tem sobre SOs.

Já vi histórias de pessoas implementando um SO em Java, em .NET, temos até mesmo implementações do Kernel do Linux escritos em Javascript, e tudo isso no final das contas é para explorar além dos nossos limites e talvez encontrar soluções não antes pensadas.

O importante é criar, pensar além dos limites impostos.

E só porque todo mundo sabe da eficiência de C não vamos mais pensar em explorar outras possibilidades?

Vai que construir um SO em Python permita fazer módulos e sistemas gerenciados com uma maior simplicidade ou até mesmo uma manutenção mais fácil?

Att.

2012/12/19 Eduardo Tenorio <emb...@gmail.com>
Querer fazer um SO em Python é um direcionamento totalmente errado.
Quer fazer algo que fale diretamente com o hardware? Use C.

É aquela velha frase: "Quando só se tem um martelo, tudo se parece com um prego.".

Em 19 de dezembro de 2012 18:03, Marcos Barbosa <marcoseste...@gmail.com> escreveu:
Pode escrever o bootloader para carregar um SO em Python, mas ele vai ter que carregar o interpretador para isso. E se não me engano o interpretador Python não é escrito em Python. E não adianta só chamar Assembly. Vai ter que ter o interpretador de qualquer maneira. É uma pilha: Hardware > kernel > interpretador > python. Não tem como mudar isso (pelo menos de forma fácil) para que o interpretador rode direto no hardware. Repetindo: Linguagens interpretadas não são boas de se fazer SO justamente por causa do interpretador.
Em 19 de dezembro de 2012 18:39, Leonardo Santagada <sant...@gmail.com> escreveu:
Não é c ou assembly é assembly e talvez C. Só com C não dá para fazer um sistema operacional completo também :)

O kernel do linux por exemplo precisa de 250k linhas de assembly

e provavelmente muitas outras de assembly inline no c.


2012/12/19 Danillo Souza <danil...@gmail.com>
Alguém me corrija se eu estiver errado, mas em teoria, se você escrever um bootloader em que carregue seus binários escritos em Python (creio que o PyPy é capaz de resolver isso, não?) com binds de C/C++ para tratar de situações mais específicas, seria possível criar um SO usando Python (não Python puro, já que você *precisaria* da ajuda de C ou Assembly para o bootloader e comunicação com o hardware).

Em 19 de dezembro de 2012 17:32, Marcos Barbosa <marcoseste...@gmail.com> escreveu:
O problema é que o Python é linguagem interpretada, logo precisa de um interpretador. Um sistema operacional precisa ser em linguagem compilada, já que é necessário ter instruções em Assembly que serão executados pelo processador. <piada> A não ser que tu crie um processador que entenda Python </piada>.
Em 19 de dezembro de 2012 17:13, Jonathan Reboucas <www.p...@gmail.com> escreveu:
Olá Caroline.
Já ouvi boatos sobre projetos de sistemas operacionais em python. Salvo engano, uma linguagem que pode desenvolver uma máquina de Turing é capaz de fazer qualquer coisa que outras linguagens como C fazem. E python é capaz! Ouvi falar de um projeto chamdo UNUNUNIUM que era totalmente open source, "óbvio" e estava carente de "helpers". Ouvi rumores que esse projeto foi abandonado, mas não cheguei a conferir. Mas, onde há fumaça há fogo. Se existe a idéia devem haver resultados.
espero ter ajudado.

Em quarta-feira, 19 de dezembro de 2012 16h13min27s UTC-2, Caroline Amado escreveu:
Então pessoal estou estudando sobre sistemas operacionais e me fiz a pergunta existe algum sistema operacional feito em python? 

Segunda pergunta, sendo uma linguagem de alto nível é tranquilo programar/organizar os modos de permissão (usuário, kernel, ou mais)? Como funciona isso?

Quem puder da uma luz, agradeço desde já!


Obrigada pela atenção! 
-- 
Caroline Amado @x66girl

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Marcos Barbosa <marcoseste...@gmail.com>



--

Leonardo Santagada



--
Marcos Barbosa <marcoseste...@gmail.com>



--

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 

Henr"Ikke" Pereira

unread,
Dec 20, 2012, 5:54:31 PM12/20/12
to python...@googlegroups.com
Tem uma lightining talk bem interessante sobre o python-on-a-chip: http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-saturday-morning-lightning-talks-4902718


2012/12/20 Vinicius Assef <vinic...@gmail.com>



--
Henr"Ikke" G.G. Pereira
+55 (55) 9619-7499
|_|0|_|
|_|_|0|
|0|0|0|

@maltzsama

unread,
Dec 19, 2012, 2:33:45 PM12/19/12
to python...@googlegroups.com
Dando uma olhada rapida no google achamos algumas coisas nesse sentido como
http://python-os.info/en/
http://sourceforge.net/projects/cleese/
http://linux.softpedia.com/get/System/Operating-Systems/Linux-Distributions/Python-OS-87758.shtml
https://launchpad.net/pycorn

Agora resta saber o nivel de desenvolvimento de cada um. Talvez exista
algo pra usar em VMWare ou VirtualBox...

Demetrius Albuquerque
Linux & SO www.maltzsama.blogspot.com


Em 19 de dezembro de 2012 15:13, Jonathan Reboucas
<www.p...@gmail.com> escreveu:
> UNUNUNIUM

Caroline Araujo Amado

unread,
Dec 19, 2012, 6:02:08 PM12/19/12
to python...@googlegroups.com
Gostei de sua resposta, obrigada! Realmente não é bom nos limitarmos. Fiquei triste em saber que o projeto que tinham para fazer um sistema operacional com python parece que acabou. T.T



2012/12/19 Eduardo Tenorio <emb...@gmail.com>


2012/12/19 Danillo Souza <danil...@gmail.com>

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Marcos Barbosa <marcoseste...@gmail.com>



--

Leonardo Santagada



--
Marcos Barbosa <marcoseste...@gmail.com>

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Lucas KlassmannDesenvolvedor de Software
Desenvolvimento de aplicativos web, desktop e mobile
Email: <lucaskl...@gmail.com>
Web Site: http://www.lucasklassmann.com

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Caroline Amado @x66girl http://www.x66girl.com/ 

Eduardo Tenorio

unread,
Dec 19, 2012, 8:04:03 PM12/19/12
to python...@googlegroups.com
Mas um processador ter um interpretador Python embutido é algo totalmente sem noção.
Como eu disse anteriormente, a solução seria criar um C mais parecido com Python, mas que ainda assim seja COMPILADO. Ou seja, aliar a performance do C com a facilidade de implementação do Python. Mas isso seria uma outra linguagem, e essa seria uma outra conversa.

Em 19 de dezembro de 2012 21:15, Christiano Anderson <christian...@gmail.com> escreveu:
Em uma conversa de boteco com alguns amigos, entramos exatamente nesse assunto e a conversa quase virou a noite. :-)

Posso fazer uma comparação meio grosseira ao GNU/Linux. Linux = Kernel, desenvolvido em C, Assembly e outras linguagens e o GNU que é um conjunto de utilitários, que faz o sistema operacional ser mais amigável, provendo comandos como ls, cd, ps, entre dezenas de outros, em sua maioria, desenvolvidos em C. 

O Python poderia substituir essa camada GNU, provendo esses utilitários. O Unununium (que já foi citado aqui) segue esses princípios. 

Ou seja, se houver um kernel como Linux, BSD, Hurd [ou_o_seu_favorito_aqui], a camada intermediária de utilitários unix-like poderia ser em Python. 

Um sistema operacional 100% Python só seria possível se o processador já tivesse um interpretador Python embutido. 

Bom, essa é apenas minha viagem filosófica acerca do tema! :-)

[]s


2012/12/19 Lucas Klassmann <lucaskl...@gmail.com>
Um Python escrito em Assembly seria de uma performance muito grande acredito, mas para codificar o interpretador talvez se torne um pouco complexo, mas a ideia é boa :P

Como comentei, talvez escrever uma Kernel que interprete Python, e como você disse, em Assembly, talvez fosse a resposta para a Caroline.


2012/12/19 Eduardo Tenorio <emb...@gmail.com>
Bem, Python com certeza quando foi pensada, não tinha esse foco de desenvolver um SO. Isso não é ser mente fechada, mas apenas ser pragmático.
Agora, que C se beneficiaria de algumas características do Python (simplicidade de codar, por exemplo), é algo indiscutível. O ideal seria que um código Python fosse compilado em um Assembly semelhante ao gerado por um código C bem escrito e otimizado.




--

Laerte M. Rodrigues

unread,
Dec 19, 2012, 5:38:15 PM12/19/12
to python...@googlegroups.com
com python eh possivel SIM montar um SO.

no rupy deste ano, um kra montou um kernel com javascript! a kestao toda eh otempo q vc vai gastar para fazer isto (mta das vezes será grande)


Em 19 de dezembro de 2012 20:37, Jonathan Reboucas <www.p...@gmail.com> escreveu:
Creio que "use C" não seja uma resposta adequada. Se falarmos em termos profissionais o ideal é aquilo que soluciona o problema e pronto. Mas em termos de ciências acredito ser errado descartar tal possibilidade impondo limitações que talvez só existam por que não sabemos executar tal procedimento. 
Na ciência o aspecto investigativo está acima do pragmatismo. Após várias discussões surge uma nova pergunta: "Python não é capaz de produzir um sistema operacional ou com o conhecimento que nós temos não conseguimos conceber tal coisa?"
Acredito essa ser a atitude mais humilde a se adotar.
Agora é um ótimo momento para a frase de Twain/Cocteau: "Não sabendo que era impossível, foi lá e fez."



--
Grato,

Laerte Mateus Rodrigues

Bruno Codeman

unread,
Dec 21, 2012, 7:21:32 AM12/21/12
to python...@googlegroups.com
Sobre usar linguagens de alto nível para desenvolver um SO: O Red Dog (sistema operacional do Windows Azure) é feito em C#.

Alexandre Andrade

unread,
Dec 21, 2012, 7:44:58 AM12/21/12
to python...@googlegroups.com

existe o cython, que eh um subset da linguagem que gera arquivos compilados

Caroline Araujo Amado

unread,
Dec 21, 2012, 8:30:47 AM12/21/12
to python...@googlegroups.com
Lucas, obrigada pela resposta! Pelo que andei vendo, nenhum sistema também é completamente feito em uma linguagem só. Por questões de praticidade, e usar o melhor de cada linguagem. Confere?

Feliz 21 de dezembro, lol

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Caroline Amado @x66girl 

Filipe Cifali

unread,
Dec 21, 2012, 8:35:24 AM12/21/12
to python...@googlegroups.com
Confere em partes,

O kernel do Linux foi criado a bastante tempo, se pensar naquela época, as linguagens sofreram mudanças, coisas que podem ser feitas hoje de uma forma, eram diferentes na época.

Exemplos são softwares hoje para linux sendo feitos não mais em C e Assembly, nem mais o shell script é tão usado como linguagem base.


[ ]'s

Filipe Cifali Stangler

Danillo Souza

unread,
Dec 21, 2012, 8:41:09 AM12/21/12
to python...@googlegroups.com
Sobre nenhum sistema ser feito completamente em uma única linguagem, esbarrei com esse projeto aqui: http://www.menuetos.net/

Um S.O. feito todo em Assembly puro. O legal é que ele tem interface gráfica com suporte a altas resoluções ("up to 1920x1080, 16 million colours" segundo o site) e o Minix até hoje não tem.

d4n1

unread,
Dec 21, 2012, 9:07:47 AM12/21/12
to python...@googlegroups.com

Atualmente muitos S.O.'s tem incorporado várias linguagens, mas geralmente o kernel é feito em C/assembler (vide kernel Linux, freeBSD e outros) agora o shell (falo do console e interface gráfica) é usado muitas outras linguagen como o eterno Perl, shellscript e outros. O freeBSD por exemplo vem incorporando a linguagem brasileira Lua (libbsd.lua, instalador padrão com lua e interface ncurses), inclusive um dos desenvolvedores está com projetos para substituir alguns scripts shellscript para Lua.
Em resumo, usurflua das vantagens de cada linguagem, para cada situação há uma ou milhares de soluções que você pode usar linguagem x ou y. Python dá para usar em quase tudo basta ser bem arquitetado e um ótimo projeto, testes e mais testes e junção com outras linguagens. Lua tem uma lib bem interesante que é o tolua e tolua++, que transforma codigo Lua em C ou C++, creio que tenha projetos semelhantes para Python também. 

Daniel Melo (d4n1)

On Dec 21, 2012 10:41 AM, "Danillo Souza" <danil...@gmail.com> wrote:
Sobre nenhum sistema ser feito completamente em uma única linguagem, esbarrei com esse projeto aqui: http://www.menuetos.net/

Um S.O. feito todo em Assembly puro. O legal é que ele tem interface gráfica com suporte a altas resoluções ("up to 1920x1080, 16 million colours" segundo o site) e o Minix até hoje não tem.

--

Lucas Klassmann

unread,
Dec 21, 2012, 9:16:48 AM12/21/12
to python...@googlegroups.com
Caroline,

A sua pergunta acabou levantando outras dúvidas no pessoal e gerou uma boa discussão.

No caso, a maioria respondeu, para tirar a sua dúvida sobre Python, se poderia ser desenvolvido com ela.

Sobre não utilizar apenas uma linguagem, é como você mencionou, dificilmente você encontrará um sistema com uma certa popularidade, desenvolvido em apenas uma linguagem, porque entenda sistema não apenas o Kernel, pois um sistema é composto de diversas aplicações e estas em sua maioria são criadas por equipes diferentes e programadores com habilidades diferentes.

Logo, ao meu ver, um bom sistema deverá ser flexível a ponto de permitir o desenvolvimento de aplicações em diversas linguagens e tecnologias.

Há casos em que existe sistemas com esse foco, como alguns mencionaram, feitos em uma única linguagem, mas são casos raros, e falando de sistemas que atingem um grande número de usuários, nestes casos cada usuário sente uma necessidade por aplicações diferentes, o que nos leva a grande quantidade de tecnologias utilizadas.

No caso do Linux por exemplo, temos como a base de desenvolvimento a linguagem C, sobre esta linguagem nem precisamos falar o motivo do uso dela, é histórica a sua utilização e serve como base para outras linguagens e tecnologias.

Abraço.

--
Lucas Klassmann

Antonio Ribeiro

unread,
Dec 21, 2012, 9:52:05 AM12/21/12
to python...@googlegroups.com
Um projeto que eu acho que seria bacana para fins didáticos seriam a implementação de um simulador das partes mais internas de um SO (Kernel, com gerenciador de memória, gerenciador de processos, ger. de IO, etc.) em Python.

A idéia é apresentar como funcionar os mecanismos mais internos de um SO (e seus diferentes algorítmos e soluções), que por muitas vezes passam batidos nas aulas de sistemas operacionais por serem partes delicadas, complexas e geralmente escritas de uma forma bem baixo-nível (por baixo nível aqui eu quero dizer além de usar uma linguagem como C ou assembly, possuir muita otimização, que dificulta o entendimento do código).

Quando cursei a disciplina de sistemas operacionas na minha graduação fizemos um exercício semelhante: cada grupo de aluno escreveu o código de uma parte de um SO, baseado em especificação fornecidas pelo professor. No final so semestre "juntamos" as peças e tinhamos um simulador de SO inteiramente codificado pelos alunos funcionando, foi uma experiência bacana e muitos conceitos de teoria de sistemas operacionais ficaram bem gravados na minha cabeça (provavelmente muito mais bem gravado que se eu ficasse noites em claro tentando modificar um ponto específico do Minix, e me perdendo no meio do código).

Enfim, é uma idéia. Acho que seria uma ferramenta bacana para explicar as internas de um SO.

2012/12/21 Lucas Klassmann <lucaskl...@gmail.com>

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Atenciosamente,
Antonio Ribeiro

Skype: alvesjnr

Nilo Menezes

unread,
Dec 21, 2012, 10:12:56 AM12/21/12
to python...@googlegroups.com
Oi Caroline,

Os colegas já deram várias visões de um sistema operacional em Python.
Eu só gostaria de adicionar que o problema de escrever um sistema operacional inteiramente em Python ou C é a questão de configuração da máquina em si.
Claro, pode-se usar Python ou C para gerar o código de máquina indiretamente, abordagem que foi realizada com C# no sistema Cosmos [1]

Mas, uma das maiores responsabilidades de um sistema operacional é fazer a ligação do software com o hardware. É o sistema operacional que é responsável por carregar os programas e decidir quando executá-los, porém, além de fazer sua própria carga durante o boot, ele tem que:
a) configurar as interrupções do sistema: o sistema operacional tem que indicar o que fazer ao receber uma interrupção do hardware.
b) configurar a proteção de memória: durante a carga, o sistema mapeia parte da memória para si, outras partes para o hardware e o que sobra para programas. Ele também é responsável por gerenciar o pool de memória livre, entre outras coisas. Fora a inicialização os sistemas de memória virtual e proteção.
c) gerenciar os periféricos: normalmente isto é feito com drivers, já que cada equipamento funciona de uma forma diferente. Os drivers normalmente tem acesso às interrupções do sistema.
d) prover uma API para os programas de usuário (system call). A gente esquece que mesmo o conceito de arquivos já são de alto nível!

Estas tarefas são tão próximas do hardware que mesmo que você consiga fazer em Python, vai ficar muito estranho. Mesmo em C, você tem que escrever partes do código em assembly para realizar estas configurações. Olhando o código fonte do Linux, você pode ver que para cada arquitetura tem um boot diferente, escrito em Assembly para um processador específico. Uma vez que esta etapa é finalizada, fica mais fácil visualizar uma linguagem de alto nível para tarefas de mais alto nível. Por isso, normalmente, neste ponto, substitui-se o uso de Assembly pelo C, pois código em C é  muito mais fácil de entender que em asm, além de ser portátil. Lendo a história do Unix e do C, você pode encontrar a motivação para criar a linguagem C.

Do mesmo jeito que o kernel não usa as bibliotecas padrões do C, mas versões implementadas no próprio kernel... um kernel escrito em Python teria que substituir estas funções, uma vez que o interpretador Python usa as bibliotecas padrões do C, não disponíveis na hora que o kernel é carregado. Além disso, código que roda no nível de proteção do kernel deve ser escrito especificamente para isso, por uma série de razões como: temporização, carga, etc. Isto levaria provavelmente à retirada de várias baterias do Python... como bibliotecas de altíssimo nível como http, smtp, ftp, etc.

Lembro que Assembly não é código de máquina. Mesmo programas em Assembly precisam ser compilados antes de serem executados. Processadores só entendem código de máquina, embora existam hardwares específicos que utilizam bytecode java ou Python como linguagem de máquina.

Python pode ser muito legal para aprender a criar sistemas simples, em máquinas virtuais também implementadas em Python. Comece pelo sistema de arquivos, já é trabalho para alguns meses :-D

O projeto[2] implementa um subconjunto de bytecodes da máquina virtual do Python utilizando um FPGA [3]. Usando um FPGA e uma linguagem de descrição de hardware, você pode implementar seu próprio computador, incluindo a memória e os processadores.

 Você também pode usar Python como linguagem de definição de hardware [4] e [5], mas com limitações. Normalmente é tão limitado que o que você pode escrever em Python é praticamente a mesma coisa que escreveria em C ou Verilog/VHDL :-D

Se você procurar por Raspberry Pi Bare Metal, você vai encontrar cursos de como escrever um sistema ultra simples para o Pi. O livro do Tanenbaum [6] também ajuda, embora hoje existam livros mais interessantes.

O GIL também não ajuda nestes casos :-(


[1] http://en.wikipedia.org/wiki/Cosmos_(operating_system)
[2] http://pycpu.wordpress.com/
[3] http://pt.wikipedia.org/wiki/Field-programmable_gate_array
[4] http://hackaday.com/2012/06/11/programming-fpgas-with-python/
[5] http://www.myhdl.org/doku.php
[6] http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/0136006639

[]

Nilo


Em 19 de dezembro de 2012 19:13, Caroline Amado <carolara...@gmail.com> escreveu:
Então pessoal estou estudando sobre sistemas operacionais e me fiz a pergunta existe algum sistema operacional feito em python? 

Segunda pergunta, sendo uma linguagem de alto nível é tranquilo programar/organizar os modos de permissão (usuário, kernel, ou mais)? Como funciona isso?

Quem puder da uma luz, agradeço desde já!


Obrigada pela atenção! 
-- 
Caroline Amado @x66girl

--

Marcos Barbosa

unread,
Dec 21, 2012, 10:27:29 AM12/21/12
to python...@googlegroups.com
A solução não é tão horrível assim. Dṕa pra fazer uma expansão no gcc que entenda Python. O gcc entende C, C++, Go, Java (se não me engano) e sei lá que linguagens mais. Mas acho que vai precisar de modificações conceituais na linguagem para ele deixar de ser interpretada/pseudo-compilada e virar uma linguagem compilada de verdade.
--
Marcos Barbosa <marcoseste...@gmail.com>

Leonardo Santagada

unread,
Dec 21, 2012, 11:35:58 AM12/21/12
to python...@googlegroups.com


2012/12/19 Lucas Klassmann <lucaskl...@gmail.com>

Se considerarmos as arquiteturas x86, amd64, seria possível implementar um SO em python, mas não 100%, pois precisaríamos de um interpretador, mesmo que básico, e só conseguiríamos fazer isso do Kernel para cima, logo o mínimo seria:

De novo, porque o interpretador de python não pode rodar no nivel do kernel? Essa impossibilidade não existe, e sim um so poderia ser todo feito em assembly e python.

Sobre o menuetos ele só usa uma linguagem justamente porque escolheu a unica que todos tem que ter, assembly.

--

Leonardo Santagada

Leonardo Santagada

unread,
Dec 21, 2012, 11:42:54 AM12/21/12
to python...@googlegroups.com


2012/12/21 Marcos Barbosa <marcoseste...@gmail.com>
A graça de tudo é fazer o kernel em Python

E dá pra fazer.


--

Leonardo Santagada

Anderson Unsonst

unread,
Dec 21, 2012, 11:47:52 AM12/21/12
to python...@googlegroups.com
'falar é facil, mostre-me o codigo fonte'

Mauricio de Abreu Antunes

unread,
Dec 21, 2012, 11:52:37 AM12/21/12
to python...@googlegroups.com
Acho que a parte mais difícil é pensar, não código.
Se tu tem que pensar NO código, aí tu tem um problema.

2012/12/21 Anderson Unsonst <anderso...@gmail.com>:
> 'falar é facil, mostre-me o codigo fonte'
>
> --
> --
> ------------------------------------
> Grupo Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
>
> <*> Para visitar o site do grupo na web, acesse:
> http://groups.google.com/group/python-brasil
>
> <*> Para sair deste grupo, envie um e-mail para:
> python-brasi...@googlegroups.com
>
>
>



--
Mauricio de Abreu Antunes
Mobile: (51)930-74-525
Skype: mauricio.abreua

Anderson Unsonst

unread,
Dec 21, 2012, 11:57:32 AM12/21/12
to python...@googlegroups.com
não é uma onfessa o que eu disse, por favor não se sinta ofendido ou
incomodado estou adorando esse tópico :)

Leonardo Santagada

unread,
Dec 21, 2012, 12:03:20 PM12/21/12
to python...@googlegroups.com

On Fri, Dec 21, 2012 at 2:47 PM, Anderson Unsonst <anderso...@gmail.com> wrote:
 'falar é facil, mostre-me o codigo fonte'

procure no código do http://unununium.org ele a vários anos atrás fazia isso. o Pymite é algo bem parecido, embora eles não tenham o interpretador completo.


--

Leonardo Santagada

Marcos Barbosa

unread,
Dec 21, 2012, 11:40:38 AM12/21/12
to python...@googlegroups.com
A graça de tudo é fazer o kernel em Python. Sim, é possível fazer um módulo do kernel para dar suporte a executáveis escritos em Python (da mesma forma que existe módulo para dar suporte a binários ELF e a camada de abstração para executar arquivos Windows com a ajuda do Wine), mas a graça está em ter um kernel em Python, por que kernel é a base do SO. Se não teríamos apenas uma distro muito estranha!


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Marcos Barbosa <marcoseste...@gmail.com>

Mario Domenech Goulart

unread,
Dec 21, 2012, 12:12:49 PM12/21/12
to python...@googlegroups.com
On Fri, 21 Dec 2012 14:35:58 -0200 Leonardo Santagada <sant...@gmail.com> wrote:

> 2012/12/19 Lucas Klassmann <lucaskl...@gmail.com>
>
> Se considerarmos as arquiteturas x86, amd64, seria possível
> implementar um SO em python, mas não 100%, pois precisaríamos de
> um interpretador, mesmo que básico, e só conseguiríamos fazer
> isso do Kernel para cima, logo o mínimo seria:
>
> De novo, porque o interpretador de python não pode rodar no nivel do
> kernel? Essa impossibilidade não existe, e sim um so poderia ser todo
> feito em assembly e python.

De fato, não existe razão técnica que impossibilite a construção de um
interpretador no espaço do kernel. Há projetos que fazem algo assim
(exemplo: http://www.abstractnonsense.com/schemix/).

A idéia de desenvolver sistemas operacionais em linguagens de nível mais
alto que assembly ou C não é nova. Já houve máquinas com sistemas
operacionais em Smalltalk e Lisp, por exemplo

Lisp Machines (http://en.wikipedia.org/wiki/Lisp_machine) foram
comercializadas a partir do início da década de 80. O sistema
operacional ( http://en.wikipedia.org/wiki/Genera_(operating_system) ) e
aplicativos eram escritos em Lisp.

A história do movimento de software livre tem uma ligação estreita com
as Lisp Machines. Richard Stallman fazia parte do grupo de pessoas que
desenvolviam sistemas para essas máquinas. Não é à toa que um dos
principais softwares do projeto GNU é feito em Lisp (Emacs) e que a
linguagem de extensão "oficial" dos aplicativos GNU é um dialeto de Lisp
(Scheme).

A título de curiosidade, o primeiro domínio comercial (.com) da Internet
pertencia a Symbolics, uma empresa fabricante de Lisp Machines.

Mario
--
http://parenteses.org/mario

Mário Idival

unread,
Dec 21, 2012, 12:57:56 PM12/21/12
to python...@googlegroups.com
Isso se resolve quebrando paradigmas, Alguem ja tentou criar um SO ? Se tentou, você provavelmente criou do jeito que todos os outros já criaram.
Por que não pode se mudar a forma de estruturar um SO?

Nilo Menezes

unread,
Dec 21, 2012, 1:28:16 PM12/21/12
to python...@googlegroups.com
Marcos,

O problema não é compilada/interpretada. Como o Ramalho colocou na mensagem dele, pode-se usar um script Python para gerar o código executável pelo processador.

Os links que postei trazem uma implementação que interpreta os bytecodes da máquina virtual do Python. O compilador é importante, mas pode ser rodado em outra máquina.

Para implementar um sistema operacional, você teria que modificar Python para ter acesso ao hardware, um dos links que postei tem um exemplo de como configurar interrupções e usar portas de I/O com extensões Python (mas ficou a cara de C). Nem o interpretador, nem o compilador são o sistema operacional. Ambos precisam de abstrações fornecidas pelo sistema operacional: alocação de memória, I/O, etc.

Um ponto de partida (para o interpretador, ok) seria olhar os cortes que fizeram ao portar o interpretador Python para JavaScript. Lá você tem partes das bibliotecas padrões substituídas por JavaScript. Num sistema independente de Javascript, estas partes teriam que ser substituídas por rotinas em código de máquina. Acho que no REPL, eles compilaram o interpretador Python com o emscriptem, gerando bytecodes da LLVM. Em Javascript eles fizeram a ponte com os recursos (tela, teclado, etc). 

Uma versão bem simplista, seria escrever um bootloader e uma versão do interpretador Python independente da libc e do kernel do Linux. Como sistema de entrada e saída, apenas o modo texto e suporte ao teclado. Nesta versão, o mínimo de módulos possível, algo como rodar o Python com zero imports. Depois poderia-se adicionar outras coisas, Ainda assim, não seria um sistema operacional, seria apenas o interpretador Python rodando no boot (e já seria bastante trabalho).


[]

Nilo

Nilo Menezes

unread,
Dec 21, 2012, 1:48:05 PM12/21/12
to python...@googlegroups.com
Leonardo,

Tens certeza que esse é o bom link?
Unununium is an operating system with history dating back to year 2000. During most of its early development it was entirely written in x86 assembly. At its most advanced, the system had access to an ext2 file system, basic video drivers, sound drivers, and a network card driver albeit without a TCP/IP stack.

Dei uma passeada no CVS deles e tudo que vi foi em assembly.

Em relação ao Pymite:

What is PyMite

PyMite is a flyweight Python interpreter written from scratch to execute on 8-bit and larger microcontrollers with resources as limited as 64 KiB of program memory (flash) and 4 KiB of RAM. PyMite supports a subset of the Python 2.5 syntax and can execute a subset of the Python 2.5 bytecodes. PyMite can also be compiled, tested and executed on a desktop computer.

Considering PyMite is designed to run on embedded 8-bit architectures, one should not expect PyMite to do everything Python can do. However, its capability may surprise you. Since PyMite is written from scratch, it has a few features that set it apart: stackless from the start and fast, easy, native C function support.

Ele é um interpretador de bytecode leve, não um sistema operacional. Mas clicando no link do Google Code: http://code.google.com/p/python-on-a-chip/
Mostra que ele está sendo desenvolvido para rodar em microcontroladores. Com drivers, scheduler e suporte a várias arquiteturas. Então, podemos considerá-lo um sistema operacional. No entanto, várias partes foram escritas em C, mas é um excelente começo.
O que é legal dos microcontroladores é que o compilador C deles já inclui a implementação nativa de I/O e acesso ao hardware. A versão para Windows usa a API do Windows e a Desktop usa a libc. Não conseguir ver se você consegue dar o boot no PC, mas o caminho já está bem andando.

[]

Nilo


--

Nilo Menezes

unread,
Dec 21, 2012, 2:09:24 PM12/21/12
to python...@googlegroups.com
Em 21 de dezembro de 2012 18:12, Mario Domenech Goulart <mario....@gmail.com> escreveu:
De fato, não existe razão técnica que impossibilite a construção de um
interpretador no espaço do kernel.  Há projetos que fazem algo assim
(exemplo: http://www.abstractnonsense.com/schemix/).

O schemix roda como um módulo no kernel do Linux. Não entendo como isto o torna um sistema operacional, mas é tanta mensagem que eu posso estar perdido :-D
Já o Movitz, pegeui o link na página do schemix:
É bare metal. Mas veja que ele gera uma imagem x86.

 
A idéia de desenvolver sistemas operacionais em linguagens de nível mais
alto que assembly ou C não é nova.  Já houve máquinas com sistemas
operacionais em Smalltalk e Lisp, por exemplo

Lisp Machines (http://en.wikipedia.org/wiki/Lisp_machine) foram
comercializadas a partir do início da década de 80.  O sistema
operacional ( http://en.wikipedia.org/wiki/Genera_(operating_system) ) e
aplicativos eram escritos em Lisp.

Não podemos esquecer do Oberon...
Sobre a Lisp Machine, citando o Richard Stallman (http://www.gnu.org/gnu/rms-lisp.html):
The Lisp machine was able to execute instructions about as fast as those other machines, but each instruction — a car instruction would do data typechecking — so when you tried to get the car of a number in a compiled program, it would give you an immediate error. We built the machine and had a Lisp operating system for it. It was written almost entirely in Lisp, the only exceptions being parts written in the microcode. People became interested in manufacturing them, which meant they should start a company.

Embora se chame Lisp Machine, não foi inteiramente escrita em Lisp, mas em grande parte. O ponto é que você precisa do código de máquina para começar a rodar.
Olhando os manuais da coisa, não é muito diferente da abordagem de processar bytecode python diretamente no processador (ver o link da implementação disto com FPGA).
 
A história do movimento de software livre tem uma ligação estreita com
as Lisp Machines.  Richard Stallman fazia parte do grupo de pessoas que
desenvolviam sistemas para essas máquinas.  Não é à toa que um dos
principais softwares do projeto GNU é feito em Lisp (Emacs) e que a
linguagem de extensão "oficial" dos aplicativos GNU é um dialeto de Lisp
(Scheme).

A título de curiosidade, o primeiro domínio comercial (.com) da Internet
pertencia a Symbolics, uma empresa fabricante de Lisp Machines.

 
Existem vários sistemas operacionais experimentais por ai. Realmente, não pode desanimar.

[]

Nilo

Marcos Barbosa

unread,
Dec 21, 2012, 2:12:30 PM12/21/12
to python...@googlegroups.com
Nilo,

Se o Schemix interpreta Python e roda como módulo do kernel (estou no achismo. não conheço esse Schemix), teoricamente é possível substituir os binários em formato ELF por byte code Python ou até mesmo arquivos .py. Isso permitiria ter um SO mais Python, mas não Python completo por que não seria reescrito o kernel em Python.


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Marcos Barbosa <marcoseste...@gmail.com>

Nilo Menezes

unread,
Dec 21, 2012, 2:23:10 PM12/21/12
to python...@googlegroups.com
Oi Mário,

Eu nunca criei um SO do zero, mas já tive que trabalhar com bootloaders e escrever pedaços de código em assembly para resolver vários problemas. Para projetos maiores, usando microcontroladores, um SO se torna essencial rápido com o crescimento do projeto. Minha experiência com FPGA no trabalho foi muito interessante.
A tal semelhança entre os SO é que praticamente todos hoje, derivam ou se inspiram nos conceitos do Unix/Posix. Existem vários sistemas experimentais para máquinas reais e imaginárias. Sistemas monolíticos, distribuidos, microkernels, etc.
Eu diria que a problema é a ligação íntima do SO com o hardware. Desta forma, várias estruturas e abstrações são sempre as mesmas: arquivos, processos, etc.
A arquitetura das CPUs não é muito diferente: pilha, program counter, registros... todas vem da arquitetura de Von Neumann (http://pt.wikipedia.org/wiki/Arquitetura_de_von_Neumann).

Uma forma de quebrar estes paradigmas é realmente pensar diferente, independente da máquina destino.

Eu acredito que logo logo teremos algo novo, usando a Internet/Cloud computing.

[]

Nilo


--

Alexandre Andrade

unread,
Dec 21, 2012, 2:33:24 PM12/21/12
to python...@googlegroups.com
Um dos melhores conteúdos para entender de fato como criar um sistema operacional é para mim o http://www.nand2tetris.org/

Ele começa desenhando a CPU, os componentes, e a partir daí o assembler e depois o código, até criar um jogo tetris.

uma visão completa de toda a arquitetura de TI.

Tem até um emulador de hardware (em java).

Muito interessante.

Se eu tivesse tempo....






Em 19 de dezembro de 2012 16:13, Caroline Amado <carolara...@gmail.com> escreveu:
Então pessoal estou estudando sobre sistemas operacionais e me fiz a pergunta existe algum sistema operacional feito em python? 

Segunda pergunta, sendo uma linguagem de alto nível é tranquilo programar/organizar os modos de permissão (usuário, kernel, ou mais)? Como funciona isso?

Quem puder da uma luz, agradeço desde já!


Obrigada pela atenção! 
-- 
Caroline Amado @x66girl

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Atenciosamente


Alexandre Andrade
Hipercenter.com Classificados Gratuitos

Nilo Menezes

unread,
Dec 21, 2012, 2:35:00 PM12/21/12
to python...@googlegroups.com
Oi Marcos,


Em 21 de dezembro de 2012 20:12, Marcos Barbosa <marcoseste...@gmail.com> escreveu:
Nilo,

Se o Schemix interpreta Python e roda como módulo do kernel (estou no achismo. não conheço esse Schemix), teoricamente é possível substituir os binários em formato ELF por byte code Python ou até mesmo arquivos .py. Isso permitiria ter um SO mais Python, mas não Python completo por que não seria reescrito o kernel em Python.

Não é bem asssim. O Schemix é um interpretador scheme e não de Python, que roda como um módulo do Kernel. Com ele, você ganha um device no Linux para o qual pode enviar comandos em Scheme.
Quanto a substituir ELF pelo formato do Python, são coisas diferentes. O formato ELF estrutura um executável, isto é, onde começa o código, o tamanho da pilha, partes a carregar no início, o que pode ser realocado, onde estão os dados, etc. Um pyc não é um executável ELF. O pyc não contém código executável pelo processador, mas bytecode da VM Python.
O suporte à Python no Linux funciona muito bem com os shebangs (http://pt.wikipedia.org/wiki/Shebang).

Na ideia desta thread, não poderíamos usar o Linux para o novo sistema inteiramente escrito em Python, pois o kernel do Linux seria substituído pelo PyOS.


[]

Nilo

Mario Domenech Goulart

unread,
Dec 21, 2012, 8:54:50 PM12/21/12
to python...@googlegroups.com
On Fri, 21 Dec 2012 20:09:24 +0100 Nilo Menezes <pytho...@gmail.com> wrote:

> Em 21 de dezembro de 2012 18:12, Mario Domenech Goulart <mario....@gmail.com> escreveu:
>
> De fato, não existe razão técnica que impossibilite a construção
> de um interpretador no espaço do kernel.  Há projetos que fazem
> algo assim (exemplo: http://www.abstractnonsense.com/schemix/).
>
> O schemix roda como um módulo no kernel do Linux. Não entendo como
> isto o torna um sistema operacional, mas é tanta mensagem que eu
> posso estar perdido :-D

Eu estava me referindo à parte mencionada pelo Leonardo Santagada, a
qual foi incluída na mensagem que respondi:

De novo, porque o interpretador de python não pode rodar no nivel do
kernel?


Mario
--
http://parenteses.org/mario

Marcelo F Andrade

unread,
Dec 22, 2012, 11:25:15 AM12/22/12
to python...@googlegroups.com
2012/12/19 Caroline Amado <carolara...@gmail.com>:
> Então pessoal estou estudando sobre sistemas operacionais e me fiz a
> pergunta existe algum sistema operacional feito em python?

A despeito das diversas questões e dificuldades já citadas em termos
práticos, considerando apenas o aspecto didático, sem dúvida que é
possível implementar os diversos algoritmos para escalonamento de
processador, gerenciamento de memória, sistema de arquivos, etc, numa
espécie de simulador.

Atenciosamente.

MARCELO DE FREITAS ANDRADE
"Minha alma é maior do que eu."

Nilo Menezes

unread,
Dec 23, 2012, 5:22:52 AM12/23/12
to python...@googlegroups.com
Opa Mario,

Eu sabia que havia perdido algo :-D


Sim, pode, mas vai precisar de modificações para rodar como módulo (dependências externas, glibc, etc).
Como módulo, alguns conceitos teriam que ser revistos. Eu não vejo muita aplicação do Python como módulo Linux.
Um dos efeitos não desejáveis é que os scripts rodados pelo interpretador acabariam rodando com as permissões do kernel (salvo se modificado)... fora problemas de quantos scripts poderiam ser rodados ao mesmo tempo: um por módulo? o módulo controlaria várias instâncias do interpretador, etc.

Se o que você fala é rodar o interpretador no Ring 0, sim, também é possível, mas com modificações como as que já discutimos.

Um site bacana que também possui um forum é o http://wiki.osdev.org/Main_Page

[]

Nilo



Nilo Menezes

unread,
Dec 23, 2012, 5:26:04 AM12/23/12
to python...@googlegroups.com
Oi Marcelo,

Isso mesmo! E o projeto que o Leonardo enviou já implementa alguns destes algoritmos.
Tem até um modo emulado para rodar em desktops com Linux ou Windows.

[]

Nilo 


Leonardo Santagada

unread,
Dec 23, 2012, 11:22:44 PM12/23/12
to python...@googlegroups.com


2012/12/23 Nilo Menezes <pytho...@gmail.com>

Sim, pode, mas vai precisar de modificações para rodar como módulo (dependências externas, glibc, etc).
Como módulo, alguns conceitos teriam que ser revistos. Eu não vejo muita aplicação do Python como módulo Linux.
Um dos efeitos não desejáveis é que os scripts rodados pelo interpretador acabariam rodando com as permissões do kernel (salvo se modificado)... fora problemas de quantos scripts poderiam ser rodados ao mesmo tempo: um por módulo? o módulo controlaria várias instâncias do interpretador, etc.

Se tu esta fazendo um SO em Python ele obviamente precisa rodar com permissão do kernel e no Ring 0 então continuo não entendendo porque isso é uma ressalva, é exatamente o que se quer, fazer um kernel em Python (bom o so inteiro, o kernel é só uma parte muito legal de tudo).
 

Se o que você fala é rodar o interpretador no Ring 0, sim, também é possível, mas com modificações como as que já discutimos.

Um site bacana que também possui um forum é o http://wiki.osdev.org/Main_Page

[]



--

Leonardo Santagada

Nilo Menezes

unread,
Dec 24, 2012, 4:56:25 AM12/24/12
to python...@googlegroups.com
Oi Leonardo,

Acho que você fez o mesmo erro que eu, respondeu a pergunta em relação ao tópico da discussão :-).
Na realidade, o Mario fez uma pergunta diferente, no mesmo thread, inclusive para você:

Mario: De novo, porque o interpretador de python não pode rodar no nivel do
    kernel?

Isso com a ideia do schemix fazem bastante barulho sobre a discussão do sistema operacional em Python.
A ideia do módulo Linux foi levantada pelo Mario, mas eu já considero isso um outro tópico.


Em segunda-feira, 24 de dezembro de 2012 05h22min44s UTC+1, Leonardo Santagada escreveu:


2012/12/23 Nilo Menezes <pytho...@gmail.com>
Sim, pode, mas vai precisar de modificações para rodar como módulo (dependências externas, glibc, etc).
Como módulo, alguns conceitos teriam que ser revistos. Eu não vejo muita aplicação do Python como módulo Linux.
Um dos efeitos não desejáveis é que os scripts rodados pelo interpretador acabariam rodando com as permissões do kernel (salvo se modificado)... fora problemas de quantos scripts poderiam ser rodados ao mesmo tempo: um por módulo? o módulo controlaria várias instâncias do interpretador, etc.

Se tu esta fazendo um SO em Python ele obviamente precisa rodar com permissão do kernel e no Ring 0 então continuo não entendendo porque isso é uma ressalva, é exatamente o que se quer, fazer um kernel em Python (bom o so inteiro, o kernel é só uma parte muito legal de tudo).

A ressalva é apenas para deixar claro que não pode ser o interpretador Python que temos hoje, pois ele não é um sistema operacional e conta com um sistema ativo.  Os problemas relatados são alguns pontos onde não vejo um sistema sério (mesmo academicamente) rodando o intepretador Python (não modificado) no Ring 0. Não é óbvio, pois foi justamente a pergunta do Mario. O Ring 0 é um termo usado pelos processadores da Intel. O Linux e o Windows só usam o Ring 0 e o Ring 3. Na arquitetura arm, o Ring 0 se chama supervisor mode. Alguns sistemas operacionais rodam módulos e drivers em outros rings (processadores Intel tem 4 rings), então não é tão óbvio assim. Eu lembro que o Mac OSX tem uma extensão que permite user mode drivers! Ao discutir novos sistemas operacionais, temos que estar abertos para novas ideias. Quando eu falo de novo sistema operacional, eu imagino algo desde o kernel (seja rodando numa máquina real ou numa virtual).

A ideia da máquina virtual, 100% Python ainda é o melhor caminho didático (IMHO). Ou seja, não seria um sistema operacional para rodar no micro X ou Y, mas uma máquina inteiramente definida em Python. Isso seria muito legal para testar conceitos como sistemas de arquivo, escalonamento, etc. Mas o Linux é ótimo neste ponto também. Ou seja, estamos discutindo algo hipotético, eu não defendo a necessidade de se implementar A ou B.

Uma coisa importante, como você falou, é que o sistema operacional não é só o Kernel, o Stallman deve estar feliz agora :-D.

O que vi na época do Oberon não me sai da cabeça. O esquema do PowerShell da Microsoft é também um conceito interessante, onde as extensões do shell e comandos são classes em C#. 


[]

Nilo

Nilo Menezes

unread,
Dec 23, 2012, 5:12:17 AM12/23/12
to python...@googlegroups.com, Marcelo F Andrade
Oi Marcelo,

Isso mesmo! E o projeto que o Leonardo enviou já implementa alguns
destes algoritmos.
Tem até um modo emulado para rodar em desktops com Linux ou Windows.

[]

Nilo

--

----------------------------------------
Nilo Menezes
----------------------------------------
Livro: http://www.nilo.pro.br/iprog/
Blog: http://junglecoders.blogspot.com
Home Page: http://www.nilo.pro.br
Hobby: http://invasores.sourceforge.net
----------------------------------------

Ricardo Correia

unread,
Jan 1, 2013, 11:57:25 AM1/1/13
to python...@googlegroups.com, Marcelo F Andrade
Olha eu achei esse post Innovation Pure Python OS! no blog da Linux Foundation falando sobre um SO escrito em Python...

Mário Neto

unread,
Jan 1, 2013, 5:21:55 PM1/1/13
to python...@googlegroups.com, Marcelo F Andrade
Isso é uma grande idéia! =)


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 



--
Att. Mário Araújo Chaves Neto
Programmer, Designer and U.I. Engineer

MBA in Design Digital - 2008 - FIC
Analysis and Systems Development - 2011 - Estácio
Design and Implementation of Internet Environments - 2003 - FIC

Marcos Barbosa

unread,
Jan 1, 2013, 7:05:06 PM1/1/13
to python...@googlegroups.com, Marcelo F Andrade
Note que não é um SO em Python, mas sim uma distro Linux onde os utilitários estão sendo migrados para Python.


Em 1 de janeiro de 2013 14:57, Ricardo Correia <rdsco...@gmail.com> escreveu:
Olha eu achei esse post Innovation Pure Python OS! no blog da Linux Foundation falando sobre um SO escrito em Python...



--
Marcos Barbosa <marcoseste...@gmail.com>

Vitor Daniel

unread,
Jun 24, 2018, 2:45:11 PM6/24/18
to Python Brasil
Ei, se ainda tiver alguém lendo isso, pois já se passaram 4 anos e meio depois do post anterior, eu tenho a mesma pergunta, mas como que um processador executata um código em assembly? é algum programa? se for isso tem como 'mudar' esse programa para ler um programa em python? Desculpe se a minha pergunta foi inconveniente mas eu não nendo muito do assunto.

Fabio C. Barrionuevo da Luz

unread,
Jun 24, 2018, 4:13:29 PM6/24/18
to python...@googlegroups.com

Em 24 de junho de 2018 15:11, Vitor Daniel <vitor03...@gmail.com> escreveu:
Ei, se ainda tiver alguém lendo isso, pois já se passaram 4 anos e meio depois do post anterior, eu tenho a mesma pergunta, mas como que um processador executata um código em assembly? é algum programa? se for isso tem como 'mudar' esse programa para ler um programa em python? Desculpe se a minha pergunta foi inconveniente mas eu não nendo muito do assunto.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/775fa14f-efb6-4d8b-9d67-9611232b4a7e%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Fábio C. Barrionuevo da Luz
Palmas - Tocantins - Brasil - América do Sul


Blog colaborativo sobre Python e tecnologias Relacionadas, mantido totalmente no https://github.com/pythonclub/pythonclub.github.io .

Todos são livres para publicar. É só fazer fork, escrever sua postagem e mandar o pull-request. Leia mais sobre como publicar em README.md e contributing.md.
Regra básica de postagem:
"Você" acha interessante? É útil para "você"? Pode ser utilizado com Python ou é útil para quem usa Python? Está esperando o que? Publica logo, que estou louco para ler...

Juan Lopes

unread,
Jun 24, 2018, 4:46:35 PM6/24/18
to python...@googlegroups.com
Em quatro anos e meio dava pra ter feito uma faculdade de computação, respondido essa e outras questões interessantes.

Estou brincando, claro :D

O processador não executa código em assembly. Ele executa código de máquina, que são basicamente bytes em sequência na memória. Por exemplo, a instrução, em assembly "MOV AX, 42" é representada na memória como os bytes 66 B8 2A. Para isso serve o assembler, para transformar o código em assembly em linguagem de máquina. De fato, muitos compiladores fazem exatamente isso: transformam código em alto nível para código de máquina.

O processador, internamente, tem um registrador que aponta para a posição na memória da próxima instrução, esse registrador é historicamente conhecido como PC (Program Counter). O processador carrega a instrução (que lembre-se, são só números) da memória para um registrador conhecido como IR (Instruction Register), e decide o que fazer. O sistema operacional é (para os fins que estamos discutindo) um programa como qualquer outro. A diferença é que ele executa antes de todos os outros e passa a controlar a execução dos programas do usuário.

O código Python, ao ser executado, possui uma camada a mais de abstração. Acontece assim pois Python é uma linguagem de máquina virtual, tal qual Java, Ruby, C# e muitas outras linguagens modernas. Isso significa que o código Python não é compilado para código de máquina x86, e sim para uma máquina hipotética de alto nível que o Guido inventou. Nessa máquina, não existem registradores, e sim uma pilha e as instruções são de nível bem mais alto. Essa máquina conhece, por exemplo, o conceito de funções e variáveis (inexistentes em assembly). A máquina virtual Python então interpreta todo código nessa linguagem em instruções de máquina enquanto o programa está executando. Isso significa que o que está executando de verdade em um programa Python é a máquina virtual. O seu programa é apenas uma entrada dessa máquina.

Sobre a pergunta de sistemas operacionais, o problema é que o Kernel de um SO exige a escrita de certas rotinas de muito baixo nível, que conversem com o hardware. Rotinas que lidem com o sistema de memória virtual do processador, que controlem o I/O de dispositivos periféricos, que gerenciem até os detalhes mais banais, como a ordem ou em que cilindro de um HDD segmentos de um arquivo serão escritos (para otimizar a velocidade de leitura). Todos esses detalhes são largamente abstraídos em uma linguagem de nível tão alto como Python.



On Sun, Jun 24, 2018 at 3:45 PM Vitor Daniel <vitor03...@gmail.com> wrote:
Ei, se ainda tiver alguém lendo isso, pois já se passaram 4 anos e meio depois do post anterior, eu tenho a mesma pergunta, mas como que um processador executata um código em assembly? é algum programa? se for isso tem como 'mudar' esse programa para ler um programa em python? Desculpe se a minha pergunta foi inconveniente mas eu não nendo muito do assunto.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/775fa14f-efb6-4d8b-9d67-9611232b4a7e%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

--

R Nuccitelli

unread,
Jun 24, 2018, 6:55:40 PM6/24/18
to python...@googlegroups.com
Excelente explicação, muito obrigado por dedicar seu tempo a escrevendo!

Andre Emidio

unread,
Jun 24, 2018, 7:01:30 PM6/24/18
to python...@googlegroups.com
Obrigado também, me tirou muitas dúvidas sobre alguns aspectos do SO.

Andre Emidio 

+ 55 (12) 9 8862-4725 
+ 55 (12) 9 8161-0611

andres...@gmail.com

 Esta mensagem, incluindo seus anexos, tem caráter confidencial e seu conteúdo é restrito ao destinatário da mensagem. Caso você a tenha recebido por engano, queira, por favor, retorná-la ao destinatário e apagá-la de seus arquivos. Qualquer uso não autorizado, replicação ou disseminação desta mensagem ou parte dela é expressamente proibido.

 "Quando tudo parece estar indo contra você, lembre-se de que o avião decola contra o vento, não a favor dele." Henry Ford


Em 24 de junho de 2018 19:55, R Nuccitelli <re...@python.pro.br> escreveu:
Excelente explicação, muito obrigado por dedicar seu tempo a escrevendo!
Em dom, 24 de jun de 2018 às 17:46, Juan Lopes <juanp...@gmail.com> escreveu:
Em quatro anos e meio dava pra ter feito uma faculdade de computação, respondido essa e outras questões interessantes.

Estou brincando, claro :D

O processador não executa código em assembly. Ele executa código de máquina, que são basicamente bytes em sequência na memória. Por exemplo, a instrução, em assembly "MOV AX, 42" é representada na memória como os bytes 66 B8 2A. Para isso serve o assembler, para transformar o código em assembly em linguagem de máquina. De fato, muitos compiladores fazem exatamente isso: transformam código em alto nível para código de máquina.

O processador, internamente, tem um registrador que aponta para a posição na memória da próxima instrução, esse registrador é historicamente conhecido como PC (Program Counter). O processador carrega a instrução (que lembre-se, são só números) da memória para um registrador conhecido como IR (Instruction Register), e decide o que fazer. O sistema operacional é (para os fins que estamos discutindo) um programa como qualquer outro. A diferença é que ele executa antes de todos os outros e passa a controlar a execução dos programas do usuário.

O código Python, ao ser executado, possui uma camada a mais de abstração. Acontece assim pois Python é uma linguagem de máquina virtual, tal qual Java, Ruby, C# e muitas outras linguagens modernas. Isso significa que o código Python não é compilado para código de máquina x86, e sim para uma máquina hipotética de alto nível que o Guido inventou. Nessa máquina, não existem registradores, e sim uma pilha e as instruções são de nível bem mais alto. Essa máquina conhece, por exemplo, o conceito de funções e variáveis (inexistentes em assembly). A máquina virtual Python então interpreta todo código nessa linguagem em instruções de máquina enquanto o programa está executando. Isso significa que o que está executando de verdade em um programa Python é a máquina virtual. O seu programa é apenas uma entrada dessa máquina.

Sobre a pergunta de sistemas operacionais, o problema é que o Kernel de um SO exige a escrita de certas rotinas de muito baixo nível, que conversem com o hardware. Rotinas que lidem com o sistema de memória virtual do processador, que controlem o I/O de dispositivos periféricos, que gerenciem até os detalhes mais banais, como a ordem ou em que cilindro de um HDD segmentos de um arquivo serão escritos (para otimizar a velocidade de leitura). Todos esses detalhes são largamente abstraídos em uma linguagem de nível tão alto como Python.



On Sun, Jun 24, 2018 at 3:45 PM Vitor Daniel <vitor03...@gmail.com> wrote:
Ei, se ainda tiver alguém lendo isso, pois já se passaram 4 anos e meio depois do post anterior, eu tenho a mesma pergunta, mas como que um processador executata um código em assembly? é algum programa? se for isso tem como 'mudar' esse programa para ler um programa em python? Desculpe se a minha pergunta foi inconveniente mas eu não nendo muito do assunto.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/775fa14f-efb6-4d8b-9d67-9611232b4a7e%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/CAPUxeLSXNieR%3DPif%3D00Gf14buQ3z-71Mfs3aZq5RrS6Vce3CLQ%40mail.gmail.com.
Para mais opções, acesse https://groups.google.com/d/optout.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Vitor Daniel

unread,
Jun 24, 2018, 9:18:38 PM6/24/18
to Python Brasil
Nossa, eu não esperava que a resposta seria tão rápida, alias não são 4 anos e meio e sim 5 anos e meio (porque o post anterior ao meu foi postado no inicio de 2013, e já estamos na metade de 2018). Mas voltando ao assunto, não seria assim que ligar o computador iniciar um compilador de python e depois executar o sistema operacional? Mais uma vez digo que não entendo muito disso e só tenho 13 anos, mas eu aprendi a programar em python com 11 anos e nesses 2 anos já aprendi muita coisa e já quero criar coisas grandes, como uma linguagem de programação ou um SO.

Juan Lopes

unread,
Jun 24, 2018, 11:30:38 PM6/24/18
to python...@googlegroups.com
Renzo e André: falar sobre computação é um prazer pra mim :D

Vitor: Algum código não-Python tem que existir, pois da forma que os bootloaders comuns em x86 funcionam, eles procuram por um programa armazenado em um setor específico do disco (setor de boot). Esse setor é gravado durante a instalação do sistema operacional e é o responsável por carregar o kernel na memória e prepará-lo para ser inicializado. Além disso, o próprio Python não roda sobre Python. Ele é compilado para código de máquina (inclusive e especialmente o PyPy). Mas vamos assumir que tanto o bootsector quanto o Python são exceções.

Mesmo assumindo isso, não é prático. Digo porque o próprio Python (e aqui estou falando do CPython) apesar de ser implementado em C e compilado para código de máquina, depende de muitas rotinas disponibilizadas pelos sistemas operacionais. Todas essas rotinas (e.g. acesso a arquivo, threads, networking, etc.) precisariam ser reimplementadas de uma forma independente de sistema operacional, mas esse é um trabalho quase tão grande quanto escrever SO em si.

Note que por Sistema Operacional, estou querendo dizer apenas o Kernel, que controla as funções mais básicas do sistema. Mas Sistemas Operacionais, lato sensu, são muito mais do que isso. Partindo de um Kernel já pronto (digamos, o Linux), é possível ter inúmeros sistemas operacionais diferentes, dependendo dos serviços, bibliotecas e utilitários que são colocados sobre ele (por exemplo, o GNU Project que faz a maior parte das ferramentas do GNU/Linux). Estes mais facilmente podem ser escritos puramente em Python (e muitos de fato são).

***

Sobre você não saber muito sobre o assunto, fica tranquilo. O maior indicativo de se estar no caminho certo é ter muito mais dúvidas do que certezas. Só o fato de você se perguntar isso (e saber expressar essa dúvida de forma inteligente) já te coloca numa posição privilegiada na nossa área. Também comecei a programar muito cedo e curtia muito aprender tudo sobre como os computadores funcionam. Com 13 anos, imagino que você esteja próximo do ensino médio. Se puder, pesquise sobre a OBI (Olimpíada Brasileira de Informática). É uma competição de programação para alunos do fundamental e médio. Eu queria muito saber que ela existia quando tinha a sua idade. Deixo aqui um link para um podcast que participei falando sobre competições de programação.


On Sun, Jun 24, 2018 at 10:18 PM Vitor Daniel <vitor03...@gmail.com> wrote:
Nossa, eu não esperava que a resposta seria tão rápida, alias não são 4 anos e meio e sim 5 anos e meio (porque o post anterior ao meu foi postado no inicio de 2013, e já estamos na metade de 2018). Mas voltando ao assunto, não seria assim que ligar o computador iniciar um compilador de python e depois executar o sistema operacional? Mais uma vez digo que não entendo muito disso e só tenho 13 anos, mas eu aprendi a programar em python com 11 anos e nesses 2 anos já aprendi muita coisa e já quero criar coisas grandes, como uma linguagem de programação ou um SO.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.

Vitor Daniel

unread,
Jun 25, 2018, 7:59:55 AM6/25/18
to Python Brasil
Fabio valeu pela ajuda e respondendo suas perguntas eu gostaria de criar esse sistema apenas para aprendizado e diversão, porque até agora só criei programas pequenos, e acho que seria interessante criar algo que dê mais trabalho, e escolhi o Python porque é a única linguagem que eu conheço (na verdade eu também conheço HTML, CSS, JS, PHP e mysql , mas com essas com certeza não dá para cria algo como um SO. <piada>Ou será que dá?</piada>). E voltando ao assunto é possível eu cria essas rotinas (Alguém me explica melhor o que é isso) e depois da CTRL+C e CTRL+V do código do sistema em si, ou então teria como mudar o Python para que ele não precise dessas rotinas? Agora se eu for desenvolver o Kernel em outra linguagem qual linguagem eu devo usar? é possível criar algo em Java que pelo que eu sei é muito parecido com o JS? porque acho que já esta na hora de aprender uma nova linguagem. 

E Juan também lhe agradeço pela ajuda, responder posts a meia-noite e preciso ter muita coragem <piada>e muito café</piada>

Vitor Daniel

unread,
Jun 25, 2018, 8:53:24 AM6/25/18
to Python Brasil
E Juan eu já fiz a OBI, eu já fiz a primeira e a segunda fase, e estou esperando o resultado para ver se eu paasei na segunda fase para fazer a terceira.

Marco Aurélio Falcão

unread,
Jun 26, 2018, 10:07:21 AM6/26/18
to python...@googlegroups.com
Um programa assembler, em português "montador", transforma linguagem assembly para linguagem de máquina (bits e bytes). O computador executa linguagem de máquina, pois é o que a CPU entende(bits e bytes). Um programa assembler é voltado para arquitetura da CPU. Assembler x86 gera linguagem de maquina para arquitetura x86. O assembler é uma linguagem de baixo nível que trabalha diretamente com a CPU (ULA, Unidade Lógico Aritmetica), registradores e memória da máquina. Exemplo de instrucoes básicas: add r1, 5 (somar 5 ao registrador), mov r1, M0 (mover da memória para o registrador). Um instrução em linguagem de alto nível (exemplo: um for loop na linguagem C) é implementada em várias instruções de assembler. O Python é interpretado em bytecodes(código de máquina virtual, que considera o sistema operacional, exemplo: Linux, Windows, MacOs) e depois é transformado em linguagem de máquinamplo.

Em 24 de junho de 2018 15:11, Vitor Daniel <vitor03...@gmail.com> escreveu:
Ei, se ainda tiver alguém lendo isso, pois já se passaram 4 anos e meio depois do post anterior, eu tenho a mesma pergunta, mas como que um processador executata um código em assembly? é algum programa? se for isso tem como 'mudar' esse programa para ler um programa em python? Desculpe se a minha pergunta foi inconveniente mas eu não nendo muito do assunto.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
It is loading more messages.
0 new messages