Эффективное управление личными файлами.

16.07.2019

Под файлом обычно понимают набор данных, организованных в виде совокупности записей одинаковой структуры. Для управления этими дан­ными создаются соответствующие системы управления файлами. Возможность иметь дело с логическим уровнем структуры данных и операций, выполняемых над ними в процессе их обработки, предоставляет файловая система . Таким об­разом, файловая система – это набор спецификаций и соответствующее им про­граммное обеспечение, которые отвечают за создание, уничтожение, организацию, чтение, запись, модификацию и перемещение файловой информации, а также за управление доступом к файлам и за управление ресурсами, которые используют­ся файлами. Именно файловая система определяет способ организации данных на диске или на каком-нибудь ином носителе данных.

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

– создание, удаление, переименование (и другие операции) именованных набо­ров данных (именованных файлов) из своих программ или посредством спе­циальных управляющих программ, реализующих функции интерфейса пользо­вателя с его данными и активно использующих систему управления файлами;

– работа с не дисковыми периферийными устройствами как с файлами;

– обмен данными между файлами, между устройствами, между файлом и уст­ройством (и наоборот);

– работа с файлами с помощью обращений к программным модулям системы управления файлами;

– защита файлов от несанкционированного доступа.

В некоторых ОС может быть несколько систем управления файлами, что обеспе­чивает им возможность работать с несколькими файловыми системами. Очевид­но, что системы управления файлами, будучи компонентом ОС, не являются не­зависимыми от этой ОС, поскольку они активно используют соответствующие вызовы прикладного программного интерфейса API (application program interface) . С другой стороны, системы управления файлами сами дополняют API новыми вызовами. Можно сказать, что основное назначение файловой системы и соот­ветствующей ей системы управления файлами – организация удобного доступа к данным, организованным как файлы, то есть вместо низкоуровневого доступа к данным с указанием конкретных физических адресов нужной записи ис­пользуется логический доступ с указанием имени файла и записи в нем.

Другими словами, термин «файловая система» определяет, прежде всего, прин­ципы доступа к данным, организованным в файлы. Этот же термин часто исполь­зуют и по отношению к конкретным файлам, расположенным на том или ином носителе данных. А термин «система управления файлами» следует употреблять по отношению к конкретной реализации файловой системы. То есть система управления файлами – это ком­плекс программных модулей, обеспечивающих работу с файлами в конкретной операционной системе.

Еще раз подчеркнем, что любая система управления файлами не существу­ет сама по себе – она разработана для функционирования в конкретной ОС. То есть, для работы с файла­ми, организованными в соответствии с некоторой файловой системой, для каж­дой ОС должна быть разработана соответствующая система управления файлами. Эта система управления файлами будет работать только в той ОС, для которой она и создана. Но при этом она позволит работать с файлами, созданными с по­мощью системы управления файлами другой ОС и организованными в файловую систему по тем же основ­ным принципам.

Для того чтобы можно было загрузить с магнитного диска собственно саму ОС, а уже с ее помощью и организовать работу той или иной системы управления файлами, были приняты специальные системные соглашения о структуре диска. Информация на магнитных дисках размещается и передается бло­ками. Каждый такой блок называется сектором (sector) , секторы расположены на концентрических дорожках поверхности диска. Каждая дорожка (track) обра­зуется при вращении магнитного диска под зафиксированной в некотором пред­определенном положении магнитной головкой чтения-записи (head). Накопитель на жестких магнитных дисках (НЖМД) содержит один или более дисков. Обычно под термином «жесткий диск» понимают весь пакет магнитных дисков. Группы дорожек (треков) одного радиуса, расположенных на поверхностях разных маг­нитных дисков, образуют так называемые цилиндры (cylinder).

Каждый сектор состоит из поля данных и поля служебной информации, ограни­чивающей и идентифицирующей его. Размер сектора (точнее – емкость поля данных) устанавливается контроллером или драйвером. Физический адрес сектора на магнитном диске определяется с помощью трех «координат», то есть представляется триадой [c–h–s ], где с – номер цилиндра (дорожки на по­верхности диска), h – номер рабочей поверхности диска (магнитной го­ловки), s – номер сектора на дорожке. Номер цилиндра лежит в диапа­зоне 0 . . . С –1, где С – количество цилиндров. Номер рабочей поверхности диска находится в диапазоне 0 . . . Н –1, где Н – число магнитных головок в накопителе. Номер сектора на дорожке определяется в диапазоне 1 . . . S , где S – количество секторов на дорожке. Например, триада адресует сектор 2 на рабочей поверхности 0 цилиндра 1.

Обмен информацией между оперативной памятью и дисками физически осуществ­ляется только секторами. Вся совокупность физических секторов на НЖМД представляет его так называемую неформатированную емкость.

Жесткий диск может быть разбит на несколько разделов (partition) , которые затем могут использоваться либо одной ОС, либо различными ОС. Причем в каждом разделе может быть органи­зована своя файловая система. Однако для организации даже единственной файловой системы необходимо определить, по крайней мере, один раздел.

Разделы диска могут быть двух типов – primary (обычно этот термин переводят как первичный ) и extended (расширенный ). При этом на диске обязательно должен быть по крайней мере один primary-раздел. Если primary-разделов несколько, то только один из них может быть активным. Именно загрузчику, расположенному в активном разделе, передается управление при включении ВМ и загрузке ОС.

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

Обычно разные файлы могут иметь одинаковые символьные имена. В этом случае файл однозначно идентифицируется так называемым составным именем, представляющем собой последовательность символьных имен каталогов. В некоторых системах одному и тому же файлу не может быть дано несколько разных имен, а в других такое ограничение отсутствует. В последнем случае операционная система присваивает файлу дополнительно уникальное имя, так, чтобы можно было установить взаимнооднозначное соответствие между файлом и его уникальным именем. Уникальное имя представляет собой числовой идентификатор и используется программами операционной системы.

Файлы бывают разных типов: обычные файлы , специальные файлы, файлы-каталоги.

Обычные файлы в свою очередь подразделяются на текстовые и двоичные . Текстовые файлы состоят из строк символов, представленных в ASCII-коде. Это могут быть документы, исходные тексты программ и т.п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют ASCII-коды, они часто имеют сложную внутреннюю структуру, например, объектный код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов – их собственные исполняемые файлы.

Специальные файлы – это файлы, ассоциированные с устройствами ввода-вывода, которые позволяют пользователю выполнять операции ввода-вывода, используя обычные команды записи в файл или чтения из файла. Эти команды обрабатываются вначале программами файловой системы, а затем на некотором этапе выполнения запроса преобразуются ОС в команды управления соответствующим устройством. Специальные файлы, так же как и устройства ввода-вывода, делятся на блок-ориентированные и байт-ориентированные.

