• Nenhum resultado encontrado

O Linux. Fonte: Arquitetura de Sistemas Operacionais Machado e Maia UNICS UNIX V1 UNIX V6 1BSD UNIX V7. Xenix. System III 2BSD.

N/A
N/A
Protected

Academic year: 2022

Share "O Linux. Fonte: Arquitetura de Sistemas Operacionais Machado e Maia UNICS UNIX V1 UNIX V6 1BSD UNIX V7. Xenix. System III 2BSD."

Copied!
66
0
0

Texto

(1)

Kernel Linux

(2)

O Linux

19761969

UNICS

1971

UNIX V1

UNIX V6

1979

UNIX V7

81

Xenix

197879 1BSD

19881981

System III

1982

System V

1984

SVR2

1986

SVR3

SVR4

1992

SVR4.2 Xenix

Minix AIX Chorus SCO Unix

Linux

UnixWare

19861979

2BSD

1980 3BSD

4BSD

1981

4.1BSD

1983

4.2BSD

4.3BSD

1993

4.4BSD

Ultrix

SunOS

Mach

Irix

FreeBSD OpenBSD OSF/ 1

Solaris

Fonte: Arquitetura de Sistemas Operacionais – Machado e Maia

(3)

Arquitetura do Linux

Fonte: Linux Kernel Devlopment – Robert Love

(4)

Tamanho

Ano Versão SLOC

(Milhões)

2001 Linux kernel 2.4.2 2.4

2003 Linux kernel 2.6.0 5.9

2009 Linux kernel 2.6.29 11.0

2009 Linux kernel 2.6.32 12.6

2010 Linux kernel 2.6.35 13.5

2012 Linux kernel 3.6 15.9

(5)

Tamanho

Ano Versão SLOC

(Milhões)

2012 Debian 7.0 419

2009 OpenSolaris 9.7

2005 Mac OS X 10.4 86

1996 Windows NT 4.0 11–12

2000 Windows 2000 29

2001 Windows XP 45

(6)

Licença

• O Kernel Linux é gratuito, em todos os sentidos da palavra.

• Licenciado sob GPLv2 (GNU General Public License).

• A GPL requer que trabalhos derivados sejam licenciados sob a mesma

• A GPL requer que trabalhos derivados sejam licenciados sob a mesma

licença, ou seja, sob a GPL.

(7)

Licença

Em termos gerais, a GPL baseia-se em 4 liberdades:

• A liberdade de executar o programa, para qualquer propósito

• A liberdade de estudar como o programa funciona e adaptá-lo para as suas necessidades.

• A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo.

• A liberdade de aperfeiçoar o programa, e liberar os seus

aperfeiçoamentos, de modo que toda a comunidade se beneficie deles.

O acesso ao código-fonte é um pré-requisito para as liberdades 2 e 4.

(8)

Licença

Embora qualquer pessoa possa modificar uma cópia do programa é obrigatório que:

• Exista um aviso, em destaque, em cada arquivo modificado, de que os dados originais foram alterados.

• Exista um aviso de que o trabalho distribuído ou publicado deriva

• Exista um aviso de que o trabalho distribuído ou publicado deriva totalmente ou em parte do programa original.

• Caso o programa seja executado de forma interativa, no início de sua

execução deve ser apresentada informação de copyright e de ausência de

garantias (ou de que a garantia corre por conta de terceiros).

(9)

Distribuições

• São composta do núcleo Linux e um conjunto variável de software, dependendo de seus propósitos.

• Essa coleção de software livre e não-livre, é criada e mantida por

indivíduos, grupos e organizações de todo o mundo, incluindo o grupo

Linux.

(10)

Versão do kernel

3.2.1.1-RC02

(11)

Características do kernel

• O kernel não tem acesso nem a biblioteca C nem os cabeçalhos C padrão.

• O kernel é codificado em GNU C.

• O kernel não tem as proteções de memória oferecidas em espaço de usuário.

• A memória do kernel não paginável.

• O kernel não pode (facilmente) executar operações de ponto flutuante.

• O kernel não pode (facilmente) executar operações de ponto flutuante.

• O kernel tem uma pequena pilha de tamanho fixo por processo.

• O Kernel Linux é preemptivo.

• Tem suporte do multiprocessador simétrico (SMP).

• Sincronização e simultaneidade são as principais preocupações dentro do kernel.

• O kernel linux deve ser portável.

(12)

POSIX

• O Padrão POSIX é constituído por uma série de regras que determinam como o programador deve escrever o código-fonte de seu sistema de

