Користувачі комп'ютерів давно вивели новий закон природи: «оперативної пам'яті не може бути багато». Для більш раціонального використання всіх типів оперативної пам'яті рекомендую в CONFIG.SYS прописати рядок DOS = HIGH, UMB, NOAUTO, щоб не завантажувалися SETVER.EXE (потрібен для старих ДОС-програм) і DBLBUFF.SYS (потрібен для SCSI-дисків) - ніж менше вантажиться всякої хрін - тим краще. Бажано використовувати в конфігураційних файлах команди з приставками HIGH типу DEVICEHIGH, LOADHIGH, INSTALLHIGH, BUFFERSHIGH, FCBSHIGH, FILESHIGH, LASTDRIVEHIGH, STACKSHIGH (якщо вони вам потрібні), для звільнення базової пам'яті. Для цього впишіть спочатку в CONFIG.SYS рядка

DEVICE = C: \ WINDOWS \ HIMEM.SYS / V / TESTMEM: Off

DEVICE = C: \ WINDOWS \ EMM386.EXE NOEMS V

 

для використання верхньої пам'яті. Увага! Якщо ви при цьому не додасте в CONFIG.SYS рядок

DEVICEHIGH = C: \ WINDOWS \ IFSHLP.SYS,

то ваш комп'ютер може не завантажитися, так як команда DOS = NOAUTO відключає завантаження і цього драйвера файлової системи. Використовуйте в цьому випадку завантажувальний флоппі-диск або компакт для додавання в конфіг цього рядка. Параметр HIGHSCAN (може ще трохи додати вільної верхньої пам'яті) для EMM386 краще не використовувати, тому що висока ймовірність того, що це призведе до помилок і система зависне.

Необхідно відзначити, що Вінди самі завантажують за замовчуванням (якщо в конфіги не прописано DOS = NOAUTO) як би «невидимий» CONFIG.SYS, в якому такі рядки:

dos = high, auto

device = c: \ windows \ himem.sys

device = c: \ windows \ ifshlp.sys

device = c: \ windows \ setver.exe

fileshigh = 30

lastdrivehigh = z

buffershigh = 30

stackshigh = 9,256

shell = command.com / p

fcbshigh = 4

 

Ці драйвера вантажаться, навіть якщо у вашому конфізі вони не прописані (і, навіть, якщо відсутні файли AUTOEXEC.BAT і CONFIG.SYS), при цьому, якщо у вас вже записані в CONFIG.SYS команди без приставок HIGH (наприклад files), то виконуватися все одно будуть команди з цими приставками (типу fileshigh), для використання старших адрес пам'яті (вірніше, винда сама вирішує - використовувати старші адреси пам'яті чи ні, і найчастіше закінчення «HIGH» до командам додає). Значення, що задаються командами files, lastdrive, buffers, stacks, fcbs і драйвер SETVER.EXE потрібні тільки додатків MS-DOS, Windows'98 ці параметри не потрібні. Існує і «прихований» AUTOEXEC.BAT:

@echo off

net start

set tmp = C: \ windows \ temp

set temp = C: \ windows \ temp

set COMSPEC = C: \ COMMAND.COM

prompt $ p $ g

path c: \ windows; c: \ windows \ command

 

Змінюючи значення конфігураційних параметрів, використовуваних «Вінд» за замовчуванням, можна домогтися більш раціонального розподілу пам'яті. Трохи базової пам'яті можна вивільнити, якщо задати командою LASTDRIVEHIGH букву реально останнього дисковода (за замовчуванням пам'яті виділяється більше: резервується під всі диски від A до Z) - на кожен додатковий диск витрачається 80 байт. Бажано командою STACKSHIGH = 0,0 скасувати виділення пам'яті під стеки, що відводяться для тимчасового зберігання різної системної інформації і потрібні тільки старим ДОСовскіх програмами. Командою BUFFERSHIGH = 20 можна обмежити кількість буферів дискового введення-виведення (кожен займає 532 байта), так як «вінди» використовують власну систему кешування дискових даних VCache, а для MS-DOS MODE цього значення цілком зазвичай вистачає. Ще один параметр, потрібний в режимі емуляції MS-DOS ДОСовскіх програмами - FCBS, що задає кількість деяких блоків управління файлами, на що, природно, знову йде цінна пам'ять (64 байта на кожен), його значення можна змінити на FCBSHIGH = 1. Базову пам'ять можна зберегти, задавши параметр FILESHIGH = 10, зменшивши тим самим число обробників файлів з 30 до 10 (на кожен по 60 байт, приблизно). Якщо ви ніколи не завантажуєте режим емуляції MS-DOS, то можете виставити ще менші значення цих параметрів, мій же варіант розрахований на підтримку і зтого режиму. Якщо ж ви використовуєте якусь застарілу програму, яка хоче працювати тільки з режиму емуляції MS-DOS, то вам, можливо, доведеться змінити ці параметри, знову збільшивши їх значення, то наші люди із ДОСовскіх програм не запустяться, або навіть включити підтримку застарілої EMS -пам'яті, додавши параметр RAM до драйверу EMM386! наприклад:

DEVICE = C: \ WINDOWS \ EMM386.EXE RAM VERBOSE,

при цьому, можливо, доведеться відмовитися від драйвера сі-ді-рома і деяких інших ДОСовскіх драйверів для максимального збільшення об'єму базової пам'яті - найкраще це зробити, не змінюючи основні файли конфігурації, а створивши для цієї програми свій PIF-файл, в якому і задати потрібні значення.

При наявності в корені системного диска файлу dblspace.bin або drvspace.bin Windows завантажить відповідний драйвер стислих дисків, навіть якщо ви не використовуєте цю функцію, тому не забудьте видалити ці файли!

Дуже корисно подивитися, що вантажиться, вибравши в завантажувальному меню (натиснути кнопку F8, при завантаженні ПК, для його виклику) режим «Step-by-step confirmation». При цьому ви зможете побачити і виправити помилки в конфігураційних файлах які зазвичай виникають через неправильне написання шляхів до драйверів і файлів. А перевірити, наскільки ефективно розподіляється пам'ять, можна за допомогою команди «MEM / P / C», яку треба набрати в меню «Виконати» ( «Run») кнопки «Пуск». Якщо у вікні ви побачите приблизно такі значення:

 

Largest executable program size = 614032 (600k)

Largest free upper memory block = 0 (0K)

MS-DOS is resident in the high memory area,

то все в порядку. Ще одна корисна команда «MEM / D / P» більш детально покаже використання пам'яті.

Іноді потрібно виділити більше пам'яті під змінні оточення (наприклад, якщо ви хочете поставити додаткові параметри для відеоприскорювача від 3dfx в автоекзеке, а отримуєте повідомлення «Out of environment space»), в цьому випадку пропишіть рядок в конфіги:

SHELL = C: \ COMMAND.COM / P / E 1024

Об'єм вільної оперативної пам'яті може різко зменшиться при використанні буфера обміну, особливо якщо в ньому зберігається велика картинка, тому не забувайте після роботи з буфером в потужних програмних пакетах очистити його, скопіювавши всього одну букву з блокнота, наприклад.