Билеты (Graur) (1114774), страница 26
Текст из файла (страница 26)
При этом, разумеется, даже если до этого не был вызванshutdown(), соединение будет закрыто. Таким образом, в принципе, если поокончании работы с сокетом мы собираемся закрыть соединение и по чтению, и позаписи, можно было бы сразу вызвать close() для дескриптора данного сокета,опустив вызов shutdown(). Однако, есть небольшое различие с тем случаем,когда предварительно был вызван shutdown(). Если используемый длясоединения протокол гарантирует доставку данных (т.е. тип сокета – виртуальныйканал), то вызов close() будет блокирован до тех пор, пока система будетпытаться доставить все данные, находящиеся «в пути» (если таковые имеются), вто время как вызов shutdown() извещает систему о том, что эти данные уже ненужны и можно не предпринимать попыток их доставить, и соединениезакрывается немедленно.
Таким образом, вызов shutdown() важен в первуюочередь для закрытия соединения сокета с использованием виртуального канала.Резюме: общая схема работы с сокетами.Мы рассмотрели все основные функции работы с сокетами. Обобщая изложенное,можно изобразить общую схему работы с сокетами с установлением соединения вследующем виде:Серверный сокетКлиентский сокетsocketsocketbindbindcloseacceptrecvsendconnectshutdownlistenrecvsendshutdowncloseshutdowncloseновый сокетРис.
12 Схема работы с сокетами с установлением соединенияБИЛЕТ 37Общая схема работы с сокетами без предварительногоустановления соединения проще, она такова:socketbindrecvfromsendtoshutdowncloseРис. 13 Схема работы с сокетами без установления соединенияБилет 38????????????????????????????????????????????????????Билет 39. Основные правила работы с файлами.Типовые программные интерфейсы работы с файлами.Файловая система (ФС) - часть операционной системы, представляющая собойсовокупность организованных наборов данных, хранящихся на внешнихзапоминающих устройствах, и программных средств, гарантирующихименованный доступ к этим данным и их защитуВозможности предоставляемые ФС определяют эксплутационные качества ФС.
Отоптимальности организации зависит область применимости ФС.ФС – компонент ОС обеспечивающий именованный доступ к данным. Данныеназываются файлами, их имена - именами файлов.Ранее работа с данными осуществлялась через координаты их на внешнихносителях. Это было неудобно, т.к. надо было помнить о местонахожденииданных, перемещение программы с одного носителя на другой тоже вызывалотрудности.
Если возникала потребность менять входные данные в программе, тоэто тоже было не легко.ФС совершила революцию. Появилась возможность ассоциировать ссовокупностью данных некоторое имя и осуществлять доступ к данным черезуказатель имени.ОС брала на себя функции размещения данных, ассоциированных с именем,сохранение информации, соответствующей данному имени.Структурная организация файловСуществует множество разновидностей структурной организации файлов.Наиболее популярные:1.Файл, как последовательность байтов (обмен от 1 до фиксированного числабайтов) Т.е.
файл – это набор данных, практически не имеющих никакойструктуры. Соответственно вопрос выделения логической структуры – это ужепроблема пользователя. Пользователь записывает данные, как последовательностьбайтов, считывает их и сам уже интерпретирует. Как ни странно, на сегодняшнийдень – это одна из самых распространенных моделей структурной организациифайлов.
Таким образом организуются файловые системы Unix, Windows, т.е. файлтам может быть представлен как просто последовательность байтов2. Файл, как последовательность записей переменной длины (обмен в терминахзаписи, информация в виде последовательности записей, поле данных + символконца записи, последовательный доступ) В этом случае каждая запись, кромесодержательной информации, должна была иметь некоторую специальнуюинформацию. эта специальная информация могла быть либо полем, которомууказывалась длина записи, либо специальная информация могла представляться ввиде специального кода - маркера конца или начала записи.
При такой организациивнутренней фрагментации практически не было, за исключением тех потерь,которые приходились на разметку файла по записи, т.е. либо указатели длины,либо маркеры начала и конца. В этом плане эффективность организации хранениябыла относительно хорошей. С другой стороны такая организация исключалапрямой доступ к записи.
Т.е. для того, чтобы добраться до i-ой записи нужно былопромотать все предыдущие: либо пересчитать маркеры начала и конца, либопробежаться по списку через указатели длины. Файлы такой организации имелисложность с точки зрения редактирования, т.е. изменение длины существующейзаписи с большой вероятностью приводило к проблеме. Поскольку увеличениезаписи – это вообще затруднительная операция, а уменьшение – тоже естьнекоторая проблема. Т.е. есть какая-то внутренняя проблема, которая приводила кнеэффективности редактирования такого рода файлов. Записи постоянной длиныорганизованы были так, что в пределах размера записи никаких проблем невозникало. Проблемы возникали только в том случае, если происходило либоудаление записи, либо вставка новой записи.3. Файл, как последовательность записей постоянной длины (обмен в терминахзаписей постоянной длины) Исторически этот вариант структурной организациипоявился из-за использования такого носителя информации, как перфокарты. Т.е.было удобно делать файл, который был прямым аналогом колоды перфокарт.Соответственно это означает, что читать из файла или писать данные в этот файлсистема позволяла порциями размером в 80 байт.
Понятно, что такая организациифайла достаточно эффективна по скорости доступа, т.е. был прямой доступ клюбой записи, потому что координаты записи внутри вычислялись всегда оченьпросто: (номер записи)*(размер записи). С другой стороны – внутренняяфрагментация. Один байт используется в записи и вся запись размером в 80 байтовстановится занятой.4. Иерархическая организация файла (дерево) (поиск, сортировка и т.д.осуществляется по ключам).
Суть: структура файла представима в виде дерева. Вкаждом узле этого дерева находится информация о записи. Информация о записи –это два содержательных поля: поле ключа и поле данных. Соответственно деревоорганизовано таким образом, что в нем оптимизирован доступ к записям поуказанию ключа, т.е. записи отсортированы по одинаковым ключам, и разныеключи отсортированы по возрастанию ключей. Поле данных может бытьпроизвольного размера. Место расположения записи может быть в общем случаепроизвольно, т.е. ФС может разместить запись, где захочет, по своим каким-токритериям.
имеются накладные расходы, связанные с древовидной организацией с организацией ключей. Обычно, это достаточно специализированные ФС, которыеиспользуются или могут использоваться в высокопроизводительных, либоспециальных ВС.Дерево, в узлах записи(возможно переменной длины).Атрибуты файлаимяправа доступаперсонификация (создатель, владелец)тип файларазмер записиразмер файлауказатель чтения / записивремя созданиявремя последней модификациивремя последнего обращенияпредельный размер файла.....Полный состав атрибутов файла и способ их представления определяетсяконкретной файловой системой.Основные правила работы с файламиОперационная система и файловая система обеспечивают регистрациювозможности того или иного процесса работать с содержимым файлов. «Сеансработы» с содержимым файла:Начало«открытие» файла (регистрация в системе возможности работыпроцесса с содержимым файла)Открытие – создание внутрисистемной структуры данных, кот.
описываетсостояние этого файла, проверяет права доступа, объявляет операционной системетот факт, что с данным файлом будет работать тот или иной процесс. Приоткрытии файла система формирует внутренние наборы данных, необходимые дляработы с содержимым файла.Работа с содержимым файла, с атрибутами файлаЗавершение«закрытие» файла – информация системе о завершении работыпроцесса с «открытым» файломЗакрытие файла.
Закрытие файла - информация операционной системе о том, чторабота с файлом завершена.Операция закрытия файла имеет 2 вида:закрыть и сохранить текущее содержимое файла;уничтожить файл.Типовые программные интерфейсы работы с файламиopen– открытие / создание файла«r» - на чтение«w» - на запись… и т.д.close– закрытиеread / write – читать, писать (относительно положения указателя чтения / запись,read/write по дескриптору а не по имени)delete– удалить файл из файловой системы (напрямую или дескриптор)seek– позиционирование указателя чтение/записьrename– переименование файлаread / write _attributes – чтение, модификацияатрибутов файла.Файловый дескриптор – системная структура данных, содержащая информацию оактуальном состоянии «открытого» файла.Файловый дескриптор содержит актуальную информацию о открытом файле. ЧерезФД можно получить информацию о значении указателей чтения\записи.В некоторых ФС каталог – отдельное внутреннее образование, в UNIX каталог –файл специального типа.