Каталог – это, с одной стороны, группа файлов, объединенных пользователем исходя из некоторых соображений (например, файлы, содержащие программы игр, или файлы, составляющие один программный пакет), а с другой стороны – это файл, содержащий системную информацию о группе файлов, его составляющих. В каталоге содержится список файлов, входящих в него, и устанавливается соответствие между файлами и их характеристиками (атрибутами).

В разных файловых системах могут использоваться в качестве атрибутов файлов разные характеристики, такие, например, как информация о разрешенном доступе, пароль для доступа к файлу, владелец файла, создатель файла, признак «только для чтения», признак «скрытый файл», признак «системный файл», признак «архивный файл», признак «двоичный/символьный», признак «временный», признак блокировки, длина записи, указатель на ключевое поле в записи, длина ключа, время создания, время последнего доступа, время последнего изменения, текущий размер файла, максимальный размер файла.

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

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

Программист имеет дело с логической организацией файла , представляя файл в виде определенным образом организованных логических записей. Логическая запись – это наименьший элемент данных, которым может оперировать программист при обмене с внешним устройством. Даже если физический обмен с устройством осуществляется большими единицами, операционная система обеспечивает программисту доступ к отдельной логической записи. Записи могут быть фиксированной длины или переменной длины. Записи могут быть расположены в файле последовательно (последовательная организация ) или в более сложном порядке, с использованием так называемых индексных таблиц, позволяющих обеспечить быстрый доступ к отдельной логической записи (индексно-последовательная организация ). Для идентификации записи может быть использовано специальное поле записи, называемое ключом.

Физическая организация файла описывает правила расположения файла на устройстве внешней памяти, в частности, на диске. Файл состоит из физических записей – блоков . Блок (как уже было отмечено выше) – наименьшая единица данных, которой внешнее устройство обменивается с оперативной памятью. В некоторых ОС такая наименьшая единица обмена называется кластером . При этом кластер может состоять из нескольких блоков.

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

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

Следующим способом физической организации файлов является использование так называемого связанного списка индексов. При этом с каждым блоком связывается некоторый элемент – индекс . Индексы располагаются в отдельной области диска. Если некоторый блок распределен некоторому файлу, то индекс этого блока содержит номер следующего блока данного файла. При такой физической организации сохраняются все достоинства предыдущего способа, но снимаются оба отмеченных недостатка: во-первых, для доступа к произвольному месту файла достаточно прочитать только блок индексов, отсчитать нужное количество блоков файла по цепочке и определить номер нужного блока, и, во-вторых, данные файла занимают блок целиком (за исключением последних блоков файла).

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

Рассмотрим понятие прав доступа к файлу . Определить права доступа к файлу – значит определить для каждого пользователя набор операций, которые он может применить к данному файлу. В разных файловых системах может быть определен свой список дифференцируемых операций доступа. Этот список может включать следующие операции: создание файла, уничтожение файла, открытие файла, закрытие файла, чтение файла, запись в файл, дополнение файла, поиск в файле, получение атрибутов файла, установление новых значений атрибутов, переименование, выполнение файла, чтение каталога и другие операции с файлами и каталогами.

В файловых системах пользователи могут быть разделены на отдельные категории. Для всех пользователей одной категории определяются единые права доступа.

Различают два основных подхода к определению прав доступа:

1) избирательный доступ , когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции;

2) мандатный доступ , когда система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости от того, к какой группе пользователь отнесен.

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

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

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

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

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

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

На физическом уровне файловая система определяет номер физического блока, который содержит требуемую логическую запись, и смещение логической записи в физическом блоке. Для решения этой задачи используются результаты работы логического уровня – смещение логической записи в файле, адрес файла на внешнем устройстве, а также сведения о физической организации файла, включая размер блока. Подчеркнем, что задача физического уровня решается независимо от того, как был логически организован файл. После определения номера физического блока, файловая система обращается к системе ввода-вывода для выполнения операции обмена с внешним устройством. В ответ на этот запрос в буфер файловой системы будет передан нужный блок, в котором на основании смещения, полученного при работе физического уровня, выбирается требуемая логическая запись.

По сравнению с доступом к памяти, традиционный доступ к файлам представляется сложным и неудобным. По этой причине некоторые ОС обеспечивают отображение файлов в адресное пространство выполняемого процесса . Это выражается в появлении двух системных вызовов: «отобразить» и «отменить отображение» . Первый вызов передает операционной системе в качестве параметров имя файла и виртуальный адрес, и ОС отображает указанный файл в виртуальное адресное пространство по указанному адресу. Отображение файлов лучше всего работает в системе, которая поддерживает сегментацию. В такой системе каждый файл может быть отображен в свой собственный сегмент. С этого момента процесс может копировать сегмент-источник в сегмент-приемник с помощью обычного программного цикла, использующего команды пересылки в памяти. После выполнения копирования процесс может выполнить вызов «отменить отображение» для удаления файла из адресного пространства, а затем завершиться. Выходной файл будет существовать на диске, как если бы он был создан обычным способом.

Хотя отображение файлов исключает потребность в выполнении ввода-вывода и тем самым облегчает программирование, этот способ порождает и некоторые новые проблемы. Во-первых, для системы сложно узнать точную длину выходного файла. Проще указать наибольший номер записанной страницы, но нет способа узнать, сколько байт в этой странице было записано. Вторая проблема проявляется (потенциально), если один процесс отображает файл, а другой процесс открывает его для обычного файлового доступа. Если первый процесс изменяет страницу, то это изменение не будет отражено в файле на диске до тех пор, пока страница не будет вытеснена на диск. От системы в этом случае требуется поддержание согласованности данных файла для этих двух процессов. Третья проблема состоит в том, что файл может быть больше, чем сегмент, и даже больше, чем все виртуальное адресное пространство. Единственный способ ее решения состоит в реализации вызова «отобразить» таким образом, чтобы он мог отображать не весь файл, а его часть. Такая работа, очевидно, менее удобна, чем отображение целого файла.

Разработчики ОС стремятся обеспечить пользователя возможностью работать сразу с несколькими файловыми системами. В новом понимании файловая система состоит из многих составляющих, в число которых входят и файловые системы в традиционном понимании. Современные файловые системы располагают так называемым переключателем файловых систем. Он обеспечивает интерфейс между запросами приложения и конкретной файловой системой, к которой обращается это приложение. Переключатель файловых систем преобразует запросы в формат, воспринимаемый следующим уровнем – уровнем файловых систем .

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

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

