You are on page 1of 50

Linux

Alunos:

Edilberto Pereira

Gabriel Xavier

Componentes do sistema
Programas de
Gerenciamento do
Sistema

Processos de
Usuário

Programas utilitários
de Usuário

Compiladores

Bibliotecas compartilhadas do Sistema
Kernel do Linux
Módulos carregáveis do kernel

Módulos do Kernel

Existem três componentes de suporte de Linux:

Gerenciamento de módulo: permite que os
módulos sejam carregados na memória e
conversem com o restante do kernel.

O registro de drivers: permite que os módulos
informem ao restante do kernel que um novo
driver está disponível.

Um mecanismo de resolução de conflitos:
proteção de recursos do driver por uso
acidental de outros drivers reservando recursos
de hardware.

Licenciamento do Linux

O Linux é licenciado sob a GNU General
Public License (GPL). No entanto, ele possui
algumas intervenções que implicam que nenhum
criador pode tornar-se proprietário do produto
customizado.
Se o desenvolvedor criar um software qualquer
com algum componente protegido pela GPL,
então o código-fonte deve ser disponível. Ou
seja, você pode alterar qualquer parte do Linux,
modificá-lo e até comercializá-lo, mas você não
pode fechá-lo (não permitir que outros usuários o
modifiquem) e vendê-lo.

Processos O que são? Quais são seus estados? Como identifica-los? Eles se comunicam? Hoje no Globo Repórter .

.Gerência de Processos  O que é um processo? É um programa em execução com um conjunto de informações que permite ao SO gerenciar a execução destes processos no sistema.

ou seja. Parado: o processo está "congelado". ainda existe. Zumbi: o processo é considerado "morto". Dormente: o processo precisa aguardar alguma coisa para ser executado. .Estados de Processo        Executável: o processo pode ser executado imediatamente. mas. por alguma razão. Só depois dessa "coisa" acontecer é que ele passa para o estado executável. não pode ser executado.

Ciclo de um Processo .

Credenciais – cada processo deve ter um ID de usuário associado.Identidade do Processo       Identidade do processo ID do processo – cada processo tem um identificador exclusivo. O PID. . Personalidade – cada processo tem um identificador de personalidade associado que pode modificar levemente a semântica de certas chamadas do sistema.

o que não inclui sockets ou RPC (são para comunicação entre máquinas distintas).  . também conhecido com IPC(Interprocess Communication).Comunicação entre Processos O Linux possui diversas formas de realizar comunicação entre processos. Estas formas de comunicação se referem a processos em execução na mesma máquina.

Se não houver instruções pré-programadas. o próprio Linux pode executar a ação de acordo com suas rotinas. tal ação é colocada em prática.Sinais  Os sinais são meios usados para que os processos possam se comunicar e para que o sistema possa interferir em seu funcionamento. Por exemplo. Quando um processo recebe um determinado sinal e conta com instruções sobre o que fazer com ele. isso será feito por meio de um sinal. . se o usuário executar o comando kill para interromper um processo.

e no espaço de endereçamento do processo de chamada. ao invés disso. Essa é de longe a forma mais rápida de IPC. a informação é mapeada diretamente da de um segmento de memória. gravado e lido a partir de qualquer número de processo. e subsequentemente. pois não tem intermediação. A principal desvantagem desse método é que a .Memória Compartilhada Memória compartilhada é o mapeamento de uma área (segmento) da memória que será mapeada e compartilhada com mais de um processo. Um segmento pode ser criado por um processo.

.Pipes   O mecanismo de pipe do Unix permite que um processo filho herde um canal de comunicação de seu processo-pai. No Linux. cada pipe tem um par de filas de espera para sincronizar o leitor e gravador.

Semáforos  Semáforos podem ser descritos como contadores usados para controlar recursos compartilhados por vários processos. Eles são frequentemente usados como uma forma de bloqueio para evitar processos de acessar um recurso específico enquanto outro processo acessa esse recurso. .

Threads No Linux não há conceito de threads. CLONE_FS: pai e filho compartilham informações do sistema de arquivos. CLONE_FILES: pai e filho compartilham arquivos . CLONE_VM: pai e filho compartilham o espaço de endereçamento. é uma forma de compartilhar recursos entre processos. Nas chamadas de sistema clone() são passadas flags correspondentes aos recursos específicos a sempre compartilhados: clone(CLONE_VM |CLONE_FS| CLONE_SIGHAND).

pois realiza um elevado número de operações de E/S. Ao fazer isso o escalonador é responsável pelo melhor desempenho do sistema. utilizando o processador. .   Processo CPU-bound: Passa a maior parte do tempo no estado de execução.Escalonador de Processos O escalonador é o mecanismo que define qual processo será executado. ou no estado pronto. Existem duas classificações para processos:  Processo I/O-bound: Passa a maior parte do tempo no estado de espera.

