Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Операционные системы

этом может возникнуть нештатная ситуация, связанная с тем, что запись  может
не пройти, предположим, из-за дефектов носителя.  Получается  ситуация,  при
которой обращение к системе за функцией обмена для процесса  прошло  успешно
(процесс получил ответ, что все  записано),  а,  на  самом  деле,  обмен  не
прошел.
      Таким образом, эта система рассчитана  на  надежную  аппаратуру  и  на
корректные профессиональные условия эксплуатации. Для борьбы с  вероятностью
потери информации  при  появлении  нештатных  ситуаций,  система  достаточно
«умна», и  действует верно. А именно, в системе имеется некоторый  параметр,
который может  оперативно  меняться,  который  определяет  периоды  времени,
через которые  осуществляется  сброс  системных  данных.  Второе  -  имеется
команда, которая может быть доступна пользователю, - команда SYNC.  По  этой
команде осуществляется сброс данных на диск. И  третье  -  система  обладает
некоторой избыточностью, позволяющей в случае потери информации,  произвести
набор действий, которые информацию восстановят или  спорные  блоки,  которые
не удалось идентифицировать по принадлежности  к  файлу,  будут  записаны  в
определенное место файловой  системы.  В  этом  месте  их  можно  попытаться
проанализировать  и  восстановить  вручную,  либо   что-то   потерять.   Наш
университет одним из первых  в  стране  начал  эксплуатировать  операционную
систему UNIX, и сейчас уже можно сказать, что проблем ненадежности  системы,
с точки зрения фатальной потери информации, не было.
      Сегодня мы начинали разговор о том, что у нас есть системные вызовы  и
библиотеки   ввода/вывода.   Еще   одно    средство,    которое    позволяет
оптимизировать работу системы, - это  стандартная  библиотека  ввода/вывода,
связанная с  include-файлом  stdio.h.  Суть  концептуального  обмена  та  же
самая, что и при организации низкоуровневого ввода/вывода.  Разница  в  том,
что, если open() возвращает номер файлового дескриптора, fopen()  возвращает
указатель на некоторую структуру специального типа FILE. Второе  и  основное
- это библиотека функций. Многие функции сервиса, которые предоставляет  эта
библиотека,  реализуются  в  пределах  вашего  адресного   пространства.   В
частности, такой функцией сервиса  является  еще  один  уровень  буферизации
ввода/вывода. Суть его заключается в том, что  на  ресурсах  процесса  можно
выделить  буфер,  который   будет   работать   аналогично   буферному   пулу
операционной системы и, который минимизирует  обращение  вашего  процесса  к
системным вызовам ввода/вывода. Понятно,  что  эта  библиотека  ввода/вывода
реализуется   посредством   программы,   использующей    системные    вызовы
ввода/вывода. Это означает, что появляется фактор двойной буферизации,  хотя
это увеличивает ненадежность.
      Двойная буферизация, очевидно, вещь полезная. Она позволяет обращаться
к чтению или записи через библиотечные функции объемами  данных  в  полблока
или в треть блока, и если эти части идут подряд, то  система  сама  за  счет
буферизации, собирает эти части и вместо нескольких обращений  к  системному
вызову выполняет только одно обращение. Это выгодно. Невыгодно то,  что  эта
буферизация организуется  в  пределах  адресного  пространства  процесса  со
всеми вытекающими последствиями (теряется синхронизация  по  обменам  в  том
случае, если с данным файлом через эту библиотеку работают другие  процессы,
потому  что  в  теле  каждого  процесса  есть  свой  буфер,  который   может
аккумулировать  эти  данные  и  никакого  единообразия,   которое   есть   в
рассмотренной  нами  схеме,  не  получается).  Тем  не  менее,   стандартная
библиотека ввода/вывода есть удобный инструмент; она имеет   также  средства
блокировки этой буферизации.
                                 Лекция №10

      На  прошлой  лекции  мы  разобрали  следующие  моменты,  связанные   с
организацией функционирования файловой системы.  Это  системная  организация
низкоуровнего  обмена.  Мы  выяснили,  что  за  счет   организации   данных,
операционная система UNIX достаточно  простыми  и  «прозрачными»  средствами
решает проблемы возможных конфликтов в случае нескольких открытий  одного  и
того же файла. Мы видели, что все открытия  одного  и  того  же  файла  (под
файлом мы понимаем не имя, а содержимое) в конечном итоге сводятся к  работе
с единственной копией ИД.  Мы  с  вами  выяснили,  что  почти  все  открытия
файлов, связанные с одним ИД, порождают для процессов  возможность  работать
со своими указателями  чтения/записи  по  файлом,  за  исключением  случаев,
когда файл в процессе был получен через наследование, т.е. файл был  получен
от процесса-отца через функцию fork() процессом-сыном.
      Мы с вами выяснили, что система подразделяет обслуживаемые  устройства
на два класса: блок-ориентированные и байт-ориентированные.  Одно  и  то  же
устройство  может  одновременно  быть  и   байт-ориентированным,   и   блок-
ориентированным. Это зависит как от самого  устройства,  так  и  от  наличия
драйверов  -  программ  управляющих  этим   устройством.   Примером   такого
устройства является оперативная память.
      Мы с вами рассмотрели принципы организации  низкоуровнего  обмена  для
