Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Файловые операции. Способы организации файловых операций.
Файловая система ОС должна предоставлять пользователю набор операций для работы с файлами, оформленные в виде системных вызовов. Набор состоит из: создание файла, чтение из файла и т. д. Какие бы операции не выполнялись над файлом ОС необходимо выполнить ряд универсальных для всех операций действий: 1. по символьному имени файла найти характеристики, которые хранятся в физической системе на диске; 2. скопировать характеристики файла в оперативную память, чтобы программный код мог их использовать; 3. на основании характеристик файла проверить права пользователя на выполнение запрошенной информации; 4. очистить область памяти, отведенную на временное хранение характеристик файлов. Кроме того, каждая операция включает ряд уникальных действий: а) чтение определенного набора кластеров диска; б) удаление файлов и т.д. ОС может выполнять последовательность действий над файлами двумя способами: 1. для каждой операции выполняется как универсальные, так и уникальные действия, такая схема называется схема без запоминания состояния операции.. он более устойчив к сбоям в работе системы, так как каждая операция является самодостаточной и не зависит от операции предыдущей. Применяется в распределенных сетевых файловых системах. 2. все универсальные действия выполняются в начале и конце последовательности операций, а для промежуточной операции выполняются только уникальные действия, подавляющее большинство файловых систем поддерживает этот метод как более экономный и быстрый. Стандартные файлы ввода и вывода, перенаправление вывода Ввод/вывод в операционных системах может быть организован двумя принципиально разными способами. Первый способ- это прямое программирование устройств ввода/вывода (дисковода, экрана, модема, клавиатуры). Он может быть организован на различных уровнях (непосредственное программирование устройств, использование сервисных средств операционной системы, смешанный подход и т.д.), но суть его при этом не меняется. Каждая программа, написанная с использованием этого способа, может работать только с этим устройством и ни с каким другим. В настоящее время используется именно этот способ. Именно с помощью этого подхода (точнее, путем "косвенного" программирования периферийных устройств через драйверы этих устройств) и реализован классический WIMP - интерфейс. Он позволяет создавать красивые и довольно содержательные средства общения с пользователем (меню, окна и тому подобное), а современные технологии позволяют программе при установке автоматически настраиваться на установленное на компьютере оборудование. Но у этих систем есть недостаток: они не могут принять данные с устройств и передать данные устройствам, для работы с которыми они не созданы. Например, нельзя данные вводить с модема, если программа работает только с клавиатурой. Чтобы осуществить это, используют другой способ: ввод/вывод с использованием потоков. В этом случае каждое устройство рассматривается операционной системой как файл, куда можно поместить и откуда можно взять информацию. Так же, как информация, записанная в файл, рассматривается операционной системой как единое целое, не зависимо от способа записи его на диске, так и физическая реализация процесса ввода/вывода информации устройством никак не отражается на работе пользователя. Как правило, эффект, достигаемый прямым программированием устройств, невозможно реализовать на уровне потоков (нельзя даже поменять цвет символов, не говоря уж о применении графики!) Но выигрыш в унификации процессов иногда оказывается более существенным, например, при работе с текстовой информацией, при автоматическом проведении эксперимента и тому подобное. Поток, представляет собой некоторый буфер в памяти, куда поступает или откуда выбирается информация. Существуют следующие стандартные потоки: 1. Стандартный поток ввода - это обычно клавиатура. 2. Стандартный поток вывода - это обычно монитор. 3. Стандартный поток вывода ошибок и диагностических сообщений (стандартный поток ошибок) - это обычно дисплей (монитор). Использование потоков не имело бы никаких преимуществ перед прямым программированием устройств, если бы их нельзя было переназначать с одного устройства на другое, а также переназначить ввод/вывод информации устройством в файл. Обычными средствами DOS не может перенаправить стандартный поток ошибок. В UNIX для этого можно использовать команды 2> и 2>>, соответствующие вышеприведенным для стандартного потока вывода. Для перенаправления в UNIX стандартного потока ошибок в стандартный поток вывода используется конструкция >$ (по умолчанию в UNIX стандартному потоку ввода присваивается номер 0, стандартному потоку вывода - 1, а стандартному потоку ошибок - 2. Конструкция в UNIX 0 >$ 2 переназначает стандартный поток ввода в стандартный поток ошибок, то есть все символы, введенные в этом сеансе с клавиатуры, тут же отображаются на экране, и их нельзя перенаправить в файл). Символы переадресации очень удобны, но иногда бывает необходимо организовать последовательность программ, выполняющих обработку информации, причем результат предыдущей программы является исходным для следующей. При этом промежуточные данные желательно никуда не записывать. Чтобы организовать такую обработку, используют знак '|' конвейера. Команды - "цепочки" такой обработки данных просто записываются в одну строку в порядке их вызова для обработки данных, и отделяются одна от другой знаком конвейера '|'. Пример: sort < mylist | more. В этом примере данные из файла mylist сортируются программой sort и постранично выводятся на экран программой more. В UNIX тоже возможна переадресация потока с одновременным выводом данных на экран, и даже переадресация на два разных устройства. Для переадресации стандартного вывода в файл с одновременной выдачей информации на экран используется команда tee. Например, команда cat в UNIX позволяет просматривать файл. Следующая конструкция: cat first | tee second копирует файл first в файл second, одновременно показывая его на экране. Для вывода данных на принтер используются конструкции: в DOS > prn в UNIX lpr Еще один пример: команда cat first | tee second | lpr копирует файл first в файл second, одновременно распечатывая его на принтере. Командой lpr можно также вывести несколько файлов на печать. |
||
Последнее изменение этой страницы: 2018-05-10; просмотров: 732. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |