Anda di halaman 1dari 5

Kernel do Sistema Operacional Linux

Caractersticas e Funo
Jnior de Paula Ribeiro da Silva
Acadmico de Informtica, 3 Perodo - 201110505 Universidade Federal de Rondnia UNIR Porto Velho, RO Brasil e-mail: juniiordepaula@gmail.com.

Resumo Trabalho apresentado Universidade Federal de Rondnia, como parte de requisito de avaliao da disciplina de Sistemas Operacionais, do curso de Informtica ministrado pela Prof. Silvia Rissino. Keywords Linux; kernel; concorrncia; compatibilidade; arquitetura;

Menor possibilidade de travar o sistema todo devido um nico programa, tendo a opo de encerrar apenas o processo com problema de execuo; Por ser um software livre, possvel visualizar, alterar e recompilar o cdigo fonte para um melhor desempenho com o hardware utilizado, distribuir livremente o SO e encontrar diversos outros com o kernel Linux, de qualidade equivalente ou superior e sem preocupaes com licena de uso. Suporte nativo para um gama de sistema de arquivos, podendo mesmo atuar com vrios tipos simultaneamente (usando dois diretrios montados com um sistema de arquivos diferente, por exemplo). Mesmo com a grande maioria dos programas serem feitos para outras plataformas, ainda possvel contar com uma grade com milhares de softwares de qualidade equivalente e licena grtis para o uso.

I.

INTRODUO

O Linux um kernel e tambm um sistema operacional que roda sobre o prprio Kernel, dependendo da referncia utilizada. Criado em 1991 por Linus Torvalds baseado em um sistema, construdo e implementado por Ken Thompson, Dennis Ritchie, Douglas Mcllroy e Peter Weiner (Bell Labs da AT&T) em 1969, chamado Unix. O projeto que mais tarde veio a se tornar o ncleo Linux era na verdade um emulador de terminal usado por Tolvads para acessar os grandes servidores UNIX da universidade. O desenvolvimento do Linux foi feito no MINIX utilizando o GNU C compiler (principal escolha para compilar o Linux, embora possam ser usados outros compiladores para constru-lo) [1]. II. CONCORRNCIA

A concorrncia entre Linux e outros SOs no se d em mercado e sim em qualidade em si e diversos outros pontos positivos como por exemplo [2]: Melhor gerenciamento de memria; Reconhecimento de diversos tipos de sistemas de arquivos; Possui TCP/IP implementado direto no kernel, agilizando conexes de rede; Sistemas de Permisses de Acesso a arquivos por usurios e grupos, aumentando significativamente a segurana a acesso a seus arquivos; No afetado por diversos vrus, spywares e adwares comumente feitos para o Windows;

Por esses e outros fatos no apresentados, a escolha do Linux como SO praticamente certa, mas a maioria dos usurios ainda opta por Windows ou iOS em suas mquinas, alguns pagando caro e outros usando apenas software piratas, mas muitas vezes optando por esses dois sistemas para uso dirio devido o contato com os mesmos ter sido maior em suas experincias dirias como usurios. Os experientes nos sistemas mais conhecidos tm receio de migrar para um ncleo Linux por sua interface e programas possuirem uma aparncia um tanto quanto estranha a um primeiro olhar, apesar de alguns SOs, como o caso do Kubuntu, possuirem uma interface com diversos efeitos extremamente amigveis e mais bonitos que vrias verses de outros sistemas concorrentes, e temos o caso do Kurumin, que apesar de descontinuado aps a verso 7, foi desenvolvido para ser usado especialmente por iniciantes e ex-usurios do Windows. III. COMPATIBILIDADE

O Linux altamente compatvel com diversas plataformas, devido sua arquitetura que o permite ser utilizado desde em celulares a servidores de alto desempenho.

A compatibilidade com sistemas de arquivo tambm alta, como FAT, FAT32, ext2, ext3, ReiserFS, JFS, XFS, NTFS, entre outros [3].

IV.

KERNEL

Um Sistema Operacional pode ser visto como um sistema de 2 nveis: o espao do usurio e o kernel (como mostra a imagem abaixo)[4].