Большое число уровней архитектуры файловой системы обеспечивает авторам драйверов устройств большую гибкость: драйвер может получить управление на любом этапе выполнения запроса – от вызова приложением функции, которая занимается работой с файлами, до того момента, когда работающий на самом низком уровне драйвер устройства начинает просматривать регистры контроллера. Многоуровневый механизм работы файловой системы реализован посредством цепочек вызова устройств. В ходе инициализации драйвер устройства может добавить себя к цепочке вызова некоторого устройства, определив при этом уровень последующего обращения. Подсистема ввода-вывода помещает адрес целевой функции в цепочку вызова устройства, используя заданный уровень для того, чтобы должным образом упорядочить цепочку. По мере выполнения запроса, подсистема ввода-вывода последовательно вызывает все функции, ранее помещенные в цепочку вызова. Внесенная в цепочку вызова процедура драйвера может передать запрос дальше – в измененном или в неизмененном виде – на следующий уровень, или, если это возможно, процедура может удовлетворить запрос, не передавая его дальше по цепочке.

Резюме

Функциями ОС по управлению памятью являются: отслеживание свободной и занятой памяти, выделение памяти процессам и освобождение памяти при завершении процессов, вытеснение процессов из оперативной памяти на диск и возвращение их в оперативную память, настройка адресов программы на конкретную область физической памяти.

Для идентификации команд и переменных используются символьные имена (метки), виртуальные адреса и физические адреса.

Самым простым способом управления оперативной памятью является разделение ее на несколько разделов фиксированной величины. При распределении памяти разделами переменной величины память ВМ заранее не делится на разделы и сначала вся оперативная память свободна. Каждому вновь поступающему процессу выделяется необходимая память.

Эффективным методом управления памятью является применение механизма так называемой виртуальной памяти с использованием, например, дискового пространства. Наиболее распространенными способами реализации виртуальной памяти является страничное, сегментное и странично-сегментное распределение памяти, а также свопинг, когда некоторые процессы, находящиеся в состоянии ожидания, временно целиком выгружаются на диск.

Память ВМ представляет собой иерархию запоминающих устройств, включающую внутренние регистры процессора, различные типы сверхоперативной, оперативной и постоянной памяти, внешнюю память на магнитных дисках и других типах устройств. Разные типы запоминающих устройств отличаются средним временем доступа и стоимостью хранения данных в расчете на один бит.

Кэширование информации–это способ организации совместного функционирования двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных, который позволяет уменьшить среднее время доступа к данным за счет динамического копирования наиболее часто используемой информации из относительно более «медленного» ЗУ в более «быстрое» ЗУ (называемое кэш-памятью). Кэширование выполняется автоматически системными средствами.

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

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

Устройства ввода-вывода могут быть разделяемыми, допускающими одновременный доступ нескольких пользователей к устройству (например, дисковые устройства), и выделенными, не допускающими одновременную работу с ними разными пользователями (например, устройства печати – принтеры).

Для освобождения процессора от операций последовательного вывода данных из оперативной памяти или последовательного ввода в нее используется механизм прямого доступа внешних устройств к памяти – ПДП илиDMA. При этом специальный контрол­лер DMA забирает у процессора управление локальной магистралью для выставления соответствующих сигналов за­писи информации в память или чтения информации из памяти на шины адреса, данных и управления. Контроллер DMA имеет несколько каналов DMA, которые мо­гут подключаться к различным устройствам ввода-вывода.

Под файлом обычно понимают набор данных, организованных в виде совокупности записей одинаковой структуры. Для управления этими дан­ными создаются соответствующие системы управления файлами. Возможность иметь дело с логическим уровнем структуры данных и операций, выполняемых над ними в процессе их обработки, предоставляет файловая система. Файловая система – это набор спецификаций и соответствующее им про­граммное обеспечение, которые отвечают за создание, уничтожение, организацию, чтение, запись, модификацию и перемещение файловой информации, а также за управление доступом к файлам и за управление ресурсами, которые используют­ся файлами. Файлы идентифицируются символьными именами, которые дают им пользователи. При этом учитываются ограничения ОС как на используемые символы, так и на длину имени.

Файлы подразделяются на обычные, специальные и файлы-каталоги. Обычные файлы в свою очередь подразделяются на текстовые и двоичные.

Различают логическую и физическую организации файла. Логическая организация представляет файл в виде определенным образом организованных логических записей. Физическаяорганизация файла описывает правила расположения файла на устройстве внешней памяти, в частности на диске.

Информация на магнитных дисках размещается и передается бло­ками. В некоторых ОС такая наименьшая единица обмена называется кластером. При этом кластер может состоять из нескольких блоков.

Наиболее известными способами физической организации файлов являются непрерывное размещение блоков данного файла на диске, размещение в виде связанного списка блоков дисковой памяти, использование связанного списка индексов, простое перечисление номеров блоков файла.

В разных файловых системах может быть определен свой список прав доступа к файлам, то есть набор операций, которые пользователь может применить к данному файлу.

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

Некоторые ОС обеспечивают отображение файлов в адресное пространство выполняемого процесса.

Контрольные вопросы и задания

1. Охарактеризуйте существующие методы управления оперативной памятью.

2. Какие способы распределения виртуальной памяти чаще всего применяются, в чем их недостатки и преимущества?

3. Укажите отличие блок-ориентированных устройств ввода-вывода от байт-ориентированных?

4. В чем заключается смысл разбиения программного обеспечения ввода-вывода на несколько уровней?

5. Приведите примеры разделяемых и выделенных устройств ввода-вывода.

6. Опишите механизм прямого доступа устройств к памяти.

7. Дайте определение понятиям «система управления файлами» и «файловая система».

8. Какие функции в операционных системах выполняет система управления файлами?

9. Опишите структуру магнитного диска.

10. Дайте понятие логической организации файлов.

11. Охарактеризуйте наиболее известные способы физической организации файлов.

12. Какие уровни составляют многоуровневую модель функционирования файловой системы?

Управление личными файлами на компьютере сопряжено со следующими сложностями.
  • Файлы теряются (куда сохранено? как названо?);
  • Навигация в файловом менеджере отнимает много времени;
  • Система каталогов позволяет с относительным удобством классифицировать файлы только по одному признаку.

Решение

Решение состоит в том, чтобы:
  • cпециальным образом именовать любой сохраняемый файл;
  • хранить все файлы в одной папке;
  • обращаться к файлам через единственный интерфейс - строку поиска (например, Spotlight в OS X).
Звучит как безумие. Но если сломать в голове парадигму обычного обращения с файлами и применить этот подход, то это сэкономит много времени и нервов.

Специальное именование

При именовании необходимо ответить на три главных вопроса: когда, что, зачем .
  • Когда - это дата. Удобней всего указывать дату создания содержания файла. Дата должна быть указана в начале имени файла в формате yymmdd . Пример: «141027»;
  • Что или что есть этот файл? - это класс объекта. Это может быть книга, бизнес-план, идея, квитанция, билет на самолет, фото паспорта, отсканированный чек - что угодно. Ответ на вопрос должен быть указан в имени файла в формате o=что есть этот файл . «o» - это сокращение от «object». Вы можете выбрать свое сокращение, конечно. Примеры: «o=book», «o=businessPlan», «o=thought»;
  • Зачем - это краткое имя задачи (проекта), для решения которой этот файл существует. Ответ на вопрос зачем должен быть указан в имени файла в формате t=задача . «t» - это сокращение от «task». Примеры: «t=myNewKillerApp», «t=новыйЯзыкПрограммированияКоторыйЯУчу», «t=ремонт».