Politicas de Escalonamento  FIFO (First In First Out):  Apenas com processos em tempo real.   OTHER (Outros):  Processos estáticos. .   RR (Round-Robin):  Apenas em processos de tempo real e em sistemas de tempo compartilhado.

Em muitos casos. os arquivos são divididos pela função e não pela probabilidade com que eles mudam. Várias convenções de nomes incompatíveis são utilizadas ao mesmo tempo e diferentes tipos de arquivos estão espalhados aleatoriamente pelo espaço de nomes. dificultando a atualização do sistema operacional. É particularmente importante não bagunçar a estrutura padrão da árvore de arquivos sob o .API de Chamadas do Sistemas Os sistemas de arquivos na família UNIX nunca foram muito organizados. Há um local culturalmente correto para tudo.

terminate process. etc.Chamadas de Sistema Os Tipos de Chamadas de Sistema:  Controle de Processo . Exemplo: end.servem para dar suporte à manipulação de processos. create process. load. abort. . execute.

dão suporte à manipulação de arquivos. create file. read. Exemplo: open. read. write.  Manipulação de Dispositivos . release device. etc. delete file.Chamadas de Sistema  Manipulação de Arquivos . Exemplo: request device. . reposition. close. write.gerenciam o uso de dispositivos pelos processos.

 Comunicações . alarm.manipulam informações entre os processos. o sistema operacional e o usuário.tratam das comunicações entre processos Exemplo: . sleep. Exemplo: getpid.Chamadas de Sistema  Manutenção de Informação .

ZONE_NORMAL – páginas normais regularmente mapeadas.Gerência de Memória      O Linux faz distinção entre três tipos de zonas de memória: ZONE_DMA – páginas que podem ser utilizadas para operações de DMA. ZONE_HIGHMEM – páginas com endereços de memória altos. que não são permanentemente mapeadas. .

Gerência de Memória  O alocador de páginas é o gerenciador principal da memória física ele utiliza um algoritmo de agrupamento de parceiros ou mais conhecido como sistema de pares para gerenciar páginas físicas disponíveis. . na qual as unidades adjacentes de memória alocável são reunidas em duas a duas.

Sistema de Pares .

 No Linux. uma placa pode estar em um dos três . Um cache é formado por uma ou mais placas e existe um para cada estrutura de dados. Uma placa é utilizada para alocar a memória para estruturas de dados do kernel e é composta por uma ou mais páginas fisicamente contínuas. um determinado número de objetos é alocado a ele e o algoritmo de alocação de placas utiliza caches para armazenar esses objetos do kernel. Quando um cache é criado.Gerência de Memória Outra forma de alocar memória no Linux é a alocação de placas.

Alocador de Placas .

O principal deles é denominado alocador de paginas.  . que opera utilizando o conhecido algoritmo companheiro (buddy algorithm).Algoritmo Companheiro  O Linux dá suporte a diversos mecanismos para alocação de memória.

Algoritmo Companheiro .

Paginação A ideia básica por trás da paginação no Linux é simples: um processo não precisa estar inteiro para ser executado. Como todos os daemons o de paginação é periodicamente executado. pelo novo processo denominado daemon de páginação. Uma vez acordado ele busca algum trabalho a ser feito. É necessário apenas que a estrutura do usuário e as tabelas estejam lá. o processo é considerado ‘na memória’ e pode ser escalonado para execução. Uma parte da paginação é implementada pelo núcleo e a outra. Se isso acontecer. Se ele vir que o número de .

mantendo o espaço de endereços visível para cada processo. A implementação é feita de duas formas: com paginação sob demanda ou com segmentação sob demanda. As páginas de . o espaço de endereçamento do usuário.Memória Virtual A técnica de memória virtual foi criada para permitir a execução de vários processos que não estejam necessariamente armazenados por inteiro na memória principal. aumentando a capacidade de multiprocessamento de um sistema de computação. O kernel do Linux gerencia sua própria memória e. também.

Ela descreve as instruções que o sistema de memória virtual recebeu em relação ao formato do espaço de endereços. Esse espaço de endereços é composto de um conjunto de regiões não sobrepostas. A primeira. Cada região é descrita por uma . do espaço de endereços de um processo como um conjunto de regiões separadas. é uma visão lógica.Memória Virtual O gerenciador de memória virtual possui duas visões separadas do espaço de endereços de um processo: como um conjunto de regiões separadas e como um conjunto de páginas.

Sistema de arquivos     Ext2 Ext3 Ext4 .

O tamanho máximo de um único arquivo varia entre 16GB e 2TB (dependendo do tamanho dos blocos). 2. 3. Nomes de arquivos não podem exceder 255 caracteres. O tamanho máximo de uma partição pode ser entre 2 e 32TB. .ext2      Características : 1.

ext3   Oferece 3 níveis de journaling (journal. As desvantagens do ext3fs são as seguintes:      1. Limite de 31. Ausência do checksum no journaling. 3. Não há suporte para recuperação de arquivos deletados. 2. writeback e ordered). onde o journal é atualizado no final de cada operação.998 subdiretórios por diretórios. O modo default é o modo ordered. .