Muitos recursos importantes so implementados no kernel Linux, tanto em um nvel mais avanado quanto em nveis mais baixos e o kernel dividido em mltiplos subsistemas distintos, tornando-o assim um sistema que podemos chamar de monoltico, pois todos os servios bsicos esto agrupados dentro do kernel. Essa diviso o diferencia da arquitetura de microkernel, em que os servios como comunicao, E/S e gerenciamento de memria e processo so fornecidos pelo kernel, e apenas servios mais especficos ficam na camada do microkernel. Um dos aspectos mais relevantes no uso do Linux que mesmo o kernel sendo mais e mais eficaz com o passar do tempo (em termos de memria e uso do processamento central) e com uma estabilidade significativamente grande, sua portabilidade como j foi dito antes, apesar do tamanho e complexibilidade, o permite ser compilado para executar uma considervel quantidade de processadores e plataformas e diferentes limitaes e necessidades de arquitetura. Pode-se at mesmo executar o Linux em um processo com uma Memory Management Unit (MMU) e em processos que no fornecem MMU devido a porta uClinux do kernel. O uClinux permite at mesmo que o kernel Linux seja executado em minsculas plataformas integradas, como o processador DragonBall da Motorola (PalmPilot Personal Digital Assistants (PDAs)).

Figura 1 Principal Aquitetura do SO GNU/Linux

O Linux conta com o GNU C Library (glibc), uma implementao da biblioteca C pado, que basicamente conecta a rea de trabalho do usurio ao kernel fornecendo um mecanismo de transio entre os nveis. O glibc de uma importncia extrema para o funcionamento do sistema, pois user space e kernel possuem endereos diferentes e protegidos. Quanto ao espao utilizado em memria virtual o kernel, diferentemente dos processos de usurio que costumam ocupar um espao para cada processo, ocupa um nico espao de endereo. Alm da diviso geral do sistema, pode-se dividir tambm o kernel do Linux em trs outros nveis completos. System Call Interface ocorre a implementao das funes bsicas, como read e write j que esta a interface que faz a chamada do sistema, como o prprio nome define; Kernel local onde fica armazenado o cdigo do kernel, comum a todas as arquiteturas de processadores suportados pelo Linux, mais precisamente, o cdigo do kernel independente da arquitetura; Architecture-Dependent Kernel Code o cdigo que depende de uma arquitetura especfica atuando com o processador, formando o chamado BSP (Board Support Package).
Figura 2 Principais Subsistemas do Kernel Linux

A partir da figura acima podemos notar que todos esses subsistemas fazem do kernel apenas um gerenciador de diversos recursos, sendo que tais recursos podem ser tanto um processo, como a memria disponvel ou hardware, gerenciando e intermediando de maneira eficaz o acesso a estes recursos entre os diversos usurios concorrentes tanto em kernel quanto no espao do usurio. V. INTERFACE DE CHAMADA DO SISTEMA (SCI)

o nvel mais fundamental de servios, pois a partir de um determinado espao de usurio presente no modo kernel a SCI fornece uma interface entre um programa em execuo e o SO, funcionando na verdade como um servio de multiplexao e desmultiplexao de chamada de funes. Tal interface pode ser dependente da arquitetura mesmo dentro de uma famlia de processadores. VI. GERENCIAMENTO DE PROCESSOS (PM)

sendo que os valores variam de 1 a 99 e nunca so modificados pelo escalonador. Prioridade Dinmica aplicada para os processos comuns. A prioridade dinmica dos processos convencionais ser sempre menor que qualquer processo de prioridade esttica, sendo que se houver um processo de prioridade esttica em task running em execuo no ser possvel nenhum processo de prioridade dinmica rodar [5]. GERENCIAMENTO DE MEMRIA (MM)

No kernel, tais processos gerenciados (na verdade o foco na execuo dos processos) so chamados de encadeamentos representando uma virtualizao individual do processador tal como dados, cdigos, pilhas e registros. Por meio de um escalonador de processos o PM do Linux inicia uma poltica de gerenciamento que permite no s uma diviso do tempo utilizado por cada processo, mas os melhores resultados possveis. O escalonador usa ainda uma estrutura que guarda informaes de cada processo e por meio de um array mostrar uma das seguintes opes: Task Running Processo em execuo ou aguardando para ser executado. Task Interruptible O processo est suspenso e aguardando certa condio. Task Uninterruptible similar ao estado anterior, porm seu estado no ser modificado ao receber um sinal. utilizado por processos que precisam executar determinadas tarefas sem sofrer interrupo. Task Stopped A execuo do processo foi interrompida. Task Zombie O processo j foi completamente executado e a memria associada liberada, mas permanece na tabela de processos, assim, permitindo a leitura das informaes necessrias pelo seu processo pai.

VII.

Existem dois tipos de gerentes trabalhando em conjunto, um conhecido como alocador de pginas, que faz a gerncia de memria fsica no kernel, e o outro chamado kmalloc, que trabalha com alocao de comprimento varivel. O alocador de pginas trabalha com a alocao e liberao de pginas fsicas podendo at mesmo alocar diversos intervalos simultaneamente. Para localizar as pginas fsicas disponveis, o alocador utiliza o Buddy-heap, um algoritmo, que localiza as regies de memria alocvel e dependo do caso combina-a com sua parceira adjacente para formar uma regio maior ou a subdivide em duas parceiras para fornecer o devido espao, evitando dessa forma uma falta ou gasto desnecessrio de memria alocvel [6].

Por padro o Linux tem um limitador de recursos decidindo quanto do sistema cada processo poder utilizar, evitando at mesmo que o usurio possa desestabilizar o sistema. Outra curiosidade a de os processos do ambiente Linux serem preemptivos, sempre verificando se o processo em task running possui prioridade maior que os outros que esto sendo executados. Se for o caso o processo corrente interrompido, e iniciando o de maior prioridade. Devido ao trabalho de verificao do escalonador os processos esto sempre em uma constante mudana de prioridade de acordo com o que cada um estiver fazendo, dessa maneira os processos que ficaram mais tempo utilizando os recursos de CPU tem sua prioridade decrementada em relao aos que ficaram proibidos de usar o processador por muito tempo, tendo assim suas prioridades incrementadas automaticamente. Quanto prioridade ainda podemos obter duas classificaes: Prioridade Esttica definido pelos prprios usurios para processos que precisam de tempo real

Figura 3 Exemplo de diviso da memria em buddy-heap

De um ponto de vista geral as alocaes de memria no ambiente Linux so feitas por drivers, de maneira esttica, ou pelo alocador de pginas, de forma dinmica. H tambm diversos subsistemas de gerencia que gerenciam seu prprio pool de memria, deixando de lado o alocador de pginas. A respeito do kmalloc, podemos trata-lo como uma funo anloga ao malloc da linguagem C que aloca pginas inteiras, mas logo aps as divide em pedaos menores, pois frequentemente necessrio alocar pequenos blocos de memria de apenas alguns bytes em vez de uma pgina inteira. Tanto o alocador de pginas, bem como o kmalloc, so prova de interrupes e devido as rotinas de interrupes possurem uma propriedade atmica garantem que todas as solicitaes sejam satisfeitas ou, por falta de memria disponvel, falhe imediatamente. Em contrapartida, os processos dinmicos em task running podem ser modificados para task interruptible, desse modo liberando memria e quando a mesma estiver disponvel novamente

sai do estado de bloqueio. importante frisar que o sistema kmalloc aloca permanentemente as regies de memrias que precisa utilizar at liberao explicita e no pode realocar tais espaos devido falta de memria. H ainda outros trs subsistemas principais que trabalham inter-relacionando-se, so eles: Cache de Buffers o cache principal do kernel em dispositivos orientados a blocos, como unidades de disco, principal meio de I/O de tal dispositivo. Cache de Pginas Mantm pginas inteiras de contedo em cache, no precisando limitar-se a apenas a dispositivos de bloco, atuando tambm em rede e sendo utilizando no s por arquivos prprios do Linux, mas tambm por sistemas de arquivo em rede NFS. Sistema de Memria Virtual um mantenedor do contedo e do prprio espao de endereamento virtual de cada processo. Cria e gerencia o carregamento de pginas sob demanda e se necessrio a descarga das mesmas. No Linux o sistema de memria virtual ainda se mantm como um conjunto de regies independentes ou um conjunto de pginas [6].

resultante de uma unio de outros (.tar) e logo aps ocorreu uma compresso (.gz). IX. ENTRADA E SADA (E/S)

O controle de dispositivos de E/S uma das principais funes de um sistema operacional, ou seja, enviar comandos, analisar interrupes, tratar possveis erros e prover system call para leitura e gravao nos dispositivos. No Linux esse sistema similar ao Unix, onde os device drivers so vistos como arquivos (inodes), abstraindo o resto do sistema e o usurio de certas particularidades. Desse modo o acesso a um dispositivo como a abertura de um arquivo normal, sendo que os mesmo so tratados como arquivos especiais e esto associados a um diretrio dentro de /dev. Tais arquivos especiais possuem referncias a certo driver de dispositivo, dessa forma, as permisses de leitura e gravao aos usurios para com esses dispositivos so feitas no SO como em arquivos normais. No Linux h apenas um driver para cada dispositivo, sendo que um mesmo driver pode ser usado para diferentes dispositivos. No Unix os arquivos especiais so divididos em duas classes, cada qual representada por uma tabela: Bloco tratado pela tabela de arquivos especiais bdvsw; Caracteres tratado pela tabela de arquivos especiais cdevsw.

