unix
> nelicio junior
> rodrigo brito
“o unix te dá 35 maneiras diferentes
para você se matar.”
> o que é UNIX?
Sistema operacional portável, multitarefa e
multiusuário. Originalmente criado por
Ken Thompson, Dennis Ritchie,
Douglas Mcllroy e Peter Weiner.
> histórico

AT&T – GE ­ MIT
1965 – Multics (laboratório de pesquisas);
1969 – Bell retira­se;
1969 ­Multics reescrito como Unics;
1973 – Unix reescrito em C;
1970 – 80 – Primeiras distribuições (BSD e
System III e V);
1977 – AT&T comercializa o Unix;
> características

 ­ escrito em linguagem de alto nível,
tornando fácil a compreensão e alteração
do seu código e portabilidade para outras
plataformas;
­ oferece um conjunto de system calls que 
permite que programas complexos sejam
desenvolvidos a partir de uma interface
simples;
> características
 ­ flexibilidade, podendo ser utilizado
como sistema operacional de computadores
pessoais, estações de trabalho e 
servidores de todos os portes, voltados
para banco de dados, web, correio
eletrônico e aplicação;
­ implementação de threads, em algumas
versões, e diversos mecanismos de 
comunicação e sincronização, como
memória compartilhada, pipes e semáforos;
> características

 ­ suporte a um grande número de
aplicativos disponíveis no mercado, sendo
muitos gratuitos;
­ suporte a diversos protocolos de rede,
como o TCP/IP e interfaces de programação,
como sockets, podendo ser utilizado
como servidor de comunicação, roteador, 
firewall e proxy;
­ oferece uma interface simples e uniforme
com os dispositivos de I/O.
> estrutura do sistema
 ­ linguagens: C e assembly
­ dois modos de acesso: 
modo usuário
modo kernel
> kernel
Uma System Call (chamada de sistema) é usado pela aplicação (usuário) programas para solicitação de serviços do sistema operacional. Um sistema operacional pode acessar o
hardware de um sistema diretamente, mas um programa do usuário não tem acesso direto ao hardware. Isto é feito para que o kernel possa manter o sistema seguro de
programas de usuário mal-intencionado. Mas, muitas vezes, um programa do usuário requer algumas informações do hardware (por exemplo, de uma câmera web para mostrarlhe a imagem), mas não pode obter as informações diretamente. Assim, solicita ao sistema operacional para

 ­ controla o hardware;
­ fornece system calls;
­ dividido em 2 partes:
dependente do hardware
independente do hardware

Fornecer-lhe a solicitação. Esta solicitação é feita usando uma chamada de sistema adequada. A chamada de sistema executa no modo kernel. Cada chamada de sistema tem um
número associado a ele. Este número é passado para o kernel e é assim que o kernel sabe qual a System Call foi feita. Quando um programa de usuário emite uma chamada de
sistema, na realidade, é chamada uma rotina da biblioteca.
dependente do hardware:
tratamento de interrupções e exceções,
device drivers,
interpretação de sinais
independente do hardware:
system calls,
gerência de processos,
gerência de memória,
escalonamento,
pipes,
paginação,
swapping,
sistema de arquivos
ão tem nenhum vinculo com aparente com a plataforma onde esta sendo executada
> system calls
­ usado por programas para solicitação de

serviços do SO.
> processos e threads
­ suporta inúmeros processos, que
podem ser executados
concorrentemente ou simultaneamente.
­ primeiras versões não implementavam
o conceito de threads, porém versões
mais recentes já oferecem suporte
a aplicações multithread.
Uma System Call (chamada de sistema) é usado pela aplicação (usuário) programas para solicitação de serviços do sistema operacional. Um sistema operacional pode acessar o
hardware de um sistema diretamente, mas um programa do usuário não tem acesso direto ao hardware. Isto é feito para que o kernel possa manter o sistema seguro de
programas de usuário mal-intencionado. Mas, muitas vezes, um programa do usuário requer algumas informações do hardware (por exemplo, de uma câmera web para mostrarlhe a imagem), mas não pode obter as informações diretamente. Assim, solicita ao sistema operacional para