O ext4fs é totalmente compatível com as versões anteriores.  5.ext4 Características :  1.000 subdiretórios que um diretório pode conter.  4. Journal checksumming. ext3fs e ext2fs. Suporta até 16TB por arquivo.  2. Permite a pré-alocação de espaço no disco para um arquivo.  .  3. Limite de 64.

É particularmente importante não bagunçar a estrutura padrão da árvore de arquivos sob o . Várias convenções de nomes incompatíveis são utilizadas ao mesmo tempo e diferentes tipos de arquivos estão espalhados aleatoriamente pelo espaço de nomes. dificultando a atualização do sistema operacional. os arquivos são divididos pela função e não pela probabilidade com que eles mudam.Árvore de Arquivos Os sistemas de arquivos na família UNIX nunca foram muito organizados. Há um local culturalmente correto para tudo. Em muitos casos.

Sistema de Arquivos O Linux define sete tipos de arquivos. ela ainda tem de ser feita de maneira a se encaixar como um dos sete tipos a seguir: . Mesmo quando os desenvolvedores adicionam alguma coisa nova.

arquivos de dados.Arquivos Regulares Os arquivos de texto. programas executáveis e bibliotecas compartilhadas são armazenados como arquivos regulares. . Tanto o acesso sequencial como o aleatório são permitidos.

Diretórios Um diretório contém referências com nomes para outros arquivos. Você pode excluir diretórios não vazios com rm –r. Você pode criar diretórios com mkdir e excluí-los com rmdir se estiverem vazios. .

O módulo para um determinado dispositivo. chamado de driver de dispositivo. Quando o kernel é configurado. . cuida dos confusos detalhes do gerenciamento de dispositivos.Arquivos de Dispositivo de Blocos Os arquivos de dispositivo permitem que os programas se comuniquem com o hardware e periféricos do sistema. os módulos que sabem como se comunicar com cada um dos dispositivos do sistema são associados. Os drivers de dispositivo apresentam uma interface de comunicação padrão que se parece com um arquivo regular.

O Linux fornece vários tipos de sockets.Sockets de Domínio Local Sockets são conexões entre processos que permitem que comunicação hierárquica. Embora os arquivos de socket sejam visíveis para outros processos na forma de entradas de diretório eles não podem ser lidos ou gravados por processos não envolvidos na conexão. . a maioria dos quais envolve o uso de uma rede.

isto é. Eles também são conhecidos como “arquivos FIFO” (FIFO é a abreviatura para “first in. “o primeiro a entrar é o primeiro a sair”). first out”.Pipes Identificados  Os pipes identificados permitem a comunicação entre dois processos sendo executados no mesmo host. .

Como os links simbólicos podem conter caminhos arbitrários.Links Simbólicos Um link simbólico ou soft link aponta para um arquivo pelo nome. . eles podem referenciar arquivos em outros sistemas de arquivos ou arquivos inexistentes. A diferença entre links físicos e links simbólicos é que o link físico é uma referência direta enquanto um link simbólico é uma referência por nome. links simbólicos são distintos dos arquivos para os quais eles apontam.

Subsistema de E/S Ele é responsável pela execução das tarefas comuns aos dispositivos. . sendo que as funções especificas ficam como responsabilidade dos drivers. Os dispositivos trabalham com unidades de informação com diversos tamanhos(caracteres ou blocos) e o subsistema repassa essas informações sem ter acesso ás informações. O subsistema E/S oferece uma interação com as camadas superiores de forma igualitária.

 Dispositivos de rede.  Dispositivos de caracteres.Gerência de dispositivos O Linux divide todos os dispositivos em três classes:  Dispositivos de blocos. .

Dispositivos de Blocos Os dispositivos de blocos incluem todos os dispositivos que permitem o acesso aleatório a blocos de dados de tamanho fixo completamente independentes. mas o acesso direto a um dispositivos de blocos também é permitido de modo que os programas possam criar e reparar o sistema de arquivos que o sistema contém. As aplicações também podem acessar esses dispositivos de blocos diretamente se desejarem. Os dispositivos de blocos são tipicamente utilizados para armazenar sistemas de arquivos. .

.Dispositivos de Caracteres Os dispositivos de caracteres incluem a maioria dos outros dispositivos. A diferença fundamental entre os dispositivos de blocos e de caracteres é o acesso aleatório. tais como mouses e teclados. Os dispositivos de bloco podem ser acessados aleatoriamente enquanto os dispositivos de caractere só podem ser acessados serialmente.

. em vez disso eles devem se comunicar indiretamente abrindo uma conexão para o subsistema de conexão de rede do kernel.Dispositivos de Rede Os dispositivos de rede são manipulados de modo diferente para dispositivos de blocos e caracteres. Os usuários não podem transferir dados diretamente para dispositivos de rede.

duvidas ou indagações.. .Perguntas..