3- 0_Операционные системы
.docМИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
.
ТУСУР.
КАФЕДРА: СУ.
КОНТРОЛЬНАЯ РАБОТА № 3
ПО ДИСЦИПЛИНЕ
ОПЕРАЦИОННЫЕ СИСТЕМЫ И СИСТЕМНОЕ ПРГРАМИРОВАНИЕ
Контрольная работа №3. Изучение структуры основной памяти:
-
Задание
Проследить цепочку блоков основной памяти. Сравнить результат с выводом команды MEM /c , MEM /d.
-
Пояснения по выполнению работы
Для выполнения работы потребуются дополнительные утилиты (см. каталог TOOLS). Программа LOL.COM – для получения адреса системной «таблицы таблиц». Программа PEEK – для непосредственного просмотра содержимого основной памяти. Справочная информация – в файле 4_4-mem.txt.
-
Оформление результатов
Отчет с таблицей блоков памяти Вашей системы. Обязательные поля таблицы: адрес блока памяти; имя программы-хозяина; размер; тип.
Письменно ответьте на следующие вопросы:
-
Что такое виртуальная память? Для чего нужен файл подкачки (swap – файл)?
Виртуальная память (Virtual Memory) представляет собой программно-аппаратное средство расширения пространства памяти, предоставляемой программе в качестве оперативной. Эта память физически реализуется в оперативной и дисковой памяти под управлением соответствующей операционной системы.
Отображение поддерживается с помощью специальных таблиц страничной переадресации, в которых, кроме связи адресов, есть указание на присутствие страницы в физической памяти на данный момент времени. Теперь страница памяти, не нужная процессору в данный момент времени, может быть выгружена на устройство хранения (диск). На ее место можно загрузить нужную страницу. Заявку на загрузку нужной страницы делает сам процессор, без каких-либо усилий выполняемой программы: если программе потребовалась ячейка виртуальной памяти из страницы, образа которой сейчас нет в физической памяти, вырабатывается специальное исключение. Обработчик этого исключения (это часть ОС) найдет свободную физическую страницу (выгрузив на диск ту, которая, по его мнению, пока не нужна), «подкачает» на нее с диска требуемую информацию и вернет управление процессу, прерванному исключением. Этот процесс ничего «не заметит» (кроме некоторой задержки выполнения инструкций). Таким образом, в распоряжение всех процессов, исполняемых на компьютере псевдопараллельно, предоставляется виртуальная оперативная память, размер которой ограничен суммой объема физической оперативной памяти и областью дисковой памяти, выделенной для подкачки страниц. А файл подкачки как раз и нужен для того, чтобы «подкачивать» информацию необходимую в данный момент с диска. Для того чтобы приложениям хватало памяти, на диске, несущем файл подкачки, должно быть достаточно свободного пространства (десятки и сотни мегабайт). Поскольку файл подкачки изменяет свой размер в процессе работы, важно следить за фрагментацией диска, несущего этот файл – обращение к фрагментированному файлу выполняется медленнее, чем к не фрагментированному.
-
Как Вы понимаете одновременное выполнение нескольких задач в многозадачной ОС?
Часто программам требуется одновременно делать два дела, например, выполнять резервное копирование текущего документа на диск и обеспечивать пользователю возможность редактировать текст, который он видит на экране.
Очевидно, что главным требованием, предъявляемым к операционной системе, является способность выполнения основных функций: эффективного управления ресурсами и обеспечения удобного интерфейса для пользователя и прикладных программ. Современная ОС, как правило, должна реализовывать мультипрограммную обработку, виртуальную память, свопинг, поддерживать многооконный интерфейс, а также выполнять многие другие, совершенно необходимые функции. Для реализации данных требований в операционных системах используются аппаратные средства процессора. А именно разграничение прав на выполнение команд по приоритетам.(четыре уровня). Защищенный режим обращения к памяти реализованный через механизмы глобальных и локальных дескрипторных таблиц. Выполнение прерываний только обработчиками прерываний установленных только самой операционной системой.
-
Структура блоков основной памяти компьютера.
Для выполнения данного задания используется компьютер с операционной системой Windows ME. Вся работа ведется в единственной запущенной виртуальной машине MS-DOS (“Сеанс MS-DOS”).
Программа LOL.com выдала адрес системной «таблицы таблиц» 01DF:0026H.
Указатель на первый блок управления памятью будет содержаться в ячейках 01DF:0026H.
Проследим цепочку блоков управления памятью с помощью программы PEEK.COM.:
¦01DF:0024¦ 20 03 50 13 DF 01 CC 00 DF 01 4C 00 70 00 00 00 ¦ .P.-.¦.-.L.p...¦
¦01DF:0034¦ 6A 08 00 02 6D 00 DF 01 00 00 C2 0F 00 00 C3 0B ¦j...m.-...T...+.¦
¦01DF:0044¦ 00 00 03 1A 00 00 71 0A 04 80 CA 0D D0 0D 4E 55 ¦......q..А¦.¦.NU¦
Учитывая, что младший байт находиться перед старшим в памяти при работе с процессорами архитектуры Intel x86, получаем адрес первого блока управления памятью:
¦0320:0000¦ 4D 08 00 30 0D 00 00 00 53 44 00 00 00 00 00 00 ¦M..0....SD......¦
¦0320:0010¦ 49 22 03 40 00 9A F0 52 1D F0 00 01 20 03 5C 4C ¦I".@.ЪЁR.Ё.. .\L¦
Для получения последущих блоков памяти надо к адресу начала фрагмента памяти (адрес начала блока памяти плюс один параграф) прибавить его величину хранимую в третьей и четвертой ячейке блока управления памятью (так же в параграфах) признаком последнего блока в цепочке блоков управления памятью является символ “Z” в первом байте блока. Проследим всю цепочку:
¦1051:0000¦ 4D 08 00 04 00 06 A2 05 53 43 36 C5 36 A2 05 C4 ¦M.....в.SC6+6в.-¦
¦1051:0010¦ 00 00 00 00 00 80 00 00 00 00 01 00 00 00 00 00 ¦.....А..........¦
…
¦1056:0000¦ 4D 69 10 11 00 00 00 00 00 00 00 00 00 00 00 00 ¦Mi..............¦
¦1056:0010¦ 43 4F 4D 53 50 45 43 3D 43 3A 5C 57 49 4E 44 4F ¦COMSPEC=C:\WINDO¦
…
¦1068:0000¦ 4D 69 10 97 00 7E 18 18 56 4D 4D 33 32 00 00 00 ¦Mi.Ч.~..VMM32...¦
¦1068:0010¦ CD 20 00 A0 00 9A F0 FE 1D F0 CF 39 3B 93 5C 4C ¦= .а.ЪЁ¦.Ё¦9;У\L¦
¦…
¦1100:0000¦ 4D 15 11 13 00 00 00 00 00 00 00 00 00 00 00 00 ¦M...............¦
¦1100:0010¦ 43 4F 4D 53 50 45 43 3D 43 3A 5C 57 49 4E 44 4F ¦COMSPEC=C:\WINDO¦
…
¦1114:0000¦ 4D 15 11 5D 01 00 00 00 43 4F 4D 4D 41 4E 44 00 ¦M..]....COMMAND.¦
¦1114:0010¦ CD 20 00 A0 00 9A F0 FE 1D F0 8C 01 15 11 7A 26 ¦= .а.ЪЁ¦.ЁМ...z&¦
…
¦1272:0000¦ 4D 15 11 59 00 98 FA 6B 8B 1E B1 08 3C 02 74 1F ¦M..Y.Ш·kЛ.-.<.t.¦
¦1272:0010¦ 43 4F 4D 53 50 45 43 3D 43 3A 5C 57 49 4E 44 4F ¦COMSPEC=C:\WINDO¦
…
¦12CC:0000¦ 4D 0E 14 13 00 A0 1A 00 8A E0 89 07 1F 07 58 5B ¦M....а..КрЙ...X[¦
¦12CC:0010¦ 43 4F 4D 53 50 45 43 3D 43 3A 5C 57 49 4E 44 4F ¦COMSPEC=C:\WINDO¦
…
¦12E0:0000¦ 4D 00 00 07 00 42 50 4C 00 77 69 6E 62 6F 6F 74 ¦M....BPL.winboot¦
¦12E0:0010¦ 4D 00 00 06 00 3A 5C 57 49 4E 44 4F 57 53 00 77 ¦M....:\WINDOWS.w¦
…
¦12E8:0000¦ 4D E9 12 24 01 8F 06 03 44 4F 53 4B 45 59 00 50 ¦Mщ.$.П..DOSKEY.P¦
¦12E8:0010¦ CD 20 0D 14 00 9A F0 FE 1D F0 97 02 15 11 67 01 ¦= ...ЪЁ¦.ЁЧ...g.¦
…
¦140D:0000¦ 4D 0E 14 8A 02 13 20 1A 50 45 45 4B 00 01 00 00 ¦M..К.. .PEEK....¦
¦140D:0010¦ CD 20 98 16 00 9A F0 FE 1D F0 97 02 15 11 67 01 ¦= Ш..ЪЁ¦.ЁЧ...g.¦
…
¦1698:0000¦ 4D 00 00 41 00 8B 16 4E 2F 03 06 54 2F 13 16 56 ¦M..A.Л.N/..T/..V¦
¦1698:0010¦ 43 4F 4D 53 50 45 43 3D 43 3A 5C 57 49 4E 44 4F ¦COMSPEC=C:\WINDO¦
…
¦16DA:0000¦ 5A 15 11 25 89 2F A3 44 2F A3 5A 2F A3 58 2F A3 ¦Z..%Й/гD/гZ/гX/г¦
¦16DA:0010¦ 78 2F A3 2C 34 A3 7A 2F A3 70 3A A3 6E 3A A3 74 ¦x/г,4гz/гp:гn:гt¦
Размер последнего блока памяти – это размер свободной памяти выраженной в параграфах (8925h). Что будет равно 561744 байтам.
Команда mem c ключами /c и /d вывела следущую информацию:
“mem /c”:
Модули, использующие адреса памяти ниже 1 МБ:
Имя Размер Обычная память Верхняя память
-------- ---------------- ---------------- ----------------
MSDOS 66 912 (65K) 66 912 (65K) 0 (0K)
VMM32 2 720 (3K) 2 720 (3K) 0 (0K)
COMMAND 7 360 (7K) 7 360 (7K) 0 (0K)
PEEK 10 736 (10K) 10 736 (10K) 0 (0K)
DOSKEY 4 688 (5K) 4 688 (5K) 0 (0K)
Свободно 562 608 (549K) 562 608 (549K) 0 (0K)
Сведения о памяти:
Тип памяти Размер Занято Свободно
---------------- ----------- ----------- -----------
Обычная 655 360 92 752 562 608
Верхняя 0 0 0
Зарезервировано 0 0 0
Память XMS 66 977 792 1 253 376 65 724 416
---------------- ----------- ----------- -----------
Всего памяти: 67 633 152 1 346 128 66 287 024
Ниже 1 МБ: 655 360 92 752 562 608
Всего отображаемой памяти (EMS): 66 437 120 (63M)
Свободно отображаемой памяти (EMS): 16 777 216 (16M)
Максимально допустимый размер программы: 562 464 (549K)
Наибольший свободный блок верхней памяти: 0 (0K)
Резидентная часть MS-DOS загружена в сегмент HMA.
“mem /d”:
Сведения о распределении обычной памяти:
Сегмент Размер Имя Тип
------- ---------------- ----------- --------
00000 1 024 (1K) Вектор прерываний
00040 256 (0K) Область обмена ПЗУ
00050 512 (1K) Область обмена DOS
00070 5 872 (6K) IO Системные данные
CON Драйвер системного устройства
AUX Драйвер системного устройства
PRN Драйвер системного устройства
CLOCK$ Драйвер системного устройства
A: - C: Драйвер системного устройства
COM1 Драйвер системного устройства
LPT1 Драйвер системного устройства
LPT2 Драйвер системного устройства
LPT3 Драйвер системного устройства
COM2 Драйвер системного устройства
COM3 Драйвер системного устройства
COM4 Драйвер системного устройства
XMSXXXX0 Драйвер системного устройства
001DF 5 136 (5K) MSDOS Системные данные
00320 54 032 (53K) IO Системные данные
1 024 (1K) Перемещенные данные EBIOS
01051 80 (0K) MSDOS Системная программа
01056 288 (0K) VMM32 Данные
01068 2 432 (2K) VMM32 Программа
01100 320 (0K) COMMAND Данные
01114 5 600 (5K) COMMAND Программа
01272 1 440 (1K) COMMAND Переменные средыДанные
012CC 320 (0K) PEEK Переменные средыДанные
012E0 128 (0K) MSDOS -- Свободно --
012E8 4 688 (5K) DOSKEY Программа
0140D 10 416 (10K) PEEK Программа
01698 336 (0K) MEM Переменные средыДанные
016AD 90 464 (88K) MEM Программа
02CC3 472 016 (461K) MSDOS -- Свободно --
Сведения о памяти:
Тип памяти Размер Занято Свободно
---------------- ----------- ----------- -----------
Обычная 655 360 92 752 562 608
Верхняя 0 0 0
Зарезервировано 0 0 0
Память XMS 66 977 792 1 253 376 65 724 416
---------------- ----------- ----------- -----------
Всего памяти: 67 633 152 1 346 128 66 287 024
Ниже 1 МБ: 655 360 92 752 562 608
Дескриптор Имя EMS Размер
------- -------- ------
0 08C000
Всего отображаемой памяти (EMS): 66 437 120 (63M)
Свободно отображаемой памяти (EMS): 16 777 216 (16M)
Память, доступная через прерывание Int 15h: 0 (0K)
Максимально допустимый размер программы: 562 464 (549K)
Наибольший свободный блок верхней памяти: 0 (0K)
Резидентная часть MS-DOS загружена в сегмент HMA.
Версия XMS: 3.00; версия драйвера: 3.95
Версия EMS: 4.00
Таким образом сведения по участкам памяти находятся в таблице таблиц MSDOS в следующем порядке:
Сегментный адрес |
Размер (в байтах) |
Имя программы-хозяина |
Тип |
00000 |
1 024 |
|
Таблица векторов прерываний |
00040 |
256 |
|
Область обмена BIOS |
00050 |
512 |
|
Область обмена DOS |
00070 |
5 872 |
IO |
Системные данные |
001DF |
5 136 |
MSDOS |
Системные данные |
00320 |
54 032 |
IO |
Системные данные |
01051 |
80 |
MSDOS |
Системная программа |
01056 |
288 |
VMM32 |
Данные |
01068 |
2 432 |
VMM32 |
Программа |
01100 |
320 |
COMMAND |
Данные |
01114 |
5 600 |
COMMAND |
Программа |
01272 |
1 440 |
COMMAND |
Переменные среды |
012CC |
320 |
PEEK |
Переменные среды |
012E0 |
128 |
MSDOS |
Свободная память |
012E8 |
4 688 |
DOSKEY |
Программа |
0140D |
10 416 |
PEEK |
Программа |
01698 |
336 |
MEM |
Переменные среды |
016AD |
90 464 |
MEM |
Программа |
02CC3 |
472 016 |
MSDOS |
Свободная память |
Выводы: результаты вывода программы “MEM” хорошо согласуются с реальным распеределением памяти. При подсчете размера занимаемой памяти так же учитывается память, занимаемая системными управляющими структурами. Рассогласование в подсчете свободной памяти при работе с программой PEEK и результатом работы программы MEM объясняются тем, что программа MEM учитывает и память занимаемую самой собою. Также в выводе команды MEM учитываются системные таблицы. Такие как таблица векторов прерываний, и области обмена BIOS и DOS.