32
UNIX UNIX

UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Embed Size (px)

Citation preview

Page 1: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

UNIXUNIX

Page 2: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

UnixUnix

Shell

núcleo

hardware

Page 3: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

ConteúdoConteúdo

1 - Histórico1 - Histórico

2 - Visão do Usuário2 - Visão do Usuário

3 - Serviços do sistema3 - Serviços do sistema

4 - Arquitetura do sistema4 - Arquitetura do sistema

Entidades: ArquivosEntidades: Arquivos

ProcessosProcessos

Page 4: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Visão do usuárioVisão do usuário

Sistema de arquivosSistema de arquivos

– HierárquicoHierárquico

– Criação / destruição de arquivosCriação / destruição de arquivos

– Crescimento dinâmico de arquivosCrescimento dinâmico de arquivos

– ProteçãoProteção

Page 5: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Visão do usuário (cont.)Visão do usuário (cont.)

Ambiente de execuçãoAmbiente de execução

– Programa: arquivo executávelPrograma: arquivo executável

– Processo: programa em execuçãoProcesso: programa em execução

– Processos solicitam os serviços do núcleo Processos solicitam os serviços do núcleo com o uso de chamadas de sistema. Ex.: fork, com o uso de chamadas de sistema. Ex.: fork, exec, etc.exec, etc.

Page 6: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

ShellShell

Interface entre o usuário e o sistemaInterface entre o usuário e o sistema Interpretador de comandosInterpretador de comandos Executa:Executa:

– comandos simplescomandos simples

– comandos compostoscomandos compostos

– redirecionamento de I/Oredirecionamento de I/O

– pipepipe

– ifif then else; for; while; then else; for; while;

– etc;etc;

Page 7: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Serviços do SistemaServiços do Sistema

Gerenciar processos;Gerenciar processos; Escalonar;Escalonar; Alocar / liberar memória;Alocar / liberar memória; Gerenciar memória secundária;Gerenciar memória secundária; E / S.E / S.

Page 8: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Arquitetura do SistemaArquitetura do SistemaBiblioteca

Interface

Comunicação

Hardware

Sub-sistema

de gerência

de processos

Sub-sistema de arquivos

Scheduling

Ger. MemóriaDrivers

Cache

Carac. Blocos

Programas

Nível Núcleo

Nível Usuário

Page 9: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Arquivos

Page 10: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Representação Interna dos Arquivos Representação Interna dos Arquivos

Fornecida por um i-node;Fornecida por um i-node; I-node: contém a descrição do arquivo;I-node: contém a descrição do arquivo; Cada arquivo contém um i-node;Cada arquivo contém um i-node; Mais de um nome pode estar associado a um i-Mais de um nome pode estar associado a um i-

node;node; O sistema gerencia os arquivos com três tabelas:O sistema gerencia os arquivos com três tabelas:

– Tabela de arquivos abertos: uma por processoTabela de arquivos abertos: uma por processo– Tabela de arquivos: global Tabela de arquivos: global – Tabela de i-nodes: globalTabela de i-nodes: global

Page 11: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

•Tabelas usadas para acesso aos Tabelas usadas para acesso aos arquivosarquivos

Tab. I-nodesTab. Arq. Abertos Tab. Arquivos

Page 12: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

i-nodesi-nodes

Proprietário;Proprietário; Tipo de arquivo (ordinário, diretório, bloco Tipo de arquivo (ordinário, diretório, bloco

especial, caracter especial, fifo(pipe));especial, caracter especial, fifo(pipe)); Permissões de acesso;Permissões de acesso; Datas de acesso (acesso, modificação, Datas de acesso (acesso, modificação,

modificação de i-node);modificação de i-node); Número de links;Número de links; Lista de blocos;Lista de blocos; Tamanho do arquivo;Tamanho do arquivo;

Page 13: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

I-nodes (cont.)I-nodes (cont.)– ProprietárioProprietário

