ID do artigo: 95555 - Última revisão: segunda-feira, 12 de maio de 2003 - Revisão: 2.0

Visão geral da funcionalidade de gerenciamento de memória no MS-DOS

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo contém uma visão geral de memória expandida como que está de acordo com para a memória Specification (EMS) e memória estendida está de acordo com a especificação de memória estendida (XMS) é criada e gerenciada em versões do MS-DOS 5.0 e posteriores pelos drivers de dispositivo Himem.sys e EMM386.exe. Como o MS-DOS é carregado na área de memória alta (HMA) e gerencia blocos de memória superior (UMBs) também são discutidos.

Observação: Antes de ler este artigo, convém que você analise as seções sobre gerenciamento de memória, Himem.sys e EMM386.exe em sua documentação impressa do MS-DOS. Se você estiver usando o MS-DOS 6.0, 6.2, 6.21 ou 6.22, consulte a Ajuda on-line. Por exemplo, digite Ajuda emm386.exe no prompt de comando do MS-DOS.

Informações neste artigo estão organizadas da seguinte maneira:

  • Antigo estendido métodos de alocação de memória: Interrupção 15 h e VDisk cabeçalhos
  • HIMEM.sys cria memória XMS
  • A20 e a HMA
  • DOS = alta solicita MS-DOS para executar na HMA
  • EMM386.exe [RAM | NOEMS] usa XMS criar UMBs e/ou EMS
  • DOS = UMB solicita MS-DOS para gerenciar UMBs
  • <drive><path><filename>DEVICEHIGH = [<unidade>:] [\ <caminho> \] <nome_do_arquivo>
  • LH (LOADHIGH)
  • DEVICEHIGH E LOADHIGH COM/L: E /S
  • Relatórios MEM na memória MS-DOS está gerenciando
  • Como o MS-DOS usa adicionais ou memória expandida
  • Referências disponíveis
Observação: Somente a seção "Como MS-DOS usa estendida ou expandida memória" aplica-se para MS-DOS versões 3.x e 4.x.

Mais Informações

Métodos de alocação de memória estendida antigo: Interrupção 15 h & VDisk cabeçalhos

No passado, houve duas maneiras para programas alocar memória estendida: inferior-up (usando cabeçalhos VDisk) e de cima para baixo (usando a interrupção 15).

Interrupção 15 h é um serviço de ROM BIOS que inclui várias extensões para o BIOS ROM PC original, incluindo os meios para descobrir quanta memória RAM (convencional mais estendidos) no sistema. Um programa usa esse serviço para descobrir quanta memória estendida existe, em seguida, "ganchos" interrupção 15 h e relatórios para outros programas que não há K <n> menos memória disponível, efetivamente slicing <n> K de memória estendida desativado na parte superior. Fazendo isso, o programa alocou sua própria memória estendida da parte superior do pool de memória.

Funciona de alocação de memória de baixo para cima verificando um cabeçalho no início da memória estendida informando que <n> K de RAM está em uso. Se um cabeçalho estiver lá, o programa verifica <n> K ainda mais para o outro cabeçalho. Se nenhum cabeçalho existir, o programa colocará em seu próprio cabeçalho. Esses cabeçalhos são chamados de cabeçalhos VDisk porque o utilitário de unidade IBM DOS RAM original (VDISK.SYS) utiliza esse método.

Uma desvantagem para esses métodos é que depois de memória foi alocada para um programa, desalocando ele geralmente não é possível. O XMS foi criado para tornar alocando e desalocando memória estendida mais fácil para todos os envolvidos.

HIMEM.sys cria memória XMS

HIMEM.sys implementa todos os XMS, exceto a parte UMB opcional. HIMEM.sys versões anteriores que 3.0 são XMS 2.0 compatível com e reconhecem até 16 MB de RAM; versões 3.0 e posterior (primeiro incluído no Windows 3.10 e MS-DOS 6.0) são XMS 3.0 compatível e reconhecem até 4 GB.

No carregamento, Himem.sys determina a quantidade de memória estendida disponível. A menos que ele foi carregado com o /INT15 = opção, Himem.sys define alocar toda a memória estendida disponível para uso como memória XMS (Observe a alocação real de toda a memória estendida disponível não ocorre até que um programa faz uma função XMS chamada). HIMEM.sys reserva-se a HMA com um cabeçalho VDisk e ganchos interrupção 15 h. Programas que deseja usar memória estendida (diferente de HMA) sem usar XMS podem fazer isso até que um programa realmente solicita XMS.

