Addr=0DFE:0000 PID=0DFF Size=5520 Pgm COMMAND.COM
Addr=0F58:0000 PID=0DFF Size=1424 Env COMMAND.COM
Addr=0FB2:0000 PID=0FC6 Size=288 Env SPO13 C:\SPO13.EXE
Addr=0FC5:0000 PID=0FC6 Size=32768 Pgm SPO13 C:\SPO13.EXE
Addr=17C6:0000 PID=0000 Size=33376 Free
Addr=9FED:0000 PID=0BDB Size=288 Data COMMAND.COM
Після заміни стратегії розміщення
Addr=0215:0000 PID=0008 Size=36032 DOS
Addr=0AE2:0000 PID=0008 Size=64 DOS
Addr=0AE7:0000 PID=0AFD Size=16 Data COMMAND.COM
Addr=0AE9:0000 PID=0AFD Size=288 Env COMMAND.COM
Addr=0AFC:0000 PID=0AFD Size=3536 Pgm COMMAND.COM
Addr=0BDA:0000 PID=0BDB Size=5712 Pgm COMMAND dir=C:\WINDOWS
Addr=0D40:0000 PID=0BDB Size=1424 Env COMMAND.COM
Addr=0D9A:0000 PID=0DAE Size=288 Env DN c:\dn\DN.COM
Addr=0DAD:0000 PID=0DAE Size=976 Pgm DN c:\dFIRST_FIT_LOW
Addr=0DEB:0000 PID=0DEC Size=5520 Pgm COMMAND c:\dn\DN.COM
Addr=0F45:0000 PID=0DEC Size=1424 Env COMMAND.COM
Addr=0F9F:0000 PID=0FB3 Size=288 Env SPO13 C:\SPO13.EXE
Addr=0FB2:0000 PID=0FB3 Size=32768 Pgm SPO13 C:\SPO13.EXE
Addr=17B3:0000 PID=0000 Size=33376 Free
Addr=9FDA:0000 PID=0DEC Size=288 Data COMMAND.COM
Addr=9FED:0000 PID=0BDB Size=288 Data COMMAND.COM
Висновки: в ходi виконання даної роботи вивчили засоби розподiлу пам'ятi в операцiйнiй системi Ms-DOS i одержали практичнi навики роботи з блоками управлiння пам'яттю (зокрема була виведена карта пам'ятi ,що розподiляїться ).
Звіт з лабораторної роботи № 5.
Мета: Вивчення системних керуючих блоків DOS і отримання практичних навичок роботи ними.
Постановка задачі: Розробити програму, що створює для себе можливість працювати з 50 відкритими файлами одночасно.
Опис програми:
Структура програми:
Програма складається з основної програми та двох функцій.
int inc_jft (int num) – збільшує розмір таблиці файлів, повертає 0 при успішному завершенні
void get_sft (void) – функція, що записує у глобальну змінну sft адресу першої системної таблиці файлів
Опис змінних.
Глобальні змінні:
sft – адреса поточної системної таблиці файлів
sftx – адреса останньої у списку таблиці файлів
dfcb – покажчик на структуру елементу таблиці файлів
dfcb_size – розмір DFCB
sft_seg, sft_ofs – сегмент та зміщення, що складають адресу системної таблиці файлів
files – число файлів
Змінні головної функції:
i, j – допоміжні змінні
fname – ім'я файлу
std_name – стандартна частина імен файлів
in – масив з ідентифікаторами файлів
axx – сегментна частина адреси розширення SFT
msgf – рядок, що записується у кожен файл
Опис алгоритму програми:
Основна програма складається з трьох етапів. На першому етапі ми визначаємо версію DOS та розширюємо за допомогою функції get_sft ( ) таблицю файлів програми до 60 (50 задано + 5 системних + 5 резервних ). У разі успішного завершення переходимо до виконання наступного етапу. На другому етапі ми будемо розширяти системну таблицю файлів. Для цього спочатку визначаємо розмір DFCB ( DOS File Control Block - блок контролю файлами DOS ). Для версії DOS 3.x DFCB має розмір 53 байта, а для версії 4.x – 59 байт.
Після цього отримаµмо адресу першої системної таблиці файлів, викликавши функцію get_sft(). Після цього пройдемо весь список таблиць SFT, отримуючи в змінній files кількість елементів в SFT (додаючи поля n_files ). Після цього визначимо необхідний обсяг пам'яті для розширення і використовуємо для виділення пам'яті функцію DOS 48h.
Після цього поширюємо системну таблицю файлів, дописавши в останній елемент списку SFT покажчик на наше розширення. Заповнюємо створену SFT ( встановимо ознаку кінця списку, число елементів в цій таблиці ) та масив елементів таблиці (обнуливши поля n_handles).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.