– GrupoGrupo

– TipoTipo

– PermissõesPermissões

– AcessadoAcessado

– ModificadoModificado

– TamanhoTamanho

– Blocos de dadosBlocos de dados

JoséJosé

AlunoAluno

OrdinárioOrdinário

RWXRWX R_XR_X R_XR_X

08 July 2000 21:0008 July 2000 21:00

08 July 2000 21:0008 July 2000 21:00

7820 bytes7820 bytes

61,44,85,31,48,92,23,55,30,7761,44,85,31,48,92,23,55,30,77

Indireto simplesIndireto simples

Indireto duploIndireto duplo

Indireto triploIndireto triplo

Page 14: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

i-node na Memóriai-node na Memória

Estado do i-nodeEstado do i-node– Bloqueado / não bloqueadoBloqueado / não bloqueado

– Processos bloqueadosProcessos bloqueados

Número do periférico;Número do periférico; Número do i-node;Número do i-node; Contador de referências;Contador de referências;

Page 15: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Estrutura do sistema de arquivosEstrutura do sistema de arquivos

Boot: contém o código de boot;Boot: contém o código de boot; Super bloco: descreve o sistema de Super bloco: descreve o sistema de

arquivos (lista de blocos livres, número de arquivos (lista de blocos livres, número de arquivos, tamanho das outras áreas);arquivos, tamanho das outras áreas);

Lista de i-nodes: configurável pelo Lista de i-nodes: configurável pelo administrador, referenciados por um índice.administrador, referenciados por um índice.

boot super bloco lista i-nodes blocos dados

Page 16: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Tamanho dos arquivosTamanho dos arquivos

10 blocos diretos (1 K) = 10 K10 blocos diretos (1 K) = 10 K 1 indireto c/ 256 diretos = 256 K1 indireto c/ 256 diretos = 256 K 1 duplo indireto c/ 256 diretos = 64 M1 duplo indireto c/ 256 diretos = 64 M 1 triplo indireto c/ 256 dupla indireção = 1 triplo indireto c/ 256 dupla indireção =

16 G16 G

Page 17: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Conversão de um caminho de Conversão de um caminho de acesso em um i-nodeacesso em um i-node

(/usr/ep/artigo)

/

ctc

pass

usr 12

I-node 12proprietário

134

bloco 134

ep 25

jn

im

Direitos de acesso

Page 18: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Conversão de um caminho de Conversão de um caminho de acesso em um i-node (cont.)acesso em um i-node (cont.)

Bloco 256

(artigo) pum 5

mpi 11

artigo 13

aulas 27

prog 89

I-node 25

prop

direitos

tipo

256

I-node 13(artigo)

prop

direitos

tipo

bloco 0

bloco 1

Page 19: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Chamadas de Sistema Chamadas de Sistema

openopen closeclose readread writewrite createcreate mkdirmkdir cdcd pipepipe

Page 20: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

openopen

fd = open ( nome, modo );fd = open ( nome, modo );

transformar “nome” em i-nodetransformar “nome” em i-node

if (ñ existe ou acesso ñ permitido)if (ñ existe ou acesso ñ permitido)

return (erro);return (erro);

Alocar uma entrada da Tabela de ArquivosAlocar uma entrada da Tabela de Arquivos

Atribuir à Tabela de Arquivos o i-nodeAtribuir à Tabela de Arquivos o i-node

Inicializar contador de deslocamentoInicializar contador de deslocamento

Alocar uma entrada na Tabela de AAAlocar uma entrada na Tabela de AA

Atribuir à TAA o índice da Tabela de ArquivosAtribuir à TAA o índice da Tabela de Arquivos

Return( índice da TAA )Return( índice da TAA )

Page 21: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

open (cont.)open (cont.)

TAA T-Arquivos T-i-nodes

012

T-Arquivos: - apontador p/ tabela de i-nodes - deslocamento (byte corrente) - direito (leitura / escrita) - contador de referências