Depois de um programa realmente pede memória XMS, Himem.sys usa o cabo de 15 h interrupção para notificar programas que somente a quantidade de memória estendida especificada pelo /INT15 = xxxx, menos HMA (64 K), está disponível para uso. Memória disponível por meio de /INT15 = xxxx está fisicamente localizado acima HMA; XMS gerenciados RAM está fisicamente localizado acima qualquer /INT15 = xxxx RAM.

A20 e a HMA

A HMA é definida como FFFF:0010-FFFF:FFFF em sistemas 80286 e superiores que tenham endereçável de RAM física nesses endereços. Essa área pode ser endereçada em modo real (8086 emulação) nos sistemas 80286 e superiores se a linha de endereço 21 (A20) estiver ativada, que produz 64 bytes de 16 K de RAM adicional pode ser usado. Em um 8086 ou um 80 x 86 com a linha A20 desabilitado, FFFF:0010 "disposição ao redor" e o mesmo 0000: 0000.

Esta linha de ativando e desativando é realizada usando a porta de teclado e é dependente do hardware. HIMEM.sys inclui um número de "A20 manipuladores" para máquinas diferentes. O XMS aloca e Desaloca HMA como um bloco, ou seja, somente um programa pode usá-lo uma vez. MS-DOS 5.0 e posterior pode executar no HMA se DOS = alta está no arquivo config.sys.

DOS = alta solicita MS-DOS para executar na HMA

Se DOS = LOW ou não DOS = comando é no arquivo config.sys, MS-DOS e seus dados são inicializados e carregados em seu lugar final de baixa memória antes do DEVICE = e DEVICEHIGH = comandos são processados.

Se o MS-DOS = comando alta é no arquivo config.sys, dados de MS-DOS (que devem permanecer baixos para compatibilidade) são carregados em seu lugar final na memória convencional. Depois de cada driver de dispositivo é inicializado, uma verificação é feita para determinar se um driver XMS tiver sido instalado. Em caso afirmativo, e se a HMA estiver disponível, MS-DOS é movidos na HMA. Se não, o MS-DOS mantém verificando após cada DEVICE [alta] = comando e começa a instalação de processamento = comandos.

Se DOS = alta comando existe mas MS-DOS não carregada alta (se nenhum driver XMS foi carregado ou não estava disponível a HMA), relatórios do MS-DOS "HMA não disponíveis/carregamento DOS baixos" e carrega próprio na memória convencional acima de todos os programas terminate-e-stay-resident (TSR) carregados com a instalação e/ou os drivers de dispositivo instalável =.

Parte do Command.com temporário permanece na memória convencional se MS-DOS estiver carregado alta ou baixa. A maioria da parte residente Command.com, as páginas de código de software e os buffers de disco (geralmente) também carrega alta se DOS = alta está no arquivo config.sys.

EMM386.exe [RAM | NOEMS] usa XMS criar UMBs e/ou EMS

EMM386.exe é um driver de dispositivo para sistemas 80386 ou superiores com memória XMS. EMM386.exe usa memória XMS para criar e gerenciar memória EMS e/ou XMS blocos de memória superior (UMBs). EMS está disponível para programas por meio de EMS 4.0 interface; UMBs estão disponíveis por meio da interface XMS. Ao fornecer UMBs, EMM386.exe responde somente as solicitações para alocar ou desalocar UMBs; todos os outra memória XMS é gerenciada pelo Himem.sys.

No carregamento, EMM386.exe mostra um relatório de sua atividade. Entre outras coisas, este relatório inclui:

  • Se memória EMS está sendo fornecido e, em caso afirmativo:

    • Quantidade de EMS disponível
    • Endereço do segmento de quadro de página de EMS
  • Se forem sendo fornecidas UMBs, a seguir também é exibida:

    • Quantidade de UMBs disponíveis por meio de XMS
    • Maior UMB disponível por meio de XMS
    • Endereço de iniciar o segmento de memória superior
Este relatório também está disponível no prompt de comando do MS-DOS executando EMM386.exe.

Observação: EMM386.EXE versões 4.45 e posterior não exibir essas informações durante a inicialização, a menos que o /verbose alternar são usadas.

DOS = UMB solicita MS-DOS para gerenciar UMBs

