русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Текст лекции


Дата добавления: 2013-12-23; просмотров: 786; Нарушение авторских прав


Ключевые вопросы

Лекция № 7. Файловые системы.

Продолжительность:2 часа (90 мин.)

· Основные понятия и определения: операционная система (ОС), программное обеспечение (ПО), системное программное обеспечение.

· Файлы.

· Оболочка

 

15.2.1 Файлы — до 15 мин.

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

Предоставляя место для хранения файлов, операционные системы используют понятие каталога (directory) как способ объединения файлов в группы. Например, студент может иметь по одному каталогу для каждого изучаемого им курса (для программ, необходимых в рамках этого курса), каталог для электронной почты, и еще один — для своей домашней web-страницы. Для создания и удаления ката­логов также необходимы системные вызовы. Они же обеспечивают перемещение существующего файла в каталог и удаление файла из каталога. Содержимое ка­талогов могут составлять файлы или другие каталоги. Эта модель создает струк­туру — файловую систему, — как показано на рис. 15.1.

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



Каждый файл в иерархии каталогов можно определить, задав его имя пути, на­зываемое также полным именем файла. Путь начинается из вершины структуры каталогов, называемой корневым каталогом. Такое абсолютное имя пути состо­ит из списка каталогов, которые нужно пройти от корневого каталога к файлу, с разделением отдельных компонентов косой чертой. На рис. 15.1 путь к файлу CS101 выглядит как /Faculty/Prof.Brown/Courses/CS'101. Первая косая черта говорит о том, что этот путь — абсолютный, то есть начинается от корневого каталога. В MS-DOS и Windows для разделения компонентов вместо символа косой черты используется обратная косая черта (\). Тогда этот путь будет выглядеть так: \Faculty\Prof.Brown \Courses\CS101. В нашей книге для записи пути мы в основном будем использовать соглашения UNIX.

Корневой каталог




Факультет

Студенты

Роберт^ Матти

Бумаги ^ ГрантьГ^*. Комиссии

SOSP COST-11

CS101 CS105

Рис 15.1 Файловая система

В каждый момент времени у каждого процесса есть текущий рабочий каталог, в котором ищутся пути файлов, не начинающиеся с косой черты. Например, если на рис. 1.1 A /Faculty/'Prof.Brown является рабочим каталогом, то использование пути Courses/CS101 даст тот же самый файл, что и абсолютный путь, написанный выше. Процессы могут изменять свой рабочий каталог, используя системные вызовы.

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

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

Однако файлы на гибком диске нельзя использовать, потому что для них невоз­можно определить путь. UNIX не позволяет присоединять к началу пути название диска или его номер, так как это привело бы к жесткой зависимости от устройств, которой операционная система должна избегать. Вместо этого системный вызов mount позволяет присоединять файловую систему па гибком диске к корневой фай­ловой системе в том месте, где этого захочет программа. На рис. 15, б файловая система гибкого диска была установлена в каталог Ь, таким образом, обеспечен доступ к файлам по путям/b/x/ъ/Ь/у. Если каталог b содержал какие-либо фай­лы, они будут недоступны, пока смонтирован гибкий диск, так как теперь/Ь ссыла­ется на корневой каталог гибкого диска. (Невозможность доступа к этим файлам не так страшна, как кажется с первого взгляда: файловые системы почти всегда устанавливаются в пустые каталоги.) Если система содержит несколько жестких дисков, они все могут быть встроены в одно дерево таким же образом.

Еще одно важное понятие в UNIX — это специальный файл. Специальные фай­лы служат для того, чтобы устройства ввода-вывода выглядели как файлы. При этом можно прочесть информацию из специальных файлов или записать ее туда с помощью тех же самых системных вызовов, что используются для чтения и за­писи файлов. Существует два вида специальных файлов: блочные специальные файлы и символьные специальные файлы. Блочные специальные файлы исполь­зуются для моделирования устройств, состоящих из набора произвольно адресуе­мых блоков, таких как диски. Открывая блочный специальный файл и читая, ска­жем, блок 4, программа может напрямую получить доступ к четвертому блоку на устройстве, без обращения к содержащейся на нем файловой системе. Таким же образом символьные специальные файлы используются для моделирования прин­теров, модемов и других устройств, которые принимают или выдают поток симво­лов. По соглашению специальные файлы хранятся в каталоге/dev. Например, /dev/lp может быть строковым принтером.

