КрасносельскийКонстантинКонстантинович |
ТаблицейБлоками.Оптимизация и спасение IBM PC: виртуальный диск |
Последняя модификация: 10.08.2014 г
Страница загружена с адреса: http://comp.site3k.ru/ibmpc/chaptr18.html
В отношении оперативной памяти применима та же система адресации, что и в отношении дисковой, в результате чего, часть оперативной памяти может использоваться под временное хранение файлов, подобно обычному диску, со свойственной ему файловой структурой и системой каталогов. Поэтому, память отведенную для хранения файлов, называют виртуальным (электронным) диском.
Виртуальный диск используется для ускорения выполнения программ и временного хранения файлов извлекаемых из дискет. Однако, создание виртуального диска и копирование на него программ для ускорения их запуска, процесс довольно продолжительный, ни чуть не уступающий по продолжительности запуску этих же программ с обычных дисков, и применение виртуального диска только лишь для ускорения запуска программ вряд ли имеет смысл. Но при работе с дискетами, виртуальный диск может оказаться необходимым. Он позволяет использовать программы, не вмещающиеся на одной дискете (посредством сборки на нем единой программы из разрозненных частей расположенных на нескольких дискетах или распаковки программы содержащейся на дискете в сжатом виде).
Поскольку виртуальный диск по своим функциям полностью аналогичен жестким дискам, при его образовании, ему назначается синоним, соответствующий очередному жесткому диску (синонимы CDROM и других съемных носителей при этом смещаются на один символ к концу алфавита) и определение буквы вмртуального диска не представляет какой-либо сложности. Тем не менее, во многих случаях удобно использовать ее автоматическое определение.
Подобная автоматизация полезна для дискет могущих применятся на разных компьютерах или на компьютере, в котором количество жестких дисков может быть изменено (при изменении числа дисков на компьютере, переделка однажды составленной и проверенной дискеты с автоматическим определением буквы, не потребуется), а так же для случаев, когда какой-либо из дисков оказался недоступен, а значит и не занял соответствующую ему букву.
Для создания виртуального диска достаточно через Config.sys подключить драйвер RamDrive.sys и указать требуемые параметры создаваемого диска, например:
Devicehigh Ramdrive.sys /E 5120
Остальное управление происходит либо через Autoexec.bat, либо в ручную.
Через Autoexec.bat на него можно скопировать необходимые файлы и установить пути их поиска командой Path. Например:
Copy a:\Файл Буква: Path Буква:
Где буква буква, символизирующая созданный виртуальный диск.
Если файлы сжаты, их распаковку так же можно произвести автоматически, указав в этом же файле команду запуска MS-DOS-распаковщика.
Если же требуется, чтобы буква диска определялась автоматически, требуется обнулить переменные Ramd и CDROM и запустить программу FindRamd.exe (имеющую размер 7 килобайт), которая выдаст код возврата соответствующий букве полученной диском (зависящей от количества доступных логических разделов). После чего, по коду возврата устанавливается переменная Ramd и CDROM.
Наиболее удобно все эти процедуры произвести через специальный файл, обычно называемый SetRamd.bat, вызываемый из файла Autoexec.bat. Перед его вызовом в Autoexec.bat устанавливается переменная, содержащая параметры вызова, что позволяет сократить SetRamd.bat в несколько раз. Команды установки переменной имеют вид:
set LglDrv=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15 set LglDrv=%LglDrv% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C
В таком случае, команда вызова SetRamd.bat выглядит так:
call setramd.bat %LglDrv%
Сам файл при этом имеет следующее содержание:
@echo off set RAMD= set CDROM= a:\findramd if errorlevel 255 goto no_ramdrive if not errorlevel 3 goto no_ramdrive goto do_shift :loop if errorlevel %1 goto no_shift :do_shift set cdrom=%2 shift shift if not %1*==* goto loop goto no_ramdrive :no_shift set ramd=%2 if "%RAMD%"=="C" goto c_drive goto success :c_drive cls echo Disk C no FAT32! Pause goto success :no_ramdrive cls echo No Virtual Disk! Pause :success
И выполняет все необходимое для установления переменной RAMD, содержащей букву символизирующую виртуальный диск, а так же, сообщающий о проблемах, если таковые возникнут при создании диска. При этом, сообщение No Virtual Disk!, как правило, выдается при невозможности создать виртуальный диск из-за недоступности должного количества оперативной памяти, а сообщение Disk C no FAT32!, соответствует недоступности диска С, например, из-за несоответствия операционных систем или из-за повреждения главной загрузочной записи, в том числе, действием вирусов.
После автоматического определения буквы диска, операции с ним можно производить через переменную Ramd и, вышеприведенные команды Autoexec.bat видоизменяются до:
Copy A:\Файл %Ramd%: Path %Ramd%:
И тому подобное, в результате чего, запланированные операции выполняются именно с виртуальным диском, не зависимо от назначенного ему символа, действия вирусов и разницы операционных систем. Обращение к диску непосредственно через букву, остается в силе, но в автоматически исполняемых файлах не срабатывает, если диск по каким-либо причинам получил не ту букву, которая планировалась.
< Глава 17. Глава 18. Глава 19. >