Объект-файл (файловый объект)
Код пользовательского режима может получить доступ к
файлам на диске или всевозможным устройствам (физическим, логическим и
виртуальным) только через описатели файловых объектов, обеспечиваемых
менеджером ввода/вывода по запросу от пользовательской программы на открытие/создание
файла или устройства. После открытия/создания виртуального файла, обозначающего
любой источник или приемник ввода/вывода (работа с которым идет так, как
если бы он был обычным файлом на диске), программы могут осуществлять
ввод/вывод в этот виртуальный файл, манипулируя им посредством описателя.
Итак, файловый объект - это объект, видимый
из режима пользователя, который представляет всевозможные открытые источники
или приемники ввода/вывода: файл на диске или устройство (физическое,
логическое, виртуальное). Физическим устройством может быть, например,
последовательный порт, физический диск; логическим -логический диск; виртуальным
- виртуальный сетевой адаптер, именованный канал, почтовый ящик.
Всякий раз, когда некоторый поток открывает файл, создается новый файловый
объект с новым набором атрибутов. В любой момент времени сразу несколько
файловых объектов могут быть ассоциированы с одним разделяемым виртуальным
файлом, но каждый такой файловый объект имеет уникальный описатель, корректный
только в контексте процесса, поток которого инициировал открытие файла.
Возможны ситуации, когда два процесса имеют разные описатели, ссылающиеся
на один и тот же файловый объект:
- 1. когда процесс дублирует описатель файлового объекта
для другого процесса;
- 2. когда дочерний процесс наследует описатель от родительского.
Файловые объекты, как и другие объекты, имеют иерархические
имена, охраняются объектной защитой, поддерживают синхронизацию и обрабатываются
системными сервисами. |