UNIX. - ppt carregar
PublicouMartim Monico Alterado mais de 4 anos atrás
Apresentação em tema: "UNIX."— Transcrição da apresentação:
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
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."
"Programação de Periféricos"
Universidade Federal Fluminense Escola de Engenharia Departamento de Engenharia de Telecomunicações Sistemas de Computação para Telecomunicações Autores: