Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
informatika (1).docx
Скачиваний:
17
Добавлен:
15.04.2015
Размер:
458.41 Кб
Скачать

Содержание

1 Задание №1 3

2 Задание №2 9

3 Задание №3 12

4 Список литературы 16

Задание № 1

1 Файловая структура операционных систем. Операции с файлами.

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

Любая файловая структура операционных систем выполняет следующие задачи: - именование файлов; - создает уникальный интерфейс для приложений; - определяет способ соотнесения и отображения логической модели на физическом носителе; - обеспечивает стабильность системы; - содержит в себе определенные сведения, которые необходимы для обеспечения взаимодействия системы с иными ее компонентами (приложениями, сервисами, ядром). Кроме того, работа с файловой системой многопользовательского типа обеспечивает возможность ограничить и вообще исключить доступ другого пользователя к данным, хранящимся на компьютере, а также создает условия для совместной работы над файлами. Файловая структура операционных систем обеспечивает связь и взаимодействие носителя информации и API для доступа к файлам. Функционально это выглядит примерно так. В тот момент, когда какое-либо приложение обращается к файлу, программа точно не знает где, на каком конкретно диске, каким образом размещена требуемая информация. Единственное, что точно известно приложению, это только его собственные свойства – размер файла, его уникальное имя и атрибуты. Так вот именно благодаря тому, что каждая файловая структура операционных систем уникальна по своим характеристикам, устанавливается место и способ размещения конкретного файла на носителе (к примеру, на жестком носителе)

Сам жесткий диск представляет собой совокупность стандартных по размеру кластеров, их размер, как правило, составляет 512 байт. Вот эти кластеры и организуются в файлы, а те, в свою очередь, в каталоги. Благодаря определенной структуре, файлы и каталоги распознаются как свободные и использующиеся, неисправные. Вместе с тем, файловая система не связана непосредственно с физическими устройствами хранения информации, существуют так называемые виртуальные системы, которые представляют собой лишь описание способа доступа к файлам и каталогам. Как и большинство структур, существующих в природе, файловая имеет иерархическую модель организации. Это предполагает то, что все фалы на любой ОС объединены в каталоги. Первой операционной системой, где была применена иерархическая модель построения такой структуры, была использована в ОС Multics, а затем и в UNIX. Каталоги объединяются в деревья, которых может быть несколько, как это сделано в ОС в DOS/Windows. Наиболее распространенными в современных устройствах являются файловые системы, которые по их функциональному назначению можно классифицировать на: - ориентированные на носители с произвольным доступом (FAT32, HPFS, ext2); - предназначенные для носителей с последовательным доступом; - для сетевых и виртуальных систем; - для оптических устройств и флэш-памяти. Каждая из них имеет свойственное только ей ограничение файловой системы, этим достигается уникальность и безопасность ОС, гарантируется недоступность постороннего пользователя к информации

Операции над файлами

Большинство современных ОС рассматривают файл как неструктурированнуюпоследовательность байт переменной длины. В стандарте POSIXнад файлом определены следующие операции:

  • int open(char * fname, int flags, mode_t mode)Эта операция ``открывает'' файл, устанавливая соединение между программойи файлом. При этом программа получает дескриптор файла - целоечисло, идентифицирующее данное соединение. Фактически это индекс в системнойтаблице открытых файлов для данной задачи. Все остальные операции используютэтот индекс для ссылки на файл.