После ответов на эти три главных вопроса в имя файла можно записать что угодно, что потом поможет его найти. Примеры полного именования: «141027 o=book t=business Geoffrey A. Moore - Crossing the Chasm», «141027 o=resume t=job резюме для Яндекса».

В том же формате, параметр=значение , можно присваивать файлу любые другие параметры с любыми значениями. Например.

  • client=имяКлиента - для имени заказчика, которому вы делаете проект;
  • v=номерВерсии - для версии файла;
  • Или даже, если содержание файла связано с какими-то сильными чувствами (например, потому что это особая для Вас книга, цитата, фотография котика), то можно ввести параметр «feeling», сокращенно «f», и добавлять в имя файла, например, следующее «f=passion», «f=humor».
Так можно именовать не только файлы, но и каталоги. Например, если это каталог с исходными кодами какого-либо приложения.

Значения параметров можно делать вложенными. Например, «o=summary.book».

Кроссплатформенность

Та самая общая папка со всеми файлами должна храниться в месте, которое автоматически копируется в облако. Для примера, будем везде далее говорить о DropBox. Тогда в папке «Dropbox» будет наша общая папка, например, «bigBox». Так файл становится доступен с любого устройства по умолчанию.

Но файлы определенного типа иногда следует сохранять в отдельных специальных папках, а не в общей. Это нужно для синхронизации файлов отдельных приложений на смартфоне. Например, все текстовые файлы пойдут в одну папку (например, «textBox»), все pdf - в другую (например, «pdfBox»). Приложения на смартфоне для управления текстовыми файлами и pdf-файлами будут синхронизироваться именно с этими папками, каждое - со своей.

Удобство решения в том, что:

  • можно переходить с приложения на приложение безболезненно;
  • на смартфоне всегда доступен поиск по всем файлам через приложение Dropbox (ведь изначально может быть неизвестно в каком формате окажется искомая информация по проекту, например).
Если говорить об iOS, то для текстовых файлов я использую Notesy (понимает Markdown, имеет свой поиск), для pdf - PDF Expert или PDFpen. Все приложения синхронизируются с DropBox.

Закладки браузера