DOS = UMB comando solicita MS-DOS para alocar qualquer UMBs disponíveis através de XMS a mesmo. MS-DOS, em seguida, torna UMBs disponíveis por meio de seus próprios serviços de gerenciamento de memória em interrupção 21 h, incluindo:
   Function        Description                     Version
   -------------------------------------------------------
   48h             Allocate memory                 2.0
   49h             Free allocated memory           2.0
   4Ah             Set memory block size           2.0
   5800h           Get allocation strategy         2.0
   5801h           Set allocation strategy         2.0
   5802h           Get upper-memory link status    5.0
   5803h           Set upper-memory link status    5.0
				
se DOS = UMB é no arquivo config.sys, EMM386.exe relatórios que 0 (zero) UMBs estão disponíveis no prompt de comando do MS-DOS e qualquer programa que tenta usar UMBs através de serviços XMS não consiga localizá-los.

Os usuários podem determinar se o MS-DOS tem qualquer UMBs disponíveis usando o comando MEM /C. Programas podem usar interrupção 21 h, 5803h de função para determinar se existem UMBs.

<drive><path><filename>DEVICEHIGH = [<unidade>:] [\ <caminho> \] <nome_do_arquivo>

O DEVICEHIGH = comando solicita que o arquivo de driver de dispositivo ser carregado em um UMB MS-DOS se houver um disponível que seja grande o suficiente. Se não houver, o driver é carregado na memória convencional e executado; nenhum erro é exibido pelo MS-DOS.

LH (LOADHIGH)

O comando LH (ou LOADHIGH) informa ao MS-DOS para carregar o arquivo de programa em um UMB MS-DOS se houver um disponível é grande o suficiente. Se não houver, o programa está carregado na memória convencional e executado; nenhum erro é exibido pelo MS-DOS.

DEVICEHIGH E LOADHIGH COM/L: E /S

