Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
por
• Histórico
• Características
• Arquitetura do Sistema
• Processos e Threads
• Gerência do Processador
• Gerência de Memória
• Sistema de Arquivos
• Gerência de Entrada/Saída
Histórico
1969
U N IC S
1971
U N IX V 1
1976
U N IX V 6
1979
1978
U N IX V 7 1BSD
X e n ix
1981
1979
S y s te m I I I 2BSD
U ltr ix
3BSD
1982
1980
S y s te m V
4BSD
1984
1981
SVR2 4 .1 B S D
M in ix
A IX SunO S
C h o ru s
1986
1983
SVR3 4 .2 B S D
S C O U n ix M a ch
1988
1986
SVR4 4 .3 B S D
O SF/ 1
Lin u x Irix
S o la r is
1992
1993
S V R 4 .2 4 .4 B S D
U n ix W a re FreeBSD
O penBSD
Histórico
• 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
• 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 :-)
Histórico
• Multiprogramação / Multitarefa
• Multiusuário
• Multiprocessamento simétrico
• Suporte a sistemas NUMA
• Kernel reentrante e carga de módulos sob demanda
• Interrupções e exceções
• Semáforos e spin locks
• Processos e threads (lightweight process)
• Memória virtual, memória compartilhada e mapped
files
Arquitetura do Sistema
Processos e Threads
• Process descriptor
› Estado
› PID
› Prioridade
› Espaço de
endereçamento
› Terminais
associados
› Arquivos abertos
› Sinais recebidos
› Ponteiros para
outras estruturas
Processos e Threads
• Os processos são
organizados em uma
lista duplamente
encadeada, chamada
task list
Processos e Threads
• Threads permitem que partes de código do mesmo
processo possam ser executadas concorrentemente
e compartilhem o mesmo espaço de endereçamento
› Por exemplo, um editor de texto permite a
digitação do texto, enquanto é feita a correção
ortográfica, o documento é salvo
periodicamente, um outro documento é impresso
etc.
• Threads são semelhantes a idéia de processos e
subprocessos, porém oferecem melhor
desempenho, pois compartilham o mesmo espaço
de endereçamento e outros recursos, como
arquivos
• O Linux utilizada o conceito de lightweight process,
implementado pela biblioteca POSIX pthread, em
modo usuário
• Threads são criados pela system call clone()
Processos e Threads
• Estados e
mudanças de
estados
Gerência do Processador
• Preempção por tempo
› Cada processo possui uma fatia de tempo para executar
› Ao término 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 é dinâmica e depende da prioridade do
processo
Gerência do Processador
• Preempção por tempo
› Existem duas listas de processos prontos:
• Ativos: processos prontos que não esgotaram suas fatias
de tempo
• Expirados: processos prontos que já esgotaram suas fatias
› Os processos são colocados inicialmente na lista ativa
› Os processos quando sofrem preempção por tempo não
perdem o restante da fatia de tempo e permacem na
lista 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 serão
executados apenas quando todos os outros processos
esgotarem suas fatias de tempo
Gerência do Processador
• Níveis de prioridade
› 140 níveis, sendo zero a maior prioridade
e 139 a menor
› Prioridades entre 0 e 99 são chamadas
de tempo real: não existe fatia de tempo,
logo não existe preempção por tempo
apenas por prioridade
› Prioridades entre 100 e 139 existem as
preempções por tempo e prioridade
Gerência do Processador
• Memória virtual
• Permite executar programas maiores que a memória
física (MF)
• Permite criar estruturas de dados maiores que a MF
• Apenas partes dos programas precisam estar na MF
• Processos podem compartilhar bibliotecas,
utilitários e programas na MF
• Programas podem ser alocados em qualquer
posição da MF
• Permite carregar um número maior de processos na
MF
Gerência de Memória
• Mapeamento em dois
níveis para reduzir o
tamanho das tabelas
de mapeamento
• Control register 3 (cr3)
aponta para o início da
tabela diretório (TD)
• A TD permite chegar na
tabela de páginas (TP)
• A TP permite chegar no
endereço na página
real (page frame)
Gerência de Memória
• Processadores Intel de
64 bits exigem quatro
níveis de mapeamento
Gerência de Memória
• 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 página foi
modificada
Gerência de Memória
• Swapping
› Antes das páginas na memória serem liberadas,
as páginas devem gravadas em disco (page out)
› Geralmente páginas modificadas
› Quando a página é novamente referenciada
ocorre a leitura da página em disco para a
memória (page in)
› A área de swapping pode ser uma partição
inteira ou um arquivo em uma partição
› Podem exitir ao mesmo tempo várias áreas de
swap
› Pode ser desativado
Sistema de Arquivos
• Características do Ext2
› Permite definir o tamanho do bloco (1 KB
a 4 KB). Blocos pequenos reduzem a
fragmentação, porém blocos grandes
reduzem o número de transferências
› Permite definir o número de inodes na
partição
› Permite reduzir o tempo de busca de
arquivos
› Realiza a pré-alocação de blocos para
evitar a fragmentação dos arquivos
Sistema de Arquivos
• www.levenez.com/unix/
• www.kernel.org
• www.gnu.org
• www.distrowatch.com
www.infnet.edu.br
cursos@infnet.edu.br
2122-8800
Esta palestra está disponível em:
Ministrada por
E-mail: