GNU/ Linux
O Linux é um sistema operacional criado em 1991 por Linus
Torvalds na universidade de Helsinki na Finlândia. É um sistema
Operacional de código aberto distribuído gratuitamente pela
Internet. Seu código fonte é liberado como Free Software
(software livre), sob licença GPL, o aviso de copyright do kernel
feito por Linus descreve detalhadamente isto e mesmo ele não
pode fechar o sistema para que seja usado apenas
comercialmente.
Isto quer dizer que você não precisa pagar nada para usar o Linux,
e não é crime fazer cópias para instalar em outros computadores,
inclusive a incentivo para que isso seja feito. Ser um sistema de
código aberto pode explicar a performance, estabilidade e
velocidade em que novos recursos são adicionados ao sistema. O
requisito mínimo para rodar o Linux depende do kernel que será
usado.
Para espaço em disco é requerido 500MB para uma instalação
básica usando modo texto com suporte a rede. O sistema segue o
padrão POSIX que é o mesmo usado por sistemas UNIX e suas
variantes.
Assim, aprendendo o Linux você não encontrará muita dificuldade
em operar um sistema do tipo UNIX, FreeBSD, HPUX, SunOS, etc.,
bastando apenas aprender alguns detalhes encontrados em cada
sistema.
O Linux é desenvolvido por milhares de pessoas espalhadas pelo
mundo, cada uma fazendo sua contribuição ou mantendo alguma
parte do kernel gratuitamente. Linus Torvalds ainda trabalha em
seu desenvolvimento e na coordenação dos grupos de trabalho
do kernel. O suporte ao sistema também se destaca como sendo o
mais eficiente e rápido do que qualquer programa comercial
disponível no mercado. Existem milhares de consultores e
empresas especializadas no suporte e treinamento espalhados ao
redor do mundo.

O kernel é o coração do Sistema Operacional Linux. Ele é o
responsável por garantir que todos os programas terão acesso aos
recursos de que necessitam (memória RAM, por exemplo)
simultaneamente, fazendo com que haja um compartilhamento
concorrente – mas sem oferecer riscos à integridade da máquina.
O conjunto de um kernel e demais programas responsáveis pela
comunicação com este é o que denominamos sistema operacional
Kernel monolítico ou mono-bloco é um kernel que implementa
uma interface de alto nível para possibilitar chamadas de sistema
específicas para gestão de processos, concorrência e gestão de
memória por parte de módulos dedicados que são executados
com privilégios especiais. Desenvolvido por diversos
programadores ao redor do mundo, não se pode ter um controle
fino do que é implementado no kernel, com isso não e comum se
descobrir falhas graves de segurança.









Convivem sem nenhum tipo de conflito com outros sistemas
operacionais .
Multitarefa real.
Multiusuário.
Suporte a nomes extensos de arquivos e diretórios (255
caracteres).
Conectividade com outros tipos de plataformas como Apple, Sun,
Macintosh, Sparc, Alpha, PowerPc, ARM, Unix,Windows, DOS, etc.
Utiliza permissões de acesso a arquivos, diretórios e programas
em execução na memória RAM.
Proteção entre processos executados na memória RAM.
Suporte a mais de 63 terminais virtuais (consoles).
Modularização - O Linux somente carrega para a memória o que
é usado durante o processamento, liberando totalmente a
memória assim que o programa/dispositivo é finalizado.
ARQUITETURA
LINUX


Micro-kernel: uma porção mínima de código responsável por
atividades básicas, sendo os demais recursos providos por
servidores localizados em espaço de usuário; facilita a
programação e aumenta a segurança, uma vez que ha menos
código dependente de hardware e em modo kernel.
Monolítico: todas as atividades básicas são executadas em modo
kernel, sendo que novas funcionalidades são providas como
módulos de kernel, ao invés de servidores em espaço de usuário;
busca maior eficiência ao evitar trocas de contexto.

Sistema operacional composto de dois níveis.
Em uma visão mais rápida, o Linux pode ser dividido em
alguns subsistemas principais:
PROCESSAMENTO
LINUX


Na fase de inicialização do Linux a função “start_kernel” é
responsável por criar um thread, este é o processo de número
zero, o primeiro e o ascendente de todos os outros processos.
Depois de inicializar toda a estrutura de dados para este processo,
esta mesma função é responsável por chamar a função “init” que
por sua vez utiliza a chamada de sistema “execve” para rodar o
executável init, que será o processo número 1, mais conhecido
como init.
Estados :
Uma das coisas que o escalonador precisa ter ciência é em qual
estado está cada processo, na estrutura que armazena os dados de
cada processo temos um array de possíveis estados onde apenas
uma das opções abaixo estará ativa.




TASK_RUNNING
Em execução ou aguardando para ser executado.
TASK_INTERRUPTIBLE
O processo está suspenso até que determinada condição se torne
verdadeira.
TASK_STOPPED
Execução do processo foi parada.
TASK_ZOMBIE
O processo está terminado, mas o processo pai ainda não
executou uma chamada de sistema para retornar informações
sobre o processo morto – “wait”, as informações não são
descartadas pois ainda podem ser utilizadas.
LIMITE (recurso de processo)
Por padrão o Linux limita os recursos que cada processo pode ter.
Isto é, quanto de recursos do sistema ele pode utilizar. Isso é uma
proteção para que caso o usuário faça algo errado, não prejudique
a estabilidade do sistema.
VAMOS ANALISAR ALGUNS DESSES LIMITES


RLIMIT_AS
O tamanho máximo que um processo pode ter em bytes
RLIMIT_CORE
Quando um processo é abortado, o kernel pode gerar um
arquivo core contendo as informações desse aborto.






RLIMIT_CPU
O tempo máximo em segundos que um processo pode ser executado.
RLIMIT_DATA
O tamanho máximo do heap ou memória de dados em bytes.
RLIMIT_FSIZE
O tamanho máximo em bytes permitido para um arquivo.
RLIMIT_NOFILE
O número máximo de descritores de arquivos abertos.
RLIMIT_NPROC
O número máximo de processos que um usuário pode ter.
RLIMIT_RSS
A quantidade máxima de memória física que um processo pode ter.
Os processos do Linux são preemptivos, isso significa que quando
um processo entra no estado TASK_RUNNING o kernel vai checar
se existe alguma prioridade maior do que o processo corrente.
Caso exista, o processo corrente é interrompido e o que tem
prioridade maior começa a rodar.


A prioridade de um processo no Linux está em constante
alteração, o escalonador se mantém informado sobre o que os
processos estão fazendo e assim torna-se possível ajustar a
prioridade. Dessa maneira os processos que ficaram proibidos de
utilizar o CPU por um longo intervalo de tempo, tem sua
prioridade incrementada automaticamente, contrariamente os
processos que passaram um longo período dentro do CPU são
penalizados tendo sua prioridade decrementada.
Quando tocamos no assunto escalonamento é importante notar
que os processos são classificados como da Forma E/S e Forma
CPU. O primeiro faz uso extenso dos recursos de entrada e saída,
isso significa que grande parte do seu tempo é utilizado no
aguardo da conclusão das operações de Entrada e Saída, já o
segundo são processos que necessitam de um longo tempo
dentro do CPU.


Veremos 3 classes de processos de Classificação Alternativa:
Processos Interativos Os processos que estão em constante interação com o usuário,
sendo assim eles perdem grande parte do tempo esperando uma
atividade do usuário, como um clique do mouse ou o aperto de
uma tecla. Quando qualquer dessas ações for recebida o sistema
precisa responder de forma ágil suspendendo qualquer processo
que estiver rodando e colocar o processo interativo no CPU para
processar a requisição solicitada pelo usuário, caso contrário ele
pode pensar que o sistema não está respondendo. Um bom tempo
de resposta é em torno de 50 e 150 ms.