Закладки браузера нужно именовать точно так же, но они хранятся браузером отдельно и в общем случае Вам будет недоступен поиск через один интерфейс строки поиска. Поэтому тут придется искать компромисс. Варианты следующие.
  • Можно не пользоваться закладками браузера вообще, а сохранять ссылки в виде файлов типа webloc в OS X или файлов типа Internet Shortcut в Windows. (В OS X это делается путем перетаскивания ссылки из строки браузера (за поле слева) в окно Finder"а). Если говорить об iOS, то для нее потребуется установить приложение Webloc Tool , которое позволит открывать webloc-файлы из Dropbox. В таком подходе придется мириться с тем, что закладки не будут доступны из браузера и придется переключаться;
  • Можно использовать браузер, по закладкам которого возможен поиск в десктопной ОС (Safari в OS X, например). Тогда придется мириться с необходимостью на смартфоне искать данные не только в Dropbox, а еще и в закладках браузера.
Я использую первый подход. Он абсолютно универсален: нет привязки ни к браузеру, ни даже к операционной системе.

Дополнительный софт для упрощения работы с файлами

Для упрощения работы с файлами в указанном ключе выгодно использовать дополнительный софт.
  • Теxt Expander Software, софт, который ввод нескольких символов превращает в текст бо льшего объема. Например, у меня настроено так, что если я ввожу с клавиатуры «dd» и пробел, то появляется текущая дата в формате, нужном для именования файла; если я вхожу «nn», то появляется полный шаблон имени файла: «текущая_дата o= t= f=». Вообще же различных сокращений при использовании такого софта появляется десятки;
  • Софт для переименования группы файлов разом;
  • Notational Velocity (или его продвинутая альтернатива - nvALT) позволяет удобно работать с текстовыми заметками в OS X;
  • Ряд bookmarklet"ов позволяет легко сохранять web-страницы в markdown.

Pros and Cons

Преимущества

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

Недостатки

  • Имена и значения параметров могут забыться, что может помешать найти нужный файл. Хотя это может случаться, система избыточна: если файл не найден по одному признаку классификации, он может быть найден по другому. А в случае обнаружения ошибки, она может быть исправлена переименованием;
  • Опечатки могут помешать найти нужный файл. Поэтому особенно важно использовать Теxt Expander Software;
  • Нет возможности средствами ОС получить список значений определенного параметра. Например, чтобы увидеть все задачи, для которых сохранены файлы («t=»), или увидеть все возможные классы объектов («o=»). Для того, чтобы создать такой список, понадобится писать дополнительный софт.

Альтернативы

Атрибуты файла в файловой системе

C атрибутами следующие проблемы:
  • Именовать файл проще и быстрее. Средств для минимально эффективного управления атрибутами файла не существует;
  • Атрибуты теряются при перемещении файла. Например, в некоторых случаях резервного копирования. (Это причина того, почему в имени файла следует указывать дату. Это реализует надежную сортировку по дате.);
  • Атрибуты не сохраняются при использовании облачного хранилища. И тот же dropbox не реализует поиск по ним со смартфона, например.

Тэги

С тэгами следующие проблемы:
  • Именовать файл проще и быстрее, чем назначить тэги;
  • Тэги - это атрибуты файла в файловой системе и c ними те же проблемы, что с любыми атрибутами (см. параграф выше). Хотя фанаты тэгов, которые не захотят применить предложенный подход, могут перенять идею именования тэгов в формате параметр=значение .

Ссылки

Со ссылками следующие проблемы:
  • Именовать файл проще и быстрее, чем создавать ряд ссылок для классификации по нескольким признакам;
  • Средств для хоть сколь нибудь эффективного управления ссылками нет, поэтому, например, когда дойдет до удаления файла, придется совершать множество дополнительных действий.

Evernote

С Evernote следующие проблемы.
  • С Evernote нельзя в полной мере реализовать главное преимущество подхода - все данные доступны через один интерфейс - потому что Evernote использует свою базу данных, и потому что Evernote не для хранения всего . (Но все-таки, например, в OS X Spotlight ищет и в базе данных Evernote, поэтому можно идти на какие-то компромиссы при большой любви к преимуществам Evernote);
  • Evernote штука сложная и поэтому ненадежная. Я трижды за последние несколько лет пытался с ним работать и постоянно сталкивался с ошибками, приводящим к невозможности найти нужные данные.

Как начать работать в новой концепции

Для начала можно оставить все уже хранимые файлы нетронутыми, а все новые сохранять по описанное системе. Самое первое с чем можно разобраться - это содержание различных Inbox (Desktop, Downloads).

Заключение

Это чудовищно эффективно, потому что экономит время и нервы. У меня сама собой реализовалась концепция Inbox Zero при такой работе с файлами. Все всегда на месте, ничто не маячит перед глазами и в сохранности ждет использования.

Приложение. Об RSS

RSS-потоками удобно управлять в том же ключе.
  • Выбирается агрегатор, который позволяет назначать одному потоку несколько меток. Например,

О перационная системаWINDOWS: Управление файлами

Операционная система windows управление файлами

Основные понятия. Форматирование дискет. Управление файлами с помощью Проводника. Архивирование файлов.

Основные понятия

Windows использует метафору "папка" для организации упорядоченного хранения файлов на компьютере.

Д
ля управления файлами вWindows существует утилита Проводник, которую можно вызвать несколькими способами: двойным щелчком по значку Мой компьютер, вызовом программы Проводник через Главное меню Windows, нажатием сочетания клавиш Win+E.

Для конкретного устройства или папки Проводник запускается правым щелчком по устройству или папке и выбором из контекстного меню команды Проводник . Проводник имеет две панели, в левой из которых представлена иерархическая структура ресурсов компьютера (устройств и папок), а в правой – содержимое конкретного устройства или папки.

Форматирование дискет

Дискеты сегодня иногда используются для переноса небольших файлов между компьютерами. Перед использованием они должны быть подготовлены в результате процедуры, называемой форматированием. Форматирование также используется для восстановления работоспособности дискет. Чтобы отформатировать дискету, необходимо вставить ее в дисковод; открыть окно Мой компьютер, дважды щелкнув по соответствующему значку на рабочем столе; щелчком выделить дисковод, в который установлена дискета; выполнить команду Файл/ Форматировать (или щелкнуть правой кнопкой мыши по значку дисковода и из контекстного меню выбрать команду Форматировать ). Появится окно Форматирование; укажите Способ форматирования установкой или снятием флажка “Быстрый формат” - Полное (перед форматированием проверяется поверхность дискеты, поврежденные области помечаются и не используются) или Быстрое (очищается таблица размещения файлов). Если вам нужна системная дискета для загрузки с нее системы MS-DOS, то установите флажок “Создать загрузочный диск”.Чтобы дискета имела какое-либо имя, введите его в текстовом поле Метка .Щелкните по кнопке Начать.

Для проверки дискет и жестких дисков на наличие сбойных участков (кластеров) используется программа Проверка диска . Для ее вызова необходимо выбрать нужный диск в Проводнике, щелкнуть по нему правой кнопкой мыши, выбрать из всплывающего меню пункт “Свойства”, перейти на вкладку Оборудование, выбрать пункт “Проверка диска”.

Управление файлами с помощью Проводника

П
роводник позволяет просмотреть структуру ресурсов компьютера (устройств, папок и файлов). Обозначение каждого устройства, папкии файла включает значок и текстовое название. Значки обеспечивают удобную визуальную ориентацию, характеризуя содержимое папки или файла. Например, все документы, подготовленные с помощью текстового редактора MS Word, хранятся в файлах со значком,а рисунки, подготовленные с помощью графического редактора Paint, - в файлах со значком и т.д. Все программы также хранятся в файлах с соответствующими программам значками. Окно Проводника разделено на две панели . В левой отображается иерархическая структура устройств и папок.

На вершине иерархии находится значок Рабочего стола, щелкнув по которому можно увидеть расположенные на Рабочем столе ярлыки папок и программ.

Под ним расположен значок Мой компьютер, щелкнув по которому можно увидеть все доступные ресурсы компьютера в виде дисководов, жестких дисков, папок.

Устройства и папки, содержащие вложенные папки, отмечены слева квадратиком с плюсом, щелкнув по которому можно увидеть эти вложенные папки. При этом плюс заменяется на минус (содержимое папки раскрыто). Щелчок по квадратику с минусом сворачивает содержимое папки в ее значок, отмеченный квадратиком с плюсом. Щелчок по значку папки раскрывает ее содержимое в правой панели окна Проводника в виде вложенных папок и файлов. Двойной щелчок по значку вложенной папки в правой панели окна Проводника раскрывает содержимое этой папки в правой панели окна Проводника.

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

Настройка Проводника позволяет менять вид его окна путем:

Изменения ширины панелей, перетаскивая мышью полоску, разделяющую панели;

Включения или выключения командой Вид/ Строка состояния строки состояния, содержащей информацию о выделенной щелчком мыши папке (количество элементов в папке и занимаемый ею объем памяти) или файле (размер файла), или группе выделенных файлов (их суммарный размер);

Включения или выключения панели инструментов командой Вид/ Панель инструментов ;

Изменения способа отображения файлов и папок командой Вид :

- сортировки файлов и папок по имени, типу, размеру, дате последней модификации командой Вид/ Упорядочить значки;

Запрещения или разрешения отображения файлов определенных типов командой Вид/ Параметры.

При работе с файлами и папками Проводник выполняет:

Выделение файлов и папок . Один файл или одна папка выделяются щелчком мыши, группа смежных файлов - щелчком по первому файлу и щелчком по последнему файлу при нажатой клавише Shift или растягиванием над ними прямоугольника правой кнопкой мыши, группа несмежных файлов - щелчками по ним при нажатой клавише Ctrl,все файлы - командой Правка/ Выделить все (Сочетание клавиш Crtl+A).

Переименование файла или папки, которое достигается выделением имени, еще одним щелчком по имени и вводом с клавиатуры в образовавшееся текстовое поле нового имени или из контекстно-зависимого меню..

Создание новой папки , для чего в левой панели окна Проводникавыделяется папка, внутри которой создается папка, выполняется команда Файл/ Создать/ Папка , в появившемся на правой панели текстовом поле вводится имя новой папки, нажимается клавиша Enter.

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

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

Восстановить файл, дважды щелкнув по Корзине, которая содержит все удаленные после последней очистки Корзины файлы, и выполнив команду Файл/ Восстановить.

Поиск файла, для чего вводится его имя или часть имени после команды Сервис/ Найти/ Файлы и папки.

Быстрый просмотр файла выполняется щелчком правой кнопки мыши по его имени и выбором из контекстного меню команды Быстрый просмотр.

Открытие документов (файлы созданные любыми приложениями) производится двойным щелчком по его имени, либо выбором одного из 15 последних документов, с которыми работали в последнее время, по команде Пуск/ Документы . При этом запускается создавшее документ приложение и в него загружается сам документ.

Печать выделенного файла по команде Файл/ Печать.

Копирование дискет после правого щелчка по значку дисковода и команды Копировать диск.

Управление файлами.

Управление файлами в Windows XP осуществляется при помощи программы Проводник или папки Мой компьютер и сводится к выполнению следующих операций:

  • копирование, перемещение и удаление файлов (не рассматриваются в данном курсе);
  • установка стандартных атрибутов;
  • установка дополнительных атрибутов;
  • назначение разрешений.

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

Щелчок правой кнопкой мыши в пустом месте рабочей области окна проводника вызывает контекстное меню для родительского объекта. Таким образом, щелчок по пустому месту внутри папки вызовет контекстное меню этой папки, а щелчок по пустому месту при просмотре содержимого корневой папки диска вызовет контекстное меню диска.

Установка стандартных атрибутов файлов и папок.

Стандартные атрибуты файлов и папок являются устаревшим примитивным средством управления доступом к файлам и папкам. В Windows XP и других современных операционных системах существуют гораздо более гибкие и удобные механизмы для управления файлами.

Стандартные атрибуты файлов и папок устанавливаются на вкладке Общие окна свойств. Вид этой вкладки для файлов и папок во многом идентичен:

Свойства папки

Свойства файла

На вкладке Общие вы можете узнать:

  • реальный и занимаемый на диске размер файла или папки;
  • количество файлов и вложенных папок (для папки);
  • дату и время создания, дату и время последнего изменения и открытия (для файла).

Кроме того, при помощи флажков на этой вкладке устанавливается два стандартных атрибута Только для чтения и Скрытый. Вообще, Windows XP, как и любая другая ОС Microsoft поддерживает четыре стандартных атрибута для файлов и папок, расположенных на файловых системах FAT, FAT32 и NTFS.

Атрибут

Описание

Архивный

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

Только для чтения

Указывает, что файл не может быть изменен. Установка этого атрибута не может служить для разграничения доступа к файлу или папке, а предназначена для того, чтобы избежать случайной перезаписи или удаления объекта. Большинство программ при попытке записать данные в такой файл или при попытке удалить его задают пользователю дополнительный вопрос о том, действительно ли он хочет удалить файл или папку.

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

Системный

Указывает, что файл или папка являются системными. В Windows 2000 используется только для обратной совместимости с MS-DOS, Windows 3.x и Windows 9x. Этим атрибутом помечены файлы, используемые для загрузки Windows 2000, в корневом каталоге системного и загрузочного дисков. Не может быть изменен через графические инструменты Windows 2000, но может быть изменен через командную строку или программами третьих производителей.

Изменение атрибутов файлов и папок происходит после нажатия кнопки ОК или Применить. Если вы изменили атрибуты для папки, то Windows XP попросит уточнить, нужно ли изменять атрибуты у вложенных папок или файлов.
Процесс изменения атрибутов обычно осуществляется довольно быстро, хотя и может занять много времени, если в операции задействовано несколько тысяч файлов и папок.

Изменение стандартных атрибутов из командной строки.

Для изменения стандартных атрибутов файлов и папок из командной строки служит команда attrib

attrib[.exe] [+r|-r] [+a|-a] [+s|-s] [+h|-h] [[диск:][путь]имя_файла] ]

