A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UNIX.

Apresentações semelhantes


Apresentação em tema: "UNIX."— Transcrição da apresentação:

1 UNIX

2 Unix Shell núcleo hardware

3 Conteúdo 1 - Histórico 2 - Visão do Usuário 3 - Serviços do sistema
4 - Arquitetura do sistema Entidades: Arquivos Processos

4 Visão do usuário Sistema de arquivos Hierárquico
Criação / destruição de arquivos Crescimento dinâmico de arquivos Proteção

5 Visão do usuário (cont.)
Ambiente de execução Programa: arquivo executável Processo: programa em execução Processos solicitam os serviços do núcleo com o uso de chamadas de sistema. Ex.: fork, exec, etc.

6 Shell Interface entre o usuário e o sistema Interpretador de comandos
Executa: comandos simples comandos compostos redirecionamento de I/O pipe if then else; for; while; etc;

7 Serviços do Sistema Gerenciar processos; Escalonar;
Alocar / liberar memória; Gerenciar memória secundária; E / S.

8 Arquitetura do Sistema
Programas Biblioteca Nível Usuário Nível Núcleo Interface Sub-sistema de gerência de processos Sub-sistema de arquivos Cache Comunicação Scheduling Carac. Drivers Blocos Ger. Memória Hardware

9 Arquivos

10 Representação Interna dos Arquivos
Fornecida por um i-node; I-node: contém a descrição do arquivo; Cada arquivo contém um i-node; Mais de um nome pode estar associado a um i-node; O sistema gerencia os arquivos com três tabelas: Tabela de arquivos abertos: uma por processo Tabela de arquivos: global Tabela de i-nodes: global

11 Tabelas usadas para acesso aos arquivos
Tab. Arq. Abertos Tab. Arquivos Tab. I-nodes

12 i-nodes Proprietário;
Tipo de arquivo (ordinário, diretório, bloco especial, caracter especial, fifo(pipe)); Permissões de acesso; Datas de acesso (acesso, modificação, modificação de i-node); Número de links; Lista de blocos; Tamanho do arquivo;

13 I-nodes (cont.) Proprietário Grupo Tipo Permissões Acessado Modificado
Tamanho Blocos de dados José Aluno Ordinário RWX R_X R_X 08 July :00 7820 bytes 61,44,85,31,48,92,23,55,30,77 Indireto simples Indireto duplo Indireto triplo

14 i-node na Memória Estado do i-node Número do periférico;
Bloqueado / não bloqueado Processos bloqueados Número do periférico; Número do i-node; Contador de referências;

15 Estrutura do sistema de arquivos
boot super bloco lista i-nodes blocos dados Boot: contém o código de boot; Super bloco: descreve o sistema de arquivos (lista de blocos livres, número de arquivos, tamanho das outras áreas); Lista de i-nodes: configurável pelo administrador, referenciados por um índice.

16 Tamanho dos arquivos 10 blocos diretos (1 K) = 10 K 1 indireto c/ 256 diretos = 256 K 1 duplo indireto c/ 256 diretos = 64 M 1 triplo indireto c/ 256 dupla indireção = 16 G

17 Conversão de um caminho de acesso em um i-node
(/usr/ep/artigo) / I-node 12 bloco 134 proprietário ep ctc jn Direitos de acesso pass im usr 134

18 Conversão de um caminho de acesso em um i-node (cont.)
Bloco 256 (artigo) I-node 13 (artigo) I-node 25 prop pum prop direitos mpi direitos tipo artigo 13 tipo 256 aulas 27 bloco 0 prog bloco 1

19 Chamadas de Sistema open close read write create mkdir cd pipe

20 open fd = open ( nome, modo ); transformar “nome” em i-node
if (ñ existe ou acesso ñ permitido) return (erro); Alocar uma entrada da Tabela de Arquivos Atribuir à Tabela de Arquivos o i-node Inicializar contador de deslocamento Alocar uma entrada na Tabela de AA Atribuir à TAA o índice da Tabela de Arquivos Return( índice da TAA )

21 open (cont.) TAA T-Arquivos T-i-nodes 1 2
1 2 T-Arquivos: - apontador p/ tabela de i-nodes - deslocamento (byte corrente) - direito (leitura / escrita) - contador de referências

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

23 Exemplo de Programa main() { int fds (2); char c ; pipe (fds);
pid = fork () ; if pid != 0 { for ( ; ; ){ c = getchar () ; write (fds (1),&c, sizeof (char))); } else { read ( fds (0), &c, sizeof (char)); printf (“%c\n”, c) ;

24 Processos

25 Gerência de processos fork kill exec exit wait

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

27 Chamada exec Biblioteca de funções
execl(filename, name, arg1, arg2, arg3...) execve(filename, argv, envp)

28 fork fork() Cria uma cópia exata do processo original, incluindo registradores, descritores de arquivos, etc; Cada processo tem seu próprio espaço de endereçamento; Retorna um valor (zero para o filho, o pid do filho para o pai);

29 fork (cont.) Procurar uma entrada livre na tabela de processos;
Alocar memória; Copiar a imagem do pai para o filho; Colocar no descritor o mapa de memória do filho; Fabricar um pid para o filho; Sinalizar ao pai final de operação;

30 Exemplo - fork main() { int pid; pid = fork(); if (pid != 0)
printf(“Processo pai\n”); else printf(“Processo fillho\n”); }

31 Exemplo 2 - exec main() { execl(“/bin/ls”,”ls”,0); }

32 Exemplo 3 - fork main() { int pid; fork(); printf(“Mensagem\n”); }


Carregar ppt "UNIX."

Apresentações semelhantes


Anúncios Google