Dispositivos de [Entrada E SaíDa]
-
Upload
sergiosouza -
Category
Technology
-
view
4.408 -
download
5
description
Transcript of Dispositivos de [Entrada E SaíDa]
Sistemas Operacionais Princípios Básicos de software de entrada e saída
TURMA BSI3NA – NOITE
André – Diogo – Leonardo – Sergio – Thiago – Thiago Leonel
1. Princípios básicos de software de entrada e saída.
O subsistema de E/S de um SO é um software complexo que trata a forma de acesso
aos periféricos, sua principal função é padronizar as rotinas de entrada e saída de forma a
reduzir seu processo otimizando o sistema. Devido ao grande número de dispositivos de
entrada e saída disponíveis no mercado, o software de controle de entrada e saída requer uma
implementação onde novos dispositivos possam ser adicionados sem a necessidade de alterar
a interface de programação com o usuário final, tal façanha é possível através de sua estrutura
de organização que possui quatro camadas, como pode ser visto na figura 1.1.
Figura 1.1 - Estrutura do subsistema de E/S
Conforme pôde ser observado, a camada inferior é composta pelo hardware dos
dispositivos de E/S. A interface que ela apresenta à camada imediatamente superior (drivers
de dispositivos) é baseada em UCP e controladores. Em resumo, o hardware interage com os
drivers através das interfaces físicas (paralelas ou seriais) e seus controladores e pelo emprego
de interrupções e DMA1. ¹
1DMA - (Direct Memory Access) - O Acesso Direto à Memória, DMA, permite que outros componentes além do processador, acessem a memória RAM diretamente.
2. Drivers de Dispositivo - (Device Drivers)
Composta por módulos de software a camada de drivers de dispositivos tem como
objetivo fornecer a camada superior uma visão uniforme dos dispositivos, permitindo assim o
acesso a um dispositivo de entrada e saída.
A programação de registradores internos e controladores é realizada nessa camada do
subsistema de E/S, definindo as rotinas de acesso e gerência de um dispositivo, onde cada
dispositivo um requer um driver apropriado.
Para oferecer a camada superior uma ‘visão uniforme’ os dispositivos são
classificados pela unidade de transferência de dados como, orientados a bloco e orientados a
caractere. Um dispositivo orientado a bloco transfere dados entre o periférico e o sistema
por meio de blocos de tamanho fixo, normalmente entre 512 bytes e 32 kbytes.
Já um dispositivo orientado a caractere, transfere seus dados byte a byte, sem necessidade
de considerar qualquer estrutura.
3. E/S independente do dispositivo
Implementa funções e procedimentos a todos os dispositivos de E/S. As principais são:
‣ Escalonamento de E/S: Reordena o acesso á dispositivos de E/S compartilhados por
vários processos, visando a melhora do sistema.
Ex: discos magnéticos.
‣ Denominação: Cada periférico possui um nome lógico para sua identificação,
generalizando as rotinas de acesso.
‣ Buferização: Processo que armazena os dados temporariamente no decorrer de uma
transferência entre camadas do software de E/S.
Ex: Numa transferência de 128Kb será possível transferir de 4Kb em 4Kb.
‣ Cache de dados: Armazena dados frequentemente acessados na memória RAM2, 3com intuito de facilitar e agilizar as requisições do sistema.
‣ Alocação e liberação: Em dispositivos que permitem o acesso de um usuário por vez,
se faz necessário o gerenciamento pelo software de E/S, a fim de evitar acessos
2 RAM - (Random Access Memory) - A memória de acesso aleatório permite tanto a leitura como a gravação e regravação de dados. Após desligamento do computador ela perde seus dados.
concorrentes. É então adotada a técnica de spooling que disponibiliza os pedidos em
uma fila, para que sejam atendidos um a um.
Ex: Fila de impressão.
‣ Direitos de Acesso: Define a forma de acesso aos dispositivos para cada usuário, o
SO deve garantir o acesso de forma correta.
‣ Tratamento de erros: O software de E/S deve informar a camada superior à
ocorrência de erros de uma operação.
4. Entrada e saída a nível de usuário
O usuário lida com dispositivos de entrada e saída realizando chamadas de alto nível
ao software de E/S independente de dispositivo, através de uma interface associada a
bibliotecas de programação de entrada e saída que geralmente são fornecidas pelo fabricante
do compilador de uma linguagem qualquer. Tais bibliotecas se relacionam com o programa
do usuário para compor a aplicação.
5. Dispositivos periféricos típicos
Dentre os vários dispositivos de E/S, seria impossível abordar todos aqui, portanto
descreveremos os comuns e fundamentais ao funcionamento do computador, como: Disco
Rígido, Vídeo, Teclado e Rede, apontando suas peculiaridades pertinentes a entrada e saída de
dados.
6. Discos Rígidos (Hard Disk, HD ou Winchester)
São os dispositivos de armazenamento de dados mais usado nos computadores, Nele, é
possível guardar não só os arquivos, mais também todos os dados do(s) sistema(s) operacional
(is) que estão instalados no computador.
Características e funcionamento dos HDs
Uma das principais características do HD é o armazenamento de grandes quantidades
de dados, diferente da memória RAM que os dados apagam após o desligamento do
computador, no HD os dados ficam armazenados. Fisicamente, um disco rígido pode ser visto
como um composto por dois grandes blocos. O primeiro é um conjunto de discos metálicos
(aço e alumínio) superpostos e dispostos em alturas diferentes com auxílio de um eixo central.
O segundo bloco é uma estrutura mecânica que suporta um conjunto de cabeçotes, um para
cada superfície de disco. Essa estrutura é capaz de realizar movimentos de vai e vem de
maneira que os cabeçotes possam ser deslocados desde a borda do disco até o centro. Nessa
rotação dos discos e junto com o movimento retilíneo dos cabeçotes, toda a superfície do
disco pode ser alcançada por ser respectivo cabeçote.
Figura 6.1
A figura 6.1 mostra um HD visto por baixo e por cima. Note que a parte inferior contém uma placa com chips.
Trata-se da placa lógica, um item muito importante para o funcionamento do HD.
A placa lógica contém chips responsáveis por diversas tarefas. O mais comum é
conhecido como controladora, pois gerencia uma série de itens do HD, como a
movimentação dos discos e das cabeças de leitura/gravação , o envio e recebimento de dados
entre os discos e o computador, e até rotinas de segurança.
Outro dispositivo comum à placa lógica é um pequeno chip de memória conhecido
como buffer. Cabe a ele a tarefa de armazenar pequenas quantidades de dados durante a
comunicação com o computador. Como esse chip consegue lidar com os dados de maneira
mais rápida que os discos rígidos, ele agiliza o processo de transferência de informações.
Figura 6.2. Componentes do HD Figura 6.3. Componentes do HD
Gravação e leitura de dados
A superfície de gravação dos pratos é composta de materiais sensíveis ao magnetismo
(geralmente, óxido de ferro). O cabeçote de leitura e gravação manipula as moléculas desse
material através de seus pólos. Para isso, a polaridade das cabeças muda numa freqüência
muito alta: quando está positiva, atrai o pólo negativo das moléculas e vice-versa. De acordo
com essa polaridade é que são gravados os bits (0 e 1). No processo de leitura de dados, o
cabeçote simplesmente "lê" o campo magnético gerado pelas moléculas e gera uma corrente
elétrica correspondente, cuja variação é analisada pela controladora do HD para determinar os
bits.
Para a "ordenação" dos dados no HD, é utilizado um esquema conhecido como
"geometria dos discos". Nele, o disco é "dividido" em cilindros, trilhas e setores:
Figura 6.4. Trilhas, Cilindros e Setor
As trilhas são círculos que começam no centro do disco e vão até a sua borda, como se
estivesse um dentro do outro. Essas trilhas são numeradas da borda para o centro, isto é, a
trilha que fica mais próxima da extremidade do disco é denominada trilha 0, a trilha que vem
em seguida é chamada trilha 1, e assim por diante, até chegar à trilha mais próxima do centro.
Cada trilha é dividida em trechos regulares chamados de setor. Cada setor possui uma
determinada capacidade de armazenamento (geralmente, 512 bytes).
Tempo de acesso
Para realizar um acesso a um disco rígido, é necessário posicionar o cabeçote de
leitura e escrita sob um determinado setor e trilha onde o dado será lido ou escrito. De acordo
com a organização de um disco, esse procedimento de posicionamento implica um certo
tempo. Neste caso o tempo de acesso, que é definido por três fatores:
SEEK TIME – (t seek) É o tempo que a cabeça de leitura leva para ir de uma trilha à outra do
disco, isto é deslocar o cabeçote de leitura e escrita até o cilindro correspondente à trilha a ser
acessada .
TEMPO DE LATÊNCIA (t latency) – Tempo necessário, uma vez que o cabeçote já esteja na
trilha correta, para o setor ser lido, ou escrito, se posicionar sob o cabeçote de leitura e escrita
no início do setor a ser lido (ou escrito). Esse tempo também é denominado de atraso
rotacional (rotational delay).
Definição: Atraso necessário para a cabeça de leitura/escrita chegar ao setor desejadoç
TRANSFER TIME (t transfer) – Corresponde ao tempo necessário à transferência dos dados,
isso é, à leitura ou escrita dos dados.
CACHE - Os discos rígidos atuais possuem uma pequena quantidade de memória cache
embutida na controladora, que executa várias funções com o objetivo de melhorar o
desempenho do disco rígido. Neste cache ficam guardados os últimos dados acessados pelo
processador, permitindo que um dado solicitado repetidamente, possa ser diretamente
transmitido a partir do cache, dispensando uma nova e lenta leitura dos dados pelas cabeças
de leitura. Este sistema é capaz de melhorar assustadoramente a velocidade de acesso aos
dados quando estes sejam repetitivos, o que acontece com freqüência em servidores de rede
ou quando é usada uma grande quantidade de memória virtual.
Os dados lidos pelas cabeças de leitura, originalmente são gravados no cache, e a
partir dele transmitidos através da interface. Caso a interface esteja momentaneamente
congestionada, os dados são acumulados no cache e em seguida transmitidos de uma vez
quando a interface fica livre, evitando qualquer perda de tempo durante a leitura dos dados.
Apesar do seu tamanho reduzido, geralmente de 512 ou 1024 Kbytes, o cache
consegue acelerar bastante as operações de leitura de dados, claro que quanto maior e mais
rápido o cache, maior será o ganho de performance.
Estrutura Raid (Redundant Array if Independent Disks) - Matriz Redundante de Discos
Independentes. Apesar do nome ser complicado, o conceito é bem simples: fazer com que
vários discos rígidos trabalhem em conjunto como se fosse um só
A estrutura RAID se propõe a solucionar problemas associados com o armazenamento
de grandes quantidades de dados. Nesse caso para um aumento do volume de dados é
necessário o emprego de várias unidades físicas de discos. Um sistema RAID consiste em
usar mais de um disco rígido para melhorar determinadas características do conjunto:
confiabilidade, capacidade e/ou velocidade.
O uso de RAID é mais comum em máquinas servidoras de arquivos, RAID
inicialmente foi feito para servidores, no entanto, muitas placas-mãe SOHO (Small Office
Home Office -> Pequenos escritórios ou usuário doméstico).
Existem 9 tipos de RAID redundantes e um tipo de array não redundante (RAID 0),
abaixo vimos os tipos mais comuns.
Raid 0 :Dois ou mais discos rígidos são agrupados. Os dados são gravados distribuindo-se a
carga entre os discos que fazem parte da matriz (geralmente em blocos de 32kb ou 64Kb de
dados). Este método não é muito seguro, já que se um participante da matriz falhar, todos os
dados serão perdidos. No entanto, é o mais rápido, pois a leitura e gravação são distribuídas.
RAID 1: Também chamado de espelhamento: um dos discos serve de espelho para o outro.
Tudo que é gravado em um dos discos é gravado no outro. Isso faz com que a performance de
gravação seja um pouco prejudicada, no entanto, a leitura dos dados é acelerada, já que temos
dois discos lendo o mesmo arquivo. É uma forma bem segura, mas também a mais cara,
sendo que apenas 50% do espaço disponível é aproveitado.
RAID 5 :Melhor relação custo x performance x segurança. Para esse tipo de RAID, há
necessidade de no mínimo 3 discos. As informações de paridade são gravadas em cada disco
de tal forma que se um dos integrantes da matriz falhar, as informações nele contidas podem
ser reconstruídas. Sua performance de gravação é menor do que a do RAID 0 e maior que a
do RAID 1. A performance de leitura é a melhor entre as aqui citadas, já que as informações
estão distribuídas entre três ou mais discos.
7. Vídeo
O vídeo é sem duvida o periférico que possui maior interação usuário x computador,
proporcionando que suas ações sejam intuitivas em uma interface GUI. Mas nem sempre foi
assim, na década de 70 os monitores não eram tão populares entre usuários, pois havia um
alto custo da memória necessária para o tratamento de imagens. Posteriormente as máquinas
passaram a serem compostas por uma tela ‘mapeada’, uma matriz de 40 linhas por 80 colunas,
onde cada elemento correspondia a um caractere que era armazenado na memória de vídeo
cujas alocações representavam posições da matriz.
Atualmente apesar de toda evolução tecnológica os princípios são praticamente os
mesmos, exceto que hoje a placa gráfica é integrada ou interconectada a sua placa mãe,
característica que aumenta a interação entre processador, vídeo e outros dispositivos de
entrada e saída, além do desempenho e eliminando o gargalo do sistema. O vídeo ainda possui
uma estrutura de matriz com linhas e colunas, mas pode ser acessado como: texto ou gráfico.
Como texto é organizado em uma matriz de caracteres, já como gráfico é organizada em
pixels, onde a placa define a resolução e as cores de cada pixel determinando o tipo da
controladora, (EGA,VGA,SVGA, e mais).
No caso específico de uma placa 3D, existe um potente processador gráfico capaz de
efetuar operações de visualização como perspectiva, iluminação, etc., bastando apenas, para
isso que a aplicação forneça um comando.
8. Teclado
O teclado é um periférico clássico utilizado para entrada de dados, seu principio básico
é gerar um caractere á cada tecla pressionada. Por baixo das teclas existe uma malha de
condutores que se interagem como uma matriz, possibilitando que o processador de teclado
possa identificar a tecla pressionada por meio do scan code. A cada tecla pressionada é gerada
uma interrupção de hardware, acarretando e execução de um tratador de interrupções próprio
para o teclado. Nesse caso o tratador substitui o código armazenado pelo scan code por um
código ASCII3, ou EBCDIC4, dependendo da implementação que satisfaça tal chamada do
sistema. Depois de gerado um código ASCII (código padrão atual), o mesmo é armazenado
em um buffer de teclado, de onde é recuperado através de chamadas do SO que realiza a
leitura dos códigos produzidos pela digitação no teclado. Outra característica do SO é o
gerenciamento de janelas ou consoles ‘abertos’ para o usuário, de forma a direcionar os
caracteres digitados á janela correta, tal direcionamento é atribuído a dois métodos:
centralizado e dedicado.
O método centralizado forma um buffer maior composto por vários mini-buffers onde
um elemento aponta para a janela aberta. No método dedicado os números de acessos à janela
é limitado pelo buffer, a transferência de dados é feita em uma área de memória criada pela
estrutura associada ao terminal.
9. Rede
Conjunto de computadores conectados com a finalidade de compartilhar recursos, como:
discos, impressoras, arquivos etc. Uma rede pode ser simples, por exemplo, uma conexão
ponto a ponto de duas máquinas, ou mais complexa, já dependente de todo um aparato de
hardware para formar uma interface de rede com tecnologia ethernet ou ATM, a tecnologia é
responsável por determinar a velocidade de transmissão de dados, e de recepção de dados. A
placa de rede é responsável por transformar sinais digitais em sinais analógicos, possui
também um buffer que armazena dados durante uma transmissão, algumas até possuem seu
próprio processador dedicado a essa função. Um software de rede é organizado em camadas
como na figura 9.1, modelo OSI.
3 ASCII (American Standard Code for Information Interchange), adotado como codificação padrão, utilizado em computadores que usam escala decimal, 0 a 127. 4 EBCDIC (Extended Binary Coded Decimal Interchange Code), criado pela IBM como um padrão no início dos anos 1960's.
Figura 9.1 - Modelo OSI
A comunicação em uma rede envolve muitos problemas, um deles é a transmissão de dados,
onde ocorre o seguinte, se um computador A deseja se comunicar com um computador B,
então o remetente será responsável por quebrar essa mensagem gerando pacotes,
fragmentando a mensagem. Da outra ponta a máquina B recebe os dados em pacotes e
remonta a mensagem, a cada pacote recebido é gerada uma interrupção para que o pacote
possa ser transferido á um buffer maior para ser reconstruído. Tudo isso ocorre de acordo com
a MTU (Maximun Transfer Unit), ou seja, unidade de transferência Máxima dos pacotes.
Dentre muitos problemas durante a transmissão pode ocorrer, perda de pacotes,
eventualmente um passar a frente do outro, (ocorre quando um pacote é retransmitido), o
destinatário então deve estar apto a reordenar os pacotes que tenham sido recebidos em ordem
inversa. Todo esse processo é tratado pelo protocolo no caso o TCP/IP.
O computador B deve realizar uma chamada de sistema para informar que deseja receber uma
mensagem, caso não faça, a mensagem será armazenada e nunca será lida causando o
entupimento de buffer. Após solicitar a leitura de uma mensagem podem ocorrer duas
situações, a mensagem já pode estar disponível ao computador B, ou ainda não foi recebida.
Para a primeira opção o computador B lê a mensagem e continua seu processo, para a segunda
opção o processo de B deve ser bloqueado até que a mensagem bloqueada chegue. O driver
de rede faz essa verificação, caso uma mensagem seja recebida ele faz uma consulta
verificando se há algum processo esperando por essa mensagem, se houver, esse processo é
então passado para o estado apto a executar e após escalonado irá dar continuidade a sua
execução, caracterizando uma transmissão síncrona, já em uma transmissão assíncrona, o
processo B seria responsável pela verificação de disponibilidade da mensagem, fazendo
polling para ler tal mensagem.
10. Conclusão
Os dispositivos de entrada são os responsáveis pela entrada de dados no sistema
computacional, Tais dados necessitam de outros componentes do computador para serem
processados e convertidos em um formato legível à máquina para que possam ser tratados e
devolvidos ao usuário através dos dispositivos de saída. Este processo requer muito do SO,
que gerencia estes procedimentos, com interrupções e recuperações de dados quando
solicitado por uma “chamada de sistema”, assim fica evidente a necessidade de tornar os
periféricos o mais independente possível do SO, com seus próprios micro-processadores.