modo que ele possa ser portável entre os sistemas operacionais baseados no Unix.

• O POSIX define as APIs, juntamente com shells de linha e comando e

interfaces utilitárias, para compatibilidade de software com variantes

de Unix e outros sistemas operacionais.

(13)

Shell

• O shell é um interpretador de comandos que atua como interface entre o kernel e o usuário através do terminal.

• Mais rápida e poderosa que o sistema GUI.

• Os aplicativos são programas que podem ser invocados pelo shell para realizar diversas tarefas.

realizar diversas tarefas.

• O shell é um programa encarregado de interpretar os comandos, transmití-los ao sistema e retornar o resultado.

• O shell mais utilizado nas distribuições Linux é o Bash (Bourne again shell);

(14)

Kernel Modules

• O Linux suporta o carregamento dinâmico dos módulos do kernel.

• Módulos do kernel são seções de código do kernel que podem ser

compiladas, carregadas e descarregadas independentemente do resto do kernel.

• O Kernel Linux não tem drivers no user space. Todos os drivers estão no

• O Kernel Linux não tem drivers no user space. Todos os drivers estão no espaço do kernel e são comumente chamados de Kernel Loadable

Modules .

• No Linux, apenas parte dos drivers é carregada na memória durante a

inicialização. A maioria pode ser carregada dinamicamente quando

necessário.

(15)

Kernel Modules

Fonte: Operating System Concepts - Silberschatz

(16)

Kernel Modules

• A interface de módulos permite que terceiros (third parties) escrevam e distribuam seus módulos de forma proprietárias, sem seguir a licença GPL.

• Módulos do kernel tipicamente podem implementar um device driver, um

filesytem ou um procolo de rede.

(17)

Kernel Modules

O Linux possui quatro componentes para o suporte de módulos:

• O sistema de gestão de módulos

• O carregador/descarregador de módulos

• O sistema de registro de driver

• O mecanismo de resolução de conflito

• O mecanismo de resolução de conflito

(18)

Drivers

Classificados como:

• Driver de dispositivo de caracteres

• Driver de dispositivo de bloco

(19)

Subsistemas do Kernel

Fonte: Arquitetura do kernel Linux - Mello

(20)

Kernel

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(21)

Syscalls

As chamadas de sistemas são comumente chamadas de Syscalls no Linux.

As Syscalls fornecem uma camada entre o kernel e as aplicações de usuários.

São importantes porque:

• Primeiro, elas fonecem uma abstração da interface com o hardware, pois quando esse está lendo ou escrevendo um arquivo, ele não se preocupa quando esse está lendo ou escrevendo um arquivo, ele não se preocupa com o tipo de disco ou mesmo o tipo de filesystem em qual o arquivo reside.

• Segundo, garantem a segurança e a estabilidade do sistemas.

(22)

Syscalls

A figura ilustra a relação entre a aplicação, a biblioteca C e o kernel com uma chamada a função printf().

Fonte: Linux Kernel Development - Love

(23)

Syscalls

eax = NR_read()

Interrupção (0x80) system_call_table[eax]

Fonte: Linux Kernel Development – Love (adaptado)

resume_userspace return

return

(24)

Gerenciamento de processos

• O Linux não diferencia threads de processos. Para o Kernel Linux todos os processos são iguais e apenas compartilham recursos

• O Kernel Linux executa operações em segundo plano através das threads que existem unicamente no kernel space e não trocam de contexto no user space.

• Quando um processo ou uma tarefa termina, o Kernel Linux libera os

recursos e notifica os outros processos e tarefas que estavam associados a

eles.

(25)

Criação de processos

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(26)

Criação de processos

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(27)

System calls de Processo

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(28)

Sinais relacionados com processos

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(29)

Copy on write

• Copiar toda o espaço de endereçamento de memória do processo pai para o processo filho é muito caro.

• O Linux entrega ao filho a tabela de páginas do pai, porém essas são

apenas links para as páginas dos pai marcados com permissão de leitura.

• Quando o filho tenta escrever em uma pagina, ele recebe um erro que é

• Quando o filho tenta escrever em uma pagina, ele recebe um erro que é tratado pelo kernel que trata de alocar uma cópia dessa página com

direito de escrita para o filho.

(30)

Copy on write

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(31)

Threads

• Threads no Linux são criadas por um mecanisno específico, a syscall clone().

pid = clone(function, stack_ptr, sharing_flags, arg)

(32)

Threads – sharing_flags

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(33)

Daemons

• Mesmo que o usuário esteja ausente da sua estação de trabalho, muitas tarefas (centenas ou até milhares) estão em execução.

• Essas tarefas são chamadas de Daemons.

(34)

Sincronização de processos

• Pipe

• Atomic integer

• Spinlock

• Semaforos (sleeping lock)

• Mutex

• Seqlock

• Seqlock

(35)

Escalonamento

O Linux usa dois tipos de algoritmos para escalonamento:

• Um algoritmo de tempo compartilhado para escalonamento preemptivo equitativo entre múltiplos processos

• Um algoritmo de tempo real para tarefas onde as prioridades absolutas

são mais importantes do que a equidade

(36)

Prioridades

Fonte: Operating System Concepts – Silberschatz (adaptado)

5 ms 800 ms

139

(37)

Fila de execução e dos vetores de prioridades

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(38)

Prioridade dinâmica

sleep_avg Bonus

>=0 but < 100 ms 0

>= 100 ms but < 200 ms 1

>=200 ms but < 300 ms 2

>=300 ms but < 400 ms 3

DP = max(100, min(SP − bonus + 5, 139))

>=300 ms but < 400 ms 3

>=400 ms but < 500 ms 4

>=500 ms but < 600 ms 5

>=600 ms but < 700 ms 6

>=700 ms but < 800 ms 7

>= 800 ms but < 900 ms 8

>=900 ms but < 1000 ms 9

1 s 10

(39)

Gerenciamento de memória

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(40)

Gerenciamento de memória

Fonte: Operating System Concepts - Silberschatz

(41)

Alocação de memória – Algoritmo companheiro

Fonte: Sistemas Operacionais Modernos - Tanenbaum

(42)

Alocação de memória – alocador de fatias (slab)

Fonte: Operating System Concepts - Silberschatz

(43)

Alocação de memória – alocador de fatias (slab)

Fonte: http://www.secretmango.com/jimb/Whitepapers/slabs/slab.html

(44)

Paginação

• No Linux a unidade básica de gerenciamento de memória é a página.

• Um processo não precisa estar inteiro na memória para ser executado.

• O processo de paginação ocorre sob demanda, não existe pré-paginação.

(45)

Algoritmo de recuperação de moldura de páginas

Fonte: Sistemas Operacionais Modernos – Tanenbaum (adaptado)

1

(46)

Swapping

Fonte: https://wiki.duke.edu/display/SCSC/Virtual+Memory+Issues

(47)

Out-of-Memory Killer

• Se não houver memória livre e não for possível recuperar espaço, o sistema está em apuros.

• O último recurso: Matar algum processo

• Critério:

– Deve ser grande (incluindo os filhos) – Deve ser grande (incluindo os filhos) – Não foi executado há muito tempo – Baixa-prioridade

– Não pode ser um processo do kernel (root)

(48)

Dispositivos E/S no Linux

• Simples: todos os dispositivos são tratados como arquivos

• Recebem o nome arquivos especiais e são associados ao um /dev

– Ex: /dev/hd1

• Não são necessários comandos especiais para acessar esses arquivos.

• São divididos em duas categorias:

• São divididos em duas categorias:

– Arquivos especiais de bloco

– Arquivos especiais de caracteres

• Cada dispositivo possui um número único, sendo formado por duas partes:

– Major number: identifica ao kernel o driver respectivo ao dispositivo.

– Minor number: identifica ao driver o dispositivo em questão (um mesmo

driver pode gerenciar múltiplos dispositivos).

(49)

Sistema de arquivos

• Arquivos são contêineres de dados relacionado a uma determinada região ou blocos de um disco composto geralmente com uma simples sequencia de bytes

• Sistema de arquivos é uma abstração utilizada pelo sistema operacional para gerenciar arquivos.

Responsável por:

Organizar dados

Controlar o espaço livre

Compartilhar arquivos entre usuários

Facilitar e controlar o acesso a informações

• No Linux diretórios também são arquivos.

• Existem também arquivos especiais (como Dispositivos de E/S e links

simbólicos).

(50)

Estrutura de um arquivo

• User data

– Dados do usuário dentro do arquivo

• Inode

– Armazena informações utilizadas pelo sistema operacional para gerenciar o arquivo

gerenciar o arquivo

• Tamanho, dono do arquivo, tempo de acesso, modificação,

localização dos dados, permissões

(51)

Organização Hierárquica

Fonte: Sistemas de arquivos no Linux - Maiolino

