Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_k_ekzamenu_OSiS_2014_V21_1_1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
925.7 Кб
Скачать

Раздел 2. Машинно-зависимые свойства операционных систем

  1. Машинно-зависимые компоненты ОС: создание и управление процессами и потоками. Состояния потока. Дескриптор, контекст.

  2. Машино-зависимые компоненты: управление памятью. Виртуальная память. Свопинг.

  3. Машино-зависимые компоненты ОС: обработка системных вызовов. Векторный и опрашиваемый способ

  4. Машино-зависимые компоненты ОС: централизованная и децентрализованная обработка.

Раздел 3. Машинно-независимые свойства операционных систем

  1. Задачи ОС по управлению файлами и устройствами

Подсистема ввода-вывода (Input-Output Subsystem) мультипрограм-мной ОС при обмене данными с внешними устройствами компьютера должна решать ряд общих задач, из которых наиболее важными являются следующие:

организация параллельной работы устройств ввода-вывода и процессора;

согласование скоростей обмена и кэширование данных;

разделение устройств и данных между процессами;

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

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

динамическая загрузка и выгрузка драйверов;

поддержка нескольких файловых систем;

поддержка синхронных и асинхронных операций ввода-вывода.

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

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

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

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

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

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

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

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

Драйвер взаимодействует, с одной стороны, с модулями ядра ОС (модулями подсистемы ввода-вывода, модулями системных вызовов, модулями подсистем управления процессами и памятью и т. д.), а с другой стороны - с контроллерами внешних устройств. Поэтому существуют два типа интерфейсов: интерфейс «драйвер-ядро» (Driver Kernel Interface, DKI) и интерфейс «драйвер-устройство»(Driver Device Interface, DDI). Интерфейс «драйвер-ядро» должен быть стандартизован в любом случае. Интерфейс «драйвер-устройство» имеет смысл стандартизировать тогда, когда подсистема ввода-вывода не разрешает драйверу непосредственно взаимодействовать с аппаратурой контроллера и выполняет эти операции самостоятельно. Экранирование драйвера от аппаратуры является весьма полезной функцией, так как драйвер в этом случае становится независимым от аппаратной платформы. Подсистема ввода-вывода может поддерживать несколько различных типов интерфейсов DKI/DDI, предоставляя специфический интерфейс для устройств определенного класса.

Для поддержки процесса разработки драйверов операционной системы обычно выпускается так называемый пакет DDK (Driver Development Kit), представляющий собой набор соответствующих инструментальных средств - библиотек, компиляторов и отладчиков.

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

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

Поддержка нескольких файловых систем. Диски представляют особый род периферийных устройств, так как именно на них хранится большая часть как пользовательских, так и системных данных. Данные на дисках организуются в файловые системы, и свойства файловой системы во многом определяют свойства самой ОС - ее отказоустойчивость, быстродействие, максимальный объем хранимых данных. Популярность файловой системы часто приводит к ее миграции из «родной» ОС в другие операционные системы. Например, файловая система FAT появилась первоначально в MS-DOS, но затем была реализована в OS/2, семействе MS Windows и многих реализациях UNIX. Ввиду этого поддержка нескольких популярных файловых систем для подсистемы ввода-вывода также важна, как и поддержка широкого спектра периферийных устройств. Важно также, чтобы архитектура подсистемы ввода-вывода позволяла достаточно просто включать в ее состав новые типы файловых систем, без необходимости переписывания кода. Обычно в операционной системе имеется специальный слой программного обеспечения, отвечающий за решение данной задачи, например слой VFS ( Virtual File System) в версиях UNIX на основе кода System V Release 4.

2 Логическую организацию файловой системы и физическую организацию файловой системы

Логическая организация файла

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

Рис. 2.33. Способы логической организации файлов

Физическая организация и адрес файла

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

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

Рис. 2.34. Физическая организация файла а - непрерывное размещение; б - связанный список блоков;  в - связанный список индексов; г - перечень номеров блоков

  1. Рис. 2.37. Функции физического уровня файловой системы

  1. Cпособы организации файловых операций

Для использования информации, хранимой в  файлах, она должна быть считана в память компьютера. Есть несколько способов доступа к файлам.   Ранние ОС давали только один способ доступа – последовательный (модель ленты).  Записи считывались в порядке поступления.  Текущая позиция считывания могла быть возвращена к началу файла (rewind).   Вместе с магнитными барабанами и дисками появились файлы спрямым (random) доступом.    Для специфицирования  места, с которого надо начинать чтение  используются два способа:  с начала, или с текущей позиции, которую  дает операция seek. Последовательный доступ базируется на модели ленты и работает как на устройствах последовательного доступа, так и прямого. Это наиболее общая модель. Организация прямого доступа существенна для многих приложений, например, для систем управления базами данных. Не все системы поддерживают оба (последовательный и прямой) метода доступа.  Последовательный доступ легко эмулировать  при помощи  прямого, однако реализация прямого доступа через последовательный была бы очень неэффективной. Помимо прямого и последовательного существуют и другие методы доступа. Обычно они включают конструирование индекса файла и базируются на прямом методе доступа.  Для поиска записи вначале происходит обращение к индексу,  где находится указатель на нужную запись. Предположим, что имеется большой файл, содержащий  разнообразные сведения о студентах, состоящих из записей с несколькими полями, и возникает задача организации быстрого поиска по одному из полей, например по фамилии студента. 

Рис. 11.2  Пример организации индекса для последовательного файла

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

  1. Cпособы организации контроля доступа к файлам

Задачи, решаемые утилитами для ограничения доступа

Блокирование доступа к настройкам операционной системы

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

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

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

Защита файлов и папок операционной системы и установленных приложений

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

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

Контроль за использованием приложений и ограничение времени доступа

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

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

Защита персональных данных

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

Есть и более важная сторона вопроса. Всегда ли вы можете спокойно доверить свои материалы кому бы то ни было? Скорее всего, нет, ведь совсем не исключено, что ваши файлы и папки могут оказаться удаленными или измененными неподготовленным пользователем по чистой случайности. А заблокировав доступ к ним, вы можете не переживать, что с вашими документами что-либо случится по вине постороннего.

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

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

Блокирование доступа к компьютеру

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

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

Блокирование доступа к устройствам

Встроенные механизмы распределения прав доступа и задания политик безопасности в ОС семейства Windows не позволяют контролировать доступ к потенциально опасным устройствам: дисководам и CD-ROM, а также к FireWire и инфракрасным портам, к WiFi- и Bluetooth-адаптерам и пр. В то же время использование неавторизованных устройств представляет немалую угрозу безопасности данных. С одной стороны, данные могут быть похищены, ведь при открытом доступе нет никакой сложности в том, чтобы записать информацию на внешний носитель, а с другой — данные на компьютере могут быть видоизменены. Вариантов тут много. Например, сетевые и локальные компьютеры часто страдают от вирусов, троянов и других вредоносных программ, нередко заносимых со сменных носителей. Не менее неприятна ситуация бесконтрольной установки ПО.

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

  1. Принципы планирования заданий

  1. Принципы распределения ресурсов