блок-ориентированных устройств, и в  контексте  этого  мы  познакомились  со
средствами  буферизации,  которые  применяются  в  ОС  UNIX,  суть   которых
заключается в том, что по аналогии с буферами чтения/записи  из  оперативной
памяти (аппаратным  средством),  операционная  система  создает  программные
средства,  которые   позволяют   минимизировать   количество   обращений   к
физическому устройству. Этот механизм выгодно отличал и  отличает  ОС  UNIX.
Здесь следует заметить, что буферизация обмена  может  быть  многоуровневой.
Первый дополнительный уровень может появиться за счет того,  что  устройство
может иметь свои аппаратные буфера, реализованные  по  аналогии  с  буферами
оперативной памяти.
      Мы также говорили о  том,  что  кроме  низкоуровнего  ввода/вывода,  с
которым связаны функции, обеспечивающие системные вызовы (open, read,  write
и т.д.), существуют  высокоуровневые  средства  доступа  -  это  стандартная
библиотека ввода/вывода stdio.h, подключение которой позволяет  использовать
для организации  обменов  еще  один  уровень  буферизации  (это  оптимизация
обращений к системным  вызовам),  который  ассоциирован  с  процессом,  т.е.
буферизация происходит за счет ресурсов процесса. Мы оценивали, что  хорошо,
что  плохо.  Очевидно,  что  буферизация  сокращает  количество  обменов   с
медленным внешним устройством,  и  чем  больше  таких  уровней,  тем  меньше
происходит обменов. Однако плохо  то,  что  за  счет  буферизации  снижается
надежность  системы.  Например,  при  неожиданном  для  системы   выключении
питания, все буфера теряют информацию. Момент обращения к  обмену  далек  от
реального обмена, и поэтому возможны неприятные ситуации.  Но,  несмотря  на
эти недостатки, опыт показывает, что фатальные потери информации  происходят
крайне редко.
      Обращаю ваше  внимание,  насколько  UNIX  экономит  обращения  к  ВЗУ.
Суперблок находится в оперативной памяти, и реальные действия с  информацией
суперблока происходят не с  диска,  а  из  оперативной  памяти,  хотя  здесь
возникает та же проблема с несанкционированным выключением питания.
      Открывая файл, мы  работаем  с  ИД.  Мы  выяснили,  что  работа  с  ИД
осуществляется  через  работу  с  его  копией,  размещенной  в   программных
таблицах в  оперативной  памяти.  Это  означает,  что  почти  нет  накладных
расходов, связанных с маленькими файлами, и эти накладные расходы  малы  при
работе с огромными файлами. Получается так, что  почти  вся  инфраструктура,
поддерживающая  работу  файловой  системы,   работает   за   счет   глубокой
эшелонированной буферизации.
Атрибуты файлов
[pic]
      Мы с вами говорили об организации  пользователей  системы;  она  имеет
иерархическую трехуровневую структуру.
      Любой пользователь принадлежит к группе. В  соответствии  с  иерархией
пользователей, определена  иерархия  защиты  файлов  и  прав  пользователей.
Определено понятие владельца файла.  Изначально  владельцем  файла  является
пользователь (а точнее, процесс пользователя), создавший этот файл.  Атрибут
«владелец файла» может быть изменен командой changeown.  Каждый  файл  имеет
атрибуты защиты, связанные с  иерархией.  Есть  права  доступа  к  некоторым
действиям файла со  стороны  владельца  файла.   Это  права  на  чтение,  на
запись, на исполнение. У каждого файла,  кроме  прав,  связанных  с  уровнем
пользователя, имеются права, связанные с уровнем группы. Это права для  всех
пользователей группы, к которой принадлежит владелец файла,  за  исключением
его самого (т.е. права владельца и его группы  различны).  Третья  категория
защиты - все  остальные.  Это  те  права,  которые  имеют  все  пользователи
системы, за исключением владельца и его группы. В  системе  имеется  команда
изменения прав доступа changemode.
      Кроме  атрибутов  доступа,  каждый  файл  может  иметь   признаки,   в
частности, т.н. t-бит  и  s-бит,  которые  также  устанавливаются  некоторой
командой. Мы, уже зная структуру файловой системы, понимаем, что в  принципе
файл может находиться в очень сильно  фрагментированном  виде.  Кроме  того,
файл может быть большим, а при открытии большого файла, возникают  накладные
расходы, связанные с доступом  к  далеким  блокам  файла.  Поэтому  открытие
файла -  это  длительный  процесс.  Чтобы  оптимизировать  это  действие,  в
системе имеется возможность пометить исполняемые файлы t-битом. После  этого
происходит следующее:  в  том  случае,  если  вызывается  исполняемый  файл,
помеченный t-битом, то при первом вызове за сеанс работы системы  происходит
копирование тела файла в область сохранения.  При  каждом  повторном  вызове
файла, сначала происхо
Пред.678910След.
скачать работу

Операционные системы

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