1. Операционная система. Определение. Функции операционных систем.
Функции: По современным представлениям, ОС должна уметь делать следующее: Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение. Обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски и т.д. Как правило, ОС управляет свободным пространством на этих носителях и структурирует пользовательские данные. Предоставлять более или менее стандартный доступ к различным устройствам ввода/вывода, таким как терминалы, модемы, печатающие устройства. Предоставлять некоторый пользовательский интерфейс. Слово некоторый
Более развитые ОС предоставляют также следующие возможности: Параллельное (точнее, псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач. Распределение ресурсов компьютера между задачами. Организация взаимодействия задач друг с другом. Взаимодействие пользовательских программ с нестандартными внешними устройствами. Организация межмашинного взаимодействия и разделения ресурсов. Защита системных ресурсов, данных и программ пользователя, исполняющихся процессов и самой себя от ошибочных и зловредных действий пользователей и их программ. |
3. Операционная система. Определение. Классификация операционных систем по особенностям алгорифмов управления ресурсами, особенностям аппаратных платформ, особенностям областей использования.
По тому, какие из вышеперечисленных функций реализованы (см вопрос 1) и каким было уделено больше внимания, а каким меньше, системы можно разделить на несколько классов. ДОС (Дисковые Операционные Системы) Это системы, берущие на себя выполнение только первых четырех функций. Как правило, это просто некий резидентный набор подпрограмм, не более того. Он загружает пользовательскую программу в память и передает ей управление, после чего программа делает с системой все, что ей заблагорассудится. Считается желательным, чтобы после завершения программы машина оставалась в таком состоянии, чтобы ДОС могла продолжить работу. Если же программа приводит машину в какое-то другое состояние... что ж, ДОС ничем ей в этом не может помешать. Характерный пример - различные загрузочные мониторы для машин класса Spectrum
Дисковая операционная система MS DOS
Существование систем такого класса обусловлено их простотой и тем, что они потребляют мало ресурсов. Для машин класса Spectrum
ОС К этому классу относятся системы, берущие на себя выполнение всех вышеперечисленных функций. Разделение на ОС и ДОС идет, по-видимому, от систем IBM DOS/360 и OS/360 для больших компьютеров этой фирмы, клоны которых известны у нас в стране под названием ЕС ЭВМ серии 10XX. (Кстати, у IBM была еще TOS/360, Tape Operating System - Ленточная Операционная Система). Здесь под ОС мы будем подразумевать системы ``общего назначения'', то есть рассчитанные на интерактивную работу одного или нескольких пользователей в режиме разделения времени, при не очень жестких требованиях на время реакции системы на внешние события. Как правило, в таких системах уделяется большое внимание защите самой системы, программного обеспечения и пользовательских данных от ошибочных и злонамеренных программ и пользователей. Обычно такие системы используют встроенные в архитектуру процессора средства защиты и виртуализации памяти. К этому классу относятся такие широко распространенные системы, как VAX/VMS, системы семейства Unix и OS/2, хотя последняя не обеспечивает одновременной работы нескольких пользователей и защиты пользователей друг от друга. Системы реального времени Это системы, предназначенные для облегчения разработки так называемых приложений реального времени. Это программы, управляющие некомпьютерным по природе оборудованием, часто с очень жесткими ограничениями по времени. Примером такого приложения может быть программа бортового компьютера крылатой ракеты, системы управления ускорителем элементарных частиц или промышленным оборудованием. Такие системы обязаны поддерживать многопроцессность, гарантированное время реакции на внешнее событие, простой доступ к таймеру и внешним устройствам. Такие системы могут по другим признакам относиться как к классу ДОС (RT-11), так и к ОС (OS-9, QNX). Часто такие системы (например, VxWorks) рассчитаны на работу совместно с управляющей host-машиной, исполняющей ``нормальную'' операционную систему. |
5) Архитектура операционной системы. Режимы ядра и приложений. Многослойная архитектура.
Под архитектурой понимается организация ОС. Из основных программных модулей обычно выделяют две группы: 1) ядро – модули, выполняющие основные функции ОС 2) модули, выполняющие вспомогательные функции. Вспомогательные модули делятся на группы: 1) утилиты – программы решения отдельных задач управления и сопровождения компьютерной системы. 2) Системные обрабатывающие программы – текстовые или графические редакторы, компиляторы, компоновщики, трансляторы 3) Программы представляющие пользователю дополнительные услуги 4) Библиотеки процедур различного назначения Модули ОС, оформленные в виде утилит, системных обрабатывающих программ и библиотек - ? – Ядро в привилегированном режиме. Важным свойством архитектуры ОС является возможность выполнения защиты данных за счет выполнения функций ядра в привилегированном режиме. Ни одно приложение не должно иметь возможности без ведома ОС получать дополнительную память, занимать процессор дольше разрешенного ОС времени, непосредственно управлять совместно используемыми внешними устройствами. Аппаратура компьютера должна поддерживать минимум два режима работы – пользовательский и привилегированный (режим ядра) Подразумевается, что ОС или ее часть работают в привилегированном режиме, а приложения в пользовательском. Системный вызов инициирует переключение процессора из пользовательского в привилегированный режим, а при возврате к приложению – обратный процесс. |
2. Операционная система. Определение. Эволюция операционных систем.
1945-55: Были созданы первые ламповые вычислительные устройства. Программирование исключительно на машинном языке. ОС не было. Для программирования использовался пульт управления. Из системного обеспечения были библиотеки математических и служебных подпрограмм. 1955-65: Данный этап связан с появлением новой технической базы программных продуктов. Появились первые языки. Для эффективности использования процессорного времени стали использовать системы пакетной обработки (прообразы ОС). Задания вводили с помощью перфокарт. 1965-80: Произошел переход к ИМС. Появились программно-совместимые машины, что потребовало появления совместимых ОС. Большое распространение получили системы подобные ОС/360. Главным достоинством ОС было появление мультипрограммирования
1980-… Потребовалась разработка дружественного интерфейса, из-за широкого распространения компьютеров. Первыми такими ОС были MS-DOS и Unix. |
6.
Микроядро — это минимальная стержневая часть ОС, служащая основой модульных и переносимых расширений. Основная идея заключается в том, чтобы конструировать необходимую среду верхнего уровня, из которой можно легко получить доступ ко всем функциональным возможностям уровня аппаратного обеспечения. Искусство разработки микроядра заключается в выборе базовых примитивов, которые должны в нем находиться для обеспечения необходимого и достаточного сервиса. В микроядре содержится и исполняется минимальное количество кода, необходимое для реализации основных системных вызовов. В число этих вызовов входят передача сообщений и организация другого общения между внешними по отношению к микроядру процессами, поддержка управления прерываниями, а также ряд некоторых других функций. Остальные функции, характерные для «обычных» ОС, обеспечиваются как модульные дополнения-процессы, взаимодействующие главным образом между собой и осуществляющие взаимодействие посредством передачи сообщений. Микроядро является маленьким, передающим сообщения модулем системного программного обеспечения, работающим в наиболее приоритетном состоянии компьютера и поддерживающим остальную часть операционной системы, рассматриваемую как набор серверных приложений. Достоинства: − более простая организация чем у монолитных ОС; − с микроядром функция операционной системы разбивается на модульные части, которые могут быть сконфигурированы целым рядом способов, позволяя строить большие системы добавлением новых частей; − микроядра также облегчают поддержку мультипроцессоров созданием стандартной программной среды, которая может использовать множественные процессоры в случае их наличия, однако не требует их, если их нет. − сети из общающихся между собой микроядер могут быть использованы для обеспечения операционной системной поддержки возникающего класса массивно параллельных машин. − поскольку микроядра малы и имеют сравнительно мало требуемого к исполнению кода уровня ядра, они обеспечивают удобный способ поддержки характеристик реального времени, требующихся для мультимедиа, управления устройствами и высокоскоростных коммуникаций. − хорошо структурированные микроядра обеспечивают изолирующий слой для аппаратных различий. Таким образом, они упрощают перенесение кода и увеличивают уровень его повторного использования. Недостатки: Ухудшение показателя производительности за счет большого числа переключений между пользовательским и привелигерованным режимами. |
7.
--
-- средства трансляции адресов: выполняются операции преобразования виртуальных адресов (в кодах процессора) а адреса физической памяти; -- средства переключения процессов: предназначены для быстрого сохранения приостанавливаемого контекста и восстановления контекста, который становится активным (контекст – содержимое всех регистров общего назначения, регистров флага, а также всех системных регистров, которые связаны с отдельным процессом); -- системный таймер: быстродействующий регистр, счетчик используемый ОС для выдержки интервалов времени; -- прерывания, система прерываний; -- средства защиты областей памяти: обеспечивает на аппаратном уровне проверку возможности осуществления программным кодом операций с определенной областью памяти. |
8. Иерархия памяти. Управление памятью без использования внешней памяти.
Иерархия памяти.
|
9. Способы управления оперативной памятью. Типы адресов. Страничное распределение памяти, сегментное, сегментно-страничное распределение. Управление памятью.
Типы адресов.
Страничное распределение памяти.
|
12.Кэширование данных. Принцип работы кэш-памяти. Способы отображения данных на кэш.
Кэширование данных.
Механизм кэш-памяти является прозрачным для пользователя, который не должен сообщать никакой информации об интенсивности использования данных и не должен никак участвовать в перемещении данных из ЗУ одного типа в ЗУ другого типа, все это делается автоматически системными средствами. Кэш память используется для уменьшения среднего времени доступа к данным, хранящимся в оперативной памяти. Для этого между процессором и оперативной памятью помещается быстрое ЗУ, называемое просто кэш-памятью. Содержимое кэш-памяти представляет собой совокупность записей обо всех загруженных в нее элементах данных. Каждая запись об элементе данных включает в себя адрес, который этот элемент данных имеет в оперативной памяти, и управляющую информацию: признак модификации и признак обращения к данным за некоторый последний период времени. Принцип работы кэш.
1.Просматривается содержимое кэш-памяти с целью определения, не находятся ли нужные данные в кэш-памяти; кэш-память не является адресуемой, поэтому поиск нужных данных осуществляется по содержимому - значению поля "адрес в оперативной памяти", взятому из запроса. |
Многослойная архитектура.
Вычислительную систему можно рассматривать как систему, составленную из трех иерархических слоев. Нижний слой образует аппаратура. Промежуточный – ядро ОС. Верхний слой – утилиты, обрабатывающие программы и приложения. Ядро ОС имеет также сложную структуру и может содержать следующие слои 1) средства аппаратной поддержки ОС 2) машинно-зависимые модули 3) базовые механизмы ядра 4) менеджеры ресурсов 5) интерфейс системных вызовов. Средства аппаратной поддержки включают в себя несколько пунктов 1) средства поддержки привилегированного режима 2) средства трансляции адресов 3) средства переключения процессов 4) системный таймер 5) система прерываний 6) средства защиты областей памяти |
* Гарантированное время реакции на внешнее событие является отличительным признаком систем РВ. Требование гарантированного времени реакции налагает специфические требования на архитектуру ОС; большинство современных ОС общего назначения непригодно для задач РВ. *
Любопытно, что новомодное течение в компьютерной технике - multimedia - при качественной реализации предъявляет к системе те же требования, что и промышленные задачи реального времени. В multimedia основной проблемой является синхронизация изображения на экране со звуком. Именно в таком порядке. Звук обычно генерируется внешним аппаратным устройством с собственным таймером, и изображение синхронизуется с ним же. Человек способен заметить довольно малые временные неоднородности в звуковом потоке. Напротив, пропуск кадров в визуальном потоке не так заметен, а расхождение звука и изображения заметно уже при задержках около 30 мс. Поэтому системы качественного multimedia должны обеспечивать синхронизацию с такой же или более высокой точностью, что мало отличается от систем мягкого реального времени Кросс-загрузчики Это системы - полностью ориентированные на работу с host-машиной. Чаще всего они используются для написания и отладки кода, позднее прошиваемого в ПЗУ. Это системы программирования микроконтроллеров семейства Intel 8048 и подобных им, TDS (Transputer Development System) фирмы Inmos, и многие другие. Такие системы, как правило, включают в себя набор компиляторов и ассемблеров, работающих на host-системе (реже - загружаемых с host-машины в целевую систему), библиотеки, выполняющие большую часть функций ОС при работе программы (но не загрузку этой программы!), и средства отладки. Системы промежуточных типов Существуют системы, которые с первого взгляда нельзя отнести к одному из вышеперечисленных классов. Такова, например, система RT-11, которая, по сути своей, является ДОС, но позволяет одновременное исполнение нескольких программ с довольно богатыми средствами взаимодействия и синхронизации. Другим примером промежуточной системы являются MS Windows 3.x и Windows 95 которые, как ОС, используют аппаратные средства процессора для защиты и виртуализации памяти и даже могут обеспечивать некоторое подобие многозадачной работы, но не защищают себя и программы от ошибок других программ. В последнее время вошел в употребление еще один термин: сетевые ОС, или сокращенно NOS (Networking Operating System). На взгляд авторов, сложившееся использование этого термина несколько неудачно. Его можно употреблять в двух различных смыслах: 1. Системы, предназначенные для предоставления сетевых услуг, аналогично тому, как ДОС предназначена для предоставления средств работы с диском. Под такое понимание NOS подходят узкоспециализированные системы, такие как Novell
2. Системы, способные предоставлять сетевые услуги. Под такое определение подходят практически все современные ОС общего назначения. Судя по тому, что большинство ``обзоров сетевых операционных систем'' в компьютерных журналах сравнивают не маршрутизатор Cisco с K9Q, а Windows NT с SunSoft Solaris или OS/2, термин NOS в этих публикациях понимается во втором смысле. Как уже говорилось, практически все современные ОС и некоторые ДОС способны предоставлять сетевые сервисы, поэтому этот термин почти эквивалентен словам ``Современная ОС общего назначения'' и, таким образом, почти не несет полезной информации. |
|
|
||
2.Если данные обнаруживаются в кэш-памяти, то они считываются из нее, и результат передается в процессор. 3. Если нужных данных нет, то они вместе со своим адресом копируются из оперативной памяти в кэш-память, и результат выполнения запроса передается в процессор. При копировании данных может оказаться, что в кэш-памяти нет свободного места, тогда выбираются данные, к которым в последний период было меньше всего обращений, для вытеснения из кэш-памяти. Если вытесняемые данные были модифицированы за время нахождения в кэш-памяти, то они переписываются в оперативную память. Если же эти данные не были модифицированы, то их место в кэш-памяти объявляется свободным. В кэш считывается не один элемент данных, к которому произошло обращение, а целый блок данных. Это уменьшит время доступа к данным. Т.к. среднее время доступа к данным в системе с кэш-памятью линейно зависит от вероятности нахождение нужных данных в кэш. В реальных системах вероятность попадания в кэш составляет примерно 0,9. Высокое значение вероятности нахождения данных в кэш-памяти связано с наличием у данных объективных свойств: пространственной и временной локальности. Пространственная локальность
|
На производительность системы со страничной организацией памяти влияют временные затраты, связанные с обработкой страничных прерываний и преобразованием виртуального адреса в физический. Сегментное распределение.
Виртуальное адресное пространство процесса делится на сегменты, размер которых определяется программистом с учетом смыслового значения содержащейся в них информации. Отдельный сегмент может представлять собой подпрограмму, массив данных и т.п. При загрузке процесса часть сегментов помещается в оперативную память, а часть сегментов размещается в дисковой памяти(если нет места в оп. памяти). Сегменты одной программы могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается начальный физический адрес сегмента в оперативной памяти, размер сегмента, правила доступа, признак модификации, признак обращения к данному сегменту за последний интервал времени и некоторая другая информация. Если виртуальные адресные пространства нескольких процессов включают один и тот же сегмент, то в таблицах сегментов этих процессов делаются ссылки на один и тот же участок оперативной памяти, в который данный сегмент загружается в единственном экземпляре. Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g - номер сегмента, а s - смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s. Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса. Сегментно-страничное распределение.
|
. Распределение памяти разделами переменной величины(динамическими).
|
13.Кэш-память. Случайное отображение данных на кэш. Выполнение запроса в системах с кэш памятью.
Кэш-память
На практике в кэш-память считывается не один элемент данных, к которому произошло обращение, а целый блок данных, это увеличивает вероятность так называемого "попадания в кэш", то есть нахождения нужных данных в кэш-памяти. В реальных системах вероятность попадания в кэш составляет примерно 0,9. Высокое значение вероятности связано с наличием у данных свойств: пространственной и временной локальности. Пространственная локальность
Временная локальность
В системах, оснащенных кэш-памятью, каждый запрос к оперативной памяти выполняется в соответствии со следующим алгоритмом: 1. Просматривается содержимое кэш-памяти с целью определения, не находятся ли нужные данные в кэш-памяти; кэш-память не является адресуемой, поэтому поиск нужных данных осуществляется по содержимому - значению поля "адрес в оперативной памяти", взятому из запроса. 2. Если данные обнаруживаются в кэш-памяти, то они считываются из нее, и результат передается в процессор. |
14.Кэш-память. Прямое отображение данных на кэш. Выполнение запроса в системах с кэш памятью.
Кэш-память
На практике в кэш-память считывается не один элемент данных, к которому произошло обращение, а целый блок данных, это увеличивает вероятность так называемого "попадания в кэш", то есть нахождения нужных данных в кэш-памяти. В реальных системах вероятность попадания в кэш составляет примерно 0,9. Высокое значение вероятности связано с наличием у данных свойств: пространственной и временной локальности. Пространственная локальность
Временная локальность
В системах, оснащенных кэш-памятью, каждый запрос к оперативной памяти выполняется в соответствии со следующим алгоритмом: 1. Просматривается содержимое кэш-памяти с целью определения, не находятся ли нужные данные в кэш-памяти; кэш-память не является адресуемой, поэтому поиск нужных данных осуществляется по содержимому - значению поля "адрес в оперативной памяти", взятому из запроса. 2. Если данные обнаруживаются в кэш-памяти, то они считываются из нее, и результат передается в процессор. |
15.Двухуровневое кэширование. Принцип работы. Выполнение запроса с системах с многоуревневой кэш памятью.
Каждый процессор для своей работы использует двухуровневый кэш со свойствами охвата. Это означает, что кроме внутреннего кэша первого уровня (кэша L1), встроенного в каждый процессор PowerPC, имеется связанный с ним кэш второго уровня (кэш L2). При этом каждая строка в кэше L1 имеется также и в кэше L2. В настоящее время объем кэша L2 составляет 1 Мбайт на каждый процессор, а в будущих реализациях предполагается его расширение до 4 Мбайт. Сама по себе кэш-память второго уровня позволяет существенно уменьшить число обращений к памяти и увеличить степень локализации данных. Для повышения быстродействия кэш L2 построен на принципах прямого отображения. Длина строки равна 32 байт (размеру когерентной гранулированности системы). Следует отметить, что, хотя с точки зрения физической реализации процессора PowerPC, 32 байта составляют только половину строки кэша L1, это не меняет протокол когерентности, который управляет операциями кэша L1 и гарантирует что кэш L2 всегда содержит данные кэша L1. Кэш L2 имеет внешний набор тегов. Таким образом, любая активность механизма наблюдения за когерентным состоянием кэш-памяти может быть связана с кэшем второго уровня, в то время как большинство обращений со стороны процессора могут обрабатываться первичным кэшем. Если механизм наблюдения обнаруживает попадание в кэш второго уровня, то он должен выполнить арбитраж за первичный кэш, чтобы обновить состояние и возможно найти данные, что обычно будет приводить к приостановке процессора. Поэтому глобальная память может работать на уровне тегов кэша L2, что позволяет существенно ограничить количество операций наблюдения, генерируемых системой в направлении данного процессора. Это, в свою очередь, существенно увеличивает производительность системы, поскольку любая операция наблюдения в направлении процессора сама по себе может приводить к приостановке его работы. |
16.Способы загрузки программ. Относительная и абсолютная загрузка. Оверлеи
Абсолютная загрузка.
Относительная загрузка.
|
21.Синхронизация параллельных процессов. Проблема критических участков. Подходы к решению проблемы (прерывания, семафоры, сигналы, блокировка).
Первой из проблем является проблема разделения ресурсов. Действительно, представим себе две программы, пытающиеся печатать что-то на одном принтере их вывод на бумаге будет перемешан. Одним из разумных решений может быть монопольный захват принтера одной из программ Другая проблема - это проблема реентерабельности
Представим себе, что две задачи используют общий программный модуль. Представим себе, что одна из программ вызвала процедуру из разделяемого модуля. После этого произошло переключение задач, и вторая задача обращается к тому же модулю. Очень широкий класс проблем - проблемы синхронизации
Первая, состоит в вопросе - если одна задача производит данные, а вторая их потребляет
Другая проблема называется проблемой критических секций
Прерывания и сигналы Исторически первым методом сообщения системе о внешнем событии является аппаратное прерывание. Идея прерывания состоит в том, чтобы в момент события вызывать некоторую подпрограмму, которая и выполнит действия по обработке события. Получив запрос, процессор завершает исполнение текущей команды и выставляет сигнал готовности к прерыванию. После этого внешнее устройство выставляет на шине данных номер вектора прерывания. |
22. Семафор
Пытаясь пройти через семафор, процесс пытается вычесть из значения переменной 1. Если значение переменной больше или равно 1, процесс проходит сквозь семафор успешно (семафор открыт). Если переменная равна нулю (семафор закрыт), процесс останавливается и ставится в очередь. Таким образом, семафор выполняет роль вспомогательного критического ресурса. Закрытие семафора соответствует захвату ресурса, доступ к которому контролируется этим семафором. Процесс, закрывший семафор, захватывает ресурс. Если ресурс захвачен, остальные процессы вынуждены ждать его освобождения. Закончив работу с ресурсом, процесс увеличивает значение семафора на единицу, открывая его. При этом первый из стоявших в очереди процессов активизируется, вычитает из значения семафора единицу, и снова закрывает семафор. Если же очередь была пуста, то ничего не происходит, просто семафор остается открытым. Тогда первый процесс, подошедший к семафору, успешно пройдет через него. Это действительно похоже на работу железнодорожного семафора, контролирующего движение поездов по одноколейной ветке. Наиболее простым случаем семафора является двоичный семафор
Семафоры общего вида
|
17.Способы загрузки программ. Относительная и абсолютная загрузка. Загрузка операционной системы.
Абсолютная загрузка.
Относительная загрузка.
|
18.
Понятие программы
торый можно передать управление. Часто программой называют цельный загрузочный модуль.
Процесс
Состояние процессов:
ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором; ОЖИДАНИЕ - пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса; ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса. В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов, реализуемым в данной операционной системе. Типичный граф состояний процесса показан на рисунке |
19. Контекст и дескриптор процесса
На протяжении существования процесса его выполнение может быть многократно прервано и продолжено. Для того, чтобы возобновить выполнение процесса, необходимо восстановить состояние его операционной среды. Состояние операционной среды отображается состоянием регистров и программного счетчика, режимом работы процессора, указателями на открытые файлы, информацией о незавершенных операциях ввода-вывода, кодами ошибок выполняемых данным процессом системных вызовов и т.д. Эта информация называется контекстом процесса
Кроме этого, операционной системе для реализации планирования процессов требуется дополнительная информация: идентификатор процесса, состояние процесса, данные о степени привилегированности процесса, место нахождения кодового сегмента и другая информация. В некоторых ОС (например, в ОС UNIX) информацию такого рода, используемую ОС для планирования процессов, называют дескриптором процесса. Дескриптор процесса по сравнению с контекстом содержит более оперативную информацию, которая должна быть легко доступна подсистеме планирования процессов. Контекст процесса содержит менее актуальную информацию и используется операционной системой только после того, как принято решение о возобновлении прерванного процесса. Очереди процессов представляют собой дескрипторы отдельных процессов, объединенные в списки. Таким образом, каждый дескриптор, кроме всего прочего, содержит по крайней мере один указатель на другой дескриптор, соседствующий с ним в очереди. Такая организация очередей позволяет легко их переупорядочивать, включать и исключать процессы, переводить процессы из одного состояния в другое. Программный код только тогда начнет выполняться, когда для него операционной системой будет создан процесс. Создать процесс - это значит: 1. создать информационные структуры, описывающие данный процесс, то есть его дескриптор и контекст; 2. включить дескриптор нового процесса в очередь готовых процессов; 3. загрузить кодовый сегмент процесса в оперативную память или в область свопинга. |
3. Если нужных данных нет, то они вместе со своим адресом копируются из оперативной памяти в кэш-память, и результат выполнения запроса передается в процессор. При копировании данных может оказаться, что в кэш-памяти нет свободного места, тогда выбираются данные, к которым в последний период было меньше всего обращений, для вытеснения из кэш-памяти. Если вытесняемые данные были модифицированы за время нахождения в кэш-памяти, то они переписываются в оперативную память. Если же эти данные не были модифицированы, то их место в кэш-памяти объявляется свободным. Если каждый блок основной памяти имеет только одно фиксированное место, на котором он может появиться в кэш-памяти, то такая кэш-память называется кэшем с прямым
|
3 Если нужных данных нет, то они вместе со своим адресом копируются из оперативной памяти в кэш-память, и результат выполнения запроса передается в процессор. При копировании данных может оказаться, что в кэш-памяти нет свободного места, тогда выбираются данные, к которым в последний период было меньше всего обращений, для вытеснения из кэш-памяти. Если вытесняемые данные были модифицированы за время нахождения в кэш-памяти, то они переписываются в оперативную память. Если же эти данные не были модифицированы, то их место в кэш-памяти объявляется свободным. При ассоциативной организации кэша имеются несколько блоков, из кот. надо выбрать кандидата в случае промаха. Для замещения блоков применяются две основных стратегии: случайная и LRU. 1: блоки-кандидаты выбираются случайно. В некоторых системах, чтобы получить воспроизводимое поведение, которое полезно во время отладки аппаратуры, используют псевдослучайный алгоритм замещения. 2: все обращения к блокам фиксируются. Заменяется тот блок, который не использовался дольше всех (LRU - Least-Recently Used). Достоинство случайного способа заключается в том, что его проще реализовать в аппаратуре. Когда количество блоков для поддержания трассы увеличивается, алгоритм LRU становится все более дорогим и часто только приближенным. различия в долях промахов при использовании алгоритма замещения LRU и случайного алгоритма. |
|
Например, один процесс копирует данные со стримера на кассету Exabyte, а другой - в обратном направлении. Доступ к стримеру контролируется семафором sem1, а к кассете - семафором sem2. Первая программа сначала закрывает семафор sem1, затем sem2. Вторая программа поступает наоборот. Поэтому, если вторая программа получит управление и защелкнет sem2 в промежутке между соответствующими операциями первой программы, то мы получим мертвую блокировку - первая программа никогда не освободит sem1, потому что стоит в очереди у sem2, занятого второй программой, которая стоит в очереди у sem1, занятого первой... Все остальные программы, пытающиеся получить доступ к стримеру или кассете, также будут становиться в соответствующие очереди и ждать, пока администратор не убьет одну из защелкнувшихся программ. (Нетрудно заметить, что здесь мы имеем дело с частным случаем задачи “обедающие философы”, где происходит доступ к пересекающимся группам ресурсов). Эта проблема может быть решена несколькими способами. Первый способ - разрешить программе в каждый момент времени держать закрытым только один семафор
При доступе к нескольким различным ресурсам с использованием семафоров может возникнуть специфическая проблема, называемая мертвой блокировкой
|
Процессор считывает номер и вызывает соответствующую процедуру из таблицы. При этом вызов обработчика прерывания отличается от вызова обычной процедуры: при обычном вызове в стеке сохраняется только адрес команды, на которую следует возвратить управление. При завершении процедуры обработки вызывается команда RTI (ReTurn from Interrupt - возврат из прерывания). Эта команда выталкивает из стека адрес прерванной команды и старое слово состояния. Блокировка участков файлов Если говорить именно о файле с базой данных, оказывается удобно блокировать доступ к участкам файла. При этом целесообразно ввести два типа блокировок: на чтение
В свою очередь, блокировка на запись запрещает всем, кроме блокирующего процесса, любой доступ к заблокированному участку файла. Это означает, что данный участок файла сейчас будет модифицироваться, и целостность данных в нем не гарантирована. В UNIX
Семафоры смотри билет 22 |
Очевидно, что если мы захотим ''сдвинуть'' прогу по адресам виртуальной памяти, то мы должны будем найти все команды с абсолютными адресными полями и прибавить ко всем этим полям разность нового и старого адресов. 2: мы берем значение одного из регистров процессора, прибавляем к нему значение адресного поля и получаем адрес.Такая адресация называется базовой. Если адрес формируется сложением двух или более регистров c адресным полем, то это называется базово-индексной адресацией. В более сложных ситуациях мы должны: запомнить все места в программе, где загружаются базовые регистры, и добавить к загружаемым значениям новый стартовый адрес. Преимущество состоит в том, что таких мест в программе гораздо меньше, чем при абсолютной адресации. В перемещаемой программе мы должны запоминать все ссылки на абсолютные адреса и в момент загрузки производить их настройку на начальный адрес. Такой файл гораздо сложнее абсолютного загружаемого модуля, и носит название относительного или перемещаемого загрузочного модуля. Именно такой формат имеют .exe-файлы в системе ms-dos. оверлей
(over-lay - лежащий сверху) или перекрытие. Смысл оверлея состоит в том, чтобы не загружать программу в память целиком, а разбить ее на несколько модулей и затаскивать их в память по мере необходимости. Потребность в таком способе загрузки появляется, если у нас виртуальное адресное пространство мало, а программа велика. Основная проблема при оверлейной загрузке состоит в следующем: прежде чем ссылаться на оверлейный адрес, мы должны понять, какой из оверлейных модулей в данный момент там находится. Для ссылок на функции это просто: вместо точки входа функции мы вызываем некую процедуру, называемую менеджером перекрытий. Эта процедура знает, какой модуль куда загружен, и при необходимости подкачивает то, что загружено не было. Каждый оверлейный модуль должен быть самодостаточным. Каждый оверлейный модуль может быть как абсолютным, так и перемещаемым. |
Процесс
Состояние процессов:
ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором; ОЖИДАНИЕ - пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса; ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса. В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов, реализуемым в данной операционной системе. Типичный граф состояний процесса показан на рисунке. В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов. Жизненный цикл процесса начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и ждет своей очереди. При активизации процесс переходит в состояние ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо будет насильно "вытеснен" из процессора, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени. В последнем случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое событие произойдет. |
В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов. Жизненный цикл процесса начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и ждет своей очереди. При активизации процесс переходит в состояние ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо будет насильно "вытеснен" из процессора, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени. В последнем случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое событие произойдет. |
. Очевидно, что если мы захотим ''сдвинуть'' прогу по адресам виртуальной памяти, то мы должны будем найти все команды с абсолютными адресными полями и прибавить ко всем этим полям разность нового и старого адресов. 2: мы берем значение одного из регистров процессора, прибавляем к нему значение адресного поля и получаем адрес. Такая адресация называется базовой. Если адрес формируется сложением двух или более регистров c адресным полем, то это называется базово-индексной адресацией. В более сложных ситуациях мы должны: запомнить все места в программе, где загружаются базовые регистры, и добавить к загружаемым значениям новый стартовый адрес. Преимущество состоит в том, что таких мест в программе гораздо меньше, чем при абсолютной адресации. В перемещаемой программе мы должны запоминать все ссылки на абсолютные адреса и в момент загрузки производить их настройку на начальный адрес. Такой файл гораздо сложнее абсолютного загружаемого модуля, и носит название относительного или перемещаемого загрузочного модуля. Именно такой формат имеют .exe-файлы в системе ms-dos. Загрузка ОС.
Рассмотрим на примере UNIX . Имеется специальная инициализационная программа, которая так и называется - init. Эта программа запускает различные процессы-демоны, например cron - программу, которая умеет запускать другие заданные ей программы в заданные моменты времени, различные сетевые сервисы, программы, которые ждут ввода с терминальных устройств (getty) то, что она запускает задается в специальном файле /etc/inittab. Администратор системы может редактировать этот файл и устанавливать те сервисы, которые в данный момент нужны, избавляться от тех, которые не нужны, и т.д. Существуют ОСы, которые не умеют самостоятельно выполнять весь цикл . Они используют более примитивную операционную систему, которая исполняет их вторичный загрузчик, и помогает этому загрузчику затянуть в память ядро ОС. На пример MS Windows используют DOS. |
|
||
20.
Наиболее часто встречаются алгоритмы, основанные: на квантовании, на приоритетах. В алгоритмах, основанных на квантовании
Процесс, который исчерпал свой квант, переводится в состояние ГОТОВНОСТЬ и ожидает, когда ему будет предоставлен новый квант процессорного времени, а на выполнение в соответствии с определенным правилом выбирается новый процесс из очереди готовых. Таким образом, ни один процесс не занимает процессор надолго, поэтому квантование широко используется в системах разделения времени. Граф состояний процесса, изображенный на рисунке (б), соответствует алгоритму планирования, основанному на квантовании. Кванты, выделяемые процессам, могут быть одинаковыми для всех процессов или различными. Кванты, выделяемые одному процессу, могут быть фиксированной величины или изменяться в разные периоды жизни процесса. Процессы, которые не полностью использовали выделенный им квант, могут получить или не получить компенсацию в виде привилегий при последующем обслуживании. По разному может быть организована очередь готовых процессов: циклически, FIFO или LIFO. Алгоритмы основанные на приоритете
Существуют алгоритмы, использующие относительные и абсолютные приоритеты. В системах с относительными приоритетами активный процесс выполняется до тех пор, пока он сам не покинет процессор. В системах с абсолютными приоритетами еще и если в очереди готовых процессов появился процесс, приоритет которого выше приоритета активного процесса. Алгоритмы с относительными (а) и абсолютными (б) приоритетами. Во многих ОС алгоритмы планирования построены с использованием как квантования, так и приоритетов. Например, в основе планирования лежит квантование, но величина кванта и/или порядок выбора процесса из очереди готовых определяется приоритетами процессов. |
Вопрос 23. Потоки (нити) управления. Определение, назначение, состояния, операции.
Отдельный процесс никогда не может быть выполнен быстрее, чем если бы он выполнялся в однопрограммном режиме (всякое разделение ресурсов замедляет работу одного из участников за счет дополнительных затрат времени на ожидание освобождения ресурса). Однако задача, решаемая в рамках одного процесса, позволяет ускорить ее решение. Например, в ходе выполнения задачи происходит обращение к внешнему устройству, и на время этой операции можно не блокировать полностью выполнение процесса, а продолжить вычисления по другой "ветви" процесса. Для этих целей современные ОС предлагают использовать сравнительно новый механизм многонитевой обработки
Нити, относящиеся к одному процессу, не настолько изолированы друг от друга, как процессы в традиционной многозадачной системе, между ними легко организовать тесное взаимодействие. Действительно, в отличие от процессов, которые принадлежат разным конкурирующим приложениям, все нити одного процесса всегда принадлежат одному приложению, поэтому можно заранее продумать работу множества нитей процесса таким образом, чтобы они могли взаимодействовать, а не бороться за ресурсы. Нити иногда называют облегченными процессами или мини-процессами. Каждая нить выполняется строго последовательно и имеет свой собственный программный счетчик и стек. Нити, как и процессы, могут, например, порождать нити-потомки, могут переходить из состояния в состояние. Подобно традиционным процессам (то есть процессам, состоящим из одной нити), нити могут находится в одном из следующих состояний
|
Вопрос 24. Программное и аппаратное обеспечение устройств ввода-вывода.
Устройства ввода-вывода делятся на два типа: блок-ориентированные
Основная идея организации программного обеспечения ввода-вывода
Ключевым принципом является независимость от устройств. Вид программы не должен зависеть от того, читает ли она данные с гибкого диска или с жесткого диска. Другим важным вопросом для программного обеспечения ввода-вывода является обработка ошибок. Вообще говоря, ошибки следует обрабатывать как можно ближе к аппаратуре. Если контроллер обнаруживает ошибку чтения, то он должен попытаться ее скорректировать. Если же это ему не удается, то исправлением ошибок должен заняться драйвер устройства. И только если нижний уровень не может справиться с ошибкой, он сообщает об ошибке верхнему уровню. Еще один ключевой вопрос - это использование блокирующих (синхронных) и неблокирующих (асинхронных) передач. Большинство операций физического ввода-вывода выполняется асинхронно - процессор начинает передачу и переходит на другую работу, пока не наступает прерывание. Необходимо, чтобы операции ввода-вывода были блокирующие - после команды READ программа автоматически приостанавливается до тех пор, пока данные не попадут в буфер программы. Последняя проблема состоит в том, что одни устройства являются разделяемыми(диски: одновременный доступ нескольких пользователей к диску не представляет собой проблему), а другие - выделенными(принтеры: нельзя смешивать строчки, печатаемые различными пользователями). |
Вопрос 25. Файловая система. Файлы с точки зрения пользователя и системы. Логическая организация файла.
Файловая система
Файлы идентифицируются именами
Файлы бывают разных типов
1)Обычные файлы
3)Каталог
|
Вопрос 26. Файловые системы. Общая структура и функционирование
Физическая организация файла
Следующий способ физической организации - размещение в виде связанного списка блоков дисковой памяти (см. рис. 1,б). При таком способе в начале каждого блока содержится указатель на следующий блок. В этом случае адрес файла может быть задан одним числом - номером первого блока. Фрагментация отсутствует. Файл может изменяться во время своего существования, наращивая число блоков. Недостатки: 1)сложность реализации доступа к произвольно заданному месту файла 2)количество данных файла, содержащихся в одном блоке, не равно степени двойки (одно слово израсходовано на номер следующего блока) Рис. 1. Физическая организация файла Популярным способом является использование связанного списка индексов. С каждым блоком связывается некоторый элемент – индекс (см. рис 1,в). Индексы располагаются в отдельной области диска (в MS-DOS это таблица FAT). Если некоторый блок распределен некоторому файлу, то индекс этого блока содержит номер следующего блока данного файла. Определить права доступа
|
Вопрос 27. Примеры организации файловых систем.
Разработчики новых операционных систем стремятся обеспечить пользователя возможностью работать сразу с несколькими файловыми системами. Новая файловая система имеет многоуровневую структуру (см. рис. 1), на верхнем уровне которой располагается так называемый переключатель файловых систем. Он обеспечивает интерфейс между запросами приложения и конкретной файловой системой, к которой обращается это приложение. Переключатель файловых систем преобразует запросы в формат, воспринимаемый следующим уровнем - уровнем файловых систем. Рис. 1. Архитектура современной файловой системы
Каждый компонент уровня файловых систем выполнен в виде драйвера соответствующей файловой системы и поддерживает определенную организацию файловой системы. Переключатель является единственным модулем, который может обращаться к драйверу файловой системы. Приложение не может обращаться к нему напрямую. Драйвер файловой системы может быть написан в виде реентерабельного кода, что позволяет сразу нескольким приложениям выполнять операции с файлами. Каждый драйвер файловой системы в процессе собственной инициализации регистрируется у переключателя, передавая ему таблицу точек входа, которые будут использоваться при последующих обращениях к файловой системе. Для выполнения своих функций драйверы файловых систем обращаются к подсистеме ввода-вывода, образующей следующий слой файловой системы новой архитектуры. Подсистема ввода вывода - это составная часть файловой системы, которая отвечает за загрузку, инициализацию и управление всеми модулями низших уровней файловой системы. Обычно эти модули представляют собой драйверы портов, которые непосредственно занимаются работой с аппаратными средствами. Кроме этого подсистема ввода-вывода обеспечивает некоторый сервис драйверам файловой системы, что позволяет им осуществлять запросы к конкретным устройствам. Подсистема ввода-вывода должна постоянно присутствовать в памяти и организовывать совместную работу иерархии драйверов устройств. В эту иерархию могут входить драйверы устройств определенного типа (драйверы жестких дисков или накопителей на лентах), драйверы, поддерживаемые поставщиками (такие драйверы перехватывают запросы к блочным устройствам и могут частично изменить поведение существующего драйвера этого устройства, например, зашифровать данные), драйверы портов, которые управляют конкретными адаптерами. |
Cписок вопросов к экзамену «Операционные системы»
Введение в операционные системы:
1. Операционная система. Определение. Функции операционных систем. 2. Операционная система. Определение. Эволюция операционных систем. 3. Операционная система. Определение. Классификация операционных систем по особенностям алгорифмов управления ресурсами, особенностям аппаратных платформ, особенностям областей использования. 4. Обзор современных операционных систем. Архитектура операционной системы и ядра:
5. Архитектура операционной системы. Режимы ядра и приложений. Многослойная архитектура. 6. Архитектура операционной системы. Режимы ядра и приложений. Микроядерная архитектура. Достоинства и недостатки микроядерной архитектуры. 7. Архитектура операционной системы. Режимы ядра и приложений. Средства программной и аппаратной поддержки операционной системы. Управление памятью:
8. Иерархия памяти. Управление памятью без использования внешней памяти. 9. Способы управления оперативной памятью. Типы адресов. Страничное распределение памяти, сегментно-страничное распределение. 10. Способы управления оперативной памятью. Типы адресов. Сегментное распределение памяти, сегментно-страничное распределение. 11. Способы управления оперативной памятью. Типы адресов. Сегментно-страничное распределение. 12. Кэширование данных. Принцип работы кэш-памяти. Способы отображения данных на кэш. 13. Кэш-память. Случайное отображени данных на кэш. Выполнение запроса с системах с кэш памятью. 14. Кэш-память. Прямое отображени данных на кэш. Выполнение запроса с системах с кэш памятью. 15. Двухуровневое кэширование. Принцип работы. Выполнение запроса с системах с многоуревневой кэш памятью. |
||
Для решения поставленных проблем целесообразно разделить программное обеспечение ввода-вывода на четыре слоя (см. рис. 1) 1)Обработка прерываний 2)Драйверы устройств 3)Независимый от устройств слой операционной системы 4)Пользовательский слой программного обеспечения. Рис.1. Многоуровневая организация подсистемы ввода-вывода
Весь зависимый от устройства код помещается в драйвер устройства
Хотя большая часть программного обеспечения ввода-вывода
|
Пока одна нить заблокирована, другая нить того же процесса может выполняться. Нити разделяют процессор так, как это делают процессы, в соответствии с различными вариантами планирования. Однако различные нити в рамках одного процесса не настолько независимы, как отдельные процессы. Все такие нити имеют одно и то же адресное пространство. Поскольку каждая нить может иметь доступ к каждому виртуальному адресу, одна нить может использовать стек другой нити. Между нитями нет полной защиты, потому что, во-первых, это невозможно, а во-вторых, не нужно. Все нити одного процесса всегда решают общую задачу одного пользователя, и аппарат нитей используется здесь для более быстрого решения задачи путем ее распараллеливания. Кроме разделения адресного пространства, все нити разделяют также набор открытых файлов, таймеров, сигналов и т.п. Нити имеют собственные: 1)программный счетчик 2)стек 3)регистры 4)нити-потомки 5)состояние. Нити разделяют: 1)адресное пространство 2)глобальные переменные 3)открытые файлы 4)таймеры 5)семафоры 6)статистическую информацию. Некоторые прикладные задачи легче программировать, используя параллелизм, например задачи типа "писатель-читатель", в которых одна нить выполняет запись в буфер, а другая считывает записи из него. Поскольку они разделяют общий буфер, не стоит их делать отдельными процессами. В мультипроцессорных системах для нитей из одного адресного пространства имеется возможность выполняться параллельно на разных процессорах. Это один из главных путей реализации разделения ресурсов в таких системах. |
Вытесняющие и не вытесняющие алгоритмы планирования
Non-preemptive multitasking - невытесняющая многозадачность - это способ планирования процессов, при котором активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление планировщику ОС для того, чтобы тот выбрал из очереди другой, готовый к выполнению процесс. Preemptive multitasking - вытесняющая многозадачность - это такой способ, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого процесса принимается планировщиком ОС, а не самой активной задачей. Основным различием между preemptive и non-preemptive вариантами многозадачности является степень централизации механизма планирования задач. При вытесняющей многозадачности механизм планирования задач целиком сосредоточен в ОС, и программист пишет свое приложение, не заботясь о том, что оно будет выполняться параллельно с другими задачами. При этом ОС выполняет следующие функции: определяет момент снятия с выполнения активной задачи, запоминает ее контекст, выбирает из очереди готовых задач следующую и запускает ее на выполнение, загружая ее контекст. При невытесняющей многозадачности механизм планирования распределен между системой и прикладными программами. Прикладная программа, получив управление от ОС, сама определяет момент завершения своей очередной итерации и передает управление ОС с помощью какого-либо системного вызова, а ОС формирует очереди задач и выбирает в соответствии с некоторым алгоритмом (например, с учетом приоритетов) следующую задачу на выполнение. Такой механизм создает проблемы как для пользователей, так и для разработчиков. Однако распределение функций планировщика между системой и приложениями не всегда является недостатком, а при определенных условиях может быть и преимуществом, потому что дает возможность разработчику приложений самому проектировать алгоритм планирования, наиболее подходящий для данного фиксированного набора задач. Так как разработчик сам определяет в программе момент времени отдачи управления, то при этом исключаются нерациональные прерывания программ в "неудобные" для них моменты времени. Кроме того, легко разрешаются проблемы совместного использования данных: задача во время каждой итерации использует их монопольно и уверена, что на протяжении этого периода никто другой не изменит эти данные. Существенным преимуществом non-preemptive систем является более высокая скорость переключения с задачи на задачу. |
Большое число уровней архитектуры файловой системы обеспечивает авторам драйверов устройств большую гибкость - драйвер может получить управление на любом этапе выполнения запроса - от вызова приложением функции, которая занимается работой с файлами, до того момента, когда работающий на самом низком уровне драйвер устройства начинает просматривать регистры контроллера. Многоуровневый механизм работы файловой системы реализован посредством цепочек вызова. В ходе инициализации драйвер устройства может добавить себя к цепочке вызова некоторого устройства, определив при этом уровень последующего обращения. Подсистема ввода-вывода помещает адрес целевой функции в цепочку вызова устройства, используя заданный уровень для того, чтобы должным образом упорядочить цепочку. По мере выполнения запроса, подсистема ввода-вывода последовательно вызывает все функции, ранее помещенные в цепочку вызова. Внесенная в цепочку вызова процедура драйвера может решить передать запрос дальше - в измененном или в неизмененном виде - на следующий уровень, или, если это возможно, процедура может удовлетворить запрос, не передавая его дальше по цепочке. |
Рис. 2. Матрица прав доступа
Различают два основных подхода к определению прав доступа: 1)избирательный доступ, когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции; 2)мандатный подход, когда система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости от того, к какой группе пользователь отнесен. Кэширование диска. В файловых системах запросы к внешним устройствам, в которых адресация осуществляется блоками, перехватываются промежуточным программным слоем-подсистемой буферизации. Подсистема буферизации представляет собой буферный пул, располагающийся в оперативной памяти, и комплекс программ, управляющих этим пулом. Каждый буфер пула имеет размер, равный одному блоку. Функционирование
Рис. 3. Общая модель файловой системы
|
Иерархия каталогов может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть - если файл может входить сразу в несколько каталогов. В MS-DOS каталоги образуют древовидную структуру, а в UNIX'е - сетевую. Рис. 1. Логическая организация файловой системы а - одноуровневая; б - иерархическая (дерево); в - иерархическая (сеть)
Программист имеет дело с логической организацией файла
Рис. 2. Способы логической организации файлов
|
Процессы:
16. Способы загрузки программ. Относительная и абсолютная загрузка. Оверлеи. 17. Способы загрузки программ. Относительная и абсолютная загрузка. Загрузка операционной системы. 18. Определение термина "процесс". Процессы и программы. Состояния процесса. Операции над процессами. 19. Контекст и дескриптор процесса. Определение термина "процесс". Состояния процесса. 20. Планирование процессов. Вытесняющие и невытесняющие алгоритмы планирования. 21. Синхронизация параллельных процессов. Проблема критических участков. Подходы к решению проблемы (прерывания, семафоры, сигналы, блокировка). 22. Cемафоры: определение, назначение, реализация. 23. Потоки (нити) управления. Определение, назначение, состояния, операции. Устройства ввода-вывода, файловая система:
24. Программное и аппаратное обеспечение устройств ввода-вывода. 25. Файловая система. Файлы с точки зрения пользователя и системы. Логическая организация файла. 26. Файловые системы. Общая структура и функционирование. 27. Примеры организации файловых систем. Аппаратная поддержка операционных систем:
28. Механизм прерываний процессоров семейства i80x86. 29. Устройство процессоров i80x86. Назначение и традиционное применение регистров. 30. Кодогенерация для языков высокого уровня: базовые блоки и способы адресации структур данных. |