|
O
primeiro PC IBM, apresentado em
1981, não previa nenhum tipo de
disco fixo. O código do BIOS não
reconhecia nenhum suporte deste
tipo, e as primeiras versões de DOS
limitavam as memorizações em massa,
limitando o número de diretivas e
dos arquivos que podiam ser criados.
Isso não nos deveria surpreender, se
pensamos que o primeiro PC, a 4,77
MHz, era fornecido com 16K de RAM,
expansíveis a 64 K. Também o leitor
floppy e o sistema operativo era
possível a expansão do leitor a
fitas e da ROM de base.
O uso
de um disco fixo em um PC requer:
-
IRQ
Hardware (para o pedido de
interrupt)
-
Endereço I/O para o controller
-
Um
canal DMA (agora opcional)
-
Código de baixo nível
-
Interface física do bus
(integrada ou expansível)
-
Suporte do sistema operativo
-
Energia de esfriamento
suficiente.
Depois
que DOS 2 introduziu a possibilidade
de criação de subdirectory, e o
suporte para dispositivos de
memorização em massa, as empresas
começaram a produzir e a vender
discos fixos para PC. Estes eram
compostos por um cabinet externo que
continha o disco, um controller, e
um delicado sistema de alimentação
do disco (do momento que 63,5 watt
fornecidos pelo alimentador do PC
não eram suficientes). Tais
dispositivos eram exportados para
outras arquiteturas, e eram
conectados por um cabo e um
adaptador de 8 bit, que era inserido
em um slot disponível. Este
subsistema era configurado para usar
um IRQ, um canal DMA, e um range de
portas I/O, e o driver era colocado
a disposição de um device carregado
em memória logo depois do boot
(executando o boot de um floppy).
Em 1983
a IBM produziu o IBM XT (eXTended),
com 10HB de disco fixo integrado.
IBM trabalhou com uma empresa
(Xebec), para integrar os
componentes do disco, normalmente
localizados em um cabinet externo,
ao interno do computador. Introduzem
também uma placa para interfacear o
bus, criando aquilo que é
comunamente chamado o “controller do
disco fixo”.
O
código para o gerenciamento do disco
é fornecido por um chip ROM no
controller, que expande as
sub-rotinas presentes no BIOS, e a
corrente fornecida pelo alimentador
foi levada a 135 watt, para produzir
a potencia necessária ao disco fixo
interno.
A IBM
XT usava:
Diversas empresas começaram a
produzir e vender esses tipos de
periféricas, com diversos
melhoramentos, entre os quais: maior
capacidade física, melhores
performance, e um controller floppy
integrado na mesma placa (para
preservas os slot disponíveis). Este
subsistema podia também ser colocado
em um PC original, se a alimentação
de energia elétrica interna era
adequada.
Em 1984
apareceu o IBM AT (Advanced
Technology), que levou a uma
completa revisão ao sistema de
discos fixos. O código para o boot
foi incluído diretamente no BIOS da
placa mãe, eliminando a necessidade
de um chip a mais no novo controller
a 16 bit, e também melhora
notavelmente os tempos de acesso ao
disco. Esse sistema foi introduzido
também um IRQ mais elevado,
eliminando assim a necessidade de
usar o DMA para os discos, e mudou o
range de endereços I/O.
A IBM
usava:
Os
detalhes de configuração hardware
para o AT, incluindo os parâmetros
do disco fixo, eram memorizados em
um chip CMOS de baixa potência
conexo a uma pequena bateria,
eliminando numerosos switch e jumper
de configurações presentes na placa
mãe dos modelos velhos. A bateria
permitia de mater as informações até
quando o computador estava desligado
e de poder trocar as informações
através de um menu de configurações.
O
pimeiro modelo de AT suportava 14
diferentes tipos de drive,
reconhecendo os discos com
capacidade entre 10 e 112MB. Cada
drive que não respeitava esses
parâmetros físicos deveria ter um
chip ROM no controller, que expandia
o BIOS, ou então era necessário
carregar o código do drive no
momento do boot.
As
versões de DOS precedentes ao 4.0
(ou 3.31) não suportavam partições
maiores de 32MB independentemente
das dimensões do drive. Isso por
causa que o endereçamento dos
setores não podiam superar o valor
de 16 bit (até a 65.536 setores). A
criação de partições maiores pedia
um uso de um software como Disk
Manager da Ontrack. Somente que esta
solução , mesmo sendo uma das
melhores punha muitos problemas de
compatibilidade com outros
instrumentos para o gerenciamento
dos discos, porque, criava uma
partição não DOS.
Muitas
pessoas preferiam invés dividir o
disco em partições de 32 MB criando
C:, D;, E;, etc., até as dimensões
físicas do disco. Antes da versão
3.3 de DOS, isso também era
impossível, do momento em que o
sistema operativo não reconhecia
partições extensas!
O
número dos tipos de drive
reconhecidos do BIOS e estendido
além de 40, e muitos BIOS modernos
fornecem um tipo com parâmetros
definíveis pelo usuário . Muitos PC
de hoje usam ainda esses CMOS
originais para o controle e a
configuração dos parâmetros dos
discos fixos, ainda se foram muitas
mudanças no modo de memorizar e
atualizar as informações no disco.
Isso
criou alguns limites, entre os quais
um problema com o uso de dois ou
mais discos fixos, ou o limite do
BIOS e do sistema operativo de não
reconhecer mais de 1024 cilindros,
16 cabeçotes e 63 setores por traço.
Porque
cada setor contem 512 byte, o drive
com mais capacidade é de 504MB.
)1024 X 16 X 63 = 1,032,192 setores
X 512 = 528,482,304 byte)
Para
compreender esse limite devemos
entender o modo o qual o PC acede ao
disco.
Em
primeiro lugar são enviados comandos
I/O ao controller, através de um
range de endereços de portas
reservadas. Esse processo é muito
complicado e maçante, e o BIOS
inclui uma sub-rotina (INT 13) para
executar essa função. O sistema
operativo DOS tem também outras
funções que simplificam este
processo. Entre essas tem a função
INT25/26 que lê e escreve setores
absolutos de um drive, ou a função
de alto nível (INT 21) para abrir,
fechar e escrever dados em um
arquivo. Muitos programas confiam
nessa função DOS para controlar o
acesso ao disco, e é o DOS que se
preocupa de chamar a sub-rotina INT
13 do BIOS, que executa os comandos
I/O necessários.
Todas
essas sub-rotinas são códigos em
linguagem assembly que são
carregados em memória seja do BIOS
que do sistema operativo à ligação
do sistema.
As
rotinas em assembly memorizam e
manipulam os valores dos registros
da CPU. Os registros menores para PC
baseados na arquitetura INTEL são de
16 bit. Cada programa ou rotina
devem ser compatíveis também com as
precedentes versões dessa
arquitetura, então devem ser usados
registros a 16 bit, seja que venha
executado em um 8088 que em um
Pentium.
A
rotina INT 13 é a coluna dorsal da
compatibilidade entre PC, e utiliza
os registros a 16 bit no seguinte
modo:
O
número de 10 bit maior é 1024,
disso, o limite no número dos
cilindros (de 0 à 1023), com 6 bit
Obtém-se no máximo 64 (de 0 à 63),
permitindo 64 (de 0 à 63)setores por
traços.
O
registro DX permite um máximo de 255
cabeçotes, e não as 16 declaradas
nas específicas originais. É isso
que permite aos discos até 8GB de
serem igualmente compatíveis com INT
13.
Se o
registro DX prevê 8 bit para o
número do drive, não deveriam ser
255 os discos controláveis, ao invés
de somente 2?
Quando
o INT 13 manda os comandos ao
controler do drive, deveria conhecer
ao menos a geometria física do drive
em questão. Durante a ascensão do
sistema, os valores relativos ao
tipo de disco são lidos da CMOS e
memorizados em uma área de RAM
chamada BIOS DATA AREA. Os
apontadores nesta área são
memorizados tabela dos interrupt
(aos endereços 0:104h e 0:118h). A
tabela reserva apontadores somente
para dois drive, assim mesmo se a
CMOS contivesse mais valores, a
rotina standard não saberia como
gerenciá-los.
Porque
as rotinas INT 13 são tão limitadas?
A resposta é simples: foram escritas
nos tempos em que discos de 10 MB e
20 MB eram a norma, e 120 MB era
quase inacreditável. Foram
projetadas para se comunicar com um
controler com uma interface
específica, o standard ST412/506 (controller
WD1003), e as específicas para a
passagem nos parâmetros prevêem 10
bit pelo número de cilindros, 4 por
número de cabeçotes e somente 1 por
número de drive.
Algumas
dessas limitações foram passadas
substituindo a INT 13 nos PC novos,
com uma nova rotina que reconhece e
gerencia devices diferentes. Esse é
o motivo pelo qual virtualmente cada
adaptador SCSI inclui um chip ROM ,
e precisa impostar no BIOS o tipo de
drive no ZERO.
Ligue Grátis - 0800 771 7242
(24
horas - 7 dias por semana)
|