Описание ключей команды attrib:

Устанавливает атрибут "только для чтения"

Снимает атрибут "только для чтения"

Устанавливает атрибут "архивный"

Снимает атрибут "архивный"

Устанавливает атрибут "системный"

Снимает атрибут "системный"

Устанавливает атрибут "скрытый"

Снимает атрибут "скрытый"

Ключ

Описание

[диск:][путь]имя_файла

Задает местоположение папки и файла (файлов), атрибуты которых должны быть изменены. Допускается применение подстановочных символов? и *

Задает обработку подходящих файлов в указанной папке и всех вложенных папках

Указывает, что нужно обрабатывать не только файлы, удовлетворяющие параметру имя_файла , но и папки, удовлетворяющие тому же условию

Для смены атрибутов у файлов и папок с установленным атрибутом "системный" или "скрытый" необходимо предварительно снять эти атрибуты.

Установка дополнительных атрибутов.

В Windows NT, 2000, а затем и в Windows XP к стандартным атрибутам файлов и папок были добавлены новые атрибуты, названные дополнительными. Все эти атрибуты могут быть установлены только для файлов и папок, расположенных на томах NTFS. Файловые системы FAT и FAT32 не поддерживают дополнительные атрибуты.

Для установки дополнительных атрибутов нужно в окне свойств файла или папки щелкнуть кнопку Другие. При этом откроется окно установки дополнительных атрибутов. Вид этого окна для файлов и папок идентичен:

Дополнительные атрибуты папки

Дополнительные атрибуты файла

Рассмотрим дополнительные атрибуты подробнее.

Папка (файл) готова для архивирования

Является стандартным атрибутом "архивный", который описан выше

Разрешить индексирование папки (содержимого) для быстрого поиска

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

Сжимать содержимое для экономии места на диске

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

Шифровать содержимое для защиты данных

Новый атрибут, впервые появился в Windows 2000. Включает шифрование данных. При установке этого атрибута включается шифрование для всех файлов внутри этой папки. Механизм шифрования данных имеет ряд особенностей, поэтому будет подробно рассмотрен ниже

Атрибут

Описание

Индексирование файлов достаточно сильно замедляет сохранение и изменение таких файлов. Причиной этого является полное переиндексирование содержимого файла при каждом его изменении.
Атрибуты сжатия и шифрования файла являются взаимоисключающими. В текущей версии NTFS шифрованные файлы не могут сжиматься средствами операционной системы.

Шифрование файлов.

Шифрованная файловая система (Encrypting File System, EFS) поддерживает шифрование файлов, хранимых на томах NTFS. Шифрование в EFS базируется на технологии открытого ключа и обеспечивается интегрированной в систему службой. Это позволяет:

  • облегчить управление зашифрованными файлами;
  • защитить важные файлы от несанкционированного доступа к ним других пользователей и злоумышленников даже в случае изъятия жесткого диска из компьютера и подключения его к другому компьютеру;
  • обеспечить прозрачную дешифрацию файлов при обращении к ним законного владельца;
  • производить прозрачное копирование и перемещение шифрованных файлов - все файловые операции производятся без дешифрации файлов;
  • хранить шифрованные данные пользователя на различных компьютерах в локальной сети и в перемещаемых профилях - сертификат пользователя хранится на сервере в центре сертификатов, что позволяет использовать этот сертификат с любого компьютера в домене.

