Trabalho Sobre Linux
Ensaios: Trabalho Sobre Linux. Pesquise 862.000+ trabalhos acadêmicosPor: adrianofrancy • 19/10/2014 • 2.565 Palavras (11 Páginas) • 472 Visualizações
Introdução
Linux é um sistema operacional tipo Unix que foi desenvolvido por Linus Torvalds inspirado no sistema Minix, que é uma versão simplificada do Unix, e que por fim veio do sistema Multics. O Linux é um exemplo de desenvolvimento com código aberto e de software livre. O seu código fonte está disponível sob licença GPL para qualquer pessoa utilizar, estudar, modificar e distribuir livremente.
Um sistema Linux é capaz de funcionar em um grande número de arquiteturas computacionais. É utilizado em supercomputadores, computadores pessoais e até em aparelhos celulares.
Nesse artigo discutiremos sobre o Gerenciamento de Memória, Gerenciamento de Processos, Sistema de Arquivos e também Gerenciamento de Entrada/Saída do Sistema Operacional Linux com finalidade de obter um aprendizado sobre a estrutura deste sistema operacional.
Arquiteturas de kernel
Micro-kernel: Uma porção mínima de códigos responsável por atividades básicas, sendo os demais recursos providos por servidores localizados em espaços de usuários: facilita a programação e aumenta a segurança, uma vez que há menos códigos 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ços de usuários, busca maior eficiência ao evitar trocas de contexto.
Gerência de processos
Nos sistemas operacionais, um processo é a forma de representar um programa em execução. É o processo que utiliza os recursos do computador - processador, memória, etc - para a realização das tarefas para as quais a máquina é destinada. (ALECRIM, 2005) O modelo de gerenciamento de processos do Linux teve uma evolução notável.
Desde o seu início, auxiliado pelo modelo Bazaar1 de desenvolvimento, esses algoritmos foram enumeras vezes criticados e melhorados por eruditos ao redor do mundo, isso faz com que o Linux tenha hoje um dos melhores conjuntos de algoritmos para gerenciamento de processos já visto.
Um processo pode ser descrito como parte de um programa que está aparentemente rodando. Este aparente existe somente pelo fato de que determinado processo pode entrar e sair diversas vezes do processador em um único segundo, e em um determinado momento ele pode não estar no processador e mesmo assim aparentemente estar rodando.
Como qualquer sistema de compartilhamento de tempo o Linux consegue dar a impressão de execução simultânea dos processos, separando um espaço bastante curto de tempo para cada um deles. Para ter sucesso nesta tarefa ele segue uma serie de regras que não desperdiça tempo de hardware com operações desnecessárias e consegue escolher qual processo deve ser executado naquele exato momento.
O que decide essa escolha no kernel é o escalonador de processos, que em grande parte é responsável pela produtividade e eficiência do sistema. Mais do que um simples mecanismo de divisão de tempo, ele é responsável por uma política de tratamento dos processos que permite os melhores resultados possíveis.
A função do "start kernel" tem a responsabilidade de criar um thread, este é o processo de número zero, o primeiro e o ascendente de todos os outros processos.
Esta função também é 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. Podemos chamar de Deus e pai de todos os outros processos, é o segundo processo a ser criado e um dos últimos a morrer. Seus filhos, vivem como nós seres humanos, eles nascem, se desenvolvem, tem uma vida mais ou menos produtiva, podem ter inúmeros.
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 UNINTERRUPTIBLE - Como o estado anterior, exceto pelo fato de que o seu estado não será modificado quando receber um sinal. É 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.
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.
Os processos do Linux são preceptivos, 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.
O algoritmo de escalonamento do Linux funciona dividindo o tempo do CPU em fatias. Em uma única fatia cada processo tem um tempo especifico de duração que é computada assim que essa fatia inicia. Geralmente processos diferentes tem tempos de execução diferentes. Quando o tempo de execução de um processo termina ele é retirado do CPU e outro processo que está rodando é colocado no seu lugar.
Uma fatia termina quando todos os processos esgotaram seu tempo reservado de execução, assim o escalonador é responsável por calcular o tempo de execução para todos os processos e uma nova fatia inicia. Para o Linux escolher qual processo deve rodar ele precisar escolher qual tem a prioridade maior, existem dois tipos de prioridade:
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
...