С.Д. Кузнецов - Основы баз данных (1121716), страница 6
Текст из файла (страница 6)
Этими же идентификаторами снабжается каждый процесс, запущенный от имени данного пользователя и имеющий возможность обращаться к системным вызовам файловой системы. Соответственно, при каждом файле хранится полный идентификатор пользователя (собственный идентификатор плюс идентификатор группы), который создал этот файл, и помечается, какие действия с файлом может производить он сам, какие действия с файлом доступны для остальных пользователей той же группы и что могут делать с файлом пользователи других групп.
Для каждого файла контролируется возможность выполнения трех действий: чтение, запись и выполнение. Хранимая информация очень компактна (два целых числа для представления идентификаторов и писала из 9 бит для характеристики возможных действий), при проверке требуется небольшое количество действий, и этот способ контроля доступа в большинстве случаев удовлетворителен. Синхронизация многопользовательского доступа Последнее, на чем мы остановимся в связи с файлами, — это способы применения файлов в многопользовательской среде.
Если операционная система поддерживает многопользовательский режим, может возникнуть ситуация, когда два или более пользователей одновременно пытаются работать с одним и тем же файлом. Если все эти пользователи собираются только читать файл, ничего страшного не произойдет. Но если хотя бы один из них будет изменять файл, для корректной работы этой группы требуется взаимная синхронизация. В файловых системах обычно применялся следующий подход. В операции открытия файла (первой и обязательной операции, с которой должен начинаться сеанс работы с файлом) помимо прочих параметров указывался режим работы (чтение или изменение). Если к моменту выполнения этой операции от имени некоторого процесса А файл уже был открыт некоторым 24 Лекция 1 Эволюция устройств внешней памяти и программных систем управления данными другим процессом В, причем сушествуюший режим открытия был несовместим с требуемым режимом (совместимы только режимы чтения), то в зависимости от особенностей системы либо процессу А сообщалось о невозможности открытия файла в нужном режиме, либо процесс А блокировался до тех пор, пока процесс В не выполнит операцию закрытия файла.
Области разумного применения файлов После краткого экскурса в историю и современное состояние файловых систем обсудим возможные области их применения. Прежде всего, конечно, файлы используются для хранения текстовых данных: документов, текстов программ и т, д, Такие файлы обычно создаются и модифицируются с помошью различных текстовых редакторов. Эти редакторы могут быть очень простыми, такими, как ет) в мире ())х)!Х или утилиты редактирования )х(огГов Сопипапт)ег, Е~н Мапаяег и других интерактивных сред тЧпс)отув.
Они могут быть сложными и многофункциональными, синтаксически ориентированными, как, например, Ой)С Ешасв. Но обычно структура текстовых файлов очень проста (с точки зрения файловой системы): это либо послеловательность записей, содержащих строки текста, либо последовательность байтов, среди которых встречаются специальные символы (например, символы конца строки). Конечно жс, сложность логической структуры текстового файла определяется текстовым редактором, но в любом случае файловой системе она не видна. Файлы, содержащие тексты программ, используются как входные файлы компиляторов (чтобы правильно воспринять текст программы, компилятор должен понимать логическую структуру текстового файла), которые, в свою очередь, формируют файлы, содержашие объектные модули. С точки зрения файловой системы объектные файлы также обладают очень простой структурой — последовательность записей или байтов.
Система программирования накладывает на такую структуру более сложную и специфичную для этой системы структуру объектного модуля. Подчеркнем, что логическая структура объектного молуля файловой системе неизвестна; эта структура поддерживается инструментами системы программирования. Аналогично обстоит дело с файлами, формируемыми редакторами связей (релактор связей должен понимать логическую структуру файлов объектных модулей) и содержащими образы выполняемых программ. Логическая структура таких файлов остается известной только редактору связей и загрузчику — программе операционной системы. Обшая схема взаимодействия программных компонентов при построении программы показана парис. С3.
Мы краткообозначили способы использования файлов в процессе разработки программ, но можно сказать, что ситуация 25 Основы баз данных Курс аналогична и в других случаях: например, при образовании и использовании файлов, содержащих графическую, аудио- и видеоинформацию. Одним словом, файловые системы обычно обеспечивают хранение слабо структурированной информации, оставляя дальнейшую структуризацию прикладным программам. В перечисленных выше случаях использования файлов это даже хорошо, потому что при разработке любой новой прикладной системы, опираясь на простые, стандартные и сравнительно дешевые средства файловой системы, можно реализовать те структуры хранения, которые наиболее точно соответствуют специфике данной прикладной области. Рис. 1.3.
Связи между программными компонентами по пониманию логической структуры файлов Потребности информационных систем Удовлетворяют ли рассмотренные выше базовые возможности файловых систем потребности информационных систем? Типовая информационная система, главным образом, ориентирована на хранение, выбор и модификацию данных соответствующей прикладной области. Структура таких данных зачаст)чо очень сложна, и, хотя структуры данных различны в разных информационных системах, между ними часто бывает много общего.
На начальном этапе использования вь<числительной техники для построения информационных систем проблемы структуризации данных решались инливидуально в каждой информационной системе. Производились необходимые надстройки над файловыми системами (библиотеки программ), подобно тому как это делается в компиляторах, редакторах и т, д, (рис. 1.4).
Но поскольку информационные системы требуют сложных структур данных, эти дополнительные индивидуальные средства управления данными являлись существенной частью информационных систем и практически повторялись от одной системы к другой. Стремление выделить общую часть информационных систем, ответственную за управление сложно структурированными данными, явилось, на мой взгляд, первой побудительной причиной со- 2в Лекция 1 Эволюция устройств внешней памяти и программных систем управления данными Рис. 1.4. Примитивная схема структуризации данных в информационной системе здания СУБД.
Очень скоро стало понятно, что невозможно обойтись общей библиотекой программ (рис. 1.5), реализующей над стандартной базовой файловой системой более сложные методы хранения данных. Рис. 1.5. Две информационные системы с обшей библиотекой Поясним это на примере. Предположим, что требуется реализовать простую информационную систему, поддерживающую учет служащих некоторой организации. Система должна выполнять следующие действия: ° выдавать списки служащих по отделам; ° поддерживать возможность перевода служащего из одного отдела в другой; ° обеспечивать средства поддержки приема на работу новых служащих и увольнения работающих служащих. Кроме того, лля каждого отдела должна поддерживаться возможность получения: ° имени руководителя отдела; ° общей численности отдела; ° обшей суммы зарплаты служащих отдела, среднего размера зарплаты и т, д.
Для каждого служащего должна поддерживаться возможность получения: ° номера удостоверения по полному имени служащего (для простоты допустим, что имена всех служащих различны); Основы баз данных Курс ° полного имени по номеру удостоверения; ° информации о соответствии служащего занимаемой должности и о размере его зарплаты. Структуры данных Предположим, что мы решили основывать эту информационную систему на файловой системе и пользоваться одним файлом служлжие, расширив базовые возможности файловой системы за счет специальной библиотеки функций.
Поскольку минимальной информационной единицей в нашем случае является служащий, в этом файле должна содержаться одна запись для каждого служащего. Чтобы можно было удовлетворить указанные выше требования, запись о служащем должна иметь следующие поля: ° полное имя служащего (СЛУ ИМЯ); ° номер его удостоверения (сГУ нОмеР); ° данные о соответствии служащего занимаемой должности (слу стлт; для простоты «да> или «нет>); ° размер зарплаты (СЛУ ЗЛРЛ); ° номер отдела(слу Отд номеР). Поскольку мы решили ограничиться одним файлом СЛУжлу(ие, та же записьдолжна содержать имя руководителя отдела(СЛУ ОТД РУК).