Sistemas operacionais
48 pág.

Sistemas operacionais


DisciplinaSistemas Operacionais I7.661 materiais168.564 seguidores
Pré-visualização17 páginas
ambos, de forma a evitar problemas.
Impasses (Deadlock)
Como dito anteriormente, alguns dispositivos devem ser dedicados a um usuário até que este termine sua tarefa, não
podendo ser interrompido para atender a solicitação de outro processo. Quando dois processos alocam recursos para
si de forma que nenhum dois possa realizar a tarefa, mas também nenhum dos dois disponibilizam estes recursos
antes de realizar a tarefa estes processos encontram-se em um impasse (deadlock) e permaneceram ali até que um
fator externo os retire dessa situação. O princípio básico do impasse é descrito formalmente: Um conjunto de
processos está em um impasse se cada processo do conjunto está esperando um evento que somente outro processo
do conjunto pode causar. Como todos os processo estão esperando, nenhum deles jamais causará qualquer dos
eventos que poderiam acordar qualquer dos outros membros do conjunto e todos os processos continuam a esperar
eternamente.
Dispositivos de Entrada e Saída
Dispositivos de entrada e saída também chamados de dispositivos de I/O e são classificados em três tipos: Caractere,
Bloco, Pseudo-dispositivos.
Essa classificação não é 100% abrangente, uma vez que relógios (temporizadores) em hardware não podem ser
classificados em nenhum destes tipos.
Tais dispositivos se interagem com o SO através de interrupções que podem ser tratadas pelo proprio SO para que
seus dados de I/O sejam encaminhadas corretamente.
Nem todos os dispositivos de E/S se enquadram nessas duas categorias, por exemplo o relógio que apenas gera sinais
de interrupção. Tal dispositivo trabalha em uma ampla variação de velocidade, o que impõe uma considerável
pressão sobre o software, que deve trabalhar bem diante das mais diferentes ordens de magnitude de velocidade.
Gerência de dispositivos de entrada e saída 18
Dispositivos de Caractere
Os conhecidos dispositivos do tipo dispositivos de caractere são assim chamados por terem sua comunicação feita
através do envio e recebimento de um fluxo de caracteres. São usados, muitas vezes, para comunicação com
dispositivos de interface serial. Geralmente as implementações desse tipo priorizam a eficiência da comunicação em
vez do seu volume, neste sentido, é feita de forma não "bufferizada", sendo assim cada caracter é lido/escrito no
dispositivo imediatamente [necessita citação]. A exemplo de dispositivos de caracteres que priorizam a comunicação
e não necessitam de buffer temos o teclado e o mouse.A exemplo de dispositivos de caracteres que já priorizam o
volume ao invés da comunicação temos a impressora, devido a quantidade de dados que chega ser bem maior que
sua velocidade de impressão, logo possui um buffer de impressão.
Dispositivo de caracteres: É aquele que envia/recebe um fluxo de caracteres, sem considerar qualquer estrutura de
blocos, eles não são endereçáveis e não dispõe de qualquer operação de posicionamento. Impressoras e mouses são
exemplos desses dispositivos.
Dispositivos de Bloco
Os dispositivos do tipo dispositivos de bloco são similares aos dispositivos do tipo caractere, porém com uma
diferença: O modo de transmissão dos dados, que é feita na forma de blocos. São dispositivos que a comunicação é
feita por meio de blocos de dados como em HD's, drivers de CD-ROM, flash drivers e dispositivos de
armazenamento em geral.
Outra grande diferença é que os dispositivos de bloco em geral utilizam operações de entrada/saídas bufferizadas, no
sentido de otimizar o desempenho da transferência de dados. O Sistema Operacional aloca um buffer em um tipo de
memória para transferir blocos para cada processo de Entrada e Saída (E/S). Quando um processo envia/requisita
dados para/de um dispositivo, o buffer deve ser preenchido para concluir a operação de E/S. Ao encher, o buffer
completo é transferido e esvaziado para que seja liberado para uma nova operação.
Dispositivo de blocos é aquele que armazena informação em bloco de tamanho fixo, cada um com seu próprio
endereço. O tamanho dos blocos normalmente variam de 512 bytes a 32 K bytes. A propriedade essencial de um
dispositivo de blocos é que cada bloco pode ser lido/escrito independente dos outros. Discos, são exemplos desses
dispositivos.
Pseudo-Dispositivos
Em sistemas do tipo UNIX, arquivos de dispositivo especiais podem não possuir um dispositivo físico
correspondente, estes são chamados de "pseudo-dispositivos".
Ex: /dev/null (recebe dados a serem descartados, como uma 'lixeira') , /dev/random (gera números aleatórios) ,
/dev/zero (gera valores com valor 'zero', útil para criar arquivos preenchidos com esse valor).
Interrupção
Pedido de Interrupção (IRQ)
O Sistema Operacional (SO) chaveia entre os aplicativos ativos para que o usuário tenha a sensação de que estes
estão executando em paralelo. O SO permite que um aplicativo utilize o processador durante um determinado
período de tempo e então permite que outra aplicação o utilize. Como o chaveamento é feito de uma forma muito
rápida temos a impressão de que os aplicativos estão sendo executados ao mesmo tempo.
Um pedido de interrupção (abreviação IRQ (em inglês)) é a forma pela qual componentes de hardware requisitam
tempo computacional da CPU. Um IRQ é a sinalização de um pedido de interrupção de hardware.
Por exemplo: caracteres digitados no teclado, operações de leitura sobre o HD, dados recebidos pelo modem ou
mesmo movimentos do mouse devem ser executados mesmo que a máquina esteja processando alguma tarefa.
Gerência de dispositivos de entrada e saída 19
Dessa forma IRQ´s são canais de comunicação com o processador. Ao receber um pedido através de algum destes
canais, o processador percebe a solicitação de interrompimento de um dispositivo.
Quando um programa de usuário emite uma chamada ao sistema, esta é encaminhada ao driver apropriado. Para
evitar que a CPU fique ocupada interrogando se dispositivo terminou a operação de E/S (espera ociosa), o driver
pede ao dispositivo que lhe sinalize quando isso ocorrer. Dessa forma, o Sistema Operacional poderá executar outras
tarefas enquanto o programa que o chamou pedindo o serviço se encontra bloqueado. Ao final da operação, o
controlador do dispositivo gera uma interrupção, ao chip controlador de interrupção, para sinalizar à CPU.
Caso nenhuma outra interrupção esteja pendente ou em tratamento e nenhum outro dispositivo fez uma requisição de
maior prioridade no mesmo momento, a interrupção é tratada imediatamente. Caso contrário, ela é ignorada, e o
dispositivo continuará emitindo sinal de interrupção.
Após executar uma instrução, a CPU verifica as linhas de interrupções para saber se alguma interrupção foi
sinalizada
Caso tenha sido sinalizada uma interrupção, o hardware grava os registradores da CPU na pilha do programa que
estava em execução e carrega o contador de programa com o endereço da rotina referente à interrupção sinalizada
Interrupções podem ser geradas por hardware ou por software. No caso do hardware, pelo dispositivos periféricos ou
pelo relógio (timer). As interrupções geradas por software são conhecidas como system calls (chamadas ao sistema)
ou trap (armadilha). A diferença primordial entre as interrupções geradas por software e as geradas por hardware,
está no fato de que, conhecendo um programa e seus dados, é possível prever quando as interrupções de software
irão acontecer - o que não é possível no caso das interrupções de hardware.
Interrupções revisitadas
Em hardware, as interrupções trabalham da seguinte forma: quando um dispositivo de E/S finaliza seu trabalho ele
gera uma interrupção, enviando um sinal pela linha do barramento à qual está associado. O sinal é detectado pelo
chip controlador de interrupção localizado na placa mãe, o qual decide o que fazer. Caso esse chip esteja em uso por
outro sinal de interrupção ou seja enviado para esse chip outro sinal de maior prioridade, o sinal é posto em uma fila
para quando o chip ficar ocioso ele tratar esse sinal.
O hardware sempre