VIII.

SISTEMA DE ARQUIVOS

O Sistema de Arquivos o mecanismo do kernel Linux que armazena e d acesso aos dados e softwares pertencentes tanto aos usurios quanto ao prprio SO e gerencia a proteo dos arquivos. Por ser totalmente baseado no Unix, o Linux acabou herdado muitas das implementaes do Unix, sendo idnticos em muitos modelos. A diferenciao do Linux para muitos SOs do mercado o suporte para diversos tipos de sistemas de arquivos, como supracitado no incio deste, tendo como principais exemplos: Minix, proc, iso9660, msdos, ext2, ext3, reiserfs, alm de vrios outros. Tambm importante frisar que no Linux, novamente como no Unix, cada arquivo um inode, fazendo que tudo seja visto como arquivo, mesmo drivers de dispositivos, pastas, etc. No mesmo SO Linux possvel a utilizao de vrios sistemas de arquivos diferentes. Cada tipo de sistema montado sobre um diretrio, criando um ponto de montagem deste sistema de arquivos. possvel montar vrios sistemas de arquivos em vrios pontos de montagem, que por sua vez podem ser at mesmo um diretrio em uma mquina remota. A manipulao dos arquivos varia em cada sistema, no Linux feito pelo Virtual File System (VFS), que gerencia esta gama de sistemas de arquivos, bem como seus respectivos pontos de montagem, aparentando ao usurio ser apenas um nico sistema de arquivos. Na manipulao e tratamento, o Linux ainda diferencia maiscula e minscula e onde geralmente o arquivo guardado utilizado nome e uma extenso nica, separados por . (ponto), mas no ambiente Linux um arquivo pode possuir mais de uma extenso, como: example.tar.gz, que seria um arquivo

Cada linha de uma tabela associada a um dispositivo e cada coluna a uma funo, sendo as mais comuns: open, close, read, write, ioctl. Cada elemento da tabela possui um ponteiro para a funo que corresponde a um certo dispositivo ou, caso a funo no exista, ser nulo, como na memria que apresenta apenas read e write [6]. X. CONCLUSO

Levando em contas informaes apresentadas, podemos facilmente apontar o SO Linux como um sistema confivel, vantajoso e seguro, dentre outros pontos em que superior a outros, sempre simplificando aes e devido implementao inode evita a infestao do sistema por vrus e spywares. Porm o Linux no um sistema para usurios comuns, pois devido sua simplicidade em diversos pontos, torna muito fcil para que usurios leigos acabem corrompendo o sistema. Fora os problemas que poderiam ser causados por usurios comuns, por falta de conhecimento, o Linux a melhor opo para a criao de servidores, onde a segurana e estabilidade do sistema so as maiores prioridades na utilizao de servidores de rede e bancos de dados.

XI.
[1]

REFERNCIAS

CAMPOS, Augusto. O que Linux. BR-Linux. Disponvel em http://br-linux.org/faq-linux. Acessado em 01/07/2012. MENDES, Jeferson Lopes de Oliveira. Tpicos citados em resposta em frum. Disponvel em http://bitly.com/PQ7B2k. Acessado em 01/07/2012. MEDEIROS, Willian; DE ASSIS, Elinto; DA BOIT, Lucas; SNEGO Arildo. Kernel do Linux. Disponvel em bitly.com/QgTSl4. Acessado em 01/07/2012. TIM JONES, M. Anatomia do Kernel Linux: Histrico e Decomposio Arquitetural. Disponvel em http://ibm.co/RAktbs. Acessado em 02/07/2012. DA SILVA, Silas Antnio Cereda. Estudo sobre os tipos de gerenciamento do SO Linux. Disponvel em bitly.com/XcGbpn. Acessado em 02/11/2012. GONALVES, Andr Ricardo; LUVIZOTTO, Daniel Csar Romano; NASCIMENTO, Heber A. A.; DOS SANTOS, Luiz Gustavo Andrade; MARTINS, Luiz Gustavo Castilho. Sistemas Linux: Gerenciamento de Memria, Sistema de Arquivos, Entrada e Sada e Estrutura de Redes. Disponvel em http://bit.ly/RDihhU. Acessado em 02/11/2012.

[2]

[3]

[4]

[5]

[6]

Anda mungkin juga menyukai