Sistemas Operacionais
Sistemas de Entrada/Saída
Princípios de Software
Sistema de Entrada/Saída
Ø Princípios de Software
ü Tratadores (Manipuladores) de Interrupções
ü Acionadores de Dispositivos (Device Drivers)
ü Subsistema de E/S
ü Operações de E/S
Ø Ciclo de Operações em uma Requisição de E/S
Ø Desempenho dos Sistemas de E/S
Eduardo Nicola F. Zagari
2
Sistemas Operacionais -Entrada e Saída
1
Princípios de Software
Ø Conceito chave:
o software de E/S deve buscar independência do dispositivo
Ø Características/objetivos importantes:
ü Uniformidade de nome para os dispositivos (strings/inteiros)
ü Manipulação de erros (devem ser feitas o mais próximo possível d o
hardware)
ü Transferências síncronas (bloqueantes) e assíncronas
(manipuladas por interrupção)
ü Dispositivos compartilhados ou dedicados (possibilidade de
deadlock)
Eduardo Nicola F. Zagari
3
Sistemas Operacionais -Entrada e Saída
Visão Geral
Processos
Hardware
Software
Operações de E/S
Eduardo Nicola F. Zagari
Independente do
dispositivo
Subsistema de E/S
Device Drivers
Manipuladores
de Interrupção
Controladores
Dependente do
dispositivo
Dispositivos
4
Sistemas Operacionais -Entrada e Saída
2
Princípios de Software:
Tratadores de Interrupções
Ø São eventos “complicados” de se tratar. Assim, devem ser
tratadas por uma pequena parte (parte específica) do SO
ü Uma forma de tratá-las isoladamente é bloquear os processos que
estiverem aguardando operações de E/S até uma interrupção de
“operação completada”
ü A rotina de tratamento desta interrupção libera o processo
bloqueado (UP em um semáforo, SIGNAL em um monitor ou envio
de uma mensagem)
Eduardo Nicola F. Zagari
5
Sistemas Operacionais -Entrada e Saída
Princípios de Software:
Acionadores de Dispositivos
Ø Todo código dependente do dispositivo se concentra do
acionador (driver) do dispositivo
Ø Cada acionador manipula um dispositivo ou uma classe de
dispositivos semelhantes
ü Acionadores para:
4 fita magnética,
4 rede,
4 terminais etc
Ø Função:
receber comandos gerais (abstratos) sobre acessos aos dispositivos
e traduzi-los para comandos específicos (executados pelos controladores)
Eduardo Nicola F. Zagari
6
Sistemas Operacionais -Entrada e Saída
3
Princípios de Software:
Acionadores de Dispositivos
Ø O acionador é a parte do SO que reconhece o hardware, ou
seja, sabe quantos registradores um controlador possui, para
que eles servem, como são utilizados e quais são seus
comandos.
Ø Devido a dependência entre os acionadores e as chamadas de
sistema (system calls), os fabricantes desenvolvem, para um
mesmo dispositivo, diferentes acionadores, um para cada SO.
ü Dispositivo adicionado ⇒ acionador deve ser acoplado ao kernel do
SO
Eduardo Nicola F. Zagari
7
Sistemas Operacionais -Entrada e Saída
Princípios de Software:
Acionadores de Dispositivos
Ø Exemplo: leitura de um dado (bloco) em um disco
disco
System Call
E/S
Ler bloco n
Ler bloco no
Acionador
Controlador
de disco Disco X, Cilindro Y, de disco
Trilha W, Setor Z
disco
disco
Ø Se acionador estiver desocupado, a requisição é aceita, caso
contrário, ele a põe em uma fila de requisições pendentes
Ø Transcreve a requisição abstrata em ações concretas
(comandos). Por exemplo, para um disk driver:
ü informar onde o bloco se encontra no disco
ü verificar se o motor do driver está girando
ü determinar se o braço está no cilindro apropriado etc
Eduardo Nicola F. Zagari
8
Sistemas Operacionais -Entrada e Saída
4
Princípios de Software:
Acionadores de Dispositivos
Ø Decididas quais operações realizar e em que ordem, o acionador
escreve os comandos nos registradores do controlador
4 Alguns controladores aceitam apenas um comando por vez, outros
aceitam uma lista deles.
Ø Após o(s) comando(s) ter(em) sido(s) emitido(s), podem ocorrer
duas situações
4 o acionador deve se bloquear até que a operação seja completada
(requisição bloqueante)
– no caso da operação ser lenta (envolvendo movimentos
mecânicos, como no nosso exemplo)
4 acionador deve aguardar, no caso de operações rápidas
– por exemplo, o deslocamento da tela em terminais requer
apenas a escrita de um poucos bytes nos registradores do
controlador (microssegundos)
Eduardo Nicola F. Zagari
9
Sistemas Operacionais -Entrada e Saída
Princípios de Software:
Acionadores de Dispositivos
Ø Se for o caso, uma vez completada a operação, o controlador
gera uma interrupção que ativa o acionador
Ø O acionador verifica a ocorrência de erros
Ø Se tudo estiver correto, ele passa as informações (dados lidos)
para a camada superior (Subsistema de E/S)
Ø Finalmente, ele retorna as informações de situação de erro
(status)
Ø Caso haja, pega a próxima requisição; caso contrário, aguarda
pela próxima...
Eduardo Nicola F. Zagari
10
Sistemas Operacionais -Entrada e Saída
5
Princípios de Software:
Subsistema de E/S
Ø Responsável por realizar as funções comuns a todos os
dispositivos (gerência dos dispositivos). Conhecido com
Software de E/S Independente de Dispositivo
Ø Funções:
ü Prover uma interface uniforme para as operações de E/S (software
do usuário)
ü Fazer o mapeamento simbólico dos nomes dos dispositivos para os
seus respectivos acionadores (No Unix, p. ex., cada nome de
dispositivo é mapeado em um nó-i de um arquivo especial com
informações do acionador)
ü Pode haver interesse em se prevenir que usuários acessem
dispositivos que não estão autorizados. Isto está intimamen-te
relacionado com a identificação (p. ex., bits rwx no Unix)
Eduardo Nicola F. Zagari
11
Sistemas Operacionais -Entrada e Saída
Princípios de Software:
Subsistema de E/S
ü Prover um tamanho de bloco uniforme para as camadas superiores
independente do dispositivo (p. ex., tratando vários setores como
um único bloco lógico)
ü Buferização
Buferização:
4 para dispositivos de blocos: hardware transfere blocos inteiros,
mas processos do usuário manipulam unidades arbitrárias
4 para dispositivos de caracteres: coletar caracteres e submetê-
los em conjunto para os dispositivos
4 Para diminuir efeitos de diferença de velocidade entre
dispositivos durante uma cópia
4 Para suporte à “semântica de cópia” (versão que vale é a do
instante da chamada)
Eduardo Nicola F. Zagari
12
Sistemas Operacionais -Entrada e Saída
6
Princípios de Software:
Subsistema de E/S
ü Pode prover a implementação do algoritmo de localização de
blocos livres nos dispositivos de bloco, uma vez que ele é
independente do dispositivo
ü Controlar a alocação e liberação dos dispositivos compartilhados ou
dedicados de acordo com sua disponibilidade
ü Realizar a ordenação das operações de E/S,
E/S com o objetivo de
melhorar o desempenho global do sistema (ex., ordenação de
operações de leitura em blocos espalhados de um disco)
ü Gerenciamento de erros persistentes que são reportados pelos
acionadores. Exemplo: Bloco ruim
4 na área de usuário ⇒ informar erro para o mesmo
4 em área crítica ⇒ solicitar intervenção do administrador
Eduardo Nicola F. Zagari
13
Sistemas Operacionais -Entrada e Saída
Princípios de Software:
Operações de E/S
Ø É o Software no Nível do Usuário
Ø A maior parte do software de E/S está embutida no SO
(subsistema de E/S)
Ø Uma pequena porção consiste em rotinas de bibliotecas, ligadas
junto com os programas de usuários (ou mesmo em programas
inteiros rodando fora do núcleo)
Ø Chamadas de sistema, incluindo as de E/S, são normalmente
feitas por procedimentos de bibliotecas, como as oferecidas
pelas linguagens de programação C, Pascal etc
Eduardo Nicola F. Zagari
14
Sistemas Operacionais -Entrada e Saída
7
Princípios de Software:
Operações de E/S
ü Por isto que os comandos de E/S nestas linguagens independem
do ambiente operacional onde se está trabalhando.
4 Por exemplo:
bytes_lidos = fread(buffer, tam_item, n_itens, arquivo);
– o procedimento fread será ligado com o programa (fica
contido no código binário presente no espaço do usuário)
– antes de efetuar a chamada de sistema, este procedimento
coloca seus parâmetros nas posições de memória
apropriadas
Eduardo Nicola F. Zagari
15
Sistemas Operacionais -Entrada e Saída
Princípios de Software:
Operações de E/S
4 Outro exemplo:
– formatação de entradas e saídas são feitas por
procedimentos da biblioteca de E/S padrão:
» printf,
» gets etc
Estas porções do código, que rodam como parte dos programas
do usuário, são parte do Sistema de E/S
Eduardo Nicola F. Zagari
16
Sistemas Operacionais -Entrada e Saída
8
Princípios de Software:
Operações de E/S
Ø Nem todo software de E/S consiste de procedimentos de
bibliotecas
ü Por exemplo, Sistemas de SPOOLING (Simultaneous Peripheral
Operation On-Line)
ü Spooling: modo de negociação com os dispositivos dedicados de
E/S em sistemas multiprogramados
4 Exemplo: impressora
– Processo abre o arquivo especial da impressora
– Mantém arquivo aberto por horas, sem usá-lo
– Ninguém mais imprime nada...
Eduardo Nicola F. Zagari
17
Sistemas Operacionais -Entrada e Saída
Princípios de Software:
Operações de E/S
4 Técnica de Spooling
– Cria-se um processo especial, denominado daemon
(servidor), e um diretório especial, chamado diretório de
spool (spooling directory)
– Processo envia arquivo para daemon (isto é, copia o arquivo
no diretório de spool)
– Daemon, que é o único processo que tem permissão para
usar o arquivo especial associado à impressora, transfere os
arquivos do diretório de spool para impressora, um a um
4 Spooling também é usado em outras situações (p. ex., em
transferência de mensagens de correio eletrônico)
Eduardo Nicola F. Zagari
18
Sistemas Operacionais -Entrada e Saída
9
Ciclo de Operações
em uma Requisição de E/S
Eduardo Nicola F. Zagari
19
Sistemas Operacionais -Entrada e Saída
Desempenho
Ø Desempenho do Sistema de E/S afeta diretamente o
desempenho global do sistema:
ü Uso da CPU na execução do código do acionador do dispositivo
ü Mudanças de contexto devido às interrupções
ü Sobrecarga do barramento da memória durante as cópias de dados
Ø Um exemplo: o “custo” do tráfego de um caracter pela rede
Eduardo Nicola F. Zagari
20
Sistemas Operacionais -Entrada e Saída
10
Desempenho
Eduardo Nicola F. Zagari
21
Sistemas Operacionais -Entrada e Saída
Desempenho
Ø Melhorando o desempenho:
ü Reduzir o número de mudanças de contexto
ü Reduzir o número de cópias de dados entre controlador, núcleo e
processo
ü Reduzir a freqüência de interrupções usando grandes
transferências, controladores inteligentes e polling (quando viável)
ü Usar DMA para aumentar o “paralelismo”
ü Usar CPU, memória, barramento e dispositivos de E/S de forma
balanceada, para evitar gargalos
Eduardo Nicola F. Zagari
22
Sistemas Operacionais -Entrada e Saída
11
Download

Sistema de Entrada/Saída - Programação Concorrente