Билеты_ОС_full. Виды прерываний. Роль прерываний в операционной системе
![]()
|
Эквивалентность семафоров, мониторов и сообщенийМы рассмотрели три высокоуровневых механизма, использующихся для организации взаимодействия процессов. Можно показать, что в рамках одной вычислительной системы, когда процессы имеют возможность использовать разделяемую память, все они эквивалентны. Это означает, что любые два из предложенных механизмов могут быть реализованы на базе третьего, оставшегося механизма. 8. Объект синхронизации «критическая секция». Критическая секция – участок исполняемого кода программы, в котором производится доступ к общему ресурсу(данным или устройству), который не должен быть одновременно использован более чем одним потоком исполнения. Также это объект синхронизации потоков, позволяющий предотвратить одновременное выполнение некоторого набора операций несколькими потоками. Здесь есть один маленький и тонкий момент, который относится к синхронизации как таковой. Этот момент в том, что физически данные не защищены. Никто не помещает потоку обратиться к разделяемым данным. Синхронизация это подсказка как должен себя вести объект при доступе к данным. Хороший пример - это светофор. На красный нужно стоять. Но не факт, что все это выполняют. 9. Объект синхронизации «семафор». Семафор – средство управления процессами, объект ограничивающий количество потоков через данный критический участок кода (счетчик). На семафоре 5 цветов(кр. Желт. Зел. Син. бел). Семафоры традиционно использовались для синхронизации процессов, обращающихся к разделяемым данным. Каждый процесс должен исключать для всех других процессов возможность одновременно с ним обращаться к этим данным (взаимоисключение). Когда процесс обращается к разделяемым данным, говорят, что он находится в своем критическом участке. Данный объект синхронизации позволяет ограничить доступ потоков к объекту синхронизации на основании их количества. Например, мы хотим, чтобы к какому-нибудь объекту могли обратиться максимум 3 потока. Не больше. Тогда нам нужен семафор. Сначала семафор инициализируется и ему передается количество потоков, которые к нему могут обратиться. Дальше при каждом обращении к ресурсу его счетчик уменьшается. Когда счетчик уменьшиться до 0 к ресурсу обратиться больше нельзя. При отсоединении потока от семафора его счетчик увеличивается, что позволяет другим потокам обратиться к нему. Сигнальному состоянию соответствует значение счетчика больше нуля. Когда счетчик равен нулю, семафор считается не установленным (сброшенным). 10. Объект синхронизации «мьютекс». Мью́текс (англ. mutex, от mutual exclusion — «взаимное исключение») — одноместный семафор, служащий в программировании для синхронизации одновременно выполняющихся потоков. Мьютексы — это один из вариантов семафорных механизмов для организации взаимного исключения. Они реализованы во многих ОС, их основное назначение — организация взаимного исключения для потоков из одного и того же или из разных процессов. Мьютексы — это простейшие двоичные семафоры, которые могут находиться в одном из двух состояний — отмеченном или неотмеченном (открыт и закрыт соответственно). Когда какой-либо поток, принадлежащий любому процессу, становится владельцем объекта mutex, последний переводится в неотмеченное состояние. Если задача освобождает мьютекс, его состояние становится отмеченным. Задача мьютекса — защита объекта от доступа к нему других потоков, отличных от того, который завладел мьютексом. В каждый конкретный момент только один поток может владеть объектом, защищённым мьютексом. Если другому потоку будет нужен доступ к переменной, защищённой мьютексом, то этот поток засыпает до тех пор, пока мьютекс не будет освобождён. Цель использования мьютексов — защита данных от повреждения в результате асинхронных изменений (состояние гонки), однако могут порождаться другие проблемы — такие, как взаимная блокировка (клинч). Мьютекс отличается от семафора общего вида тем, что только владеющий им поток может его освободить, т.е. перевести в отмеченное состояние. 11. Понятие операционной системы. Назначение и функции операционной системы. ОС – это совокупность ПО, предназначенного для обеспечения вычислительного процесса пользовательских программ, организации взаимодействия с пользователем и обеспечения непрерывного функционирования аппаратного обеспечения информационной системы. Операционные системы служат для: • Запуск и выполнения пользовательских программ init (в Linux) userexe (в Windows 98) • Ввод/Вывод (интерпретатор команд) • Работа оборудования(драйверы) Назначение операционных систем . Операционные системы нужны, если: • вычислительная система используется для различных задач, причём программы, решающие эти задачи, нуждаются в сохранении данных и обмене ими. • различные программы нуждаются в выполнении одних и тех же рутинных действий. • между программами и пользователями системы необходимо распределять полномочия Основные функции: • Исполнение запросов программ (ввод и вывод данных, запуск и остановка других программ, выделение и освобождение дополнительной памяти и др.). • Загрузка программ в оперативную память и их выполнение. • Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода). • Управление оперативной памятью (распределение между процессами, организация виртуальной памяти). • Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, оптические диски и др.), организованным в той или иной файловой системе. 12. Классификация операционных систем. В зависимости от алгоритма управления процессором, операционные системы делятся на: • Однозадачные • Многозадачные - Кооперативная (Windows до 95) - Вытесняющая • Однопользовательские (Windows 95, Windows 98) • Многопользовательские (Windows 98>) По архитектуре (типу ядра): • С монолитным ядром (все ф-ции системы находятся внутри одного большого исполняемого файла) • С модульным ядром (различные компоненты представлены в виде отдельных исполняемых файлах) • С большим ядром (Mac OS, Windows… все ф-ции выполняются в ядре в привилегированном режиме) • С микро ядром (IOS, Win CE, Win Phone… выполняются только основные операции) • С нано ядром (операции выполняются в режиме ядра – прерывание, ввод-вывод, планирование) • С пико ядром (выполняется только обработка прерываний) • Сетевые • Несетевые (DOS) • RT (Real Time) - Жесткие - Мягкие • NRT (отложенного времени) 13. Основные компоненты операционной системы. Взаимодействие компонентов операционной системы. К системным компонентам относятся ядро системы, обеспечивающее взаимодействие всех компонент, загрузчик программ, подсистемы, обеспечивающие диалог с человеком — оконная система и интерпретатор команд и, наконец, файловая система. Именно системные компоненты ОС определяют основные свойства операционной системы. ![]() 14. Ядро операционной системы. Состав и функции ядра операционной системы. Понятие ядра является одним из наиболее важных понятий, как и роль ядра в операционной системе. Ядро объединяет в себе базовые компоненты операционной системы, во многом определяющие специфику и основную область применения данной операционной системы. Важнейшим свойством ядра является то, что код ядра исполняется с максимально высоким уровнем привилегий – ему доступны все команды процессора и разрешен прямой доступ к любой аппаратуре компьютера. В конечном итоге, ядро изолирует все остальные программы от аппаратуры компьютера. Все остальные программы получают доступ к аппаратным ресурсам только через посредничество ядра операционной системы. Функциональность ядра во многом определяет функциональность всей операционной системы. Чем больше возможности ядра системы, тем более разносторонний сервис операционная система может в конечном итоге предоставить пользователю. Так как код ядра в силу своей специфики является аппаратно зависимым, громоздкое ядро универсальной операционной системы оказывается наиболее узким местом при переносе операционной системы на другую аппаратную платформу, например, на вновь разработанный или даже просто модернизированный компьютер. Стремление найти кардинальное решение описанных проблем привело к появлению новой концепции построения операционной системы – концепции микроядра. При этом многие подсистемы, традиционно относимые к ядру, например, файловая система, выносятся из ядра. Код ядра предельно минимизируется и самостоятельно уже не обеспечивает даже базовой функциональности операционной системы. Зато его легко отладить и относительно легко переписать при переносе операционной системы на новую аппаратную платформу. В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка станиц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами - системными вызовами - для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования - API. 15. Архитектура операционных систем с «большим ядром». Архитектура ОС – это структурная организация и принципы построения ОС на основе различных программных модулей. Архитектура определяет большинство возможностей ОС. Например, диалоговое взаимодействие предполагает реализацию развитой интерфейсной подсистемы, обеспечивающей взаимодействие пользователя с компьютером. То есть для диалоговых операционных систем необходимо предусмотреть множество механизмов, которые позволят пользователям эффективно управлять своей работой. Функциональная сложность ОС, соответственно, приводит к сложности архитектуры. Обычно в состав ОС входят: – исполняемые и объектные модули стандартных для данной ОС форматов; – библиотеки разных типов; – модули исходного текста программ; – программные модули специального формата (например, загрузчик ОС, драйверы ввода-вывода); – файлы конфигурации; – файлы документации; – модули справочной системы В состав ядра входят: – функции, решающие внутрисистемные задачи организации вычислительного процесса (такие функции недоступны для приложений); – функции для поддержки приложений. Эти функции создают для приложений так называемую прикладную программную среду; – функции, которые могут вызываться приложениями, так как приложения могут обращаться к ядру с запросами (системными вызовами) для выполнения каких-либо действий, например для открытия и чтения файла, вывода 16. Архитектура микроядерных операционных систем. ![]() В микроядерной арх ос большинство ее составляющих явс самост программами. В этом случае взаимодействие между ними обеспечив специальный модуль ядра, назыв микроядром. Оно работает в привилиг режиме и обеспечивает взаимодействие между программами, планирование использование процессора, первичную обработку прерываний, операции ввода вывода и базовое управление памятью. 17. Архитектура нано- и пикоядерных операционных систем. Наноядро — архитектура ядра операционной системы компьютеров, в рамках которой крайне упрощённое и минималистичное ядро выполняет лишь одну задачу — обработку аппаратных прерываний, генерируемых устройствами компьютера. После обработки прерываний от аппаратуры наноядро, в свою очередь, посылает информацию о результатах обработки (например, полученные с клавиатуры символы) вышележащему программному обеспечению при помощи того же механизма прерываний. Также часто реализуют минимальную поддержку потоков: создание и переключение. Наиболее часто в современных компьютерах наноядра используются для виртуализации аппаратного обеспечения реальных компьютеров или для реализации механизма гипервизора, с целью позволить нескольким или многим различным операционным системам работать одновременно и параллельно на одном и том же компьютере. Пикоядро. Базовые требования современных систем реального времени стали столь обширны, что назрела необходимость в структуризации уже самого микроядра. Была выдвинута идея так называемого «пикоядра». Пикоядро – в данном случае это ядро, имеющее следующие свойства: Не имеет каких-либо состояний (начальных, конечных или промежуточных), ядро без состояния. Не требует инициализации и деинициализации. Реализует и содержит в себе очень малое количество функций и данных – только функции для работы с объектами. Предоставляет объектно-ориентированный интерфейс системе в виде небольшого количества системных вызовов для работы с объектами. Является полностью пассивной частью кода операционной системы – код ядра выполняется только во время системных вызовов. В большинстве случаев является обычной статической библиотекой, которая компонуется с главной системной частью ОС – менеджером процессов. 18. Концепция монолитного ядра операционной системы. Монолитное ядро – такая схема ос, при которой все ее компонент являются составными частями одной программы, используют общие структуры данных и взаимод друг с другомпутем непосред вызова процедур. В монолитном ядре выделяются сервисные процедуры, соответствующие системным вызовам. Серв. Проц. Выполняются в привилиг режиме, тогда как пользоват программы в непривилиг. Для перехода с одного уровня привилегий на другой иногда может использоваться главная сервисная программа, определ, какой именно системный вызов был сделан, корректность входных данных для этого вызова и передающая управление соотв серв процедуре с переходом в привилег режимработы. Иногда выделяют также набор прорграммных утилит, котор помогают выполнять серв процедуры. 19. Концепция модульного ядра операционной системы. Модульное ядро — современная, усовершенствованная модификация архитектуры монолитных ядер операционных систем компьютеров. В отличие от «классических» монолитных ядер, считающихся ныне устаревшими, модульные ядра, как правило, не требуют полной перекомпиляции ядра при изменении состава аппаратного обеспечения компьютера. Вместо этого модульные ядра предоставляют тот или иной механизм подгрузки модулей ядра, поддерживающих то или иное аппаратное обеспечение (например, драйверов). При этом подгрузка модулей может быть как динамической (выполняемой «на лету», без перезагрузки ОС, в работающей системе), так и статической (выполняемой при перезагрузке ОС после переконфигурирования системы на загрузку тех или иных модулей). Все модули ядра работают в адресном пространстве ядра и могут пользоваться всеми функциями, предоставляемыми ядром. Поэтому модульные ядра продолжают оставаться монолитными. Модульные ядра удобнее для разработки, чем традиционные монолитные ядра, не поддерживающие динамическую загрузку модулей, так как от разработчика не требуется многократная полная перекомпиляция ядра при работе над какой-либо его подсистемой или драйвером. Выявление, локализация, отладка и устранение ошибок при тестировании также облегчаются. 20. Понятие процесса. Свойства и характеристики процессов. Процесс — фундаментальное понятие при изучении операционных систем. Современные компьютеры умеют делать несколько дел одновременно. В многозадачной системе процессор переключается между задачами, выделяя им по немногу времени, причем в каждый отдельный момент процессор может работать только над одной задачей, но переключение между процессами происходит достаточно часто, чтобы у пользователя возникла иллюзия многозадачности. Для упрощения работы с несколькими задачами одновременно было введено понятие процесс. В общем случае процесс—это некоторая деятельность, связанная с исполнением программы на процессоре.
При исполнении программ на центральном процессоре чаще всего различают следующие характерные отдельные состояния:
Процесс находится в каждом из своих допустимых состояний в течение некоторого времени, после чего переходит в какое-то другое допустимое состояние. Состав допустимых состояний, а также допустимые переходы из состояния в состояние обычно задают в форме графа существования процесса, пример которого изображен на рис. 2.1: ![]() Для ОС процесс в такой трактовке рассматривается как объект, в отношении которого требуется обеспечить реализацию каждого из допустимых состояний а также допустимые переходы из состояния в состояние в ответ на события, которые могут явиться причиной таких переходов. Такие события могут инициироваться и самими процессами, которые способны затребовать процессор или какой-либо другой ресурс, необходимый для исполнения программы. |