Se você estiver usando o MS-DOS versão 6.0, 6.2, 6.21 ou 6.22, você pode usar as opções /S e /L para controlar as regiões de memória em que um programa ou driver de dispositivo é carregado.
   DEVICEHIGH [[/L:region1[,minsize1][;region2[,minssize2] [/S]]=
				
/L: a opção especifica o region(s) memória um programa pode ser carregado em. Se a opção /L: não for especificada, MS-DOS carrega o programa para o maior UMB livre e todas as outras regiões UMB estão disponíveis para o programa. Use o comando MEM /F para exibir as regiões de memória disponível. (Região 0 é memória convencional.)

A opção /S Encolhe o UMB para o tamanho mínimo (minsize) enquanto o programa está carregando. Essa opção só pode ser usada em conjunto com a opção /L: e afeta somente UMBs para o qual um tamanho mínimo foi especificado.

A seguir está um exemplo:
  LOADHIGH /L:1,12194;2,34213 /S C:\PROGDIR\PROGRAM.EXE
				
este comando carrega PROGRAM.EXE e restringe-lo para carregar na memória regiões 1 e 2. O programa tem acesso a somente 12,194 bytes na região 1 e somente 34,213 bytes na região 2.

Observação: melhor que tentar configurar manualmente a memória regiões programas carrega no, MS-DOS 6.0, 6.2, 6.21 e 6.22 usuários são incentivados a executar o programa de otimização de memória MemMaker. Para executar MemMaker, digite memmaker no prompt de comando do MS-DOS.

Relatórios MEM na memória MS-DOS está gerenciando

Se o MS-DOS está gerenciando UMBs (DOS = UMB), MEM /C ou MEM /D inclui UMA no seu relatório. Quaisquer áreas não sendo gerenciadas pelo MS-DOS são chamadas de "SYSTEM" neste relatório. Para informações UMB, digite mem /c | mais no prompt de comando do MS-DOS. (Observe que se você estiver usando o MS-DOS 6.0 ou posterior, você pode digitar mem /c /p para exibir a tela de um relatório de memória em um tempo).

Se o MS-DOS não está gerenciando as UMBs, MEM não informa em UMA. Outros Gerentes UMB normalmente têm algum meio para determinar o que está carregando alta. Verifique a documentação do seu gerente UMB para obter detalhes.

MEM também inclui informações sobre o EMS (relatado por meio da interface EMS 3.2 ou 4.0) para sua conveniência, memória estendida (determinado usando a interface de 15/VDisk cabeçalho interrupção) e XMS (relatado por meio de 2.0 XMS ou interface 3.0).

Como o MS-DOS usa adicionais ou memória expandida

Como um todo, o MS-DOS não usa memória estendida ou expandida para uso geral ou para carregar aplicativos.

No entanto, alguns utilitários do MS-DOS e drivers usam memória estendida ou expandida para áreas de dados. Além disso, as versões 5.0 e posteriores do MS-DOS carregar a maioria do kernel do MS-DOS, interpretador de comandos, páginas de código (se usado) e disco buffers na HMA, que é o primeiros 64 K de memória estendida.

A tabela abaixo descreve os utilitários do MS-DOS usam a memória estendida sem um driver de memória estendida, memória por meio de um driver XMS estendida ou expandida memória por meio de um driver do Lotus-Intel-Microsoft (LIM) EMS.

Esses utilitários carregar na memória convencional mas usam a memória não convencional para áreas de dados. Porque versões diferentes de muitos utilitários fornecidos com o MS-DOS também fornecido com o Microsoft Windows, as versões do Windows estão incluídas nesta tabela. A Microsoft recomenda que você não misture versões desses drivers incluídos com produtos diferentes.
                               Non-XMS
                        Conv.  Extended   XMS      LIM 3.2/4.0 EMS
                        ------------------------------------------
 RAMDRIVE.SYS  3.3      Yes    Yes        No        Yes
 RAMDRIVE.SYS  4.x      Yes    Yes        No        Yes
 RAMDRIVE.SYS  Win30    Yes    No         Yes       Yes
 RAMDRIVE.SYS  5.x      Yes    No         Yes       Yes
 RAMDRIVE.SYS  Win31    Yes    No         Yes       Yes
 RAMDRIVE.SYS  6.0-6.22 Yes    No         Yes       Yes

 SMARTDRV.SYS  4.x      No     Yes        No        Yes
 SMARTDRV.SYS  Win30    No     No         Yes       Yes
 SMARTDRV.SYS  5.x      No     No         Yes       Yes
 SMARTDRV.EXE  All      No     No         Yes       No

 HIMEM.SYS (1) All      No     Yes        Provider  No

 EMM386.SYS(2) 4.x      No     Yes        No        Provider
 EMM386.SYS(3) Win30    No     No         Yes       Provider
 EMM386.EXE(3) All      No     No         Yes(4)    Provider

   (1) Uses extended memory to provide XMS memory
   (2) Uses extended memory to provide EMS memory
   (3) Uses XMS memory to emulate EMS memory
   (4) MS-DOS 5.0 and later EMM386.EXE can also be configured to
       provide UMBs according to the XMS. This causes EMM386.EXE
       to be a provider of the UMB portion of the XMS.
				
no MS-DOS versões 4.x, você pode colocar os buffers de disco na memória expandida usando a opção /X; no entanto, isso não é recomendado devido a problemas que podem surgir. SMARTDRV pode fornecer muita as mesmas melhorias de desempenho e é preferível ao uso de /X BUFFERS. Para obter mais informações sobre /X BUFFERS, na Base de dados de Conhecimento da Microsoft as seguintes palavras de consulta:
buffers, ems e /x
Carregar os buffers de disco na memória EMS não tem suporte em versões do MS-DOS 5.0 e posteriores. Essas versões dão suporte para carregar o kernel do MS-DOS e, se houver espaço, os buffers de disco na HMA. MS-DOS acessa a HMA por meio do protocolo XMS.

Referências disponíveis

A especificação LIM EMS oficial, "Lotus/Intel/Microsoft Expanded Memory especificação versão 4.0", está disponível no Intel ligando para (800) 538-3373.

A especificação de XMS oficial, "Extended Memory Specification versão 3.0", está disponível gratuitamente da Microsoft. Para obter a especificação, consulte a seção "Instruções para download" abaixo.

A MS-DOS programa interface documentação oficial, "Referência do programador do Microsoft MS-DOS", está disponível no Microsoft Press (por chamada [800] 677-7377) ou internacionalmente até livros de pingüim.

A informação contida neste artigo aplica-se a:
  • Microsoft MS-DOS 3.1
  • Microsoft MS-DOS 3.2 Standard Edition
  • Microsoft MS-DOS 3.21 Standard Edition
  • Microsoft MS-DOS 3.3 Standard Edition
  • Microsoft MS-DOS 3.3a
  • Microsoft MS-DOS 4.0 Standard Edition
  • Microsoft MS-DOS 4.01 Standard Edition
  • Microsoft MS-DOS 5.0 Standard Edition
  • Microsoft MS-DOS 5.0a
  • Microsoft MS-DOS 6.0 Standard Edition
  • Microsoft MS-DOS 6.2 Standard Edition
  • Microsoft MS-DOS 6.21 Standard Edition
  • Microsoft MS-DOS 6.22 Standard Edition
Palavras-chave: 
kbmt kbfile KB95555 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 95555  (http://support.microsoft.com/kb/95555/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.