Page 22: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

pipepipe

Alocar um i-nodeAlocar um i-node Alocar um elemento da tabela de arquivos (em Alocar um elemento da tabela de arquivos (em

escrita)escrita) Alocar um elemento da tabela de arquivos (em Alocar um elemento da tabela de arquivos (em

leitura)leitura) Inicializar o contador de referência do i-node em 2Inicializar o contador de referência do i-node em 2 Alocar um par de entradas em TAA (processo)Alocar um par de entradas em TAA (processo) Atribuir os elementos da tabela de arquivosAtribuir os elementos da tabela de arquivos Retornar (elementos da TAA)Retornar (elementos da TAA)

Page 23: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Exemplo de ProgramaExemplo de Programamain() {main() {

int fds (2);int fds (2);

char c ;char c ;

pipe (fds);pipe (fds);

pid = fork () ;pid = fork () ;

if pid != 0 {if pid != 0 {

for ( ; ; ){for ( ; ; ){

c = getchar () ;c = getchar () ;

write (fds (1),&c, sizeof (char)));write (fds (1),&c, sizeof (char)));

}}

else {else {

read ( fds (0), &c, sizeof (char));read ( fds (0), &c, sizeof (char));

printf (“%c\n”, c) ;printf (“%c\n”, c) ;

}}

}}

Page 24: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Processos

Page 25: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Gerência de processosGerência de processos

forkfork killkill execexec exitexit waitwait

Page 26: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

execexec

acessar o arquivoacessar o arquivo verificar se é executávelverificar se é executável alocar memória (código, dados, pilha)alocar memória (código, dados, pilha) efetuar a carga efetuar a carga liberar a região de memória usada liberar a região de memória usada

anteriormenteanteriormente

Page 27: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Chamada execChamada exec

Biblioteca de funçõesBiblioteca de funções

execl(filename, name, arg1, arg2, execl(filename, name, arg1, arg2, arg3...)arg3...)

execve(filename, argv, envp)execve(filename, argv, envp)

Page 28: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

forkfork

fork()fork()– Cria uma cópia exata do processo original, Cria uma cópia exata do processo original,

incluindo registradores, descritores de incluindo registradores, descritores de arquivos, etc;arquivos, etc;

– Cada processo tem seu próprio espaço de Cada processo tem seu próprio espaço de endereçamento;endereçamento;

– Retorna um valor (zero para o filho, o pid Retorna um valor (zero para o filho, o pid do filho para o pai);do filho para o pai);

Page 29: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

fork (cont.)fork (cont.)

Procurar uma entrada livre na tabela de Procurar uma entrada livre na tabela de processos;processos;

Alocar memória;Alocar memória; Copiar a imagem do pai para o filho;Copiar a imagem do pai para o filho; Colocar no descritor o mapa de memória Colocar no descritor o mapa de memória

do filho;do filho; Fabricar um pid para o filho;Fabricar um pid para o filho; Sinalizar ao pai final de operação;Sinalizar ao pai final de operação;

Page 30: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Exemplo - forkExemplo - fork

main() {main() {

int pid;int pid;

pid = fork();pid = fork();

if (pid != 0)if (pid != 0)

printf(“Processo pai\n”);printf(“Processo pai\n”);

elseelse

printf(“Processo fillho\n”);printf(“Processo fillho\n”);

}}

Page 31: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Exemplo 2 - execExemplo 2 - exec

main() main()

{{

execl(“/bin/ls”,”ls”,0);execl(“/bin/ls”,”ls”,0);

}}

Page 32: UNIX. Unix Shell núcleo hardware Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema 4 - Arquitetura do sistema Entidades: Arquivos Processos

Exemplo 3 - forkExemplo 3 - fork

main() {main() {

int pid;int pid;

fork();fork();

fork();fork();

printf(“Mensagem\n”);printf(“Mensagem\n”);

}}