Пользователь, обладающий закрытым ключом к зашифрованному файлу, может открывать этот файл и работать с ним, как с обычным документом - расшифровывание будет производиться системой автоматически. Пользователю, не имеющего такого ключа, файл не доступен.
При работе с шифрованными файлами Windows XP поддерживает безопасность на должном уровне. Это означает, что шифруются все рабочие копии файла. При необходимости Вы можете осуществить шифрование и временных файлов. Данные зашифрованных файлов не сохраняются в файле подкачки. Все это гарантирует, что данные зашифрованного файла не появятся на диске в расшифрованном виде.
Кроме того, EFS содержит специальный механизм, предназначенный для восстановления доступа к шифрованным файлам в случае утери закрытого ключа. Это может произойти при удалении сертификата или пользователя, которому этот сертификат принадлежал. Механизм восстановления доступа к зашифрованным данным осуществляется специальным агентом восстановления, параметры которого определяются групповыми политиками. В общем случае работа агента сводится к предоставлению специального ключа, который может быть использован для расшифровывания файла. Пользователи, имеющие право восстанавливать данные, зашифрованные другими пользователями, определяются в групповых политиках.

Шифрованная файловая система может использоваться для шифрования файлов, расположенных на других компьютерах. Однако данные в этом случае передаются по сети в незашифрованном виде. При необходимости шифровать данные и при передаче по локальной сети необходимо использовать специализированные протоколы (SSL, IPSec и т.п.).

Для шифрования файла необходимо соблюдение следующих условий:

  • файл не должен быть сжатым (Windows XP самостоятельно отслеживает выполнение этого условия и, при необходимости, разархивирует файл);
  • пользователь, шифрующий файл, должен иметь цифровой сертификат, позволяющий ему шифровать файлы (Windows XP самостоятельно генерирует запрос на получение сертификата в момент шифрования файла).

Процесс шифрования файла.

Механизм шифрации файлов заключается в следующем: на томе NTFS создается папка, которая будет зашифрована. Чтобы ее зашифровать, откройте окно Свойства для этой папки, на вкладке Общие нажмите кнопку Другие и включите флажок Шифровать содержимое для защиты данных. Все файлы, помещенные в эту папку будут зашифрованы, а сама папка помечена как зашифрованная. На самом деле шифруются только файлы в этой папке, а не сама папка.

Для фактического шифрования файла используются быстрые ключи симметричного шифрования. Для шифрования каждого блока файла используется отдельный симметричный ключ. Все симметричные ключи, использованные для шифрования файла, шифруются двумя ключами - открытым ключом пользователя и открытым ключом агента восстановления. В зашифрованном виде эти ключи сохраняются в полях Data Decryption Field (DDF) и Data Recovery Field (DRF).

Для шифрования EFS использует Microsoft Base Cryptographic Provider. Этот провайдер осуществляет шифрование с использованием ключа длиной 56 бит. Начиная с пакета обновления 2 для Windows 2000, для шифрования используется ключ длиной 128 бит.
Расшифровывание данных осуществляется в обратном порядке. Содержимое поля DDF расшифровывается закрытым ключом пользователя, пытающегося открыть файл. В случае успеха, содержимое файла расшифровывается с использованием симметричных ключей. EFS самостоятельно обнаруживает факт шифрования файла и осуществляет поиск закрытого ключа пользователя. Если EFS не может выполнить расшифровывание файла, пользователю выдается сообщение об ошибке доступа к файлу.
При удалении администратором учетной записи пользователя, пользователь теряет все зашифрованные файлы. Чтобы этого избежать, заранее создайте дискету восстановления паролей, откройте окно Учетные записи пользователей и в разделе Связанные задачи выберите пункт Предотвратить потерю паролей.

Дешифрация.

Чтобы файл сделать незашифрованным отключите флажок Шифровать содержимое для защиты данных (Свойства файла -> Другие) .

Использование агента восстановления.

Если открытый ключ владельца файла недоступен, то агент восстановления может расшифровать файл, воспользовавшись своим закрытым ключом для расшифровывания поля DRF. Если агент восстановления находится на другом компьютере в сети, то для расшифровывания файл должен быть перемещен на тот компьютер, на котором находится закрытый ключ агента восстановления. Также можно перенести закрытый ключ агента на компьютер, содержащий восстанавливаемые файлы. Однако копирование закрытого ключа на другой компьютер является серьезным нарушением безопасности, поэтому настоятельно не рекомендуется.

На локальном компьютере агентом восстановления по умолчанию является локальный администратор. Если компьютер подключен к домену, то агентом восстановления по умолчанию является администратор домена.

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

Лицо, назначенное агентом восстановления, обладает специальным сертификатом, содержащим закрытый ключ, предназначенный для восстановления шифрованных файлов. Агент восстановления не должен предпринимать специальных действий для получения доступа к зашифрованному файлу. Если его ключ может быть использован для расшифровывания поля DRF, Windows XP автоматически предоставит ему доступ к файлу. При восстановлении зашифрованного файла рекомендуется сразу же произвести его дешифрацию, отключив флажок Шифровать содержимое для защиты данных в свойствах файла.

Шифрование файлов из командной строки.

Все операции по шифрованию и расшифровыванию файлов также могут быть выполнены из командной строки при помощи утилиты cipher , которая имеет следующий синтаксис:

cipher[.exe] [имя_файла[...]]
cipher[.exe] /K
cipher[.exe] /W:папка

Описание ключей команды cipher:

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

Расшифровывает указанные файлы и папки. При расшифровывании папок также расшифровываются все файлы в них.

Распространяет операцию на все вложенные папки, содержащиеся в указанной папке.

Распространяет операцию как на файлы, так и на папки. Обратите внимание, что при модификации шифрованного файла в нешифрованной папке, он может быть расшифрован. Поэтому шифруйте не только файл, но и папку, в которой он содержится.

Продолжать операцию при возникновении проблем с одним из файлов. Если этот ключ не указан, то процесс прерывается.

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

Во время процесса шифрования/расшифровывания выводит на экран только наиболее важную информацию.

Обрабатывает файлы с атрибутами "скрытый" и "системный". По умолчанию такие файлы не обрабатываются.

имя_файла [...]

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

Создает для пользователя, запустившего cipher, новый ключ для шифрования файлов. При указании этого ключа все остальные ключи игнорируются.

Затирает все неиспользуемое пространство на диске. При указании этого ключа все остальные ключи игнорируются. Папка, указываемая как параметр, может быть расположена в любом месте диска. Если эта папка является точкой подключения другого тома, то будет затерто неиспользуемое пространство на этом томе.

Ключ

Описание

Без параметров cipher отображает информацию о шифровании текущей папки и всех файлов, в ней содержащихся.

Отключение EFS.

Администратор может полностью запретить использовать шифрование файлов очистив параметры Политики открытого ключа. В операционной системе Windows XP шифрование файлов не возможно без агента восстановления, а значит пустая политика восстановления делает шифрование невозможным и отключает EFS.

Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске, и обеспечить совместное использование файлов несколькими пользователями и процессами.

В широком смысле понятие "файловая система" включает:

    совокупность всех файлов на диске;

    наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске;

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

