Вопросы и ответы по ОС реального режима (DOS) Часть 1
Добавил: | DMT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Дата создания: | 19 июня 2008, 0:24 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Дата обновления: | 19 июня 2008, 0:26 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Просмотров: | 10235 последний сегодня, 22:23 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Комментариев: | 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1) Структура ОЗУ ПЭВМ IBM PC/AT. Аппаратная поддержка ОЗУ ПЭВМ IBM PC/AT. 1) На две ПЭВМ с разными материнскими платами установили микросхемы расширенной памяти в 16 Мбт. После этого программа MEM показала следующие сведения: Первая ПЭВМ Вторая ПЭВМ
Что можно сказать об аппаратной реализации ОЗУ на каждой из машин и программном обеспечении управления этим ОЗУ?
Ответ: На 1 и 2 машине CMA = 655 360 б. Память, заполняющая «дыры» в UMA, называется верхней (upper memory), или UMB-памятью (Upper Memory Biocks – блоки верхней памяти) на 1 ПЭВМ=183 376 б, на 2= 0б. UMA = Rezerved. На 1 и 2 ПЭВМ = 393 216 б, это свидетельствует о том, что UMA есть. Extended (XMS) на 1 ПЭВМ = 15 938 480 б, на 2 = 16 777 216 б.
2) Воспользовавшись тестовыми программами Вася определил, что на его компьютере имеется 63450 Кб памяти EMS , 62320 Кб памяти XMS , 64896 Кб памяти XMA и 640 Кб памяти CMA . Обрадованный Вася сложил полученные числа и пришел к выводу, что всего на его компьютере где-то около 192 Мб памяти. Ошибся ли Вася в своих расчетах? Если да, то почему и насколько?
Ответ: Вася ошибся т.к. он не просто сложил все цифры, чего делать не стоило. XMS и EMS - это протоколы работающие с расширенной и дополнительной памятью, и могут накладываться друг на друга в области памяти. Для правильного расчёта необходимо сложить CMA и XMA ПЭВМ Васи. XMA + С MA = 65536 (почти 64 Mb ), т.е. он ошибся на 126464 Kb (126 Mb ).
2) Заполнение ОЗУ ПЭВМ при загрузке MS DOS.
9) Я установил пароль на SETUP своей машины и забыл его. Попробывал найти батарейку в своем компьютере и отключить ее от микросхемы CIMOS памяти, но оказалось, что на моей материнской плате батарейки вообще нет. Почему? И что мне теперь делать?
Ответ: Для машин класса IBM PC и IBM XT конфигурация задается установкой перемычек на материнской плате и платах контроллеров периферийных устройств. Программа может получить информацию об установленных перемычках, прочитав состояние определенных портов компьютера. В машинах класса IBM AT, IBM PS/2 и машинах более высокого класса установлена КМОП-память - память с малым энергопотреблением. Эта память питается от аккумуляторов и содержит информацию о конфигурации многих подсистем (в том числе дисковой подсистемы). Во время инициализации системы BIOS опрашивает порты, к которым подключены перемычки и ячейки КМОП-памяти, содержащие информацию о конфигурации компьютера. Результат записывается в область данных BIOS - в слово конфигурации с адресом 0000:0410. Для сброса пароля необходимо загрузиться с диагностической дискеты поставляемой с ПЭВМ и сбросить там пароль.
Если есть CMOS: #include <stdio.h> #include <stdlib.h> main() { // Эта строка будет записана в КМОП-память static char password[12] = ""; int i,j; for (i=0;i<12;i++) password[i]=0; printf ("\ n *Запись в CMOS \ n \ n "); for(i=0x34,j=0; i<0x40; i++,j++) { // Задаем адрес ячейки КМОП-памяти outp(0x70,i); // Выполняем запись в эту ячейку outp(0x71,password[j]); } }
13) Я включаю компьютер, но при загрузке он выводит сообщение: Keyboard is locked ... и зависает . Что мне делать?
Ответ: Если после загрузки компьютера, клавиатура не работает, то вам надо определить причину неисправности. Существует несколько основных причин по которым клавиатура может не работать:
Клавиатура заблокирована с помощью ключа (замка) на системном блокеДля устранения возможности несанкционированного доступа к компьютеру, на передней панели системного блока располагается специальный замок. С помощью ключа, входящего в комплект компьютера, вы можете полностью заблокировать клавиатуру. При этом любые нажатия на клавиши клавиатуры будут игнорироваться клавиатурным контроллером, а при загрузке компьютер выдаст сообщение о том, что клавиатура заблокирована и необходимо ее разблокировать: Keyboard is locked... Unlock itЧтобы подключить клавиатуру обратно, необходимо повернуть ключ в положение "открыто" и перезапустить компьютер. Следует отметить, что использование блокировки клавиатуры с помощью замка само по себе не является достаточным средством защиты от несанкционированного доступа.
3) Механизм управления ОЗУ в MS DOS В памяти ПЭВМ, работающей под DOS , запущено несколько TSR программ. Запускается главное приложение. Предложите подробный алгоритм, каким образом запущенное приложение может определить находится ли в памяти ПЭВМ модуль с именем TUMBA . COM и если ДА, то как запущенное приложение может принудительно выгрузить этот модуль, а на его место загрузить и запустить на выполнение другой. Имеются ли тут принципиально непреодолимые трудности?
Ответ : • Послать прерывание int 21 h с функцией 52 h • Перейти по адресу es : bx -2 • Считать слово и перейти по нему слово:0 h • Прочитать имя файла из PSP ( PSP +80) который располагается после MCB и размер MCB блока ( MCB +2) • Проверить не Tumba . com ли эта программа, если да то мы её нашли, иначе перейти на размер блока + текущий сегмент+1 и повторять операцию(повторят с шага 4) пока первый байт MCB блока не ‘ Z ' При выгрузке модуля из ОЗУ нарушиться цепочка прерываний(если модуль TSR ) и цепочка MCB блоков. Но это можно сделать, если полностью восстановить цепочку прерываний и MCB блоков.
4. СПО управления ОЗУ ПЭВМ в MS DOS. 6. Я занимаюсь разработкой прикладного программного обеспечения с использованием языка С++ в среде MS DOS. Недавно купил 16 Мбт расширенной памяти. Как мне наиболее эффективно использовать ее в моей работе? Ответ: Для использования расширенной памяти в среде MS - DOS необходимо подключить в файле Config . sys драйвер HIMEM . sys с правильными и наиболее подходящими для вашей ПЭВМ параметрами. Также есть возможность использовать дополнительную EMA память, подключить протокол эмуляции EMS , т.е. драйвер EMM 386. EXE . Этот драйвер содержит всеобъемлющие функции для работы с верхней памятью и отображаемой. В частности, в расширенной памяти (вернее, в её небольшой начальной части размером около 64 килобайт, называющейся верхней памятью) могут располагаться модули, буфера и рабочие области самой операционной системы. Если в компьютере используется процессор 80386 или 80486, можно поместить в расширенную память резидентные программы и драйверы. Если расположить в расширенной памяти MS-DOS, резидентные программы и драйверы, для программ останется порядка 600-620 килобайт памяти. Это на 100-140 килобайт больше, чем при использовании версий MS-DOS более ранних, чем 5.0. Теперь понятно, зачем надо обязательно переходить к использованию новой версии MS-DOS - у вас будет больше памяти для работы программ! Конечно, это не единственная причина (например, MS-DOS весрии 4.0 содержит ошибки), но довольно существенная. А если ваша программа имеет размер 2 мегабайта и к тому же ей требуется обрабатывать массивы данных размером в 1 мегабайт? Для решения таких задач можно использовать дополнительную память. Эта память располагается на отдельной плате, которая вставляется в слот расширения материнской платы компьютера.
8. Я купил планшетный сканер и попробовал установить его драйвер в своей системе MS DOS, записав его в CONFIG.SYS. Однако при запуске системы драйвер отказался работать, сообщив, что для него надо освободить “окно С000”. О каком “окне” идет речь и как удовлетворить требования драйвера?
EMS протокол отвечает за окна, т.е. с помощью драйвера EMM 386 нужно настроить управление окнами памяти с помощью переключателей этого драйвера: Mm – предписывает драйверу разместить окно отображаемой памяти по адресу, закодированному натуральным числом m
Необходимо в файле Config . sys написать подключения этого драйвера Device = [path]driver M 0
10 В каком случае мне надо писать в CONFIG.SYS команду: DOS = HIGH а в каком: DOS = UMB Чем они отличаются? Ответ: DEVICE = C :\ DOS \ HIMEM . SYS DOS = HIGH // MS-DOS и все её рабочие области должны быть размещены в расширенной памяти. DOS = UMB // MS-DOS и все её рабочие области должны быть размещены в верхней памяти.11). При запуске нужной мне программы компьютер выдает сообщение: NOT EMS MEMORY и возвращается в DOS. Что мне делать, чтобы программа заработала.
Ответ: У вас не подключен драйвер дополнительной памяти, либо не подключен драйвер эмуляции дополнительной памяти. Эти функции в ОС DOS выполняет драйвер EMM 386. EXE , именно его и необходимо подключить в файле CONFIG . SYS . Также необходимо учесть, что этот драйвер не будет эмулировать дополнительную память в расширенную, если не будет установлен драйвер расширенной памяти HIMEM . SYS .
12) Для оптимизации памяти своей машины я запустила MEMMAKER. Программа что-то там поделала, перезапустила компьютер, после чего появились панели NORTON COMMANDER. Я просмотрела объемы свободной оперативной памяти — они нисколько не изменились, даже немного уменьшились. Почему MEMMAKER так плохо сработал ?
Ответ: Перед запуском MEMMAKER необходимо в файле AUTOEXEC . bat закомментировать строку с загрузкой NC .
Ответ: Андрей произвёл ручную оптимизацию, путём перестановки драйверов в файле CONFIG . SYS Поставив на первое место KEY . SYS , потом MYDRV . SYS При загрузке драйверов и резидентных программ в верхнюю память, можно освободить больше стандартной памяти, если сначала загружать программы, которые занимают больший объем памяти. Для того, чтобы сначала происходила загрузка драйверов и программ, которые занимают больший объем оперативной памяти, вы должны определить объем памяти, занимаемой каждой программой, а затем переставить команды в файлах CONFIG.SYS и AUTOEXEC.BAT. 5) Исполняемые файлы MS - DOS COM-файл - это двоичный образ Вашей программы, состоящий из кода и данных. То есть это файл, содержащий программу в "чистом" виде. Такая программа (как и EXE-программа) может загружаться в любое место памяти. DOS выполняет ее привязку к физическим адресам при загрузке с помощью установки сегментных регистров. Существенным ограничением COM-программы является то, что она не может занимать больше одного сегмента (соответственно, файл .COM не может быть по длине больше 64К). Программа в формате EXE может иметь любой размер. В самом начале файла программы содержится заголовок (у COM-файла заголовка нет). Этот заголовок используется операционной системой в процессе загрузки программы в память для правильной установки сегментных регистров. Заголовок EXE-файла нужен только при загрузке; когда программа загружена и готова к работе, самого заголовка уже нет в памяти. Заголовок EXE-файла состоит из форматированной зоны и таблицы расположения сегментов (Relocation Table). Форматированная зона выглядит следующим образом:
Таблица расположения сегментов программы начинается сразу после форматированной области и состоит из четырехбайтовых значений в формате "смещение:сегмент". Область файла после таблицы расположения сегментов выравнивается на границу параграфа с помощью байта-заполнителя, и дальше начинается сама программа.
Процесс загрузки программ в памятьЗагрузка COM- и EXE-программ происходит по-разному, однако есть некоторые действия, которые операционная система выполняет в обоих случаях одинаково.
А дальше действия системы по загрузке программ форматов COM и EXE будут различаться. Для COM-программ, которые представляют собой двоичный образ односегментной программы, выполняется чтение файла программы с диска и запись его в память по адресу PSP:0100. Вообще говоря, программы типа COM могут состоять из нескольких сегментов, но в этом случае они должны сами управлять содержимым сегментных регистров, используя в качестве базового адреса адрес PSP. После загрузки файла операционная система для COM-программ выполняет следующие действия:
указатель команд IP устанавливается на 100h (начало программы) с помощью команды JMP по адресу PSP:100. Загрузка EXE-программ происходит значительно сложнее, так как связана с настройкой сегментных адресов:
1. Считывается содержимое элемента таблицы как два двухбайтных слова (OFF,SEG). 2. Вычисляется сегментный адрес ссылки перемещения REL_SEG = (START_SEG + SEG)3. Выбирается слово по адресу REL_SEG:OFF, к этому слову прибавляется значение START_SEG, затем сумма записывается обратно по тому же адресу.
При инициализации регистры ES и DS устанавливаются на PSP, регистр AX устанавливается так же, как и для COM-программ, в сегментный регистр стека SS записывается значение START_SEG + ss_reg, а в SP записывается sp_reg. Для запуска программы в CS записывается START_SEG+cs_reg, а в IP - ip_reg. Такая запись невозможна напрямую, поэтому операционная система сначала записывает в свой стек значение для CS, затем значение для IP и после этого выполняет команду дальнего возврата RETF (команда возврата из дальней процедуры).
9. Какие параметры и на какие значения должна изменить Ваша программа в этом заголовке, если она имеет размер 3560 байтов, должна приписаться в конце этого файла, загрузиться вместе с ним при загрузке его в память и получить управление сразу после старта EXE файла. Ответ: Вам представлен заголовок EXE файла:
BEh =190 байт в последней странице 8 страниц по 512 б. Общий размер программы = 4286 б. Наша программа = 3560 б. В итоге сумма 7846 б. 7846= A 6+512* Fh
CS =0 h IP =10 h Получившиеся CS и IP такие:10 BE :0010 h
4D 5A A6 00 ¦ 0F 00 05 00 ¦ 20 00 71 00 ¦ FF FF CC 00 08 07 00 00 ¦ 10 00 BE 10 ¦ 1 E 00 00 00 ¦ 01 00 90 08 00 00 1 E 00 ¦ 00 00 0 A 01 ¦ 00 00 00 00 ¦ A 8 00 72 00 AD 00 00 00 ¦ 00 00 00 00 ¦ 00 00 00 00 ¦ 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 ¦ 00 00 00 00 ¦ 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 ¦ 00 00 00 00 ¦ 00 00 00 00 00 00 00 00 ¦ 00 00 00 00 ¦ 00 00 00 00 ¦ 00 00 00 00
10. Мне бы хотелось давать файлам имена на русском языке. Могу ли я это сделать в MS DOS? Если “да”, то как? Ответ: Необходимо подключить драйвер поддержки русского языка в файле AUTOEXEC . bat : Keyb . com RU ,, keybrd 2. Для "русификации" видеоадаптеров можно либо перепрограммировать ПЗУ адаптера, либо использовать специальные резидентные программы, подменяющие набор символов видеоадаптера своим собственным. "Русификация" видеоадаптеров на уровне ПЗУ позволяет в дальнейшем сохранить несколько килобайт оперативной памяти компьютера, так как отпадет необходимость в использовании специальных резидентных программ. Кроме того, если вам не повезло и на вашем компьютере установлен видеоадаптер CGA или Hercules, то перепрограммирование ПЗУ является единственной возможностью (кроме, конечно, замены видеоадаптера, что, кстати, в этом случае предпочтительней) для отображения символов кириллицы в текстовых режимах. Однако для перепрограммирования ПЗУ видеоадаптера нужны специальные аппаратные средства и сведения о расположении в ПЗУ набора шрифтов. Таким образом перепрограммирование ПЗУ является весьма сложной задачей и может выполняться только высококвалифицированными специалистами. При "русификации" видеоадаптера с помощью специальных программ необходимо загрузить в оперативную память компьютера небольшой резидентный модуль. Этот резидентный модуль будет подменять набор символов, записанный в ПЗУ видеоадаптера. В разделе "Как русифицировать MS-DOS" будет более подробно описан процесс русификации видеоадаптера. Операционная система MS-DOS версии 6.0 содержит команды и программы для интернациональной поддержки. Мы предлагаем вам для проведения русификации, после установки MS-DOS версии 6.0, заменить файлы команд и программ интернациональной поддержки соответствующими файлами из русскоязычной версии MS-DOS. В настоящее время выпущены русскоязычные версии MS-DOS 4.01, 5.0 и 6.0. Если у вас нет русской версии MS-DOS, скопируйте из русскоязычной версии 4.0 или 5.0 операционной системы MS-DOS, следующие файлы: COUNTRY.SYS, DISPLAY.SYS, KEYBOARD.SYS, KEYB.COM, а также файлы с расширением CPI. Замените этими файлами соответствующие файлы в каталоге MS-DOS. Так как драйвер DISPLAY.SYS и программа KEYB.COM проверяют версию операционной системы, то их необходимо "обмануть". Для этого выполните следующие команды: C:\DOS\SETVER KEYB.COM 4.01 C:\DOS\SETVER DISPLAY.SYS 4.01Затем с помощью любого текстового редактора вам надо добавить в файлах CONFIG.SYS и AUTOEXEC.BAT команды интернациональной поддержки. В файле CONFIG.SYS вы должны загрузить драйвер SETVER.EXE, добавить вызов команды COUNTRY и загрузить драйвер DISPLAY.SYS: DEVICE=C:\DOS\SETVER.EXE COUNTRY=7,,C:\DOS\COUNTRY.SYS DEVICE=C:\DOS\DISPLAY.SYS CON=(EGA,437,1)В файле AUTOEXEC.BAT необходимо добавить вызов двух команд MODE и выполнить загрузку резидентной программы KEYB: c:\dos\mode CON CP PREP=((866) C:\DOS\EGA.CPI) c:\dos\mode CON CP SEL=866 D:\DOS\keyb RU,,D:\DOS\KEYBOARD.SYS /ID:093После внесения всех изменений в файлы CONFIG.SYS и AUTOEXEC.BAT перезагрузите компьютер. При перезагрузке компьютера в оперативную память загружаются резидентные модули программ русификации. Не используйте для редактирования файлов CONFIG.SYS и AUTOEXEC.BAT текстовые процессоры, сохраняющие редактируемые файлы в специальных форматах. При сохранении редактируемого текста в файле, имеющем специальный формат, в него, помимо текста, будет записана другая управляющая информация. В результате MS-DOS не сможет интерпретировать эти файлы и загрузка компьютера произойдет неправильно. Теперь вы сможете просматривать и редактировать документы, написанные на русском языке, кроме того, у вас останутся все преимущества MS-DOS версии 6.0. При редактировании текстов на русском языке переключите клавиатуру в режим ввода символов кириллицы. Для этого нажмите на правую клавишу <Ctrl>. Нажав на правую клавишу <Ctrl> второй раз, вы переключите клавиатуру обратно на ввод латинских символов. 6) Структура системных записей на дисках в MS DOS. • На отформатированную дискету 1.44 Мбт было записано 23 COM - файла размерами от 812 до 1000 байт. Затем было произведено безопасное форматирование дискеты без сохранения системных областей. После чего вдруг потребовалось восстановить четвертую по прядку программу. Какие записи нужно ввести в область ROOT и FAT , чтобы на дискете восстановился нужный файл (заполните пустые бланки): ROOT : FAT :
Каждый файл занимает по 2 кластера, в каждом кластере по 512 байт. Соответственно приведём таблицу размещения файлов: ROOT : FAT :
• Напишите фрагмент программы, читающий 16 байт, начиная с линейного адреса 0 EF 586 A 2 в область первого FCB PSP Вашей программы. Ответ : mov bx,es mov es,ds add bx,92 mov cx,16 mov si,86A2h loop_1: mov [es:bx],[0ef5h:si] inc bx inc si loop loop_1
• Работая в DOS Павел имел два раздела на винчестере С: и D:,
оба - сжатые DRVSPACE. Павел прикупил еще один винчестер и установил его на
компьютер. Теперь он виден как D:, а старый D: со всей информацией исчез.
Ответ: Отключаем новый винчестер после чего диск D будет виден, и утилитой DRVSPACE разжимаем разделы, после чего они оба будут видны при подключении нового винчестера. Могут возникнуть проблемы в случае если на старом винчестере не хватает места для разжатая этих разделов. В этом случае мы переносим эти данные с диска С на новый винчестер. Если не хватает места на D то мы сначала переместим данные с D на С, после чего подключим новый винчестер и перенесем данные на него. После отключаем новый винт, разжимаем данные, подключаем винт.
7. Порядок и СПО подготовки дисков к работе в MS DOS. • Я провел низкоуровневое форматирование своего винчестера и
переустановил операционную систему. После этого быстродействие винчестера резко
ухудшилось.
Ответ: При низкоуровневом форматировании размер кластера становиться маленьким, это приводить к возрастанию количества обращений к винчестеру, что замедляет систему. В этой ситуации необходимо отформатировать диск заново стандартными средствами форматирования и установить систему заново.
• У меня на винчестере есть разделы C, D, E. Могу ли я разбить
раздел D еще на два, не повредив информации на C и E. Ответ: Для этого нужно воспользоваться стандартными или другими средствами управления дисками( fdisk Partition Magic ) и с их помощью проделать следующие действия: • Удалить раздел D • Создать раздел на месте бывшего D как EXTENDED • Создать первый и второй разделы ( LOGICAL ) • Отформатировать их.
8. СПО сопровождения дисков в MS DOS. При включении ПЭВМ я вдруг обнаружил, что на винчестере
исчезли все файлы со всеми программами и документами, с которыми я раньше
работал. Остались несколько системных файлов, и какой-то файл DBLSPASCE.001,
который я вообще не создавал. Ответ: Не бал смонтирован диск при загрузки системы, необходимо его смонтировать, записать в AUTOEXEC.BAT: DBLSPACE /MOUNT=001 C: /NEWDRIVE=D:
Я стер несколько файлов и сразу спохватился, решил их восстановить
программой UNERASE, но она сказала, что файлы подлежат только ручному
восстановлению. Ответ: Для избегания таких ситуаций, необходимо дефрагментировать диски и при удалении файлов, не записывать другие, т.к. они будут записываться на место старых, после чего вы не сможете их восстановить старые. Мне принесли дискету с важным документом, но она на моем компьютере
не читается. Проверили дискету на другом компьютере — все нормально. Проверили
мой дисковод — другие дискеты он читает отлично, а эту не хочет. Ответ: Если вы не можете считать файл с дискеты - при считывании возникают ошибки, то этому могут быть несколько причин.
Полгода назад я купил компьютер, интенсивно работал на нем, а на днях
заметил, что дисковые операции стали выполняться медленнее, чем это было раньше.
Ответ: Необходимо дефрагментировать диск. Программой DEFRAG . EXE Дело было так: я очень торопился к шефу, тут как раз мне принесли
дискету с важными документами. Я быстро включил свой компьютер, перебросил
информацию дискеты в новый каталог, выключил компьютер и побежал на совещание.
Когда вернулся и вновь включил ПЭВМ, то скопированной информации не обнаружил.
Ни нового каталога, ни документов, хотя я ясно помню, что на экране перед моим
уходом они были. UNERASE не показал никаких следов стертых файлов. Ответ: Ваша таблица FAT переполнилась и не записала информацию о файлах, т.е. их имена и размеры. Для восстановления файлов, вам необходимо удалить несколько ненужных файлов с диска и прописать в таблице ROOTe информацию о созданных директориях и файлах. Друзья Павел и Андрей имели абсолютно одинаковые компьютеры. Для
выполнения работ им выдали старую базу данных (работала только под DOS).
Поработав с базой, Павел пришел к Андрею пожаловаться на маленькую скорость
обработки данных и увидел, что у того база, по тем же DOS, работает раз в
двадцать быстрее. Ответ: Возможно Павел не проводил профилактических работ по оптимизации оперативной памяти и дефрагментации рабочих дисков. Для увеличения производительности базы данных и всего компьютера, необходимо : • Оптимизировать оперативную память программой Memmaker . exe или другой • Дефрагментировать рабочие диски. |