MS-DOS

        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
O registro de inicialização é muito pequeno para conter lógica suficiente para procurar os arquivos de sistema no disco. Portanto os arquivos de sistema devem permanecer sempre em um ponto fixo do disco, ou seja, logo após o diretório raiz. Observe também na figura que existem duas cópias da FAT. Essas duas cópias devem ser idênticas, se não forem, o disco estará danificado de alguma forma. A estrutura impõe um limite de 512 arquivos no diretório raiz.
Os diretórios da FAT, tanto o raiz, quanto seus subdiretórios, são listas desordenadas dos arquivos e subdiretórios nele contidos. Como não há seqüência para a ordem em que os arquivos são listados, o sistema deve procurar a partir do início do diretório para localizar um arquivo.
Abaixo está a tabela de tamanhos de cluster segundo o tamanho de disco rígido:
 
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
Hardware

        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):

        Esses conceitos, são usados desde o MS-DOS 5.0, saiba que todos eles permanecem válidos, ou seja, a organização da memória é a mesma, seja no MS-DOS 5.0, no MS-DOS 6.xx.
        Os programas para MS-DOS podem requerer qualquer um desses tipos de memória. Precisamos então conhecer detalhadamente cada um desses tipos de memória, e saber como ativá-los.
        Imagine um computador com 16 MB de memória RAM. Podemos representar esta memória em um diagrama como mostra a figura abaixo. Este diagrama é chamado de MAPA DE MEMÓRIA.
 
Mapa da memória

        Este suposto PC tem os seus 16 MB de RAM divididos da seguinte forma:
 
 
1 MB 
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.
        Seja qual for a quantidade de memória de um PC, a sua organização é muito similar ao mostrado na acima. Entre o endereço 0 k (o início da memória) e o endereço 640 k, temos a chamada Memória Convencional. Esta região de memória é usada pela maioria dos programas para MS-DOS. Depois do endereço, 640 k, é feita uma pausa na memória RAM. A região de memória localizada entre os endereços 640 k e 1024 k (1 M) é reservada para outros tipos de memória, sem ser a RAM. Nesta região encontramos:

        Nos PCs antigos, a memória RAM terminava no endereço 640 k. Até este ponto, a RAM é chamada de Memória Convencional. A partir daí, e até o final da memória (1024 k), tínhamos uma região totalizando 384 kB de memória, onde era localizada uma pequena miscelânea de memórias, constituídas principalmente por memórias ROM e pela memória de vídeo, além de algumas áreas vazias. Pelo fato desta área, chamada de Memória Superior, estar reservada para uso por esta miscelânea de memórias, não pode ser ocupada pela memória RAM. A RAM termina no endereço 640 k e prossegue a partir do endereço 1024 k. A partir do endereço 1024 k, a RAM é chamada de Memória Estendida.
        A região da memória RAM que ficaria localizada entre os endereços 640 k e 1024 k não poderia existir, já que esta região é reservada para ROMs e memória de vídeo (Memória Superior). Por isto, esta região da memória RAM permanece DESABILITADA. Isto significa que apesar de existir RAM fisicamente localizada nesta faixa de endereços, seus circuitos não operam, e como resultado, tudo se passa como se não existisse RAM nesta região.
