Логический файл

Странично-сегментное распределение

Данный метод представляет собой комбинацию страничного и сегментного распределения памяти и, вследствие этого, сочетает в себе достоинства обоих подходов. Виртуальное пространство процесса делится на сегменты, а каждый сегмент в свою очередь делится на виртуальные страницы, которые нумеруются в пределах сегмента. Оперативная память делится на физические страницы. Загрузка процесса выполняется операционной системой постранично, при этом часть страниц размещается в оперативной памяти, а часть на диске. Для каждого сегмента создается своя таблица страниц, структура которой полностью совпадает со структурой таблицы страниц, используемой при страничном распределении. Для каждого процесса создается таблица сегментов, в которой указываются адреса таблиц страниц для всех сегментов данного процесса. Адрес таблицы сегментов загружается в специальный регистр процессора, когда активизируется соответствующий процесс.

Логический файл описывается как переменная одного из файловых типов, определенных в Турбо Паскале. В программе в разделе описания переменных объявляется файловая переменная, и она может быть использована в качестве средства общения с любым физическим файлом, независимо от природы последнего. Само имя физического файла может появиться в программе толь­ко один раз, когда специальной процедурой, устанавливается, что объявленный логический файл будет служить средством доступа именно к этому физическому файлу (данным на диске, портам, печати и т.п.) Если, например, мы хотим работать с текстовым файлом 'C:\TEXT.DOC, то в программе должны быть такие стро­ки:

Varf: Text; { Объявляем файловую переменную/}

Begin

Assignf/ 'с:\text.doc'); {Связываем физический файл 'c:\texLdoc' с

логическим файлом f}

После этого все обращения к файлу на диске будут произ­водиться через файловую переменную.

Введение логического файла позволяет программисту не за­думываться о технических проблемах организации обмена дан­ными, а заняться программированием самого потока данных. Физические файлы имеют различные механизмы ввода и вывода информации. Логические файлы унифицируют работу с файлами, позволяя работать не непосредственно с устройствами ПЭВМ, а с их логическими обозначениями.

Условно файл можно представить в виде ленты, у которой есть начало, а конец ее не фиксируется:

f f1 f2 f3 f4 f5 f6

Δ

текущий указатель

 

Здесь f— имя файла; f1, f2, f3… — его элементы.

В любой момент времени программе доступен только один элемент файла, на который ссылается текущий указатель (указатель обработки). Часто позицию размещения доступного элемента называют текущей позицией.

Как правило, все действия с файлом (чтение из файла, запись в файл) произво­дятся поэлементно, причем в этих действиях участвует тот элемент файла, который обозначается текущим указателем. В результате совершения операций текущий указатель может перемещаться, настраиваясь на тот или иной элемент файла.

Используя аналогию файла с лентой, легко представить способы доступа к элементам файла.

По способу доступа к элементам различают файлы последовательного и прямо­го доступа. Файлом последовательного доступа называется файл, к элементам которого обеспечивается доступ в такой же последовательности, в какой они запи­сывались. Файлом прямого доступа называется файл, доступ к элементам которо­го осуществляется по адресу элемента. Например, для поиска нужного элемента в последовательном файле необходимо, начиная с нулевого, перемещать указатель обработки до тех пор, пока он не будет указывать на искомый элемент, а при поис­ке нужного элемента в файле прямого доступа достаточно указать номер его пози­ции. При организации данных в файл последовательного доступа нельзя одновре­менно читать данные из файла и записывать данные в файл, так как для чтения не­которого элемента последовательного файла указатель обработки помещен на дан­ный элемент, а для записи нового элемента этот указатель одновременно должен быть в конце файла.