Алгоритм распределения памяти MS_DOS



48H ALLOCATE Распределить блок памяти (или определить наибольший доступный)

49H FREE Освободить распределенный блок памяти

4aH SETBLOCK Сжать или расширить блок памяти

Для работы с памятью в DOS предусмотрены 3 основные функции прерывания Int 21h:

· функция 48h– распределяет память;

· функция 49h - Освобождает блок памяти, начинающийся с адреса ES:0000. Этот блок становится доступным для других запросов системы. Надо освобождать лишь те блоки памяти, которые получены через функцию 48H. Родитель отвечает за освобождение памяти порожденных процессов.

· функция 4Ah - Изменяет размер существующего блока памяти. Когда программа получает управление, функция 4bH EXEC уже распределила блок памяти, начиная с PSP, который содержит всю доступную память. Чтобы освободить память для запуска порождаемых процессов, блок памяти, начинающийся с PSP, необходимо сначала сжать.

 

Блок управления памятью ( MCB )

Внутри блока MCB хранится длина описываемого данным MCB фрагмента памяти. Следующий фрагмент памяти начинается сразу за предыдущим. Все блоки управления памятью связаны в список.

Блоки MCB бывают двух типов - M и Z. M-блоки - это промежуточные блоки. Блок типа Z является последним блоком в списке и может быть только один.

Приведем формат блока MCB:

Размер, байт Имя поля Описание
1 type Тип блока MCB (M или Z)
2 owner Сегментная компонента адреса владельца блока; этот блок всегда выровнен на границу параграфа (если 0, то блок описывает сам себя)
2 size Число параграфов в этом блоке
11 reserve Зарезервировано

Параграф имеет размер 16 байт.

 


Управление файлами

Файловая система. Концепция управления файлами

Фа́йловая систе́ма (англ. file system) — регламент, определяющий способ организации, хранения и именования данных на носителях информации. Она определяет формат физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имени файла, максимальный возможный размер файла, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.

Файловая система связывает носитель информации, с одной стороны, и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, также, как и на каком физическом типе носителя (CD, жёстком диске, магнитной ленте или блоке флэш-памяти) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).

С точки зрения операционной системы, весь диск представляет из себя набор кластеров размером от 512 байт и выше. Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.

Однако файловая система не обязательно напрямую связана с физическим носителем информации. Существуют виртуальные и сетевые файловые системы, которые являются лишь способом доступа к файлам, находящимся на удалённом компьютере.

 

Текстовые файлы. Двоичный файлы

Текстовые файлы

Файл – это логическое представление, принимаемое ко всему, начиная от дисковых файлов и оканчивая терминалами. В языке C++ файл связывается с потоком. Текстовый файл – это последовательность символов, информация в которой хранится в кодах ASCII. В таких файлах символы могут преобразовываться согласно требованиям среды. Потому может не наблюдаться соответствия между записываемыми или считываемыми символами и символами в файле и их количеством. Функция open открывает файл по умолчанию

ofstream mitya;

mitya.open("example.txt);

Двоичные файлы

Двоичный (неформатированный) файл – это последовательность байт, имеющих однозначное соответствие с записываемыми байтами, т.е. не происходит преобразование символов. В этом случае число записываемых байт и считываемых байт совпадает, но может произойти добавление некоторых нулевых байтов, которые служат для унификации представления информации. Для открытия файла в двоичном режиме в качестве параметра функции open надо передать ios::binary.

binout.open("binexample.txt",ios::binary|ios::trunc);

 


Дата добавления: 2019-02-13; просмотров: 286; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!