Portanto, você já está conhecendo duas regiões ocupadas por memória RAM:         A memória Convencional e a memória Estendida são nativas, isto é, não necessitam de nenhum software especial para que passem a existir. Isto é o mesmo que dizer que o teclado é um dispositivo nativo do PC, já que funciona sem nenhum software especial. Por outro lado, existem muitos dispositivos que só funcionam mediante a instalação de softwares apropriados (drivers), entre os quais podemos citar o drive de CD-ROM, o mouse e a placa de som.
        Convém agora apresentar um outro tipo de memória, chamado de XMS, e ao mesmo tempo esclarecer a confusão que é feita entre a memória XMS e a memória Estendida. A memória XMS (Extended Memory Specification) nada mais é que a própria memória estendida, exceto pelo fato do seu uso ser gerenciado por um programa chamado Gerenciador de Memória Estendida. O programa Gerenciador de Memória Estendida que acompanha o MS-DOS 6.xx e o MS-DOS 5.0 é o HIMEM.SYS. Antes do MS-DOS 5.0, muitos programas acessavam a memória Estendida de forma desordenada, o que impedia, por exemplo, a convivência pacífica de vários programas em execução simultânea em ambientes multitarefa, como é o caso do Windows. O gerenciador HIMEM.SYS funciona como um “guarda de trânsito”, responsável por fornecer áreas de memória estendida solicitadas pelos diversos programas.
        Com o passar dos anos, o acesso à memória estendida através do gerenciador HIMEM.SYS tornou-se algo tão padronizado, que atualmente os termos “memória estendida” e “memória XMS” são tomados como sinônimos. O próprio relatório sobre o uso da memória mostrado pelo programa MEM utiliza esta mesma confusão de nomes. A memória Estendida, ao qual o programa MEM se refere, é na verdade a memória XMS. Quando executamos o boot limpo, o gerenciador HIMEM.SYS não é ativado, e por isso, toda a memória estendida permanece “estendida à moda antiga”, ou seja, sem ser transformada em XMS.
        O gerenciador de memória HIMEM.SYS é fornecido juntamente com diversos sistemas operacionais da Microsoft, entre eles:         O uso do HIMEM.SYS para ativar a memória XMS tem sido praticamente inalterado, desde os tempos do MS-DOS 5.0. Consiste em usar, logo no início do arquivo CONFIG.SYS, o seguinte comando:

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:

O EMS PAGE FRAME é um bloco da memória superior, ocupando 64 kB, através do qual é feito o chaveamento de bancos da memória EMS. Nesta figura, a memória EMS possui 16 blocos de 64 kB, totalizando assim 1 MB. Maiores quantidades de memória EMS podiam ser usadas, bastando que fossem instaladas placas de expansão de memória EMS apropriadas. Dos 16 bancos de memória EMS mostrados na figura, vemos que o banco número 11 está sendo acessado, tendo se tornado visível no EMS PAGE FRAME. Para acessar outros bancos da memória EMS, basta que sejam, antes chaveados para o EMS PAGE FRAME, passando a estarem visíveis pelo microprocessador.
        Graças à memória EMS, muitos programas para o IBM PC XT puderam operar com maiores quantidades de memória. Apesar de não poder ser usada para programas a serem executados, a memória EMS podia armazenar grandes quantidades de dados usados por esses programas. Tipicamente, planilhas eletrônicas de grande tamanho usavam a memória EMS. Mais recentemente, alguns jogos para MS-DOS utilizam a memória EMS para armazenar gráficos, tabelas e mapas.
A explicação apresentada a respeito da memória EMS foi ligeiramente simplificada, visando facilitar o seu entendimento. Vamos agora completá-la, removendo a simplificação feita. A última figura mostra o uso de blocos de 64 kB, tanto para o EMS PAGE FRAME, como pela própria memória EMS. Entretanto, na verdade a memória EMS é organizada em blocos de 16 kB, chamados “páginas”. O EMS PAGE FRAME, com seus 64 kB, abriga 4 páginas de 16 kB. O esquema exato é mostrado na figura 11.
        A divisão da memória EMS em páginas de 16 kB, apesar de ser ligeiramente mais complicada para a implementação e para a programação (apenas quem desenvolve programas ou placas de memória EMS passam por esta complicação), permite maior flexibilidade, já que até 4 trechos podem ser acessados simultaneamente.
 
 

        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.
 

        Típico mapa da memória superior.
        A utilização da memória superior resume-se na seguinte tabela:
 
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.
 

Hosted by www.Geocities.ws

1