Fornecer-lhe a solicitação. Esta solicitação é feita usando uma chamada de sistema adequada. A chamada de sistema executa no modo kernel. Cada chamada de sistema tem um
número associado a ele. Este número é passado para o kernel e é assim que o kernel sabe qual a System Call foi feita. Quando um programa de usuário emite uma chamada de
sistema, na realidade, é chamada uma rotina da biblioteca.
> system call fork
­ processo executa o fork (pai);
­ processo filho tem seu próprio
espaço de endereçamento;
­ o fork copia o espaço de
endereçamento do processo pai para
o filho, incluindo o código
executável e suas variáveis.
­ daemons

Uma System Call (chamada de sistema) é usado pela aplicação (usuário) programas para solicitação de serviços do sistema operacional. Um sistema operacional pode acessar o
hardware de um sistema diretamente, mas um programa do usuário não tem acesso direto ao hardware. Isto é feito para que o kernel possa manter o sistema seguro de
programas de usuário mal-intencionado. Mas, muitas vezes, um programa do usuário requer algumas informações do hardware (por exemplo, de uma câmera web para mostrarlhe a imagem), mas não pode obter as informações diretamente. Assim, solicita ao sistema operacional para
Fornecer-lhe a solicitação. Esta solicitação é feita usando uma chamada de sistema adequada. A chamada de sistema executa no modo kernel. Cada chamada de sistema tem um
número associado a ele. Este número é passado para o kernel e é assim que o kernel sabe qual a System Call foi feita. Quando um programa de usuário emite uma chamada de
sistema, na realidade, é chamada uma rotina da biblioteca.
> sinais
­ um sinal permite que um processo
seja avisado da ocorrência de eventos
síncronos e assíncronos. 
Uma System Call (chamada de sistema) é usado pela aplicação (usuário) programas para solicitação de serviços do sistema operacional. Um sistema operacional pode acessar o
hardware de um sistema diretamente, mas um programa do usuário não tem acesso direto ao hardware. Isto é feito para que o kernel possa manter o sistema seguro de
programas de usuário mal-intencionado. Mas, muitas vezes, um programa do usuário requer algumas informações do hardware (por exemplo, de uma câmera web para mostrarlhe a imagem), mas não pode obter as informações diretamente. Assim, solicita ao sistema operacional para

Fornecer-lhe a solicitação. Esta solicitação é feita usando uma chamada de sistema adequada. A chamada de sistema executa no modo kernel. Cada chamada de sistema tem um
número associado a ele. Este número é passado para o kernel e é assim que o kernel sabe qual a System Call foi feita. Quando um programa de usuário emite uma chamada de
sistema, na realidade, é chamada uma rotina da biblioteca.
> estruturas de dados (processo)
­ estutura do processo
­ área do usuário  
> gerência do processador
­ dois tipos de escalonamento:
circular com prioridade
escalonamento por prioridade
­ processos tem prioridade entre
0 e 127
­ quanto menor o valor, maior a 
prioridade;
> gerência de memória
­ paginação por demanda;
­ paginação com swapping;
­ endereçamento em três
segmentos:
texto – dados ­ pilha
> sistema de arquivos
­ primeiro componente a ser
desenvolvido no Unix;
­ um arquivo é simplesmente uma
sequência de bytes sem significado
para o SO.
­ todos os diretórios contém os nomes
de arquivos ponto(.) e dois pontos
(..) que correspondem,
respectivamente, ao próprio
diretório e ao seu pai.  
> sistema de arquivos
­ três categorias de usuário;
user (dono)
group 
others (sem grupo)
root (admin)
> sistema de arquivos
­ No Unix não existe dependência
entre a estrutura lógica do sistema
de arquivos e o local
onde os arquivos estão fisicamente
armazenados.
> sistema de arquivos
­ Existem padrões para a
implementação de sistemas de arquivos
remotos, como:
Network File System(NFS)
Remote File System(RFS)
Andrew File System(AFS)
"Se você tem uma maçã e eu tenho uma maçã, e nós
trocamos as maçãs, então você e eu ainda teremos uma
maçã. Mas se você tem uma idéia e eu tenho uma idéia, e
nós trocamos essas idéias, então cada um de nós terá duas
idéias." George Bernard Shaw
Unix - Sistemas Operacionais
Unix - Sistemas Operacionais

Unix - Sistemas Operacionais