Duvida sobre terminal linux.

Discussão sobre linux para plataformas Intel x86 ou x64 (PC)

Moderadores: 51, guest2003, Renie, gpenga

Duvida sobre terminal linux.

Mensagempor fabim » 25 Mai 2012 13:21

Pessoal, estava eu aqui imaginando algumas traquinagens, quando de repente eu me dei conta de algo.
Eu utilizo o ubuntu como SO.
Kernel, 3.xxxxx.

Estava fuçando nos fontes, quando vi algo que fiquei meio confuso.

Eu estou fazendo uma brincadeira, pelo terminal, criando gráficos com uma library que eu já utilizo a alguns anos.

Bom, se eu entendi corretamente:

O Kernel sobe o terminal 7, e então sobe a UI que é o ubuntu propriamente dito em um aplicativo normal, "rodando no terminal 7".

É isto mesmo ?

Abraços
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor xultz » 25 Mai 2012 14:26

Entendi P**** nenhuma, fabim.

Pelo menos, eu fico feliz que você voltou ao normal.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor fabim » 25 Mai 2012 15:31

Bom.
O ubuntu esta rodando em um terminal ? E neste caso, o terminal de numero 7 ?
Ou é outra coisa ?

Eu peguei um exemplo muito simples, onde eu aciono o terminal 2 ou qualquer outro, ai ./executo um aplicativo de exemplo.
Aparece um grafico, e funciona mouse, teclado, tab e tudo mais normalmente como se eu estivesse no ambiente X com o ubuntu. Mas é apenas um exemplo de uma library, não tem uso pratico pra nada.

Eu fiquei imaginando se isto é o mesmo para a UI ubuntu ou outra qualquer.
Sobe-se um terminal, ai por bash por exemplo é executado um aplicativo comum que no caso é o UI do UBUNTO, e isto entra em looping infinito .
Bom, entendeu ?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor xultz » 25 Mai 2012 20:26

Não, mas eu desconfio que por "UI do UBUNTO" você esteja dizendo o Xorg rodando com o Unity ou Gnome nele, é isto?

O exemplo que você citou é um programa que roda no frame buffer e é gráfico apesar de ter chamado ele duma interface de texto, é isso?

E você quer saber se o programa do frame buffer rona no Xorg, é isso?
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor fabim » 25 Mai 2012 21:04

não, não é isso !!

Mais de certa forma você ja respondeu minha duvida, com outra pergunta !! hehe

Meu, eu estou muito confuso sobre

X e gnome/kde/outro_qualquer.

O UI seria um user interface igual o kernel linux, com o android por exemplo.

Eu estou tentando, juro que estou, procurar o conceito de servidor gráfico que é o ubuntu propriamente dito, com o x.

Ta muito confuso isso pra mim, eu ja li e não consegui compreender !!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor msamsoniuk » 26 Mai 2012 00:38

fabim escreveu:não, não é isso !!

Mais de certa forma você ja respondeu minha duvida, com outra pergunta !! hehe

Meu, eu estou muito confuso sobre

X e gnome/kde/outro_qualquer.

O UI seria um user interface igual o kernel linux, com o android por exemplo.

Eu estou tentando, juro que estou, procurar o conceito de servidor gráfico que é o ubuntu propriamente dito, com o x.

Ta muito confuso isso pra mim, eu ja li e não consegui compreender !!!


vc tem que ver as camadas do negocio:

- display
- placa de video
- frame buffer em kernelspace
- frame buffer em userspace (mmap)
- X server
- X library (Xlib)
- X toolkit (qt, gtk, motif, etc)
- aplicacao

com um certo esforco vc consegue moldar isso num layout ISO de 7 camadas hehehe bom, indo direto ao ponto: vc pode criar uma aplicacao que acessa diretamente o frame buffer via mmap, mas fazendo isso vc abre mao de todos os recursos legais que o X ter fornece: janelamento automatico, fontes em qq tamanho, eventos diversos, facilidades de desenho (pontos, linhas, quadrados, circulos, etc), bitmaps, etc. estes recursos vc encontra na API de qq sistema operacional, como windows e OSX, porem o X vai adiante: ele fornece uma camada cliente-servidor, que permite a aplicacao (X cliente) estar em uma maquina diferente do display (X server).

se vc quiser, vc faz sua aplicacao no nivel da X library e tem acesso a todos estes recursos, porem os recursos ainda nesse nivel, apesar de serem legais, sao bem baixo nivel. para vc ter uma nocao da coisa, vc pode dar uma olhada nesse artigo que eu escrevi para o tiranossauro rex:

http://xstep.sourceforge.net/xstep-3.5. ... index.html

a ideia da X library eh meio que enviar ordens remotas p/ o display. um XDrawLine, por exemplo, consiste em coordenadas para dizer onde desenhar a linha, mas alem disso requer a indicacao de um display, um screen e um contexto grafico:

int XDrawLine(Display *display, Drawable d, GC gc, int x1, int y1,int x2, int y2);

o display mapeia uma conexao remota, o screen eh uma tela nessa conexao remota e o contexto grafico contem informacoes como cores, mascaras, etc. a funcao na pratica apenas empacota as informacoes e envia pela rede p/ o display processar. normalmente as pessoas acham meio complicado fazer as coisas no braco diretamente na X library, entao eh mais comum vc usar um toolkit, que fornece widget e gadgets, q sao abstracoes graficas de alto nivel, como botoes, menus, etc. eu tb escrevi um artigo ilustrando a ideia e vc pode comparar o acesso ao nivel de X library e ao nivel de toolkit:

http://xstep.sourceforge.net/xstep-3.5. ... index.html

o toolkit simplifica a vida, mas obviamente ele proprio usa a X library p/ empacotar ordens e enviar p/ o X server. bom, mas pq nao ir direto ao assunto e fazer as apps acessarem diretamente o frame buffer? pq do ponto de vista pratico nao eh legal. como vimos, tem uma serie de recursos legais que a X library e os toolkits fornecem. o X server tambem pode ter mais recursos legais, como aceleracao 3D (OpenGL via extensao GLX), aceleracao de video (via extensao Xvideo) e por aih afora.

mas alem disso, tem a questao de organizacao: se todas as apps acessarem o display diretamente, vc soh pode ter uma app rodando de cada vez e ocupando o display inteiro. fazer isso via X tem a vantagem de permitir janelamento, ou seja, uma infinidade de apps em janelas, que podem estar espalhadas em diferentes screens (q sao os desktops virtuais) e diferentes displays.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor fabim » 26 Mai 2012 10:17

hum, perai.
Quer dizer que os toolkit que eu utilizei pra criar minha app grafica, fala com o xorg, para o xorg gerar as janelas com botoes, etc.
Ai no xorg se o cabra clicar no botão XZ, o xorg cria um evento para a app grafica dizendo, olha botão xz precionado.

Tipo, basicamente, se eu tiver 10 aplicações graficas rodando no X. o X se encarrega de criar as imagens etc, tudo baseado num toolkit que eu utilizei pra criar o meu app.

Resumindo, quem desenha o que, carrega o que, são as app graficas, porem o xorg joga isso no monitor !?

É isso ?
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor msamsoniuk » 26 Mai 2012 13:25

fabim escreveu:hum, perai.
Quer dizer que os toolkit que eu utilizei pra criar minha app grafica, fala com o xorg, para o xorg gerar as janelas com botoes, etc.
Ai no xorg se o cabra clicar no botão XZ, o xorg cria um evento para a app grafica dizendo, olha botão xz precionado.

Tipo, basicamente, se eu tiver 10 aplicações graficas rodando no X. o X se encarrega de criar as imagens etc, tudo baseado num toolkit que eu utilizei pra criar o meu app.

Resumindo, quem desenha o que, carrega o que, são as app graficas, porem o xorg joga isso no monitor !?

É isso ?


acho que sim. em outras palavras: o X server funciona como um grande multiplex, por isso ele eh o server e as apps sao as clientes. as varias apps se conectam no mesmo server e enviam comandos para desenhar janelas, textos, linhas, etc. o X server recebe estes comandos e desenha no frame buffer. obviamente cada app tem a sua janela no X server e ele garante que as coisas fiquem organizadas, cada um no seu quadrado. o X server cuida tb do mouse e teclado: se o usuario esta com o mouse em cima de uma determinada janela, aquela janela eh um foco de eventos, de modo que os eventos de teclado sao passados para a app que eh dona daquela janela.

nem todos os unixes usavam o X: na decada de 80 era muito comum ter exatamente o mesmo conceito, mas utilizando o display postscript (DPS), que era um server exatamente igual o X server, controlando o framebuffer, teclado e mouse, mas baseado em postscript. o DPS era mais lento e foi aos poucos sendo substituido pelo X, mas sobreviveu em sistemas operacionais como o nextstep, que gerou o OSX. o OSX, por sua vez, usa uma versao atualizada do DPS que processa PDF diretamente! ou seja, as aplicacoes do OSX enviam PDF bruto p/ o video, o que explica pq o OSX e iOS conseguem manipular arquivos PDF mais rapido do que o windows consegue manipular um arquivo BMP hehehe

bom, se vc tem uma unica aplicacao que toma conta do display inteiro, vc pode eventualmente tirar fora todo o overhead do X e fazer a aplicacao desenhar direto no frame buffer. mas para isso seria ideial vc usar uma biblioteca capaz de gerar primitivas graficas como textos, linhas, quadrados, circulos, etc. para isso vc tem varias opcoes: directFB, GGI, SDL, gtk, qt, GS, etc. obviamente: somente uma aplicacao vai rodar por vez. mas em alguns casos, eh exatamente isso que se quer e vc elimina todo aquele overhead pesado que o X adiciona.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor fabim » 26 Mai 2012 15:58

AGORA que eu entendi o negócio.

O toolkit do xorg é como se fosse um framework !!
O Xorg é o executante, por assim dizer!!

Por isto, aquele negócio de carregar um programa aqui na minha máquina, e conectar ele no X ai da sua !! E por isso fica tão rapido o negócio !!

Bhá!!

Sim, eu iria desenhar tudo na mão com uma library chamada swin.
Ai hoje de manhã, um cabra, me disse pra então utilizar o QT apontado direto para o FB ao infés do X, e utilizar as milhares de librarys e possibilidades que ele me fornece. Banco de dados, pluguins de arquivos, players, etc !!! :)

Brigadão pessoas !!

Agora eu entendi o porque de Servidor X/Servidor de janelas, e imagino qu eo Servidor grafico seja o mesmo conceito.
Porém o APP utilza o que ja tem pronto no servidor gráfico, e este por sua vez manda o X desenhar.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?


Voltar para Linux ( x86 ou x64 )

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

x