Escolar Documentos
Profissional Documentos
Cultura Documentos
Trabalho Final
Trabalho Final
Linux
O Linux é o termo geralmente usado para designar qualquer sistema operativo que
utilize o núcleo Linux. Ele é um dos exemplos mais proeminentes de software livre.
O Linux é distribuído sob a licença GNU General Public License versão 2 (GPLv2),
mais licenças proprietárias para alguns borrões binários (binary blobs) controversos, e é
desenvolvido por colaboradores ao redor do mundo. O desenvolvimento diário ocorre a
partir da Linux kernel mailing list.
O Linux foi inicialmente concebido e criado pelo estudante do Departamento de Ciência
da Computação da Universidade de Helsinki naFinlândia, Linus Torvalds com a ajuda
de vários programadores voluntários por meio da Usenet em 1991. O Linux acumulou
rapidamente desenvolvedores e usuários que adoptavam código de outros projetos de
software Livre. O Linux têm recebido contribuições de milhares de programadores, e
muitas distribuições GNU/Linux foram lançadas baseados nele.
Arquitectura
O Linux é um núcleo monolítico. Controladores de dispositivos e extensões de núcleo
são executadas no espaço de núcleo (anel 0 em muitas arquitecturas de CPU), com
acesso completo ao hardware, embora algumas excepções sejam executadas no espaço
de usuário. O sistema gráfico que a maioria das pessoas utiliza com o Linux não roda no
núcleo, em contraste com o encontrado no Microsoft Windows.
Kernel Oops
Veja para várias dicas sobre as configurações logger que podem afectar a capacidade de
recolher mensagens oops. A documentação do kernel Linux oficial sobre mensagens
oops está na documentação do arquivo / opa-tracing.txt das fontes de kernel. Muitas
vezes klogd é referenciado como sendo responsável por extrair as informações oops dos
buffers de kernel, no entanto, em alguns sistemas, por exemplo, recente das
distribuições Debian, rsyslogd é usado em vez de klogd. Assim, a ausência do processo
klogd não necessariamente explicar a ausência de oops informações nos arquivos de
log.
Uma vez que o sistema teve um oops, alguns recursos internos podem não estar em
serviço. Mesmo que o sistema parece funcionar correctamente, efeitos colaterais
indesejáveis podem ter resultado da tarefa ativa de ser morto. Um kernel oops, muitas
vezes leva a um kernel panic quando o sistema tenta utilizar os recursos que tenham
sido perdidos. Kerneloops também se refere a um software para colectar e enviar oopses
kernel para o site kerneloops. Kerneloops.org fornece estatísticas de oopses .
Multitarefa – Um único usuário pode requisitar que sejam efectuados vários comandos
ao mesmo tempo em seu terminal. É responsabilidade do sistema UNIX controlar estas
execuções paralelas.
Quando um usuário executa mais de um comando ao mesmo tempo, geralmente é
somente um que necessita a interacção com o usuário. Os demais comandos executados
são na sua maioria comandos que não exigem a atenção do usuário, sendo tarefas
demoradas. Quando isto ocorre, dizemos que os programas que o usuário está
executando sem a interacção ficam em Background. O programa que o usuário está
executando e interagindo fica em Foreground.
Linguagens de programação
O Linux é escrito na versão da linguagem de programação C suportada pelo GCC, que
introduziu inúmeras extensões e mudanças ao C padrão, aliado a várias secções de
código menores escritas na linguagem de montagem, na sintaxe e estilos do GCC e
"AT&T", da arquitectura alvo. Devido às extensões ao C que ele suporta, o GCC foi por
um longo período o único compilador capaz de compilar o Linux correctamente. Em
2004, a Intel disse ter modificado o Linux para que seu compilador C também pudesse
compilá-lo. Outro sucesso foi apresentado em 2009, com um 2.6,22 modificado.
Portabilidade
Enquanto o Linux não foi projectado inicialmente para ser portável, o Linux agora é o
núcleo de sistema operativo mais portado, executando em uma série de sistemas, desde
o computador de mão iPAQ ao servidor mainframe System z9 da IBM, capaz de
executar centenas e até milhares de instâncias do Linux simultâneas. O Linux executa
no sistema operativo principal no super computadores Blue Gene da IBM. Desde Junho
de 2009, o Linux é núcleo em mais de 88% dos sistemas na lista Top 500 de super
computadores. Além disso, o Linux foi portado para vários dispositivos móveis como o
TuxPhone e o iPod daApple.
Sistemas operativos como o Google Android, o MeeGo (fusão entre o Nokia Maemo e o
Intel Moblin), desenvolvidos para dispositivos móveis, utilizam versões modificadas do
Linux.
3. Processos
3.1. 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á activa.
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 UNINTERRUPTIBLE - Como o estado anterior, excepto pelo fato de que o
seu estado não será modificado quando receber um sinal. ´E importante para os
processos que necessitam executar determinada tarefa sem ser interrompido.
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.
3.2. Limite de Recursos
Por padrão o Linux limita os recursos que cada processo pode ter. Isto é, quanto de
recursos do sistema ele pode utilizar. Isso é uma protecção para que caso o usurário faça
algo errado, não prejudique a estabilidade do sistema. Esses limites são:
RLIMIT AS - O tamanho máximo que um processo pode ter em bytes. O kernel checa
esse valor quando um processo utiliza a chamada de sistema “malloc” ou similar.
RLIMIT CORE - Quando um processo é abortado, o kernel pode gerar um arquivo
core contendo as informações desse aborto. Este valor é utilizando para limitar o
tamanho desse arquivo. Caso o valor seja zero O, o arquivo não é criado.
RLIMIT CPU - O tempo máximo em segundos que um processo pode ser executado.
Caso esse limite seja ultrapassado o kernel envia um sinal SIGXCPU para tentar
pacificamente finalizar sua execução, se isso não acontecer ele envia um SIGKILL e
mata o processo.
RLIMIT DATA - O tamanho máximo do heap ou memória de dados em bytes. O
kernel checa esse valor antes de expandir o heap de um processo.
RLIMIT FSIZE - O tamanho máximo em bytes permitido para um arquivo. Se o
processo tentar aumentar o tamanho de um arquivo que ultrapasse esse valor, o kernel
envia um SIGXFSZ.
RLIMIT LOCKS - O número máximo de arquivos que um processo pode dar lock.
Toda fez que o usuário tenta dar lock em um arquivo o kernel checa esse valor.
RLIMIT MEMLOCK - O tamanho máximo em bytes de memória que não permite
swap. O kernel checa esse valor toda vez são utilizadas as chamadas de sistema “mlock”
ou “mlockall”.
RLIMIT NOFILE - O número máximo de descritores de arquivos abertos. Toda vez
que um descritor for aberto ou duplicado o kernel checa este valor.
RLIMIT NPROC - O número máximo de processos que um usurário pode ter.
RLIMIT RSS - A quantidade máxima de memória física que um processo pode ter.
RLIMIT STACK - O tamanho máximo em bytes da stack. O kernel checa este valor
antes de expandi-la.
4. Preemptivo
Os processos do Linux são preemptivos, isso significa que quando um processo entra no
estado TASK RUNNING o kernel vai verificar se existem alguma prioridade maior do
que o processo corrente. Caso exista, o processo corrente é interrompido e o que tem
prioridade maior começa a rodar.
Imagine a seguinte situação onde o Sr. Génio dos Teclados utiliza apenas dois
processos.
O editor de textos Emacs para escrever o seu programa e ao mesmo tempo o gcc para
compilar a versão mais recente do programa Pogobol Light. Por ser um programa
interactivo o editor de textos tem uma prioridade maior do que o compilador, mesmo
assim ele ainda é suspenso diversas vezes para que o compilador possa rodar também. O
Sr. Génio dos Teclados digita algumas palavras e imediatamente após cada tecla
digitada o kernel suspende a execução do compilador para poder processar o Emacs e
assim o texto digitado aparecer na tela, isso acontece tão rápido que torna-se
imperceptível, então o Emacs é suspenso novamente para que o gcc possa voltar a
executar. Neste caso, quando dizemos que um processo foi suspenso, significa que ele
continua com o estado TASK RUNNING, porém não mais utilizando o CPU.
5. Política de Escalonamento
O Linux utiliza memória virtual, que possui, pelo menos, 4 funções básicas:
Seu código divide-se em duas partes. Uma é dependente da arquitectura, onde são
definidos o endereçamento - virtual e físico, o tamanho de página e o tratamento das
tabelas de páginas. Na parte independente ficam o controle de alocação e liberação de
memória e o esquema de substituição páginas.
Os processadores x86 utilizam páginas de 4 KiB (padrão), 2 MiB (caso seja utilizado o
recurso de Extensão de Endereço de Página ((Page Address Extension PAE) – da Intel)
ou de 4 MiB. Nas arquitecturas RISC o tamanho padrão é de 8 KiB, mas não é o único.
O código do Linux é carregado no início do espaço do núcleo, sendo seguido pela área
fisicamente mapeável (mem_map, estrutura que indexa as páginas físicas, e as páginas
propriamente ditas). Na arquitectura x86, os últimos 128 MiB do espaço do núcleo são
reservados para alocação de memória não contígua e memória alta, limitando a memória
física endereçável pelo Linux, na compilação padrão, a 896 MiB.
A paginação para disco pode ocorrer sob demanda, quando algum processo solicitar
página e não houver alguma disponível. Neste caso, a página no final da
lista inactive_list é liberada. Entretanto, existe um processo chamado kswapd,
inicializado pelo núcleo, que verifica, periodicamente, o número de páginas livres. Caso
este número seja menor que pages_low, kswapd é acordado para liberar páginas. Se o
valor chegar a pages_min, kswapd entra num regime síncrono para agilizar a liberação.
Quando o valor de páginas livres atingir pages_high, kswapd vai dormir.
7. Gerência de arquivos
O VFS utiliza uma estrutura chamada super bloco para manter as informações referentes
aos diversos sistemas de arquivos montados (tipo, ponto de montagem, dispositivo de
bloco utilizado, arquivos abertos). Também utiliza nós-i, semelhantes aos nós-i do
EXT2, com as informações sobre os arquivos (permissões, blocos utilizados, dono,
etc.).
O Ext2 está deixando de ser o padrão, particularmente por sua deficiência quando
ocorre uma pane. Neste caso, o sistema operacional deve executar uma varredura
completa para verificar o estado do sistema (fsck). Outros sistemas foram criados para
sanar essa deficiência, utilizando um recurso chamado journaling, que é a utilização de
um registo (log) de alterações (journal). Os sistemas de arquivos desse tipo mais
importantes são: Ext3, Ext4, Reiserfs, XFS e JFS.