Параметр char * fname задает имя файла.int flags - это битовая маска, определяющая режим открытия файла.Файл может быть открыт только на чтение, только на запись и начтение и запись; кроме того, можно открывать существующий файл,а можно пытаться создать новый файл нулевой длины.Необязательный третий параметр mode используется толькопри создании файла и задает атрибуты этого файла.

  • off_t lseek(int handle, off_t offset, int whence)Эта операция перемещает указатель чтения/записи в файле.Параметр offset задает количество байт, на которое нужно сместитьуказатель, а параметр whence - откуда отсчитывать смещение.Предполагается, что смещение можно отсчитывать от начала файла(SEEK_SET), от его конца (SEEK_END) и от текущегоположения указателя (SEEK_CUR). Операция возвращает положениеуказателя, отсчитываемое от начала файла. Таким образом, вызовlseek(handle, 0, SEEK_CUR) возвратит текущее положение указателя,не передвигая его.

  • int read(int handle, char * where, size_t how_much)Операция чтения из файла. Указатель where задает буфер,куда нужно поместитьпрочитанные данные; третий параметр указывает, сколько данных надо считать.Система считывает требуемое число байт из файла, начиная с указателячтения/записи в этом файле, и перемещает указатель к концу считаннойпоследовательности. Если файл кончился раньше, считывается столько данных,сколько оставалось до его конца. Операция возвращает количествосчитанных байт. Если файл открывался только для записи, вызов readвозвратит ошибку.

  • int write(int handle, char * what, size_t how_much)Операция записи в файл. Указатель what задает начало буфера данных;третий параметр указывает, сколько данных надо записать.Система записывает требуемое число байт в файл, начиная с указателячтения/записи в этом файле, заменяя хранившиеся на в этом месте данные,и перемещает указатель к концу записанного блока. Если файл кончился раньше,его длина увеличивается. Операция возвращает количество записанных байт.

Если файл открывался только для чтения, вызов write возвратит ошибку.

  • int ioctl(int handle, int cmd, ...);

  • int fcntl(int handle, int cmd, ...)Дополнительные операции над файлом. Первоначально, по-видимому,предполагалось, что ioctl - это операции над самим файлом,а fcntl - это операции над дескриптором открытого файла,но потом историческое развитие несколько перемешало функции этих системныхвызовов. Стандарт POSIX определяет некоторые операции как наддескриптором, например дублирование (в результате этой операции мы получаемдва дескриптора, связанных с одним и тем же файлом), так и над самим файлом, например, операцию truncate - обрезать файл до заданной длины. В большинстве версий Unix операцию truncate можно использовать и для вырезания данных из середины файла. При считывании данных из такой вырезанной области считываются нули, а сама эта область не занимает физического места на диске.

Важной операцией является блокировка участков файла. Стандарт POSIX предлагает для этой цели библиотечную функцию, но в системах семейства Unix эта функция реализована через вызов fcntl.

Большинство реализаций стандарта POSIX предлагает и свои дополнительные операции. Так, в Unix SVR4 этими операциями можно устанавливать синхронную или отложенную записьи т.д.

  • caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int handle, off_t offset)Отображение участка файла в виртуальное адресное пространство процесса.Параметр prot задает права доступа к отображенному участку: на чтение, запись и исполнение. Отображение может происходить на заданный виртуальный адрес, или же система может выбирать адрес для отображения сама.

Еще две операции выполняются уже не над файлом, а над его именем:это операции переименования и удаления файла. В некоторых системах,например в системах семейства Unix, файл может иметь несколько имен, и существует только системный вызов для удаления имени.Файл удаляется при удалении последнего имени.

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

Примерно та же модель работы с файлами принята в CP/M,а набор файловых системных вызовов MS DOS фактически скопирован с вызовов Unix v7. В свою очередь, OS/2и Windows NT унаследовали принципы работы с файлами непосредственно от MS DOS.

Напротив, в системах, не имеющих Unix в родословной,может использоваться несколько иная трактовка понятия файла.Чаще всего файл трактуется как набор записей. Обычно система поддерживает записи как постоянной длины, так и переменной. Например, текстовый файл интерпретируется как файл с записями переменной длины, а каждой строке текста соответствует одна запись. Такова модель работы с файлами в VMSи в ОС линии OS/360-MVS фирмы IBM.

Практика систем с неструктурированными файлами показала, что хотя структурированные файлы часто бывают удобны для программиста,необязательно встраивать поддержку записей в ядро системы. Это вполне можно сделать и на уровне библиотек. К тому же структурированные файлы сами по себе не решают серьезной проблемы, полностью осознанной лишь в80 гг. при разработке новых моделей взаимодействия человека с компьютером.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]