unix. unix shell núcleo hardware conteúdo 1 - histórico 2 - visão do usuário 3 - serviços do...
TRANSCRIPT
![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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/11.jpg)
•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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc10d497959413d8c458c/html5/thumbnails/32.jpg)
Exemplo 3 - forkExemplo 3 - fork
main() {main() {
int pid;int pid;
fork();fork();
fork();fork();
printf(“Mensagem\n”);printf(“Mensagem\n”);
}}