Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Понятия дескрипторов, идентификаторов и хэндлов

ПРОГРАММНЫЙ ДОСТУП К ФАЙЛОВОЙ СИСТЕМЕ

Операционная система управляет множеством информационных объектов, необходимых для осуществления ее функций. Простейшей разновидностью этих объектов, присутствующих даже в самых примитивных ОС, являются файлы. В многозадачной ОС число типов таких объектов приближается к десяти, а вместе с типами объектов графической оболочки их оказывается еще больше. Мы будем изучать внутренние объекты операционной системы постепенно, отталкиваясь от понятия файла. Напомним, что файлом называется именованный информационный объект, хранимый в компьютере даже тогда, когда последний выключен. Иначе говоря, файл – это информационный объект длительного хранения, имеющий наименование, легко доступное пользователю, и который может быть перенесен с одного внутреннего места хранения в другое, в частности с одного компьютера на другой или просто на внешний носитель информации (например дискету).

С файлами программист встречается с первых своих шагов, но ему не заметно, как собственно операционная система справляется с обслуживанием файлов. В то же время с этих первых шагов ему становится известно, что для использования файла в программе его нужно открыть. Широко известным, хотя часто не замечаемым фактом, является то, что в цивилизованном обществе управлять людьми и экономическими объектами оказывается возможным только с помощью учетной информации, в качестве которой используются паспорта и документы. Аналогично этому во внутреннем мире операционной системы для управления теми же файлами создается и используется учетная информация, которую называют File Control Block или другим аналогичным образом. Терминологическое обозначение может меняться от одной ОС к другой, так как зависит от произвола создателей такой истемы. Для нас главное, что управление файлами при их "внутрикомпьютерной жизни" использует аналоги паспорта. Когда файл просто записан на дискете или жестком диске, в такой учетной информации нет необходимости.

По существу открытие файла и заключается в создании управляющего блока. Для ясного представления желательно знать, что содержится в этом блоке. Там, как минимум, содержится информация о следующем месте чтения из файла или записи в файл. (Напомним, что чтение из файла и запись в него автоматически выполняются последовательно, как на магнитную ленту, от использования которой файлы и произошли.) Программистам известно, что место следующего обращения к файлу можно изменить с помощью специальной функции, обычно называемой SEEK или каким-либо производным от этого слова. В действительности такие функции приводят к изменению параметра именно в управляющем блоке файла, но вовсе не в самом файле. Другим параметром управляющего блока файла служит вид доступа, задаваемый при его открытии (будет ли использоваться файл для чтения, для записи или обеих этих операций). В действительности управляющий блок файла может содержать и, как правило, содержит информацию о месте размещения файла или начале его размещения, позволяющую быстро добраться до его содержимого, но такая информация более важна для внутренних процедур работы с файлами и мы на ней не будем заострять внимание.

Управляющий блок файла – это служебная структура данных, необходимая для управления файлом средствами операционной системы. У вдумчивого программиста возникает вопрос, где же находится эта информация. Возможны два принципиальных решения его: эти структуры данных могут находиться в пределах самой исполняемой программы (ее области данных) и описываться в ней, либо размещаться в служебных областях, доступных только операционной системе. Первое решение использовалось в ранних ОС и помимо дополнительных усилий от программиста (по заданию экземпляров таких структур) оно имело такой недостаток, как возможность непреднамеренного изменения данных структур в результате ошибок программиста и его программы. Поэтому от него, как более трудоемкого и, главное, менее надежного решения, позже отказались. (В частности, в первых версиях MS DOS были системные функции работы с файлами с помощью FCB блоков, которые существовали и позже, но настойчиво не рекомендовались для использования.)

Практическая реализация второго подхода к размещению управляющих блоков файлов появилась вначале в ОС Unix и базируется на понятии хэндла. В этом подходе управляющие блоки размещаются в служебной области операционной системы, причем, как правило, в виде таблицы, и для доступа к ним используется номер строк такой таблицы (порядковый номер управляющего блока во внутренней таблице управляющих блоков для выполняемой программы). Этот номер строк таблицы управляющих блоков и называют handle. Иным наименованием для хэндла, использовавшимся как раз в Unix, служит слово дескриптор или (в русском переводе) описатель. Термин "дескриптор", хотя и является традиционным в операционной системе Unix, на самом деле вызывает ложные аналогии. В действительности его целесообразней применять как синоним управляющего блока, так как именно в последнем содержится учетная информация, описывающая файл и необходимая для выполнения файловых операций. Для операций над файлом при обращении к системной функции в качестве одного из параметров вызова используется значение такого хэндла. По этому значению подпрограмма ОС обращается к соответствующей строке таблицы управляющих блоков и использует информацию из управляющего блока, отвечающего этой строке.

Таким образом, хэндл с внешней (поверхностной) стороны – просто некоторый специальный номер для выполнения операций с конкретным открытым файлом. Более существенным его пониманием, важным для более сложных ситуаций использования, должно быть осознание, что на самом деле этому номеру – хэндлу однозначно соответствует строка специальной таблицы управляющих блоков, которая и дает необходимую информацию для оперативной работы с файлом. Заметим, что английское слово handle переводится на русский язык как ручка, рукоять, но в этом "родном" значении оно не привилось в технической информатике (оказывается удобней использовать чисто фонетический перенос исходного названия вместо применения оборотов русского технического языка вроде "возьмем ручку файла", хотя для англоязычного слушателя и читателя этот оборот звучит именно так).

В переводной технической литературе по программированию встречается перевод термина handle словом идентификатор. (Заметим, что последнее слово также не русского происхождения.) Этим закладывается некоторая сумятица в умы начинающих программистов, так как сложившееся использование термина identificator относится к принципиально иным информационным объектам. Идентификатор позволяет однозначно обозначить некоторый объект. Хэндлы же различных по содержанию и собственному названию файлов могут быть одинаковыми. Причем одинаковыми в один и тот же момент работы компьютера. Такие ситуации имеют место, когда в компьютере выполняется несколько программ одновременно (несколько программ начали свое выполнение, но еще не завершились). В этих выполняемых программах очень часто оказываются одинаковые значения хэндлов (как номеров строк текущих таблиц дескрипторов) по той причине, что для каждой выполняемой программы (точнее вычислительного процесса) операционная система создает и поддерживает свою собственную таблицу дескрипторов файлов. Поэтому одинаковые номера строк таких таблиц содержат различную информацию.

В некоторых ОС термин идентификатор (правда для более сложных объектов, чем дескриптор файла) используется независимо от термина хэндл и обозначает действительно уникальное в данной операционной системе условное обозначение сложного объекта. Позже идентификаторы сложных системных объектов будут рассматриваться при изучении параллельных процессов в современных операционных системах.

<== предыдущая лекция | следующая лекция ==>
Информация об ошибках системной функции | Ввод и вывод в стандартные файлы
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 448; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.