1 / 32

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. Visão do usuário. Sistema de arquivos Hierárquico Criação / destruição de arquivos

Download Presentation

UNIX

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  14. i-node na Memória • Estado do i-node • 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 25 ctc jn Direitos de acesso pass im usr 12 134

  18. Conversão de um caminho de acesso em um i-node (cont.) Bloco 256 (artigo) I-node 13 (artigo) I-node 25 pum 5 prop prop mpi 11 direitos direitos artigo 13 tipo tipo aulas 27 bloco 0 256 prog 89 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 0 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(); fork(); printf(“Mensagem\n”); }

More Related