СУФ реализует выполнение следующих базовых функций.

      Организацию логической системы в виде томов памяти и каталогов файлов.

      Управление томами, в том числе:

    инициализацию (форматирование);

    подключение (перевод в оперативное состояние);

    отключение (перевод в автономное состояние).

    Управление каталогами файлов:

    создание каталогов;

    переключение между каталогами;

    удаление каталогов.

    Манипуляции с файлами:

    создание файла (определение имени, выделение места во внешней памяти);

    удаление файла (освобождение имени и занимаемого файлами пространства);

    открытие файла (объявление ОС о намерении использовать файл с определенными функциями доступа и правами);

    закрытие открытого файла (запрещение всякого доступа к файлу);

    копирование и переименование файла.

      Связь файлов и потоков ввода/вывода, соединение и переадресацию потоков.

      Организацию логической структуры файлов и доступа к записям файлов в требуемом порядке.

      Защиту файлов от несанкционированного доступа и управление правами доступа.

Кроме того, может быть масса сервисных функций проверки и модификации различных характеристик файлов, каталогов, томов, зависящих от конкретной реализации СУФ.

Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.

Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов, представленных в ASCII-коде. Это могут быть документы, исходные тексты программ и т.п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют ASCII-коды, они часто имеют сложную внутреннюю структуру, например, объектный код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов - их собственные исполняемые файлы.

В разных файловых системах могут использоваться в качестве атрибутов разные характеристики, например:

    информация о разрешенном доступе;

    пароль для доступа к файлу;

    владелец файла;

    создатель файла;

    признак "только для чтения";

    признак "скрытый файл";

    признак "системный файл";

    признак "архивный файл";

    признак "двоичный/символьный";

    признак "временный" (удалить после завершения процесса);

    признак блокировки;

    длина записи;

    указатель на ключевое поле в записи;

    длина ключа;

    время создания, последнего доступа и последнего изменения;

    текущий размер файла;

    максимальный размер файла.

Специальные файлы - это файлы, ассоциированные с устройствами ввода-вывода, которые позволяют пользователю выполнять операции ввода-вывода, используя обычные команды записи в файл или чтения из файла. Эти команды обрабатываются вначале программами файловой системы, а затем на некотором этапе выполнения запроса преобразуются ОС в команды управления соответствующим устройством. Специальные файлы так же, как и устройства ввода-вывода, делятся на блок-ориентированные и на байт-ориентированные.

Для пользователей файл обозначается с помощью идентификаторов - внешних имен (могут быть и внутренние имена файлов). Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени. До недавнего времени эти границы были весьма узкими. Так, в популярной файловой системе FAT длина имен ограничивается известной схемой 8.3 (8 символов - собственно имя, 3 символа - расширение имени), а в ОС UNIX System V имя не может содержать более 14 символов. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлу действительно мнемоническое название, по которому даже через достаточно большой промежуток времени можно будет вспомнить, что содержит этот файл. Поэтому современные файловые системы, как правило, поддерживают длинные символьные имена файлов. Например,Windows NT в своей новой файловой системе NTFS устанавливает, что имя файла может содержать до 255 символов, не считая завершающего нулевого символа.

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

Длинные имена поддерживаются не только новыми файловыми системами, но и новыми версиями хорошо известных файловых систем. Например, в ОС Windows 95 используется файловая системаVFAT, представляющая собой существенно измененный вариантFAT . Среди многих других усовершенствований одним из главных достоинствVFAT является поддержка длинных имен. Кроме проблемы генерации коротких эквивалентных имен, при реализации нового варианта FAT важной задачей была задача хранения длинных имен при условии, что принципиально метод хранения и структура данных на диске не должны были измениться.

Для решения проблем поиска и размещения файлов в СУФ используются иерархические, многоуровневые каталоги файлов, двухуровневые имена файлов и средства фильтрации.

Простой одноуровневый каталог представляет собой оглавление тома (используется в однопользовательских ОС - рис.11.1)

Рис.11.1. Простой одноуровневый каталог .

Иерархический, многоуровневый каталог (древовидный или сетевой) - это совокупность каталогов и дескрипторов файлов различной глубины (рис.11.2).

Рис.11.2. Иерархический многоуровневый каталог

Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть - если файл может входить сразу в несколько каталогов. В MS-DOS каталоги образуют древовидную структуру, а в UNIX"е - сетевую. Как и любой другой файл, каталог имеет символьное имя и однозначно идентифицируется составным именем, содержащим цепочку символьных имен всех каталогов, через которые проходит путь от корня до данного каталога.

Каждый каталог группирует по определенным принципам файлы пользователей, которые могут быть защищены паролем. Для упрощения работы имеется понятие текущего каталога, определяющего список доступных файлов и подкаталогов и позволяющего обращаться к файлам по собственным именам.

ОС обеспечивает определение нескольких текущих каталогов (путей доступа), которые в заданной последовательности просматривается при обращении к файлу по имени:

PATH C:\; C:\nc; D:\ альтернативные маршруты .

В процессе диалога ОС для группировки и удобства работы с файлами используются 2-х и 3-х компонентные идентификаторы:

[ <префикс>:] <имя файла> [ .суффикс/расщирение] .

Например, в MS-DOS C:\sys\forrmat.com .

Такие средства классификации упрощают автоматическую обработку файлов. Обычно программы работают со своими типами файлов, поэтому зачастую суффикс или расширение можно не указывать.

Средства фильтрации позволяют определять операции над целым классом файлов, посредством указания вместо имени файла специальных символов (* или!). Например, имя*.exe представляет все файлы т екущего подкаталога, имеющие расширениеexe.

Важной характеристикой СУФ является обеспечение независимости программ от используемых ПУ и файлов. Для этого вводится понятие потока ввода/вывода как средства отсроченного установления связи программы с конкретными файлами и ПУ.

Поток ввода/вывода - это объект, который обладает всеми характеристиками устройства ввода/вывода, но не является реально существующим. Программа работает не с файлами, а потоками ввода/вывода.

В операционной системе MS-DOS, например, по умолчанию в качестве входного потока данных рассматривается клавиатура, а выходной поток направляется на дисплей. Для переопределения потоков ввода/вывода используются следующие символы:

< - для определения входного потока;

>- для определения выходного потока;

>> - для модификации (добавления) ранее определенного выходного потока.

Выполнение команды DIR>LPT приведет выводу содержимого текущего каталога на принтер.

Транспортировка потоков позволяет сцепить несколько программ по стандартному входу-выходу. По сути дела образуется буфер, позволяющий двум процессам связываться по схеме “производитель – потребитель”. Таким образом, выходные данные одной программы являются входными для другой программы, обеспечивая естественное взаимодействие.

Команда DIR|SORT выведет на дисплей отсортированный список файлов, полученный командойDIR.