Сетевое ПО Лекция 11 (1061300)
Текст из файла
1Сетевое ПО. Лекция 11 (2014 г.)Оглавление1Управление вводом/выводом в ОС UNIX......................................................................................................... 11.1 Организация ввода-вывода.......................................................................................................................... 11.2 Принципы системной буферизации ввода/вывода ..................................................................................... 11.3 Системные вызовы для управления вводом/выводом ................................................................................
31.4 Блочные драйверы ....................................................................................................................................... 51.5 Символьные драйверы................................................................................................................................. 61.6 Потоковые драйверы ...................................................................................................................................
72 Поддержка сети в операционной системе UNIX .............................................................................................. 72.1 Базовые механизмы ..................................................................................................................................... 72.1.1Socket-интерфейс................................................................................................................................ 92.1.2Интерфейс транспортного уровня.....................................................................................................102.1.3Вызов удаленных процедур ..............................................................................................................111 Управление вводом/выводом в ОС UNIX1.1 Организация ввода-выводаТрадиционно в ОС UNIXвыделяютсятритипаорганизацииввода/вывода и, соответственно три типа драйверов.Блочный ввод/вывод главным образом предназначен для работы скаталогами и обычными файлами файловой системы, которые на базовомуровне имеют блочную структуру.
На пользовательском уровне возможноработать с файлами, прямо отображая их в сегменты виртуальной памяти. Этавозможность рассматривается как верхний уровень блочного ввода/вывода. Нанижнем уровне блочный ввод/вывод поддерживается блочными драйверами.Блочный ввод/вывод, кроме того, поддерживается системной буферизацией.Символьный ввод/вывод служит для прямого (без буферизации)выполненияобменовмеждуадреснымпространствомпользователяисоответствующим устройством. Общей для всех символьных драйверовподдержкой ядра является обеспечение функций пересылки данных междупользовательскими и ядерным адресными пространствами.Потоковый ввод/вывод похож на символьный ввод/вывод, но имеетвозможностьвключениявпотокввода/выводапромежуточныхобрабатывающих модулей и обладает существенно большей гибкостью.1.2 Принципы системной буферизации ввода/выводаСпособом снижения накладных расходов при выполнении обменов с2Сетевое ПО.
Лекция 11 (2014 г.)устройствами внешней памяти, имеющими блочную структуру, являетсябуферизация блочного ввода/вывода. Это означает, что любой блок устройствавнешней памяти считывается прежде всего в некоторый буфер областиосновной памяти, называемой в ОС UNIX системным кэшем, и уже оттудаполностью или частично (в зависимости от вида обмена) копируется всоответствующее пользовательское пространство.Принципами организации традиционного механизма буферизации являетсяво-первых, то, что копия содержимого блока удерживается в системномбуфере до тех пор, пока не возникнет необходимость ее замещения по причиненехваткибуферов(дляорганизацииполитикизамещенияиспользуетсяразновидность алгоритма LRU).во-вторых, при выполнении записи любого блока устройства внешнейпамяти реально выполняется лишь обновление (или образование и наполнение)буфера кэша.
Действительный обмен с устройством выполняется либо привыталкивании буфера вследствие замещения его содержимого, либо привыполненииспециальногосистемноговызоваsync(илиfsync),поддерживаемого специально для насильственного выталкивания во внешнююпамять обновленных буферов кэша.Суть другой схемы буферизации состоит в том, что на уровне ядрафактически воспроизводится механизм отображения файлов в сегментывиртуальной памяти.Ядро ОС UNIX работает в собственной виртуальной памяти. Эта памятьимеет более сложную, но принципиально такую же структуру, что ипользовательская виртуальная память.
Виртуальная память ядра являетсясегментно-страничной, и наравне с виртуальной памятью пользовательскихпроцессов поддерживается общей подсистемой управления виртуальнойпамятью.Когда один из пользовательских процессов открывает файл, ядрообразует новый сегмент и подключает к этому сегменту открываемый файл.После этого (независимо от того, будет ли пользовательский процесс работать с3Сетевое ПО. Лекция 11 (2014 г.)файлом в традиционном режиме с использованием системных вызовов read иwrite или подключит файл к сегменту своей виртуальной памяти) на уровне ядраработа будет производиться с тем ядерным сегментом, к которому подключенфайл на уровне ядра. Основная идея подхода состоит в том, что устраняетсяразрывмеждууправлениемвиртуальнойпамятьюиобщесистемнойбуферизацией1.3 Системные вызовы для управления вводом/выводомДля доступа (т.е. для получения возможности последующего выполненияопераций ввода/вывода) к файлу любого вида (включая специальные файлы)пользовательский процесс должен выполнить предварительное подключение кфайлу с помощью одного из системных вызовов open, creat, dup или pipe.Последовательность действий системного вызоваopen (pathname, mode)следующая:• анализируетсянепротиворечивостьвходныхпараметров(главным образом,относящихся к флагам режима доступа к файлу);• выделяется или находится пространство для описателя файла всистемной области данных процесса (U-области);• вобщесистемнойобластивыделяетсяилинаходитсясуществующее пространство для размещения системного описателяфайла (структуры file);• производится поиск в архиве файловой системы объекта сименем "pathname" и образуется или обнаруживается описатель файлауровня файловой системы(vnode);• выполняется связывание vnode с ранее образованной структуройfile.Системные вызовы open и creat (почти) функционально эквивалентны.Любой существующий файл можно открыть с помощью системноговызова creat, и любой новый файл можно создать с помощью системного вызоваopen.4Сетевое ПО.
Лекция 11 (2014 г.)Однако, применительно к системному вызову creat надо подчеркнуть, чтов случае своего естественного применения (для создания файла) этотсистемный вызов создает новый элемент соответствующего каталога (всоответствиисзаданнымзначениемpathname),атакжесоздаетисоответствующим образом инициализирует новый i-узел.Наконец, системный вызов dup (duplicate - скопировать) приводит кобразованию нового дескриптора уже открытого файла. Этот специфическийдляОСUNIXсистемныйвызовслужитисключительнодляцелейперенаправления ввода/вывода .
Его выполнение состоит в том, что в u-областисистемного пространства пользовательского процесса образуется новыйописатель открытого файла, содержащий вновь образованный дескрипторфайла (целое число), но ссылающийся на уже существующую общесистемнуюструктуру file и содержащий те же самые признаки и флаги, которыесоответствуют открытому файлу-образцу.Другими важными системными вызовами являются системные вызовыread и write.Системный вызов read выполняется следующим образом:• в общесистемной таблице файлов находится дескриптор указанногофайла, и определяется, законно ли обращение от данного процесса к данномуфайлу в указанном режиме;• на некоторое (короткое) время устанавливается синхронизационнаяблокировка на vnode данного файла (содержимое описателя не должноизменяться в критические моменты операции чтения);• выполняется собственно чтение с использованием старого или новогомеханизма буферизации, после чего данные копируются, чтобы статьдоступными в пользовательском адресном пространстве.Операциязаписивыполняетсяаналогичнымобразом,номеняетсодержимое буфера буферного пула.Системный вызов close приводит к тому, что драйвер обрывает связь ссоответствующим пользовательским процессом и (в случае последнего по5Сетевое ПО.
Лекция 11 (2014 г.)времени закрытия устройства) устанавливает общесистемный флаг "драйверсвободен".Наконец,дляспециальныхфайловподдерживаетсяещеодин"специальный" системный вызов ioctl.Это единственный системный вызов, который обеспечивается дляспециальных файлов и не обеспечивается для остальных разновидностейфайлов. Фактически, системный вызов ioctl позволяет произвольным образомрасширить интерфейс любого драйвера.Параметры ioctl включают код операции и указатель на некоторуюобласть памяти пользовательского процесса.
Всю интерпретацию кодаоперации и соответствующих специфических параметров проводит драйвер.Естественно, что поскольку драйверы главным образом предназначеныдля управления внешними устройствами, программный код драйвера долженсодержать соответствующие средства для обработки прерываний от устройства.Вызовиндивидуальнойпрограммыобработкипрерыванийвдрайверепроисходит из ядра операционной системы. Подобным же образом в драйвереможет быть объявлен вход "timeout", к которому обращается ядро приистечении ранее заказанного драйвером времени (такой временной контрольявляется необходимым при управлении не слишком интеллектуальнымиустройствами).Общая схема интерфейсной организации драйверов показана на рис.2Какпоказываетэтотрисунок,сточкизренияинтерфейсовиобщесистемного управления различаются два вида драйверов - символьные иблочные.С точки зрения внутренней организации выделяется еще один виддрайверов - потоковые (stream) драйверы.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.