Kernel Linux

Embed Size (px)

Citation preview

Introduo ca Diviso do kernel Linux a QEMU

Arquitetura do Kernel LinuxAlan Godoy S. MelloInstituto de Computao ca

7 de maio de 2009

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

O que um kernel? e Funes do kernel co Arquiteturas de kernel

1

Introduo ca O que um kernel? e Funes do kernel co Arquiteturas de kernel Diviso do kernel Linux a Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos QEMU Virtualizao ca QEMU Usando o QEMUAlan Godoy S. Mello Arquitetura do Kernel Linux

2

3

logo

Introduo ca Diviso do kernel Linux a QEMU

O que um kernel? e Funes do kernel co Arquiteturas de kernel

O que um kernel? e

Em uma diviso do sistema operacional em camadas, kernel a e o nome dado ` poro de software mais prxima da mquina. a ca o a Centro da maioria dos sistemas operacionais. Responsvel por prover as funcionalidades bsicas `s a a a aplicaes executando no sistema. co

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

O que um kernel? e Funes do kernel co Arquiteturas de kernel

Figura: Viso em camadas de uma arquitetura de computador. alogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

O que um kernel? e Funes do kernel co Arquiteturas de kernel

Funoes do kernel cAbstrair o funcionamento do hardware, fornecendo um meio de desenvolver aplicaes que funcionem em diversas co conguraes de mquinas e melhorando a ecincia de co a e algumas atividades junto ao hardware. Garantir a segurana da mquina e dos processos em c a execuo, ao controlar quem e como os recursos do sistema ca podem ser acessados. Realizar uma diviso adequada dos recursos entre os a processos, garantindo o isolamento de cada processo. Prover ao usurio oacesso aos servios disponibilizados, a c atravs de chamadas de sistema. elogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

O que um kernel? e Funes do kernel co Arquiteturas de kernel

Arquiteturas de kernel

Figura: Interao em um microkernel. ca

Micro-kernel: uma poro m ca nima de cdigo responsvel por o a atividades bsicas, sendo os demais recursos providos por a servidores localizados em espao de usurio; facilita a c a programao e aumenta a segurana, uma vez que h menos ca c a cdigo dependente de hardware e em modo kernel. oAlan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

O que um kernel? e Funes do kernel co Arquiteturas de kernel

Figura: Interao em um kernel monol ca tico.

Monol tico: todas as atividades bsicas so executadas em a a modo kernel, sendo que novas funcionalidades so providas a como mdulos de kernel, ao invs de servidores em espao de o e c usurio; busca maior ecincia ao evitar trocas de contexto. a elogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

O que um kernel? e Funes do kernel co Arquiteturas de kernel

Figura: Interao em um kernel h ca brido.

H brido: segue uma abordagem prxima ao micro-kernel, o porm os servidores podem executar cdigo em modo kernel, e o reduzindo os custos devido a trocas de contexto. Ainda h outras como nanokernel ou exokernel. alogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

1

Introduo ca O que um kernel? e Funes do kernel co Arquiteturas de kernel Diviso do kernel Linux a Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos QEMU Virtualizao ca QEMU Usando o QEMUAlan Godoy S. Mello Arquitetura do Kernel Linux

2

3

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Diviso do kernel Linux a E poss pensar um SO como composto de dois n vel veis, como na imagem abaixo.

Figura: Arquitetura bsica do sistema operacional GNU/Linux. alogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

A glibc permite a transio entre o modo de usurio e o ca a modo kernel; ao realizar uma chamada de sistema, um processo de usurio torna-se um processo do kernel. a O kernel Linux, em si, no um processo, mas um gerenciador a e de processos, executado nas seguintes situaoes: em resposta c a uma chamada de sistema, exceo ou interrupo ou, mais ca ca raramente, em alguma thread do kernel, que seja responsvel a por executar algumas funes periodicamente. co

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Em uma viso mais rpida, o Linux pode ser dividido em a a alguns subsistemas principais:

Figura: Principais subsistemas do kernel Linux.

Apesar de essa ser uma diviso comum, ela no unica, assim a a e como diversas partes do kernel relacionam-se entre si, independentemente dos subsistemas exibidos acima.Alan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Figura: Mapa detalhado do kernel Linux.logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Sistema de arquivosO Linux fornece algumas camadas de abstrao para a ca gerncia de arquivos. Essas camadas de abstrao permitem e ca que sejam utilizados mltiplos sistemas de arquivos em u mltiplos dispositivos de armazenamento. u

Figura: Arquitetura do componente de sistemas de arquivos.Alan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Sistemas de arquivo so modelos acerca da organizao lgica a ca o dos arquivos, podendo no lidar com dispositivos de a armazenamento (como o PROCFS, gerado durante o carregamento do sistema e que permite obter informaes do co kernel, o DEVFS, que interagir com dispositivos atravs de e chamadas de sistema de E/S). Como exemplos de sistemas de arquivos implementados para o Linux, temos EXT3, JFS, NFS, GmailFS e WikipediaFS, sendo os dois ultimos implementados em espao de usurio, c a atravs do FUSE. elogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Cada sistema de arquivos deve lidar com algumas estruturas bsicas: o superblock, o inode e o dentry. asuperblock: responsvel por armazenar informaes como o a co tipo do sistema de arquivos, tamanho, dispositivo, lista de inodes e suas operaes bsicas, como criao e remoo de co a ca ca inodes. inode: representa um objeto do sistema de arquivos (um arquivo ou um diretrio), contendo informaes como dono, o co grupo, permisses, blocos e operaes (como leitura e escrita o co no arquivo). dentry: responsvel por estabelecer a relao entre nomes de a ca arquivos e inodes.

Ao separar os arquivos de seus nomes, poss atribuir e vel vrios nomes a um mesmo arquivo (hard link). alogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Figura: A estrutura do inode e suas operaes. cologo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Gerenciamento de processos

Um processo pode ser usualmente denido como uma instncia de um programa em execuo, podendo haver vrios a ca a processos de um mesmo programa rodando ao mesmo tempo. O Linux diferencia claramente um processo de um programa: um processo criado atravs da funo do fork() do kernel e e ca a qual pode ser acionada pelo usurio atravs da chamada a e de sistema fork() , enquanto que um programa carregado e atravs da fam de chamadas de sistema exec(). e lia

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Inicialmente o kernel Linux no oferecia suporte a aplicaes a co com mltiplas threads, sendo que elas deveriam ser u implementadas em modo usurio; isso causava problemas pois a quaisquer chamadas que levassem ao bloqueio de uma das threads do processo em n de kernel fazia com que todas as vel outras threads daquele processo acabassem bloqueadas. Atualmente o Linux oferece esse suporte no kernel, sendo que tanto processos como threads so implementados utilizando a a idia de processos leves (lightweight process). e Dois processos leves podem compartilhar alguns recursos, como espao de endereamento e arquivos abertos, de tal c c forma que sempre que um dos processos modica um dos recursos, o outro pode imediatamente perceber a alterao. calogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Figura: A representao de um processo no kernel. caAlan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

No kernel cada processo leve representado por uma e estrutura chamada task struct. Esta estrutura armazena informaes completas sobre a co execuo do processo, como identicadores, prioridades de ca execuo, estado da execuo da tarefa, processos ca ca relacionados (pais e lhos), apontador para a pilha de execuo e o estado da tarefa (dependente de arquitetura), ca utilizado para permitir a troca de tarefas em execuo. ca Cada processo leve possui um identicador unico, chamado pid, sendo que threads de um mesmo processo formam um grupo, identicado pelo valor de tgid, igual ao pid da primeira tarefa no grupo; o valor de tgid o valor retornado e pela chamada de sistema get pid().logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Criao de processos caExceto pelo processo init, criado na inicializao e que existe ca durante toda a execuo do sistema, todos os novos processos ca e threads, seja em espao de usurio ou de kernel, so c a a resultado de alguma chamada a do fork() a partir de um outro processo (processo pai). Ao ser invocada, a chamada do fork() cria um novo pid para a tarefa, verica as flags do processo pai e copia a task struct do pai; caso esteja sendo criado um novo processo so duplicadas as estruturas de memria, de gerncia a o e de arquivos e de sinais do pai, caso seja uma nova thread essas estruturas apenas apontaro para as mesmas estruturas a que o pai; nalizado esse processo, o novo processo , ento, e a acordado.Alan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Finalizao de processos ca

Quando um processo nalizado realizada a funo e e ca a do exit(), responsvel por remover do sistema todas as referncias ao processo em questo, exceto para o caso de e a recursos compartilhados, e por emitir noticaes sobre a co nalizao do processo. ca Se requerida uma sinalizao ao pai, por exemplo, a tarefa e ca entra em estado zumbi, mantendo seu estado na memria at o e que uma chamada do tipo wait() seja executada; caso contrrio, a memria ocupada pelo processo liberada. a o elogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

EscalonamentoCriados os processos, o escalonador (funo schedule()) ca deve garantir que cada processo seja executado por um determinado tempo, criando a iluso de execuo simultnea a ca a dos processos; para isso ele se valhe de critrios que buscam o e mximo aproveitamento do tempo de processador, ao mesmo a tempo que atribui prioridades diferentes a cada processo, segundo as necessidades do usurio. a Contabilizando as necessidades da aplicao como prioridade ca esttica, atribu pelo usurio, n de interatividade e a da a vel demanda por execuo em tempo real, os processos do Linux ca podem receber diferentes valores de prioridade dinmica. alogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

O controle de tempo feito atravs de ticks do clock do e e computador, que executa chamadas peridicas ao escalonador; o dependendo da forma como a tarefa escalonada ela pode ter e um tempo limite para se manter no processador, o qual depende de sua prioridade esttica. a Do kernel 2.4 para o 2.6 foram feitas grandes mudanas no c escalonador, de forma que atualmente ele executa em tempo O(1), organizando as tarefas segundo suas prioridades; a partir do kernel 2.6 tambm poss um melhor uso de mltiplos e e vel u processadores, de forma que cada processador mantm uma e la de execuo prpria, sendo feito um balanceamento ca o peridico (200ms) para evitar que alguns processadores quem o ociosos enquanto outros encontrem-se sobrecarregados.logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Gerenciamento de memria oO gerenciamento de memria no Linux feito atravs de um o e e esquema de memria virtual, o qual implementa uma camada o de abstrao que faz com que os endereos vistos pelos ca c programas de usurios no correspondam diretamente aos a a endereos em hardware. c O uso de memria virtual busca atingir alguns objetivos, o como:Relocao: um programa deve ser capaz de executar em ca diferentes pontos da memria. o Proteo e compartilhamento: processos co-existentes no ca a devem interferir uns nos outros (exceto quanto explicitado). Transparncia: uma aplicao no precisa de informao sobre e ca a ca o tamanho da memria, uma vez que no precisa restringir-se o a ` memria sicamente dispon a o vel.Alan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Segmentao caSegmentao divide a memria em pedaos de tamanhos ca o c variveis e com diferentes tipos de permisses, sendo os a o endereos calculados com base no in do segmento atual. c cio O Linux utiliza a idia de segmentao de forma limitada, e ca preferindo esquemas de paginao, o que permite maior ca simplicao no gerenciamento de memria e maior ca o portabilidade. So utilizados apenas seis segmentos: segmento de cdigo do a o kernel, de dados do kernel, de cdigo de usurio, de dados de o a usurio, de TSS e de LDT; esses segmentos so usados para a a denir proteo em n de hardware para essas reas. ca vel alogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Paginao caPaginao divide a memria em blocos cont ca o nuos e de tamanho xo, tambm tendo n e veis de permisses; o espao o c de uma pgina na RAM chamado de page frame, sendo que a e pginas so mapeadas em page frames atravs de page tables. a a e Caso seja necessrio mais memria do que a dispon a o vel sicamente, o kernel pode mover pginas pouco usadas da a memria para o disco; dessa forma, as pginas devem ser o a marcadas como presentes ou ausentes na RAM. As pginas so organizadas em tabelas hierrquicas que a a a podem ser acessadas dividindo o endereo em partes, sendo a c poro mais signicativa responsvel por indicar a posio da ca a ca pgina nessas tabelas, enquanto que a poro menos a ca signicativa indica o oset dentro da pgina. aAlan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Figura: Esquema de tabelas hierrquicas para paginao. a ca

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

O Linux utiliza 4 n veis de tabelas hierrquicas: Page Global a Directory, Page Upper Directory, Page Middle Directory e Page Table Entry. Essa implementao busca compatibilidade com diferentes ca arquiteturas, sendo esses 4 n veis utilizados apenas em arquiteturas 64 bits; em outras arquiteturas os n veis intermedirios so eliminados para maior ecincia. a a e Cada processo possui suas prprias tabelas de pginas, as o a quais contm apenas os endereos que o processo pode e c utilizar.logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

O uso de 32 bits possibilita o endereamento de at 4GB, c e sendo que o kernel divide esse espao virtual em espao de c c usurio e espao de kernel (usualmente 3GB e 1GB, a c respectivamente). Como o kernel pode manipular apenas memria que esteja o mapeada em seu espao de endereamento, h alguns anos o c c a Linux em um x86 poderia manipular pouco menos de 1GB de memria f o sica. Atualmente quando o kernel precisa trabalhar com alguma poro da high memory ele cria uma mapeamento durante a ca execuo, o que causa deteriorao de desempenho. ca calogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Figura: Regies da memria. o o

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

RedeA estruturao do funcionamento de redes normalmente ca e organizada em camadas; como exemplo temos o modelo da Internet.

Figura: Modelo em camadas da Internet.

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Camada de enlace: relao direta com o hardware, responsvel ca a pelo roteamento de pacotes; exemplo de protocolo: Ethernet. Camada de rede: responsvel pelo endereamento dos pacotes a c ao seu destino nal; exemplo de protocolo: IP. Camada de transporte: responsvel pelo redirecionamento a interno aos servidores (portas, por exemplo) e implementao ca de mecanismos de conabilidade, quando necessrio; exemplos a de protocolo: TCP e UDP. Camada de aplicao: camada na qual os dados transportados ca apresentam valor semntico; exemplos de protocolo: HTTP, a FTP e SSH.logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

O Linux implementa essas camadas atravs de seu subsistema e de redes, cuja organizao pode ser denida em alto n ca vel atravs da gura abaixo. e

Esse modelo de rede baseia-se na manipulao de sockets, que ca pode ser denido como um extremo de um canal de comunicao. caAlan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Interface agnstica de protocolo: camada de abstrao e o ca protocolos; os protocolos devem se registrar junto a essa camada, denido suas operaes bsicas. co a

Figura: Estrutura do vetor de protocolos.Alan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Protocolos de rede: implementao espec ca ca de protocolos; alguns protocolos so inclu a dos por padro, como IP e TCP, a mas novos protocolos podem ser registrados.As movimentaes de dados atravs da rede so feitas atravs co e a e de socket buers, os quais contm o pacote em questo e e a informaes inclu co das pelas vrias camadas, como dispositivo a utilizado, socket, timestamp e cabealhos de protocolos, c podendo ser organizados em las para cada conexo espec a ca.

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Interface agnstica de dispositivo: outra camada de o abstrao, porm relacionando protocolos a dispositivos, ca e fornecendo, por exemplo, mtodos genricos para enleirar e e buers de entrada e de sa os dispositivos dispon da; veis devem registrar-se nessa camada. Drivers de dispositivos: implementaes espec co cas de drivers de dispositivos; nessa camada so denidas as funes a co responsveis por, de fato, enleirar buers para transmisso a a (dependente de hardware).

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Drivers de dispositivos

A implementao separada de drivers de dispositivos permite ca maior transparncia na relao entre kernel e hardware. e ca Drivers podem ser visto como caixas pretas, que fazem com que um determinado hardware interaja com o sistema operacional atravs de uma interface bem denida. e O Linux implementa drivers atravs de mdulos, os quais e o podem ser dinamicamente carregados e descarregados quando necessrio, permitindo que uma imagem muito menor do a kernel.logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Mdulos oMdulos no relacionam-se apenas a drivers, podendo o a implementar funes internas ao kernel ou novas camadas de co abstrao, por exemplo. ca Ao contrrio de aplicaes de usurio, mdulos do kernel so a co a o a orientados a eventos, como carregamento e descarregamento. Mdulos registram em seu cdigo informaes sobre autor, o o co descrio e licensa, a qual pode acarretar no bloqueio do ca mdulo. o Algumas ferramentas para trabalhar com mdulos: modprobe, o depmod e modinfo.logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Tipos de dispositivosVrios recursos no Linux so mapeados no sistema de a a arquivos, o que facilita sua manipulao, sendo que a maior ca parte dos dispositivos so encontrados no diretrio /dev. a o So distinguidos trs tipos bsicos de dispositivos: a e aDispositivos de caractere: orientado a uxos de dados permitindo, normalmente, apenas acesso sequencial; exemplos de dispositivos: /dev/console, /dev/random, /dev/lp0. Dispositivos de bloco: dispositivo que pode alojar um sistema de arquivos; exemplos de dispositivos: /dev/fd0 e /dev/sda. Interfaces de rede: capaz de trocar dados com outros servidores, no sendo necessariamente um dispositivo; ao a contrrio dos outros tipos no mapeado no sistema de a a e arquivos e tratado pelo kernel atravs de pacotes; exemplo de e e dispositivo: eth0.Alan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Nmeros de dispositivos u

Cada dispositivo possui um nmero unico, sendo formado por u duas partes:Major number: identica ao kernel o driver respectivo ao dispositivo. Minor number: identica ao driver o dispositivo em questo a (um mesmo driver pode gerenciar mltiplos dispositivos). u

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos

Ao listar arquivos (comando ls -l) de dispositivo so listados a algumas dessas informaes. coNa regio destacada ` esquerda indicado o tipo de a a e dispositivo (b para dispositivos de bloco e c para dispositivos de caractere). Na outra regio destacada so indicados os nmeros do a a u dispositivo no formato major, minor.

