O DOS é uma interface entre o usuário, o hardware e o software. Com ele, você poderá operar o computador, bem como manusear os discos e outros periféricos. MS-DOS significa Microsoft Disk Operating System (Sistema Operacional em Disco da Microsoft (Fabricante), como o DOS mais popular é o da Microsoft foi o que utilizamos como base, mas a outros DOS como por exemplo o IBM-DOS. O MS-DOS é 16 bits.
Interface
A Interface do DOS é em modo texto com o prompt onde se executa
os comandos:
No prompt é informado por default a unidade e a pasta atual.
Sistema de Arquivos
O sistema de arquivos usado
normalmente pelo DOS é a FAT, com pequenas alterações.
O sistema de arquivos FAT foi desenvolvido para o DOS 1.0 em 1981, quando
o primeiro PC IBM foi lançado no mercado. Como o PC original não
possui discos rígidos, mas somente unidades de disco de 5 ¼
para 160 KB, o sistema FAT foi elaborado para trabalhar de modo eficiente
nesse ambiente limitado. À medida que disquetes e discos rígidos
cresceram em tamanho, as mudanças no sistema FAT não acompanharam
esse crescimento adequadamente. Como é muito inconveniente para
o sistema de arquivos FAT gerenciar individualmente as dezenas de milhares
de setores em um disco muito grande, ele agrupa setores adjacentes em uma
unidade de alocação chamada cluster, diminuindo assim o numero
de registros na FAT. Um cluster pode ter 2,4,8,16,32 ou 64 setores, dependendo
do tamanho lógico do disco. O cluster é a menor quantidade
de espaço em disco que pode ser alocada para um arquivo, ou seja,
se você tem um disco com clusters de 2 KB e armazena um arquivo de
1 KB, ele vai ocupar 2 KB alocado. Essa fração que sobra
do cluster é desperdício de espaço que acaba sendo
gerado pela FAT.
Um diretório é uma lista dos arquivos contidos em um
disco. A informação contida no diretório inclui a
data e a hora em que cada arquivo foi criado ou atualizado por último,
o tamanho do arquivo em bytes e o local no disco do primeiro cluster de
dados que pertence ao arquivo. A figura abaixo ilustra a estrutura que
o sistema FAT cria em um disco quando é realizada a formatação:
Registro de Inicialização | FAT 1 | FAT 2 | Diretório Raiz | Arquivos de Sistema | Arquivos de Usuário |
Tamanho da Un. Em MB | Setores/ Cluster | Tamanho do setor em KB | Max. de entradas da FAT | Estrutura da FAT |
0-16 | 8 | 4 | 4096 | 12 bits |
17-32 | 4 | 2 | 16384 | 16 bits |
33-64 | 4 | 2 | 32768 | 16 bits |
65-128 | 4 | 2 | 65536 | 16 bits |
129-256 | 8 | 4 | 65536 | 16 bits |
257-512 | 16 | 8 | 65536 | 16 bits |
513-1024 | 32 | 16 | 65536 | 16 bits |
1025-2048 | 64 | 32 | 65536 | 16 bits |
Suporta todas as maquinas PCs 16 bits ou superiores, algumas 8 bits.
Gerenciamento de Memória
A memória é dividida em várias partes(tipos):
Este suposto PC tem os seus
16 MB de RAM divididos da seguinte forma:
|
Este primeiro 1 MB de memória está dividido em duas regiões:
640 kB de memória convencional 384 kB de memória “desabilitada” |
15 MB | A região de memória localizada a partir do endereço 1M (1024 k), até o final da memória RAM, é chamada de memória ESTENDIDA. |
DEVICE=C:\DOS\HIMEM.SYS
Neste comando, usamos o diretório C:\DOS no caso dos MS-DOS 5.0 e 6.xx. Para usar as versões do HIMEM.SYS que acompanham o Windows 3.1 e o Windows 95, usamos:
DEVICE=C:\WINDOWS\HIMEM.SYS
Uma vez estando ativa a memória XMS, passa a estar também disponível uma área especial de memória, chamada HMA (High Memory Area, ou Área de Memória Alta). Esta área possui apenas 64 kB, e fica localizada logo no início da memória XMS, ou seja, entre os endereços 1024 k e 1088 k. Apesar de pequena, foi suficiente para armazenar 60 kB do MSDOS e 3 kB do COMMAND, e como resultado, foi possível desocupar 64 kB da memória convencional. Isto parece uma ninharia em um computador com 32 MB de memória, mas é vital para os programas do MS-DOS, que necessitam de memória convencional livre para poderem ser executados. Fica portanto, apresentado uma outra região de memória, a HMA.
HMA
Trata-se de uma pequena
área de memória, localizada a partir do endereço 1
M (1024 k), e ocupando 64 kB. Desde os tempos do MS-DOS 5.0, a HMA tem
sido utilizada para armazenar partes do núcleo do MS-DOS, que de
outra forma estariam ocupando espaço na memória convencional
ou na memória superior. A HMA faz parte da memória XMS, e
é criada pelo HIMEM.SYS. Para habilitar o dos a usar memória
alta se usa o seguinte comando no config.sys:
DOS=HIGH
Para permitir a execução
de aplicativos do MS-DOS, é importantíssimo liberar a maior
quantidade possível de memória convencional. É importante
lembrar que certos jogos para MS-DOS exigem mais de 600 kB de memória
convencional livre, apesar de não ultrapassarem seu valor máximo,
que é de 640 kB. Muitos requerem 600, 610, alguns chegando a exigir
até 615 kB. Apenas usuários mais experientes conhecem as
técnicas apresentadas neste capítulo, necessárias
para a liberação da máxima quantidade de memória
convencional.
Memória EMS e UMB
A Memória Expandida
(EMS), este tipo de memória foi muito usado no final dos anos 80,
e começou a cair em desuso a partir da difusão cada vez mais
acentuada do uso da memória XMS. Mesmo assim, ainda existem muitos
programas para MS-DOS que a utilizam, inclusive alguns jogos relativamente
novos.
A memória EMS é
ativada por programas chamados “Gerenciadores de memória Expandida”.
Tanto o MS-DOS 5.0, 6.xx, como o Windows 3.1 eram acompanhados por um gerenciador
de memória expandida chamado EMM386.EXE. Este gerenciador também
cuida da criação da memória UMB (Upper Memory Blocks,
ou Blocos de Memória Superior). A memória UMB serve para
armazenar programas que de outra forma estariam ocupando espaço
na memória convencional. Para obter mais de 600 kB de memória
convencional livre, mesmo com vários programas residentes carregados
na memória, é preciso utilizar os UMBs. Precisamos então
conhecer o programa EMM386, a memória EMS e os UMBs, se quisermos
maximizar a memória convencional livre.
A memória EMS foi
originada nos micros XT, nos quais o microprocessador 8088 só era
capaz de acessar 1 MB de memória. Para permitir o aumento da quantidade
de memória acessada pelo microprocessador, utilizou-se no padrão
EMS, uma técnica de hardware chamada “chaveamento de bancos de memória”.
Consiste em dividir a memória adicional (no caso, a memória
EMS) em blocos de 64 kB, e deixar que apenas um desses blocos seja acessado
pelo microprocessador a cada instante. Para acessar um determinado bloco,
o programa gerenciador de memória EMS precisa primeiro especificar
qual é o bloco a ser acessado (isto era feito através de
um comando de hardware enviado para a placa de memória EMS), e depois
disso acessar o bloco desejado, que agora estará visível
dentro do espaço de endereçamento do microprocessador.
Toda a operação de acesso à memória EMS
é mostrada, de forma simplificada, na figura acima. A barra horizontal
localizada na parte inferior da figura representa a memória EMS,
dividida em blocos de 64 kB. A outra barra horizontal, na parte superior
da figura, representa o mapa da memória vista pelo microprocessador.
Neste mapa, temos as seguintes regiões de memória:
No tempo dos micros XT e
286, a memória EMS era obtida através de placas de expansão
especiais. Já os micros 286 do início dos anos 90 permitiam
que uma parte da memória estendida (acima de 1 MB) fosse reservada
para ser acessada por um hardware especial que implementa o mecanismo de
chaveamento de bancos idêntico ao utilizado nas placas de expansão
de memória EMS. Em muitos desses micros 286 era preciso indicar
no CMOS Setup qual a quantidade de memória estendida deveria ser
deixada à parte, para ser acessada como memória EMS. Em outros
desses micros, não era preciso realizar alterações
no CMOS Setup, e sim, usar no arquivo CONFIG.SYS, um gerenciador de memória
EMS característico da placa de CPU em questão. Este gerenciador
fazia, entre outras funções, a separação de
uma parte da memória estendida (esta quantidade era definida pelo
usuário) para ser acessada pelo hardware que implementa o acesso
à memória EMS.
Finalmente, nos PCs baseados nos microprocessadores 386, e em todos
os posteriores (486, Pentium, Pentium Pro), passou a ser desnecessário
o uso de qualquer tipo de hardware especial para implementar a memória
EMS. Isto ocorre porque os microprocessadores 386 e posteriores possuem
recursos de gerenciamento de memória que permitem implementar as
funções de chaveamento de bancos, sem a necessidade de hardware
adicional. A Microsoft criou um gerenciador de memória que implementa
este recurso, ou seja, usar uma parte da memória estendida como
memória EMS. Este gerenciador é o EMM386.EXE, e trabalha
em conjunto com o HIMEM.SYS. Uma das formas de usar o EMM386.EXE, devemos
incluir, nas duas primeiras linhas do arquivo CONFIG.SYS os comandos:
DEVICE=C:\WINDOWS\HIMEM.SYS
DEVICE=C:\WINDOWS\EMM386.EXE RAM
Tanto o HIMEM.SYS como o
EMM386.EXE são encontrados no diretório C:\WINDOWS, no caso
do Windows 3.1 e do Windows 95. No caso de uso do MS-DOS (versões
5 e 6), esses programas também podem ser encontrados no diretório
C:\DOS.
Toda a memória localizada
a partir do endereço 1M é gerenciada como memória
XMS, através do HIMEM.SYS. O programa EMM386.EXE “pede uma área
de memória XMS” ao HIMEM.SYS, na qual será realizado o chaveamento
de bancos para o EMS PAGE FRAME, criando o mesmo tipo de mecanismo usado
nas primeiras placas de memória EMS. No MS-DOS 5.0 e no Windows
3.1, é preciso indicar na linha de comando do EMM386, qual a quantidade
de memória XMS deve ser convertida em EMS. A partir do MS-DOS 6.0,
o EMM386 passou a deixar esta quantidade de memória em aberto. Isto
significa que não tomará nenhum espaço da memória
XMS se nenhum programa estiver requisitando memória EMS, e poderá
tomar até a totalidade da memória XMS para converter em EMS
caso existam programas solicitando memória EMS. Portanto, o tamanho
da memória EMS passou a ser automático, variando desde o
mínimo de 0 kB até a totalidade da memória XMS livre.
O EMM386.EXE tem um papel
vital no sistema, pois este gerenciador, além de criar a memória
EMS, cria também um outro tipo de memória importantíssimo
para quem precisa de muita memória convencional livre. Trata-se
dos UMBs (Upper Memory Blocks, ou Blocos de Memória Superior). Tratam-se
de áreas de memória RAM que são transferidas para
locais onde não existe memória alguma, entre os endereços
640 k e 1024 k. Esta pequena área de 384 kB foi reservada pela IBM,
a princípio para abrigar a memória de vídeo e todas
as ROMs existentes na placa de CPU e em placas de expansão. Entretanto,
a técnica de usar ROMs em placas de expansão, muito comum
no início dos anos 80, foi substituída pelo carregamento
de drivers e programas residentes pelos arquivos CONFIG.SYS e AUTOEXEC.BAT.
O resultado é que a área reservada para ROMs, na memória
superior, possui diversas lacunas livres. A figura 13 apresenta um típico
mapa de memória superior, da forma como se apresenta na maioria
dos PCs.
640 k até 768 k | Esta área de 128 kB é reservada para a memória de vídeo das placas SVGA. Apesar de ser pequena, esta área permite acessar memórias de vídeo com grandes capacidades, como ocorre com as modernas placas SVGA, com 1 MB, 2 MB e 4 MB de memória de vídeo. Para permitir este acesso através de uma área tão pequena, é usado um mecanismo de chaveamento de bancos de memória, similar ao empregado pela memória EMS. |
768 k até 800 k | Nesta área fica localizado o BIOS VGA. Trata-se de uma programa localizado em uma memória ROM com 32 kB, encontrada na placa VGA (ou SVGA). |
800 k até 960 k | Na maioria dos PCs, esta área está vazia. Seus 160 kB são usados para abrigar o EMS PAGE FRAME (64 kB) e os blocos de memória superior (96 kB). |
960 k até 1024 k | Esta área de 64 kB é ocupada pela ROM onde está localizado o BIOS da placa de CPU. |
Confiabilidade
O DOS como sistema é muito estável, mas com programas
que auto gerenciam a memória e outros que a usam muita memória
se torna instável por causa destes vários gerenciadores e
tipos de memória, por não ter multitarefa e memória
no modo protegido, podendo trancar a máquina.