View
235
Download
0
Category
Preview:
Citation preview
8/14/2019 Linux Por Dentro
1/40
Linux Internals:
Linux Visto por Dentro
por
Luiz Paulo Maia
luiz.maia@infnet.edu.br
8/14/2019 Linux Por Dentro
2/40
Luiz Paulo Maia
Mestre em Informtica pelo NCE/UFRJ, ps-
graduado em marketing pela PUC-Rio e graduado
em Informtica pela PUC-Rio
Trabalhou na Elebra, atual HP, Light e ANP, alm de
scio-diretor da Training Autor dos livros Arquitetura de Sistemas
Operacionais e Arquitetura (4ed., LTC, 2007) de
Redes de Computadotes (1ed., LTC, 2009)
Autor do simulador SOsim
Coordenador da Graduao de Gesto da TI do
Infnet, alm das formaes em Microsoft e Linux
8/14/2019 Linux Por Dentro
3/40
Sumrio
Histrico
Caractersticas
Arquitetura do Sistema
Processos e Threads
Gerncia do Processador
Gerncia de Memria
Sistema de Arquivos
Gerncia de Entrada/Sada
8/14/2019 Linux Por Dentro
4/40
Histrico
1
9
7
6
1
9
6
9
U N I C S
1
9
7
1
U N I X V 1
U N I X V 6
1
9
8
8
1
9
7
9
U N I X V 7
1
9
8
1
S y s te m I I I
1
9
8
2
S y s t e m V
1
9
8
4
S V R 2
1
9
8
6
S V R 3
S V R 4
1
9
9
2
S V R 4 . 2
X e n i x
M i n i x
A I XC h o r u s
S C O U n i x
L i n u x
U n i x W a r e
1 B S D
1
9
8
6
1
9
7
8
1
9
7
9
2 B S D
1
9
8
0 3 B S D4 B S D
1
9
8
1
4 . 1 B S D
1
9
8
3
4 . 2 B S D
4 . 3 B S D
1
9
9
3
4 . 4 B S D
U l t r i x
S u n O S
M a c h
I r i x
F r e e B S D
O p e n B S D
O S F / 1S o l a r i s
8/14/2019 Linux Por Dentro
5/40
Histrico
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID:
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since april, and is starting to get ready. I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I'll get something practical within a few months, and
I'd like to know what features most people would want. Any suggestions
are welcome, but I won't promise I'll implement them :-)
8/14/2019 Linux Por Dentro
6/40
Histrico
1991: desenvolvido inicialmente pelo
filands Linus Torvalds para um PC-386
1994: kernel 1.0
1996: kernel 2.0 e 2.1 1999: kernel 2.2.0 e 2.3.0
2001: kernel 2.4.0 e 2.5.0
2003: kernel 2.6.0
2004: kernel 2.2.26
2009: kernel 2.4.37.2 e 2.6.30.1
8/14/2019 Linux Por Dentro
7/40
Caractersticas
Mais de seis milhes de linhas de cdigoem C e assembly
Mais de 14.000 arquivos, ocupando mais de230 MB
Cdigo fonte disponvel sobre a licenaGNU GPL (General Public License)
No oferece interface grfica, utilitrios,compiladores, ferramentas de
gerenciamento Diversas distribuies: Red Hat, CentOS,
Fedora, Debian, Slackware, Ubuntu
8/14/2019 Linux Por Dentro
8/40
Caractersticas
Multiprogramao / Multitarefa
Multiusurio
Multiprocessamento simtrico
Suporte a sistemas NUMA
Kernel reentrante e carga de mdulos sob demanda
Interrupes e excees
Semforos e spin locks
Processos e threads (lightweight process)
Memria virtual, memria compartilhada e mapped
files
8/14/2019 Linux Por Dentro
9/40
Arquitetura do Sistema
8/14/2019 Linux Por Dentro
10/40
Processos e Threads
Processo a instncia de um programaem execuo
Por exemplo, se existem 16 usuriosutilizando o editor vi, existem, pelo
menos, 16 processos, um para cadausurio, porm os processos podemcompartilhar o mesmo cdigo executvelna memria (reentrncia)
Process descriptor a estrutura de dadosque materializa o processo dentro do SO epossui todas as informaes necessriaspara a execuo do processo
8/14/2019 Linux Por Dentro
11/40
Processos e Threads
Process descriptor
Estado
PID
Prioridade
Espao deendereamento
Terminais
associados
Arquivos abertos
Sinais recebidos
Ponteiros para
outras estruturas
8/14/2019 Linux Por Dentro
12/40
Processos e Threads
Processos so criados pela system call fork()
O processo que executa o fork() considerado o
processo pai e o processo criado o processo
filho
Processo filho herda o cdigo fonte e a rea dedados do processo pai, mas implementando a
tcnica de copy-on-write
Todos os processos so descendentes do
processo init, criado ao trmino do boot do SO
Processos so eliminados pela system call exit()
O programa a ser executado definido pela system
call exec()
8/14/2019 Linux Por Dentro
13/40
Processos e Threads
Os processos so
organizados em uma
lista duplamente
encadeada, chamada
task list
8/14/2019 Linux Por Dentro
14/40
Processos e Threads
Threads permitem que partes de cdigo do mesmoprocesso possam ser executadas concorrentementee compartilhem o mesmo espao de endereamento
Por exemplo, um editor de texto permite adigitao do texto, enquanto feita a correoortogrfica, o documento salvoperiodicamente, um outro documento impressoetc.
Threads so semelhantes a idia de processos esubprocessos, porm oferecem melhordesempenho, pois compartilham o mesmo espaode endereamento e outros recursos, como
arquivos O Linux utilizada o conceito de lightweight process,
implementado pela biblioteca POSIX pthread, emmodo usurio
Threads so criados pela system call clone()
8/14/2019 Linux Por Dentro
15/40
Processos e Threads
Estados e
mudanas de
estados
8/14/2019 Linux Por Dentro
16/40
Gerncia do Processador
Preempo por tempo
Cada processo possui uma fatia de tempo para executar
Ao trmino da fatia de tempo o processo retirado da
UCP e outro processo executado
O processo retirado poder voltar a executar
posteriormente
A fatia de tempo dinmica e depende da prioridade do
processo
8/14/2019 Linux Por Dentro
17/40
Gerncia do Processador
Preempo por tempo
Existem duas listas de processos prontos: Ativos: processos prontos que no esgotaram suas fatias
de tempo
Expirados: processos prontos que j esgotaram suas fatias
Os processos so colocados inicialmente na lista ativa Os processos quando sofrem preempo por tempo noperdem o restante da fatia de tempo e permacem nalista ativa
Quando o processo termina a sua fatia de tempo, colocado na lista expirada e recalculada a sua fatia de
tempo Os processos prontos na lista expirado seroexecutados apenas quando todos os outros processosesgotarem suas fatias de tempo
8/14/2019 Linux Por Dentro
18/40
Gerncia do Processador
Preempo por prioridade
Se um processo de maior prioridade
ficar pronto, o processo em execuo
interrompido, colocado no estado
de pronto e o processo de maior
prioridade assume o processador
Processos de mesma prioridade so
tratados no esquema de fila circular
8/14/2019 Linux Por Dentro
19/40
Gerncia do Processador
O algoritmo de escalonamento foi
complementamente alterado da verso do kernel
2.4 para a 2.6
Na verso 2.6, o nmero de processos
prontos no implica no tempo do
escalonamento
Os objetivos principais do escalonador so:
reduzir o tempo de resposta de aplicaes
interativas, aumentar o throughtput e evitar
starvation O escalonador tenta identificar o tipo do
processo: IO-bound ou CPU-bound, para
beneficiar os processos IO-bound
8/14/2019 Linux Por Dentro
20/40
Gerncia do processador
Nveis de prioridade
140 nveis, sendo zero a maior prioridadee 139 a menor
Prioridades entre 0 e 99 so chamadas
de tempo real: no existe fatia de tempo,logo no existe preempo por tempoapenas por prioridade
Prioridades entre 100 e 139 existem aspreempes por tempo e prioridade
8/14/2019 Linux Por Dentro
21/40
Gerncia do Processador
Escalonamento dinmico permite que o sistema
ajuste a prioridade dos processos
Todo processo tem uma prioridade esttica
atribuda quando o processo criado,
geralmente 120 ou nice(0) A prioridade dinmica calculada somando ou
diminuindo um valor da prioridade esttica
O valor dependenr do tempo que o processo
passa no estado de espera
Quanto mais tempo no estado de espera,maior o valor a ser subtrado da prioridade
esttica
8/14/2019 Linux Por Dentro
22/40
Gerncia do Processador
8/14/2019 Linux Por Dentro
23/40
Gerncia de Memria
Memria virtual
Permite executar programas maiores que a memria
fsica (MF)
Permite criar estruturas de dados maiores que a MF
Apenas partes dos programas precisam estar na MF
Processos podem compartilhar bibliotecas,
utilitrios e programas na MF
Programas podem ser alocados em qualquer
posio da MF Permite carregar um nmero maior de processos na
MF
8/14/2019 Linux Por Dentro
24/40
Gerncia de Memria
Espao de endereamento virtual de 4 GB
(Intel 32 bits), 64 GB com PAE e 256 TB
(Intel 64 bits)
Traduo de endereos, utilizando tabelas
de pginas
Pginas de 4 KB (32 bits) ou 8 KB (64 bits)
Feito em hardware pela MMU (Memory
Management Unit) Paginao por demanda
8/14/2019 Linux Por Dentro
25/40
Gerncia de Memria
Mapeamento em dois
nveis para reduzir o
tamanho das tabelas
de mapeamento
Control register 3 (cr3)aponta para o incio da
tabela diretrio (TD)
A TD permite chegar na
tabela de pginas (TP)
A TP permite chegar noendereo na pgina
real (page frame)
8/14/2019 Linux Por Dentro
26/40
Gerncia de Memria
Processadores Intel de
64 bits exigem quatro
nveis de mapeamento
8/14/2019 Linux Por Dentro
27/40
Gerncia de Memria
O SO controla cada frame na MP utilizando um vetor
(mem_map)
Cada elemento do vetor chamado de page descriptor
(page) de 32 bytes
Cada page descriptor possui diversas informaes
sobre uma pgina especfica na MP
8/14/2019 Linux Por Dentro
28/40
Gerncia de Memria
Page descriptor
Campo _count um contador
Se o valor -1 o frame est livre
Se o campo for maior ou igual a zero o frame
est em uso
Flag PG_locked indica que o frame est
bloqueado
Flag PG_reference indica que o frame foi
referenciado recentemente
Flag PG_dirty indica se a pgina foi
modificada
8/14/2019 Linux Por Dentro
29/40
Gerncia de Memria
Page Frame Reclaiming Algorithm (PFRA)
Responsvel por manter um nmero mnimo de
pginas livres para o SO continuar funcionando
adequadamente
O PFRA seleciona a pgina a ser liberadaconforme o seu contedo
Por exemplo, melhor liberar pginas no
modificadas do que as modificadas
Pginas modificadas devem ser gravadas em
disco (page out) antes de liberadas O PFRA seleciona a pgina que tem a menor
chance de ser referenciada novamente,
utilizando o algoritmo LRU (Least Recently Used)
8/14/2019 Linux Por Dentro
30/40
Gerncia de Memria
Least Recently Used (LRU)
O sistema mantem duas listas depginas
Pginas ativas: contem pginas acessadas
recentemente Pginas inativas: contem pginas no
acessadas recentemente
As pginas trocam de listas em funodo tempo e se foram referenciadas (flag
PG_reference) Periodicamente, as pginas da lista de
inativas so liberadas
8/14/2019 Linux Por Dentro
31/40
Gerncia de Memria
Page Frame Reclaiming Algorithm (PFRA)
Se a quantidade de memria livre
continuar baixa acionado o Out Off
Memory Killer (OOMK)
OOMK ir selecionar um processo
(vtima) e elimin-lo, para liberar todas as
suas pginas na MP
8/14/2019 Linux Por Dentro
32/40
Gerncia de Memria
Swapping
Antes das pginas na memria serem liberadas,
as pginas devem gravadas em disco (page out)
Geralmente pginas modificadas
Quando a pgina novamente referenciadaocorre a leitura da pgina em disco para a
memria (page in)
A rea de swapping pode ser uma partio
inteira ou um arquivo em uma partio
Podem exitir ao mesmo tempo vrias reas deswap
Pode ser desativado
8/14/2019 Linux Por Dentro
33/40
Sistema de Arquivos
Existem diversos sistemas de arquivos
para o Linux, sendo os mais utilizados o
Ext2 (Second Extended Filesystem) e Ext3
Os dois sistemas de arquivos so
compatveis, sendo a grande diferena o
esquema de journaling oferecido pelo Ext3
Journaling permite recuperar mais
rapidamente um filesystem aps alguma
interrupo no sistema, como uma faltade energia
8/14/2019 Linux Por Dentro
34/40
Sistema de Arquivos
Caractersticas do Ext2
Permite definir o tamanho do bloco (1 KB
a 4 KB). Blocos pequenos reduzem a
fragmentao, porm blocos grandes
reduzem o nmero de transferncias
Permite definir o nmero de inodes na
partio
Permite reduzir o tempo de busca de
arquivos
Realiza a pr-alocao de blocos para
evitar a fragmentao dos arquivos
8/14/2019 Linux Por Dentro
35/40
Sistema de Arquivos
Formato de um filesystem Ext2
8/14/2019 Linux Por Dentro
36/40
Sistema de Arquivos
8/14/2019 Linux Por Dentro
37/40
Gerncia de E/S
8/14/2019 Linux Por Dentro
38/40
Referncias: Livros e Papers
Linux Kernel Development, 2 ed., Robert
Love, Sams Publishing, 2005
Understanding the Linux Kernel, 3 ed.,
Daniel Bovet, Marco Cesati, ORelly, 2005 Professional Linux Kernel Architecture,
Wolfgang Mauerer, Wrox, 2008
Understanding the Linux 2.6.8.1 CPU
Scheduler, Josh Aas, SGI, 2005
8/14/2019 Linux Por Dentro
39/40
Referncias: Sites
www.levenez.com/unix/
www.kernel.org
www.gnu.org
www.distrowatch.com
8/14/2019 Linux Por Dentro
40/40
www.infnet.edu.br
cursos@infnet.edu.br
2122-8800
Esta palestra est disponvel em:
Ministrada por
E-mail:
http://www.infnet.edu.br/http://www.infnet.edu.br/Recommended