Processos em Lote Não necessitam de nenhuma interação do usuário e por isso
muitas vezes rodam em background. Como são processos de
baixa prioridade, são freqüentemente penalizados pelo
escalonador. Programas de processamento em lote comuns são
editores de texto, compiladores e programas gráficos.

Processos em Tempo Real Esses processos nunca devem ser bloqueados por processos de
baixa prioridade, precisam de um tempo de resposta super
rápido e com uma variação bastante baixa. Alguns aplicativos que
fazem uso do tempo real são som, vídeo, controladores de robôs e
equipamentos que envolvem a segurança humana.
O algoritmo de escalonamento do Linux funciona dividindo o
tempo do CPU em fatias.


Prioridade Estática
Definido pelo usuário para processos que necessitam de tempo
real, os valores variam de 1 até 99 que nunca são modificados
pelo escalonador.
Prioridade Dinâmica
Esta é aplicada para os processos convencionais. A prioridade
dinâmica dos processos convencionais é sempre inferior aos
processos com prioridade estática. Se existir um processo com
prioridade estática no estado TASK_RUNNING nenhum processo
dinâmico irá rodar até que ele pare de executar.
MEMÓRIA


Cada processo no Linux possui prioridades com relação à
alocação de memória. O Linux também possui uma característica
de alocar determinados recursos dos processos que foram
executados para garantir que estes retornem de maneira mais
eficiente quando estes forem requisitados novamente. Caso a
memória física (memória RAM) esteja totalmente carregada, é
iniciado um processo de operação com a memória virtual, a
memória SWAP
À medida que mais processos vão sendo executados, e como
estes tem preferência de alocação na memória física, o Linux
começa a jogar estes recursos alocados para a memória SWAP.


Somente os dados na memória RAM são processados pelo
processador, por ser mais rápida. Desta forma quando você está
executando um programa e a memória RAM começa a encher, o
GNU/Linux move automaticamente os dados que não estão sendo
usados para a partição Swap e libera a memória RAM para a
continuar carregando os dados necessários. Quando os dados
movidos para a partição Swap são solicitados, o GNU/Linux move
os dados da partição Swap para a Memória. Por este motivo a
partição Swap também é chamada de Troca ou memória virtual.
Esse sistema de paginação é dividido em duas seções: o
algoritmo de políticas, o qual é responsável por decidir qual
página deverá ser transferida para o disco e quando esta página
deve ser transferida; e o sistema de paginação, o qual transfere os
dados novamente para a memória física quando estes se tornam
necessários novamente

O Linux decide qual das páginas deve sofrer swapping através de
um algoritmo chamado LFU, ou Least Frequently Used. Nesse
algoritmo, as páginas com menor frequência de utilização são
selecionadas para a realização da operação de swapping, com
intuito de realizar o menor número possível de trocas de páginas.
ARQUIVOS
•
•
•
É criado durante a “formatação” da partição de disco (quando se
usa o comando mkfs.ext3). Após a formatação toda a estrutura
para leitura, gravação, permissões de arquivos e diretórios pelo
sistema operacional estará pronta para ser usada. Normalmente
este passo é feito durante a instalação de sua distribuição
GNU/Linux.
Cada sistema de arquivos tem uma característica em particular
mas seu propósito é o mesmo: Oferecer ao sistema operacional a
estrutura necessária para ler/gravar os arquivos/diretórios.
Entre os sistemas de arquivos existentes posso citar:
EXT2;
EXT3;
EXT4.


Ext2 - Usado em partições Linux Nativas para o armazenamento de
arquivos. É identificado pelo código 83. Seu tamanho deve ser o
suficiente para acomodar todo os arquivos e programas que
deseja instalar no GNU/Linux (você encontra isto no manual de
sua distribuição). Você deverá usar preferencialmente o ext3 para
a instalação de seu sistema operacional.
Ext3 - Este sistema de arquivos possui melhorias em relação ao
ext2, como destaque o recurso de jornaling e suporte a arquivos
de até 16Gb. Ele também é identificado pelo tipo 83 e totalmente
compatível com o ext2 em estrutura. O journal mantém um log de
todas as operações no sistema de arquivos, caso aconteça uma
queda de energia elétrica (ou qualquer outra anormalidade que
interrompa o funcionamento do sistema), o fsck verifica o sistema
de arquivos no ponto em que estava quando houve a interrupção,
evitando a demora para checar todo um sistema de arquivos.



Reiserfs - Possui os mesmos recursos do ext3, mas seu design é
bastante diferente. Bastante recomendável para sistemas que
possuem muitos arquivos pequenos (servidor web, etc). Possui o
tempo de recuperação em caso de queda de energia menor que o
ext3.
Swap - Usado em partições Linux Swap para oferecer memória
virtual ao sistema. Note que é altamente recomendado o uso de
uma partição Swap no sistema.
proc - Sistema de arquivos do kernel.



FAT12 - Usado em disquetes no DOS. Não possui suporte a
permissões, journaling.
FAT16 - Usado no DOS e oferece suporte até discos de 2GB. Não
possui suporte a permissões e journaling.
FAT32 - Também usado no DOS e oferece suporte a discos de até
2 Terabytes. Não possui suporte a permissões e journaling. NTFS Formato nativo de discos de sistemas operacionais Windows XP e
superiores. Possui suporte a permissões de acesso e compactação
nativa.



A partição EXT2 é o tipo usado para criar o sistema de arquivos
Linux Native usado para armazenar o sistema de arquivos EXT2
(após a formatação) e permitir o armazenamento de dados.
Este tipo de partição é normalmente identificado pelo código 83
nos programas de particionamento de disco. Note que também é
possível criar um sistema de arquivos EXT2 em um arquivo (ao
invés de uma partição) que poderá ser montado e acessado
normalmente pelo sistema de arquivos.
Logo que foi inventado, o GNU/Linux utilizava o sistema de
arquivos Minix (e consequentemente uma partição Minix) para o
armazenamento de arquivos. Com a evolução do desenvolvimento,
foi criado o padrão EXT (Extended Filesystem) e logo evoluiu
para o EXT2 (Second Extended Filesystem). O padrão mais usado
nos dias de hoje é o EXT3 devido ao Journaling.



O sistema de journaling grava qualquer operação que será feita
no disco em uma área especial chamada “journal”, assim se
acontecer algum problema durante alterações no disco, ele pode
voltar ao estado anterior do arquivo, ou finalizar a operação.
Desta forma, o journal acrescenta ao sistema de arquivos o
suporte a alta disponibilidade e maior tolerância a falhas.
Após uma falha de energia, por exemplo, o journal é analisado
durante a montagem do sistema de arquivos e todas as operações
que estavam sendo feitas no disco são verificadas. Dependendo
do estado da operação, elas podem ser desfeitas ou finalizadas. O
retorno do servidor é praticamente imediato (sem precisar a
enorme espera da execução do fsck em partições maiores que
10Gb), garantindo o rápido retorno dos serviços da máquina.
O sistema de arquivos ext3 faz parte da nova geração extended
file system do Linux, sendo o padrão atual e tem como seu maior
benefício o suporte a journaling e armazenamento eficiente de
arquivos com até 16Gb de tamanho.
O uso deste sistema de arquivos comparado ao ext2, na maioria
dos casos, melhora o desempenho do sistema de arquivos através
da gravação seqüencial dos dados na área de metadados e acesso
mhash a sua árvore de diretórios. Mas pode trazer impactos na
performance no caso de dispositivos de memória flash e quando
utiliza arquivos para armazenar o sistema de arquivos.
A estrutura da partição ext3 é semelhante a ext2, o journaling é
feito em um arquivo chamado .journal que fica oculto pelo código
ext3 na raiz da partição (desta forma ele não poderá ser apagado,
comprometendo o funcionamento do sistema).




Diretório /etc/alternatives
Este diretório contém links para diversos aplicativos padrões utilizados
pelo sistema. Dentre eles são encontrados links para o editor do sistema
e o xterm padrão usado pelo sistema.
Arquivo /etc/default/devpts
Este arquivo contém algumas configurações para os pseudo terminais em
/dev/pts.
Arquivo /etc/default/rcS
Contém variáveis padrões que alteram o comportamento de inicialização
dos scripts em /etc/rcS.d
Arquivo /etc/console-tools/config
Este arquivo contém configurações padrões do pacote console-tools para
as fontes de tela e mapas de teclado usados pelo sistema. A fonte de tela
é especificada neste arquivo (as fontes disponíveis no sistema estão
localizadas em /usr/share/consolefonts



Journal: os metadados e os dados (conteúdo) dos arquivos são
escritos no journal antes de serem de fato escritos no sistema de
arquivos principal. Isso aumenta a confiabilidade do sistema com uma
perda de desempenho, devido a necessidade de todos os dados
serem escritos no disco duas vezes.
Writeback: os metadados são escritos no journal mas não o conteúdo
dos arquivos. Essa opção permite um melhor desempenho em
relação ao modo journal, porém introduz o risco de escrita fora de
ordem onde, por exemplo, arquivos que são apensados durante um
crash podem ter adicionados a eles trechos de lixo na próxima
montagem
Ordered: é como o writeback, mas força que a escrita do conteúdo
dos arquivos seja feita após a marcação de seus metadados como
escritos no journal. Esse é considerado um meio-termo aceitável
entre confiabilidade e performance, sendo, portanto, o nível padrão.


Ext4 é a evolução do sistema de arquivos mais usados no Linux, o
Ext3. De muitas maneiras, Ext4 é uma profunda melhoria sobre o
Ext3, sendo o Ext3, com muitas melhorias frente o Ext2. No Ext3 foi
principalmente a adição de Journaling sobre o Ext2, mas Ext4 teve
mudanças importantes na estrutura do sistema de arquivos
destinado ao armazenamento de dados. O resultado é um sistema
de arquivos com um design aperfeiçoado, melhor performance,
confiável e com muitos recursos.
Um sistema de arquivos Ext3 existente, pode ser migrado para
Ext4 com um procedimento fácil, onde consiste a execução de um
casal de comandos em modo “read-only”. Por meio disto você
melhora a performance, limites de armazenamentos e recursos do
sistema de arquivos corrente, com ou sem a “reformatação” e/ou
reinstalação do SO e softwares “environment”.


Processos unix habitualmente possuem três dispositivos de I/O
padrões, a "saída padrão", a "entrada padrão" e a "saída de erros".
O sistema unix permite que esses dispositivos sejam definidos no
momento da execução, podendo ser o console, um "pipe", a
impressora, um circuito virtual de rede conectando duas
máquinas, uma linha física serial ou outras coisas para as quais
haja suporte no sistema.
Usuários de msdos talvez estejam habituados a fazer coisas como:
C> DIR >PRN:
para imprimir a saída de um comando. A sintaxe dos shells unix é
a mesma (na verdade o msdos herdou-a do unix):
hal:~$ ls -l >/dev/lp1
Shells do estilo "bourne" como o bash permitem
redirecionamento da saída de erros através da seguinte sintaxe:
hal:~$ rm /bin/ls 2>/tmp/error
A entrada pode ser redirecionada de forma semelhante:
hal:~$ wc </tmp/error
SEGURANÇA



O kernel Linux por ser descendente da filosofia Unix pode ser
considerado seguro. Porém como o projeto do kernel é
descentralizado e seu foco é obter um grande suporte a hardware
novos, não é incomum se descobrir falhas do tipo buffer overflow,
negação de serviço (DOS) e alguns que levam até a privilégios de
super usuário (root).
Quando uma falha desses é encontrada rapidamente é liberado
um patch para correção.
O kernel do linux possui o firewall a nível de pacotes Iptables. Ele
é bastante sofisticado e robusto. Possui filtro a nível de pacotes,
marcação de pacotes, nat, port redirection, ip redirection, source
nat, destination nat entre muitas outras features.
BENEFÍCIOS

Custo baixo e gratuito
Por serem baseadas em software livre, as distribuições Linux
podem ser encontradas gratuitamente. Algumas distribuições,
como o Ubuntu, disponibilizam em seus sites oficiais links de
download das imagens dos CDs de instalação ou até mesmo
disponibilizam um formulário onde você pode solicitar a entrega
de mídias de instalação através do correio.
Versões mais “elaboradas”, como aquelas dedicadas
exclusivamente a servidores, podem apresentar um pequeno
custo por causa da licença, mas esse custo ainda é muito menor
do que licenças de outros sistemas operacionais, como os
sistemas da família Windows.


SEGURANÇA E ESTABILIDADE:
Os sistemas Linux são mais estáveis, pois conseguem gerenciar de
maneira mais eficiente os recursos de hardware. Isso permite que até
máquinas mais antigas possam rodar versões mais novas das
distribuições. Além disso, são mais seguros, pois o número de pragas
virtuais para sistemas Linux ainda é muito reduzido, além de que
códigos que modifiquem qualquer parte do sistema sempre são
interceptados com a autenticação obrigatória o superusuário (root).
Esse recurso inclusive começou a ser incorporado de maneira similar
a partir do Windows Vista na família Windows, através do Controle de
Conta de Usuário.
COMUNIDADE EXTENSA:
A comunidade Linux é muito ativa. Manifesta-se através de fóruns,
listas de discussão e outros meios através da internet, meios de fácil
acesso. Isso garante suporte quando necessário, inclusive em
português. Você pode obter auxílio para problemas bem básicos
como para problemas mais complexos.
LIMITAÇÕES


INCOMPATIBILIDADE (equipamentos):
Alguns fabricantes de equipamentos não escrevem drivers para o
sistema Linux para seus equipamentos, como é o caso de algumas
impressoras da HP. Existem alternativas para estes casos, porém
geralmente são tortuosas de serem implementadas e podem
desencorajar os usuários a utilizarem as distribuições Linux.
INCOMPATIBILIDADE (formatos de arquivos):
Alguns formatos de arquivos, principalmente os proprietários da
Microsoft, não são executados com toda a fidelidade, como é o
caso do formato de vídeo WMV. Existem plug-ins para executá-los,
mas estes não acabam oferecendo a mesma qualidade que se o
arquivo estivesse sendo executado no Windows Media Player.

DIFICULDADE NO USO (usuário):
Mesmo com o MODO esforço de algumas distribuições como o
Ubuntu, o Linux não consegue oferecer a mesma facilidade de uso
que o Windows. Isso talvez se deva mais a um fator cultural, mas o
fato é que se você entregar um computador com Linux pra alguém
que trabalha com Windows, este certamente sentirá um pouco de
dificuldade, o que não acontece geralmente ao contrário.

Concluímos que o sistema operacional Linux tem evoluído muito
em suas funções, com muitas melhorias. Por ser um software livre,
gratuito, não quer dizer que o sistema é de má qualidade como
muitas pessoas pensam. Com diversas distribuições, o Linux é
usado em varias empresas como: Banco do Brasil, Petrobrás,
Casas Bahia, Lojas Colombo, Lojas Renner, Governo Federal, etc.
O sistema roda tranquilamente com outros sistemas, isso quer
dizer que a pessoa poderá usar o Linux, sem trocar o seu sistema
atual que sempre usa (Dual Boot).
www.ime.usp.br/~ueda/ldoc/es.html,
guiaFoca + iniciante + intermediario, pdf
Gonçalves, A., Luvizotto, D., Nascimento, H., Santos, L., Martins,
L.Sistemas
Linux.
Universidade
Estadual
de
Londrina,Londrina, 2007.
Júnior, J., Alvarez, D. Gerenciamento de memória no Linux.
Instituto Tecnológico da Aeronáutica (ITA). São José dos
Campos.
<ces33.wikidot.com/gerenciamento-de-memoria:jose-gerardo-ediego-alvarez.>
Download

processamento