Figura: Listagem da representao de alguns arquivos no sistema de ca arquivos.Alan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

1

Introduo ca O que um kernel? e Funes do kernel co Arquiteturas de kernel Diviso do kernel Linux a Sistema de arquivos Gerenciamento de processos Gerenciamento de memria o Rede Drivers de dispositivos QEMU Virtualizao ca QEMU Usando o QEMUAlan Godoy S. Mello Arquitetura do Kernel Linux

2

3

logo

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Virtualizao caVirtualizao de plataforma (ou apenas virtualizao) consiste ca ca na implementao de um programa de controle, criando uma ca mquina virtual para o sistema convidado (que pode ser um a sistema operacional). Ao criar intermediar a relao entre o sistema convidado e a ca mquina real, o programa de controle pode gerenciar recursos a de maneira diferenciada, dividindo a mquina e mltiplas a u mquinas virtuais, criando processadores ou emulando a dispositivos que no se encontram dispon a veis, por exemplo. Alguns mecanismos de virtualizao permitem que uma ca mquina execute softwares com conjuntos de instrues de a co outras mquinas. aAlan Godoy S. Mello Arquitetura do Kernel Linux

logo

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Exemplos de poss veis benef cios do uso de virtualizao: caIsolamento do sistema convidado com relao ao hospedeiro, ca reduzindo poss veis danos. Uma mquina virtual pode ser facilmente copiada para outro a computador, mesmo que as mquinas tenham conguraes a co diferentes. Mltiplos sistemas operacionais podem ser executados em uma u mquina concorrentemente. a Controle externo de acesso a recursos e facilidade na inspeo ca do estado da mquina, o que facilita o desenvolvimento de a sistemas operacionais.

logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

QEMU

O QEMU um virtualizador e emulador completo de e mquinas. a Ao ser executado como emulador, ele pode executar programas feitos para uma arquitetura em diferentes arquiteturas, atravs da converso dinmica do cdigo de e a a o mquina. a Ao ser usado como virtualizador, o QEMU capaz de executar e o cdigo do sistema emulado diretamente na mquina o a hospedeira (atravs de um mdulo, chamado KQEMU). e ologo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Usando o QEMUO uso do QEMU muito similar ao uso de uma mquina real e a de forma que, caso no haja um disco com um SO a instalado, necessrio instal-lo: e a aComo disco pode ser utilizado um dispositivo real ou uma imagem do disco, que pode ser criada com o comando qemu-img: $ qemu-img create -f qcow disco.img 512M Deve ser, ento inserido o CD-ROM de instalao na sua a ca nova mquina, indicando na BIOS que o boot deve ser feito a a partir do CR-ROM: $ qemu -hda disco.img -cdrom /dev/cdrom -boot d Agora a instalao segue o formato usual de uma instalao de ca ca um sistema operacional.Alan Godoy S. Mello Arquitetura do Kernel Linux logo

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Terminada a instalao, voc agora pode rodar sua nova ca e mquina. a $ qemu -hda disco.img Caso voc queira rodar uma imagem espec e ca de kernel que no esteja no dispositivo especicado, pode ser usado o a parmetro -kernel: a $ qemu -hda disco.img -kernel bzImage Por padro, o QEMU abre uma janela SDL para sa caso a da, voc queira inibir essa janela (usando SSH, por exemplo), use e o parmetro -nographic. alogo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Referncias I e

J. Corbet, A. Rubini, and G. Kroah-Hartman. Linux Device Drivers, 3rd Edition. OReilly Media, Inc., 2005. A. DAssumpo. ca Introduo aos linux device drivers. ca http://www.adassumpcao.net/ introducao-aos-linux-device-drivers, 2007. [Online; acessado em 6-maio-2009].logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Referncias II e

M. T. Jones. Inside the linux scheduler. http://www.ibm.com/developerworks/linux/library/ l-scheduler/, 2006. [Online; acessado em 5-maio-2009]. M. T. Jones. Anatomy of the linux le system. http://www.ibm.com/developerworks/linux/library/ l-linux-filesystem/, 2007. [Online; acessado em 4-maio-2009].logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Referncias III e

M. T. Jones. Anatomy of the linux kernel. http://www.ibm.com/developerworks/linux/library/ l-linux-kernel/, 2007. [Online; acessado em 4-maio-2009]. M. T. Jones. Anatomy of the linux networking stack. http://www.ibm.com/developerworks/linux/library/ l-linux-networking-stack/, 2007. [Online; acessado em 6-maio-2009].logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Referncias IV e

M. T. Jones. System emulation with qemu. http://www.ibm.com/developerworks/linux/library/ l-qemu/, 2007. [Online; acessado em 6-maio-2009]. M. T. Jones. Anatomy of linux process management. http://www.ibm.com/developerworks/linux/library/ l-linux-process-management/, 2008. [Online; acessado em 4-maio-2009].logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Referncias V eP. Larson. Kernel comparison: Improved memory management in the 2.6 kernel. http: //www.ibm.com/developerworks/library/l-mem26/, 2004. [Online; acessado em 5-maio-2009]. V. Shukla. Explore the linux memory model. http://www.google.com/search?q=cache:dDH_PeA02TEJ: www.ibm.com/developerworks/library/l-memmod/, 2006. [Online; acessado em 5-maio-2009].Alan Godoy S. Mello Arquitetura do Kernel Linux logo

Introduo ca Diviso do kernel Linux a QEMU

Virtualizao ca QEMU Usando o QEMU

Referncias VI e

Wikipedia. Microkernel wikipedia, the free encyclopedia. http://en.wikipedia.org/w/index.php?title= Microkernel&oldid=287802400, 2009. [Online; acessado em 4-maio-2009]. Wikipdia. e Kernel wikipdia, a enciclopdia livre. e e http://pt.wikipedia.org/w/index.php?title= Kernel&oldid=14952227, 2009. [Online; acessado em 4-maio-2009].logo

Alan Godoy S. Mello

Arquitetura do Kernel Linux