(52)

Representação de diretórios

(53)

Pontos de montagem

Fonte: Sistemas Operacionais Modernos – Tanenbaum (adaptado)

(54)

Chamadas de sistema para arquivos

Fonte: Sistemas Operacionais Modernos – Tanenbaum (adaptado)

(55)

Chamadas de sistema para diretórios

Fonte: Sistemas Operacionais Modernos – Tanenbaum (adaptado)

(56)

VFS (Virtual File System)

• Abstração de software responsável pelo suporte a utilização de diversos sistemas de arquivos diferentes no mesmo sistema operacional

• Provê uma série de estruturas genéricas a serem compartilhadas pelos demais sistemas de arquivos

Inodes, arquivos, funções genéricas, cache, etc.

Tais estruturas são mantidas somente em memória, cada sistema de

• Tais estruturas são mantidas somente em memória, cada sistema de

arquivos possui suas próprias estruturas que são armazenadas nos discos.

(57)

VFS - Estruturas

• superblock:

– responsável por armazenar informações como o tipo do sistema de arquivos, tamanho, dispositivo, lista de inodes e suas operações básicas, como criação e remoção de inodes.

• Inode

• Inode

– representa um objeto do sistema de arquivos (um arquivo ou um diretório), contendo informações como dono, grupo, permissões, blocos e operações (como leitura e escrita no arquivo).

• Dentry

– Representa uma entrada de diretório. As entradas de diretórios são

armazenadas em uma cache e pode conter, por exemplo, entradas

para /, /usr, /home etc.

(58)

VFS (Virtual File System)

Fonte: Sistemas de arquivos no Linux - Maiolino

(59)

Sistema de arquivos real

• O Linux suporta vários tipos de FS (File system) diferentes.

minix

ext, ext2, ext3, ext4

XFS

ReiserFS

JFS

JFS

FAT, FAT32, NTFS

NFS

proc

Btrfs

(60)

Journaling

Arquivos retirados do Journal

Fonte: http://www.howtogeek.com/howto/33552/htg-explains-which-linux-file-system- should-you-choose/ (adaptado)

Arquivos colocados no Journal

Arquivos escritos

no disco

(61)

Journaling

Fonte: http://sergioprado.org/sistemas-de-arquivo-em-linux-embarcado-parte-1/

(62)

Segurança

Cada usuário no linux possui:

• UID (Id de usuário)

O Linux registra

Varia de 0 a 65535 (16 bits)

• GID (Id de grupo)

O administrador registra

Varia de 0 a 65535 (16 bits)

(63)

Segurança

Fonte: Sistemas Operacionais Modernos – Tanenbaum

(64)

Chamadas de sistema - Segurança

Fonte: Sistemas Operacionais Modernos – Tanenbaum

(65)

Inicialização

Fonte: http://www.ibm.com/developerworks/br/library/l-linuxboot/

(66)

Livros

Linux Kernel Development Robert Love

Sistemas Operacionais Modernos

Tanenbaum

Operating System Concepts

Silberschatz, Galvin e Gagne

Referências

Documentos relacionados

Os fundamentos do paradigma médico-espírita poderiam ser resumidos da seguinte forma: Imortalidade da alma e ação prioritária desta sobre o corpo físico e os envoltórios

Viva Arte Viva Viva Arte Viva - é um projeto de inclusão social que oferece oficinas gratuitas e permanentes de teatro, música e dança à comunidade do Distrito Federal e

Como referência a tabela de curvas de crescimento da WHO/OMS (2007) sobre os índices de estatura por idade, 45% das crianças se encontraram no percentil 50 (figura4), na média da

No primeiro semestre de 2013, deve-se trabalhar com estes grupos para concluir a fase de Planejamento dos indicadores, iniciando a fase de Avaliação Controlada no

Entre outros fatores que podem contribuir no tempo médio de aquisição de cada habilidade, poden- do ocasionar rendimento menor por parte dos indiví- duos, estão as condições de

Produção Industrial - Controle Estatístico de Processos; Legislação Aplicada; Gestão da Produção; Gestão de Processos; Gestão da Qualidade e Metrologia; Normatização e Gestão

Não foi observado efeito significativo para a dosagem de nicosulfuron na produtividade do milho, tanto nas linhagens quanto nos híbridos.. O valor de produtividade

Nos últimos anos, o uso indiscriminado de recursos naturais se constitui em um dos principais fatores de degradação do meio ambiental, [23] aponta que a medida que