Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sistemas Operacionais 2 (Prova 1 (Linux (Gerência de Arquivos Cap.10.6 pg…
Sistemas Operacionais 2
Prova 1
Linux
Gerência de Processos
Cap.10.3 pg.454
fork()
Cria uma cópia do processo pai.
Retorna 0 para o filho e o
PID
do filho para o pai
Gera uma duplicata do processo original, incluindo todos os descritores de arquivos, registradores e etc.
Cada processo tem sua própria memória privada
Arquivos abertos são compartilhados
Quando um filho termina, o pai recebe o PID dele.
Comunicação entre processos
pipes
É um canal entre dois processos que permite que um deles escreva um fluxo de bytes para o outro ler
A saída padrão do primeiro processo é conectada à entrada padrão do segundo processo.
Quando o primeiro escrever, os dados irão diretamente para o segundo
Se o pipe satura, o sistema para a execução do primeiro até que o segundo remova algum dado do pipe.
sinais
É uma forma de se comunicar através de interrupções no sistema
Ao receber o sinal, as opções são ignorar, capturá-lo ou deixar o sinal matar o processo.
Se o processo decidir capturar sinais, ele deve definir um procedimento de tratamento de sinais.
Um processo pode enviar sinais apenas para membros de seu grupo (pais e ancestrais, irmãos, filhos e descendentes).
Também é possível enviar um sinal para todos os membros do grupo em uma só chamada ao sistema.
Gerência de Arquivos
Cap.10.6 pg.480
Arquivos
Sequencia de nenhum ou mais bytes contendo alguma informação
Nomes
Caminho Absoluto
Especifica como obter o arquivo a partir do diretório raíz
Caminho Relativo
Se referem ao diretório de trabalho (atual)
Geralmente possuem um
nome
, o caracter
ponto
e uma
extensão
Arquivos especiais de caracteres
Usados para modelar os dispositivos E/S seriais, como teclados e impressoras
Arquivos de Blocos
Podem ser usados para leitura e escrita em partições do disco em modo bruto sem considerar o sistema de arquivos
Diretórios
São armazenados como arquivos e geralmente são tratados como arquivos
O diretório
raíz
é chamado
/
Pode conter subdiretórios
O caracter
/
também é usado para separar nomes de diretórios
Links
(ligação)
Cria uma entrada no diretório atual referenciando um outro arquivo.
pg.481
Locking
(travamento)
pg.482
Travas Compartilhadas
Se uma parte de determinado arquivo já possui uma trava compartilhada, é permitida uma segunda tentativa de colocar nele outra trava compartilhada, mas uma tentativa de colocar uma trava exclusiva não é aceita.
Travas exclusivas
Se uma porção de arquivo contém uma trava exclusiva, todas as tentativas seguintes para travar qualquer parte daquela porção falharão até que a trava seja liberada
Podem ser pequenas (bytes) ou grandes (arquivos)
O mecanismo de trava requer que o chamador especifique
o arquivo
a ser acessado, o
byte inicial
e o
n° de bytes
seguintes,
Se a operação for bem-sucedida, o sistema cria uma entrada na tabela e anota que os bytes em questão estão impedidos de serem acessados por outros processos.
Chamadas ao sistema
pg.484
creat()
Cria um novo arquivo
Abre o arquivo para escrita
Retorna um pequeno número inteiro não negativo chamado
descritor de arquivo
open()
Abre um arquivo, especificando qual o nome do arquivo e como ele deve ser aberto (leitura, escrita, ambos)
Retorna o
descritor de arquivo
Descritor de arquivo
Quando o programa inicia sua execução de modo padrão:
0 = entrada padrão
1 = saída padrão
2 = erro padrão
read() e write()
Possuem 3 parâmetros:
descritor de arquivo
= Quais arquivos abertos devem ser lidos ou escritos
endereço de buffer
= Informa onde colocar ou obter o dado
contador
= Informa quantos bytes transferir
pipe |
É utilizada para criar pipelines no shell.
Essa chamada cria um tipo de pseudoarquivo, que armazena temporariamente os dados entre os componentes do pipeline e retorna os descritores de arquivo tanto para leitura quanto para escrita no buffer.
Em um pipeline como
sort <in | head -30
, o shell ajusta o descritor 1 (saída padrão) no processo
sort
para escrita no pipe e o descritor 0 (entrada padrão) no processo head para leitura no pipe
(Redirecionamento)
Implementação do Sistema de Arquivos
pg.486
VFS (virtual file system)
Define um conjunto de abstrações básicas do sistema de arquivos e as operações que são permitidas nessas abstrações
Estruturas
superbloco
Contém as informações críticas sobre a organização do sistema de arquivos.
A destruição do superbloco deixará o sistema de arquivos inacessível.
Possui uma estrutura correspondente mantida no disco físico onde o sistema de arquivos reside
i-node
Descreve exatamente um arquivo.
No Linux, os diretórios e dispositivos também são representados como arquivos e, por isso, eles também possuem i-nodes.
Possui uma estrutura correspondente mantida no disco físico onde o sistema de arquivos reside
dentry
Representa uma entrada de diretório.
Essa estrutura é criada dinamicamente pelo sistema de arquivos
arquivo
É uma representação na memória de um arquivo aberto.
É criada em resposta à chamada de sistema
open
ext2
Grupo de Blocos
Superbloco
Contém informações sobre o sistema de arquivos (número de i-nodes, de blocos do disco e o início da lista de blocos livres)
Descritor de grupo
Contém informações sobre a localização dos mapas de bits, o número de blocos livres e o número dos diretórios no grupo
Mapas de bits do bloco
Controlam os blocos livres
Mapas de bits do i-node
Controlam os i-nodes livres
i-nodes
Cada i-node ocupa 128 bytes e descreve exatamente um arquivo
Blocos de dados
É onde estão armazenados todos os arquivos e diretórios