МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Лекции по предмету Операционные системы

    памяти. Если вытесняемые данные были модифицированы за время

    нахождения в кэш-памяти, то они переписываются в оперативную память.

    Если же эти данные не были модифицированы, то их место в кэш-памяти

    объявляется свободным.

    На практике в кэш-память считывается не один элемент данных, к которому

    произошло обращение, а целый блок данных, это увеличивает вероятность так

    называемого "попадания в кэш", то есть нахождения нужных данных в кэш-

    памяти.

    Покажем, как среднее время доступа к данным зависит от вероятности

    попадания в кэш. Пусть имеется основное запоминающие устройство со средним

    временем доступа к данным t1 и кэш-память, имеющая время доступа t2,

    очевидно, что t2

    системе с кэш-памятью, а через p -вероятность попадания в кэш. По формуле

    полной вероятности имеем:

    t = t1((1 - p) + t2(p

    Из нее видно, что среднее время доступа к данным в системе с кэш-памятью

    линейно зависит от вероятности попадания в кэш и изменяется от среднего

    времени доступа в основное ЗУ (при р=0) до среднего времени доступа

    непосредственно в кэш-память (при р=1).

    В реальных системах вероятность попадания в кэш составляет примерно 0,9.

    Высокое значение вероятности нахождения данных в кэш-памяти связано с

    наличием у данных объективных свойств: пространственной и временной

    локальности.

    . Пространственная локальность. Если произошло обращение по некоторому

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

    обращение к соседним адресам.

    . Временная локальность. Если произошло обращение по некоторому адресу,

    то следующее обращение по этому же адресу с большой вероятностью

    произойдет в ближайшее время.

    Все предыдущие рассуждения справедливы и для других пар запоминающих

    устройств, например, для оперативной памяти и внешней памяти. В этом случае

    уменьшается среднее время доступа к данным, расположенным на диске, и роль

    кэш-памяти выполняет буфер в оперативной памяти.

    | |

    [pic]

    Управление вводом-выводом

    Одной из главных функций ОС является управление всеми устройствами ввода-

    вывода компьютера. ОС должна передавать устройствам команды, перехватывать

    прерывания и обрабатывать ошибки; она также должна обеспечивать интерфейс

    между устройствами и остальной частью системы. В целях развития интерфейс

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

    устройств).

    Физическая организация устройств ввода-вывода

    Устройства ввода-вывода делятся на два типа: блок-ориентированные

    устройства и байт-ориентированные устройства. Блок-ориентированные

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

    которых имеет свой собственный адрес. Самое распространенное блок-

    ориентированное устройство - диск. Байт-ориентированные устройства не

    адресуемы и не позволяют производить операцию поиска, они генерируют или

    потребляют последовательность байтов. Примерами являются терминалы,

    строчные принтеры, сетевые адаптеры. Однако некоторые внешние устройства не

    относятся ни к одному классу, например, часы, которые, с одной стороны, не

    адресуемы, а с другой стороны, не порождают потока байтов. Это устройство

    только выдает сигнал прерывания в некоторые моменты времени.

    Внешнее устройство обычно состоит из механического и электронного

    компонента. Электронный компонент называется контроллером устройства или

    адаптером. Механический компонент представляет собственно устройство.

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

    интерфейс между контроллером и устройством стандартизован, то независимые

    производители могут выпускать совместимые как контроллеры, так и

    устройства.

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

    Контроллер, как правило, выполняет простые функции, например, преобразует

    поток бит в блоки, состоящие из байт, и осуществляют контроль и исправление

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

    для взаимодействия с центральным процессором. В некоторых компьютерах эти

    регистры являются частью физического адресного пространства. В таких

    компьютерах нет специальных операций ввода-вывода. В других компьютерах

    адреса регистров ввода-вывода, называемых часто портами, образуют

    собственное адресное пространство за счет введения специальных операций

    ввода-вывода (например, команд IN и OUT в процессорах i86).

    ОС выполняет ввод-вывод, записывая команды в регистры контроллера.

    Например, контроллер гибкого диска IBM PC принимает 15 команд, таких как

    READ, WRITE, SEEK, FORMAT и т.д. Когда команда принята, процессор оставляет

    контроллер и занимается другой работой. При завершении команды контроллер

    организует прерывание для того, чтобы передать управление процессором

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

    Процессор получает результаты и статус устройства, читая информацию из

    регистров контроллера.

    Организация программного обеспечения ввода-вывода

    Основная идея организации программного обеспечения ввода-вывода состоит в

    разбиении его на несколько уровней, причем нижние уровни обеспечивают

    экранирование особенностей аппаратуры от верхних, а те, в свою очередь,

    обеспечивают удобный интерфейс для пользователей.

    Ключевым принципом является независимость от устройств. Вид программы не

    должен зависеть от того, читает ли она данные с гибкого диска или с

    жесткого диска.

    Очень близкой к идее независимости от устройств является идея

    единообразного именования, то есть для именования устройств должны быть

    приняты единые правила.

    Другим важным вопросом для программного обеспечения ввода-вывода является

    обработка ошибок. Вообще говоря, ошибки следует обрабатывать как можно

    ближе к аппаратуре. Если контроллер обнаруживает ошибку чтения, то он

    должен попытаться ее скорректировать. Если же это ему не удается, то

    исправлением ошибок должен заняться драйвер устройства. Многие ошибки могут

    исчезать при повторных попытках выполнения операций ввода-вывода, например,

    ошибки, вызванные наличием пылинок на головках чтения или на диске. И

    только если нижний уровень не может справиться с ошибкой, он сообщает об

    ошибке верхнему уровню.

    Еще один ключевой вопрос - это использование блокирующих (синхронных) и

    неблокирующих (асинхронных) передач. Большинство операций физического ввода-

    вывода выполняется асинхронно - процессор начинает передачу и переходит на

    другую работу, пока не наступает прерывание. Пользовательские программы

    намного легче писать, если операции ввода-вывода блокирующие - после

    команды READ программа автоматически приостанавливается до тех пор, пока

    данные не попадут в буфер программы. ОС выполняет операции ввода-вывода

    асинхронно, но представляет их для пользовательских программ в синхронной

    форме.

    Последняя проблема состоит в том, что одни устройства являются

    разделяемыми, а другие - выделенными. Диски - это разделяемые устройства,

    так как одновременный доступ нескольких пользователей к диску не

    представляет собой проблему. Принтеры - это выделенные устройства, потому

    что нельзя смешивать строчки, печатаемые различными пользователями. Наличие

    выделенных устройств создает для операционной системы некоторые проблемы.

    Для решения поставленных проблем целесообразно разделить программное

    обеспечение ввода-вывода на четыре слоя (рисунок 2.30):

    . Обработка прерываний,

    . Драйверы устройств,

    . Независимый от устройств слой операционной системы,

    . Пользовательский слой программного обеспечения.

    [pic]

    Рис. 2.30. Многоуровневая организация подсистемы ввода-вывода

    Обработка прерываний

    Прерывания должны быть скрыты как можно глубже в недрах операционной

    системы, чтобы как можно меньшая часть ОС имела с ними дело. Наилучший

    способ состоит в разрешении процессу, инициировавшему операцию ввода-

    вывода, блокировать себя до завершения операции и наступления прерывания.

    Процесс может блокировать себя, используя, например, вызов DOWN для

    семафора, или вызов WAIT для переменной условия, или вызов RECEIVE для

    ожидания сообщения. При наступлении прерывания процедура обработки

    прерывания выполняет разблокирование процесса, инициировавшего операцию

    ввода-вывода, используя вызовы UP, SIGNAL или посылая процессу сообщение. В

    любом случае эффект от прерывания будет состоять в том, что ранее

    заблокированный процесс теперь продолжит свое выполнение.

    Драйверы устройств

    Весь зависимый от устройства код помещается в драйвер устройства. Каждый

    драйвер управляет устройствами одного типа или, может быть, одного класса.

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

    особенностях какого-либо устройства. Например, только драйвер диска имеет

    дело с дорожками, секторами, цилиндрами, временем установления головки и

    другими факторами, обеспечивающими правильную работу диска.

    Драйвер устройства принимает запрос от устройств программного слоя и

    решает, как его выполнить. Типичным запросом является чтение n блоков

    данных. Если драйвер был свободен во время поступления запроса, то он

    начинает выполнять запрос немедленно. Если же он был занят обслуживанием

    другого запроса, то вновь поступивший запрос присоединяется к очереди уже

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

    Первый шаг в реализации запроса ввода-вывода, например, для диска, состоит

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

    драйвера это означает преобразование номеров блоков в номера цилиндров,

    головок, секторов, проверку, работает ли мотор, находится ли головка над

    нужным цилиндром. Короче говоря, он должен решить, какие операции

    контроллера нужно выполнить и в какой последовательности.

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

    себя до окончания заданной операции или нет. Если операция занимает

    значительное время, как при печати некоторого блока данных, то драйвер

    блокируется до тех пор, пока операция не завершится, и обработчик

    прерывания не разблокирует его. Если команда ввода-вывода выполняется

    быстро (например, прокрутка экрана), то драйвер ожидает ее завершения без

    блокирования.

    Независимый от устройств слой операционной системы

    Большая часть программного обеспечения ввода-вывода является независимой от

    устройств. Точная граница между драйверами и независимыми от устройств

    программами определяется системой, так как некоторые функции, которые могли

    бы быть реализованы независимым способом, в действительности выполнены в

    виде драйверов для повышения эффективности или по другим причинам.

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

    . обеспечение общего интерфейса к драйверам устройств,

    . именование устройств,

    . защита устройств,

    . обеспечение независимого размера блока,

    . буферизация,

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

    . распределение и освобождение выделенных устройств,

    . уведомление об ошибках.

    Остановимся на некоторых функциях данного перечня. Верхним слоям

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

    поэтому данный слой обеспечивает единый размер блока, например, за счет

    объединения нескольких различных блоков в единый логический блок. В связи с

    этим верхние уровни имеют дело с абстрактными устройствами, которые

    используют единый размер логического блока независимо от размера

    физического сектора.

    При создании файла или заполнении его новыми данными необходимо выделить

    ему новые блоки. Для этого ОС должна вести список или битовую карту

    свободных блоков диска. На основании информации о наличии свободного места

    на диске может быть разработан алгоритм поиска свободного блока,

    независимый от устройства и реализуемый программным слоем, находящимся выше

    слоя драйверов.

    Пользовательский слой программного обеспечения

    Хотя большая часть программного обеспечения ввода-вывода находится внутри

    ОС, некоторая его часть содержится в библиотеках, связываемых с

    пользовательскими программами. Системные вызовы, включающие вызовы ввода-

    вывода, обычно делаются библиотечными процедурами. Если программа,

    написанная на языке С, содержит вызов

    count = write (fd, buffer, nbytes),

    то библиотечная процедура write будет связана с программой. Набор подобных

    процедур является частью системы ввода-вывода. В частности, форматирование

    ввода или вывода выполняется библиотечными процедурами. Примером может

    служить функция printf языка С, которая принимает строку формата и,

    возможно, некоторые переменные в качестве входной информации, затем строит

    строку символов ASCII и делает вызов write для вывода этой строки.

    Стандартная библиотека ввода-вывода содержит большое число процедур,

    которые выполняют ввод-вывод и работают как часть пользовательской

    программы.

    Другой категорией программного обеспечения ввода-вывода является подсистема

    спулинга (spooling). Спулинг - это способ работы с выделенными устройствами

    в мультипрограммной системе. Рассмотрим типичное устройство, требующее

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

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

    такой способ опасен из-за того, что пользовательский процесс может

    монополизировать принтер на произвольное время. Вместо этого создается

    специальный процесс - монитор, который получает исключительные права на

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

    называемый каталогом спулинга. Для того, чтобы напечатать файл,

    пользовательский процесс помещает выводимую информацию в этот файл и

    помещает его в каталог спулинга. Процесс-монитор по очереди распечатывает

    все файлы, содержащиеся в каталоге спулинга.

    | |

    [pic]

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

    Файловая система - это часть операционной системы, назначение которой

    состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с

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

    несколькими пользователями и процессами.

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

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

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

    например, как каталоги файлов, дескрипторы файлов, таблицы

    распределения свободного и занятого пространства на диске,

    . комплекс системных программных средств, реализующих управление

    файлами, в частности: создание, уничтожение, чтение, запись,

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

    Имена файлов

    Файлы идентифицируются именами. Пользователи дают файлам символьные имена,

    при этом учитываются ограничения ОС как на используемые символы, так и на

    длину имени. До недавнего времени эти границы были весьма узкими. Так в

    популярной файловой системе FAT длина имен ограничивается известной схемой

    8.3 (8 символов - собственно имя, 3 символа - расширение имени), а в ОС

    UNIX System V имя не может содержать более 14 символов. Однако пользователю

    гораздо удобнее работать с длинными именами, поскольку они позволяют дать

    файлу действительно мнемоническое название, по которому даже через

    достаточно большой промежуток времени можно будет вспомнить, что содержит

    этот файл. Поэтому современные файловые системы, как правило, поддерживают

    длинные символьные имена файлов. Например, Windows NT в своей новой

    файловой системе NTFS устанавливает, что имя файла может содержать до 255

    символов, не считая завершающего нулевого символа.

    При переходе к длинным именам возникает проблема совместимости с ранее

    созданными приложениями, использующими короткие имена. Чтобы приложения

    могли обращаться к файлам в соответствии с принятыми ранее соглашениями,

    файловая система должна уметь предоставлять эквивалентные короткие имена

    (псевдонимы) файлам, имеющим длинные имена. Таким образом, одной из важных

    задач становится проблема генерации соответствующих коротких имен.

    Длинные имена поддерживаются не только новыми файловыми системами, но и

    новыми версиями хорошо известных файловых систем. Например, в ОС Windows 95

    используется файловая система VFAT, представляющая собой существенно

    измененный вариант FAT. Среди многих других усовершенствований одним из

    главных достоинств VFAT является поддержка длинных имен. Кроме проблемы

    генерации эквивалентных коротких имен, при реализации нового варианта FAT

    важной задачей была задача хранения длинных имен при условии, что

    принципиально метод хранения и структура данных на диске не должны были

    измениться.

    Обычно разные файлы могут иметь одинаковые символьные имена. В этом случае

    файл однозначно идентифицируется так называемым составным именем,

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

    некоторых системах одному и тому же файлу не может быть дано несколько

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

    операционная система присваивает файлу дополнительно уникальное имя, так,

    Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.