Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оболочка




Файлы

Текст лекции

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

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

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

· Файлы.

· Оболочка

 

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

Предоставляя место для хранения файлов, операционные системы используют понятие каталога (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 означает, что владелец файла может читать, писать или выполнять файл, другие члены группы могут читать или выполнять файл (но не писать в него), а осталь­ные могут только выполнять файл (но не читать или писать). Для каталогах озна­чает разрешение на поиск. Дефис означает, что соответствующее разрешение от­сутствует.

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

 

 

Операционная система представляет собой программу, выполняющую системные вызовы. Редакторы, компиляторы, ассемблеры, компоновщики и командные интер­претаторы не являются частью операционной системы, несмотря на их большую важность и полезность. Поскольку есть риск запутаться в этих вещах, в данном разделе мы кратко рассмотрим только командный интерпретатор 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 проек­тировалась так, чтобы она могла функционировать днем и ночью без остановок. Чтобы программно исправлять системные ошибки, необходимо было найти спо­соб, позволяющий заменять библиотечные процедуры во время их использования.

 




Поделиться с друзьями:


Дата добавления: 2014-11-25; Просмотров: 476; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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