Upload
nguyennga
View
217
Download
0
Embed Size (px)
Citation preview
Sistemas [email protected]
Entrada e saída
● Introdução● Uma das principais funções dos SOs é controlar os
dispositivos de E/S ligados ao computador● O SO se comunica de fato com cada dispositivo, e
oferece uma interface bem mais simples para os programadores– Desta forma podemos utilizar o mesmo código para ler
um arquivo de um disco rígido, DVD, pen-drive etc. Já para o SO, estas ações são completamente diferentes
Sistemas [email protected]
Entrada e saída
● Introdução● O código referente a E/S representa a maior parte
do sistema operacional– Nela é que encontramos os conhecidos “drives”, que
muitas vezes são desenvolvidos pelo fabricante do dispositivo, e não do SO
– Os drives podem ser inseridos e removidos do SO dinamicamente, e são sua maior fonte de instabilidade
● Logicamente, de forma semelhante a gerência de memória, a E/S engloba o funcionamento de hardware e software
Sistemas [email protected]
Entrada e saída
● Dispositivos de E/S● A grosso modo, os dispositivos de E/S podem ser
divididos em duas grandes classes– Dispositivos de bloco: armazenam a informação em
blocos de tamanho fixo, que podem ser endereçados● As operações de E/S são na verdade a leitura ou
escrita de um ou mais blocos (que possuem um “endereço”)
● Exemplos: discos, CDs, cartões de memória etc
Sistemas [email protected]
Entrada e saída
● Dispositivos de E/S
– Dispositivos de caracter: recebem ou enviam um fluxo contínuo de caracteres durante o seu funcionamento
● Uma grande diferença é que os dados que chegam ou saem destes dispositivos não é “endereçável”
● Exemplos: teclados, mouses, impressoras, placas de rede etc
Sistemas [email protected]
Entrada e saída
● Dispositivos de E/S● Esta classificação não é perfeita existindo
dispositivos (como o relógio do computador) que não se enquadram em nenhuma das classes– Contudo continua sendo a mais aceita
● O software (driver) que controla cada dispositivo deve lidar com todas as suas particularidades. Um exemplo é o volume de dados gerado, que pode ir de poucos bytes (ex: teclado) até centenas de Megabytes (ex: placas de rede) por segundo
Sistemas [email protected]
Entrada e saída
● Dispositivos de E/S● Em diversas arquiteturas de computadores é
comum a existência de “controladores” de dispositivos (IDE, SATA, USB etc)– Isto possibilita aos fabricantes de SOs (pelo menos na
teoria), que eles tenham que escrever drivers apenas para o controlador e não para cada dispositivo
– Por exemplo, o SO precisa ter apenas o driver para o controlador SATA da placa mãe (algumas dezenas de modelos), e não para cada disco rígido existente (alguns milhares de modelos)
Sistemas [email protected]
Entrada e saída
● E/S mapeada em memória● Cada controlador ou dispositivo de E/S possui
– Um conjunto de registradores que controlam seu funcionamento
● “By writing into these registers, the operating system can command the device to deliver data, accept data, switch itself on or off, or otherwise perform some action. By reading from these registers, the operating system can learn what the device's state is, whether it is prepared to accept a new command, and so on.”
– E opcionalmente um buffer de dados no qual o sistema operacional pode ler ou escrever realizando a E/S em si
Sistemas [email protected]
Entrada e saída
● E/S mapeada em memória● A E/S mapeada em memória “mapeia” os
registradores e buffers dos dispositivos, de forma que eles podem ser lidos e escritos como se fossem parte da memória RAM
● A arquitetura “IBM-PC” sempre utilizou esta estratégia de E/S– Portas de E/S (registratores): 0 a 64K– Buffers de E/S: 640K a 1M– Na prática, estes valores podem variar um pouco
Sistemas [email protected]
Entrada e saída
● E/S mapeada em memória● Desta forma, na teoria, tudo que um driver de
dispositivo que utiliza E/S mapeada precisa fazer, é ler e escrever valores nas regiões de memória que representam seus registradores e buffer de E/S – Na prática eles têm que se lidar com uma série de outras
coisas, como interrupções de hardware, temporizadores, latências, erros e sua correção, gerenciamento do uso de energia etc etc etc
Sistemas [email protected]
Entrada e saída
● E/S mapeada em memória● Na arquitetura “IBM-PC” existe um dispositivo na
placa mãe, chamado de PCI Bridge, por onde passam todas as solicitações de acesso à memoria– É a PCI Bridge que irá “direcionar” os acessos para o
local correto que pode ser a memória RAM real, registradores ou buffers dos dispositivos de E/S
Sistemas [email protected]
Entrada e saída
● E/S mapeada em memória● Computadores Pentium e posteriores
Sistemas [email protected]
Entrada e saída
● E/S mapeada em memória● A unidade de gerenciamento de memória,
juntamente com a PCI bridge, impede o acesso às regiões de memória utilizadas por registradores e buffers de E/S aos processos de usuários– Desta forma dispositivos só podem ser acessados pelo
próprio SO, mais especificamente pelo seu driver
Sistemas [email protected]
Entrada e saída
● Acesso direto a memória (DMA)● Fazer com que a CPU seja a responsável por
requisitar todas as operações de E/S pode gerar um grande desperdício de tempo
● Quase todas as arquiteturas modernas possuem um dispositivo de hardware, conhecido como controlador de DMA, que funciona como segue
1. CPU “programa” o controlador de DMA informando o que deve ser transferido e para onde
2. O controlador de DMA solicita a leitura dos dados ao dispositivo
Sistemas [email protected]
Entrada e saída
● Acesso direto a memória (DMA)3. A medida que os dados são lidos, eles são copiados para uma região predeterminada da memória
4. Ao concluir a leitura o dispositivo envia uma interrupção ao controlador de DMA, que é repassada para a CPU
Sistemas [email protected]
Entrada e saída
● Acesso direto a memória (DMA)● Durante toda a operação de E/S por meio de DMA
a CPU fica ocupada realizando outras atividades● Controladores de DMA utilizados na prática
permitem várias operações de E/S ao mesmo tempo, bem como a transferência de dados diretamente entre dois dispositivos (e não apenas entre um dispositivo e a memória)
Sistemas [email protected]
Entrada e saída
● Interrupções● Em computadores IBM-PC sempre que um
dispositivo de E/S finaliza uma leitura ou escrita ele gera uma “interrupção”– Envio de um sinal pelo barramento da placa mãe
● Este sinal é detectado por um dispositivo da placa mãe chamado de “tratador de interrupções”– O “tratador de interrupções” é que repassa a informação
de que uma interrupção ocorreu para a CPU
Sistemas [email protected]
Entrada e saída
● Interrupções● Quando toma conhecimento da ocorrência de uma
interrupção, a CPU para o que estava fazendo e passa a executar uma “rotina de tratamento” da interrupção– Um trecho do código do driver do dispositivo