И последнее понятие, которое мы обсудим во введении, — это каналы (pipe), имеющие отношение и к процессам и к файлам. Канал (также иногда называемый трубой) представляет собой псевдофайл, который можно использовать для связи двух процессов. Если процессы Л и В захотят пообщать­ся с помощью канала, они должны установить его заранее. Когда процесс А хочет отправить данные процессу В, он пишет их в капал, как если бы это был выходной файл. Процесс В может прочесть данные, читая их из канала, как если бы он был файлом с входными данными. Таким образом, соединение между процессами в UNIX выглядит очень похожим на обычное чтение и запись файлов. Более того, только сделав специальный системный вызов, процесс может обнаружить, что выходной файл, в который он пишет данные, не реальный файл, а канал. Файловые системы очень важны. Мы расскажем о них значительно больше в главе б.

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

В качестве простейшего примера, дающего представление о том, как работает система безопасности, рассмотрим систему UNIX. В UNIX для защиты файлов им присваивается 9-битовый двоичный код. Этот код защиты состоит из трех полей по три бита; одно для владельца, второе для других членов группы владельца (пользователи разделяются па группы системным администратором) и третье — для всех остальных. В каждом поле есть бит, определяющий доступ для чтения, бит, определяющий доступ для записи, и бит, разрешающий выполнение. Эти три бита называются rwx-битами (read, write, execute). Например, код защиты iwxr-x--x означает, что владелец файла может читать, писать или выполнять файл, другие члены группы могут читать или выполнять файл (но не писать в него), а осталь­ные могут только выполнять файл (но не читать или писать). Для каталогах озна­чает разрешение на поиск. Дефис означает, что соответствующее разрешение от­сутствует.

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

 

15.2.2 Оболочка — до 15 мин.

 

Операционная система представляет собой программу, выполняющую системные вызовы. Редакторы, компиляторы, ассемблеры, компоновщики и командные интер­претаторы не являются частью операционной системы, несмотря на их большую важность и полезность. Поскольку есть риск запутаться в этих вещах, в данном разделе мы кратко рассмотрим только командный интерпретатор UNIX, называе­мый оболочкой (shell). Хотя она не входит в операционную систему, но во всю пользуется многими функциями операционной системы и поэтому является хоро­шим примером того, как могут применяться системные вызовы. Кроме этого, оболочка предоставляет основной интерфейс между пользователем, сидящим за своим терминалом, и операционной системой, если, конечно, пользователь не ис­пользует графический интерфейс. Существует множество оболочек, например sh, csh, ksh и bash. Все они поддерживают описанные ниже функции, поскольку про­изошли от первоначальной оболочки (sh).

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

date

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

date >f1le

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

sort <filel >file2

Эта команда предписывает программе сортировки считать данные из файла 1 и вывести результат в файл 2.

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

cat file! file2 file3 I sort >/dev/lp

предписывает программе car объединить (concatenate) три файла и послать выходные данные программе sort, которая расставит все строки в алфавитном порядке. Резуль­тат работы sort перенаправляется в файл/dev/lp, обычно обозначающий принтер. Если пользователь наберет знак & после команды, оболочка не будет ждать окончания ее выполнения. В этом случае она немедленно напишет новое пригла­шение. То есть в результате команды

cat file! file2 f1le3 | sort >/dev/lp &

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

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

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

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

Чтобы пояснить нашу точку зрения, рассмотрим несколько примеров. Ранние компьютеры имели вмонтированный В аппаратуру набор команд. Затем появилось микропрограммирование, при котором интерпретатор выполнял команды про­граммно. Аппаратное выполнение устарело. После этого были созданы RISC-компьютеры, и микропрограммирование (то есть интерпретируемое выполнение) тоже стало устаревшим понятием, поскольку исполнение команд напрямую ока­залось быстрее. Теперь мы наблюдаем возрождение интерпретации в форме алплетов Java, которые передаются по Интернету и интерпретируются по прибытии. Здесь скорость выполнения не играет решающей роли, поскольку задержки в сети настолько велики, что основное время тратится на них. Но все это тоже однажды может измениться.

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

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

 

 



<== предыдущая лекция | следующая лекция ==>
Текст лекции | Текст лекции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.