
- •2) Архитектура и структура операционных систем: Прерывания, многозадачность.
- •3) Управление файлами: Структура файловой системы, контроль доступа.
- •1. Архитектура и структура операционных систем: Основные принципы построения операционных систем.
- •2. Общие понятия распределенных систем: Структура сетевых операционных систем и распределенных систем, сокет, middleware, технологии построения распределенных систем.
- •Управление памятью: Свопинг, оверлей.
- •1. Принципы построения операционных систем.
- •11. Принципы построения операционных систем.
- •1. Принцип модульности
- •2. Принцип функциональной избирательности
- •3. Принцип генерируемости ос
- •4. Принцип функциональной избыточности
- •5. Принцип виртуализации
- •6. Принцип независимости программ от внешних устройств
- •7. Принцип совместимости
- •8. Принцип открытой и наращиваемой ос
- •9. Принцип модульности (переносимости)
- •10. Принцип обеспечения безопасности вычислений
- •2. Архитектура и структура операционных систем: Системные вызовы, привилегированный режим, режим ядра, пользовательский режим, posix, ieee.
- •3. Управление вводом-выводом: Структура системы ввода-вывода, типичные функции hal.
- •1. Управление процессами и задачами: Генерирование событий, критическая секция.
- •2. Управление вводом-выводом: Буферизация, кэширование, спулинг.
- •3. Основы безопасности компьютерных систем: Виды угроз, атака, механизм и политика информационной безопасности, ее свойства.
- •1. Управление памятью: Линии, шины, магистрали, адресация.
- •2. Управление процессами и задачами: Мьютекс, семафор.
- •3. Управление файлами: Файл, типы файлов, файловая система, требования к устройствам хранения.
- •1. Управление вводом-выводом: Этапы развития системы ввода-вывода.
- •2. Архитектура и структура операционных систем: Монолитные и микроядерные операционные системы, архитектура "клиент-сервер".
- •3. Назначение и основные понятия операционной системы: Системное программное обеспечение и его классификация.
- •1. Управление файлами: Сектор, дорожка, цилиндр, блок, кластер, раздел, mbr.
- •2. Основы безопасности компьютерных систем: Формализация подхода к обеспечению информационной безопасности, требования c2 "оранжевой книги".
- •3. Архитектура и структура операционных систем: Вычислительный процесс, дескриптор процесса, диспетчер задач, поток.
- •1. Общие понятия распределенных систем: Понятие и характеристики распределенных систем, схемы объединения автономных систем в вычислительные сети.
- •2. Назначение и основные понятия операционной системы: ose/rm, api, eei, функций операционной системы.
- •3. Управление файлами: Логическая организация файла.
- •1)Основы безопасности компьютерных систем: Идентификация, авторизация, аутентификация, аудит.
- •2. Управление памятью: Виды методов распределения памяти с использованием внешней памяти.
- •17) Виды методов распределения памяти с использованием внешней памяти
- •1)Страничное распределение
- •2)Сегментное распределение
- •3) Странично-сегментное распределение
- •3. Управление файлами: Физическая организация файла.
- •1. Классификация операционных систем.
- •2. Управление памятью: Виды методов распределения памяти без использования внешней памяти.
- •3. Архитектура и структура операционных систем: Программные модули, многопоточность.
1. Управление процессами и задачами: Генерирование событий, критическая секция.
Критическая секция — часть программы, в которой есть обращение к совместно используемым данным. При нахождении в критической секции двух (или более) процессов, возникает состояние «гонки» («состязания»). Для избежания данной ситуации необходимо выполнение четырех условий:
1.Два процесса не должны одновременно находиться в критических областях.
2.В программе не должно быть предположений о скорости или количестве процессоров.
3.Процесс, находящийся вне критической области, не может блокировать другие процессы.
4.Невозможна ситуация, в которой процесс вечно ждет попадания в критическую область.
Критическая секция (англ. critical section) — объект синхронизации потоков, позволяющий предотвратить одновременное выполнение некоторого набора операций (обычно связанных с доступом к данным) несколькими потоками. Критическая секция выполняет те же задачи, что и мьютекс.
Между мьютексом и критической секцией есть терминологические различия, так процедура, аналогичная захвату мьютекса, называется входом в критическую секцию, снятию блокировки мьютекса — выходом из критической секции .
Процедура входа и выхода из критических секций обычно занимает меньшее время, нежели аналогичные операции мьютекса, что связано с отсутствием необходимости обращаться к ядру ОС.
В операционных системах семейства Microsoft Windows разница между мьютексом и критической секцией в том, что мьютекс является объектом ядра и может быть использован несколькими процессами одновременно, критическая секция же принадлежит процессу и служит для синхронизации только его потоков.
Критические секции Windows имеют оптимизацию, заключающуюся в использовании атомарно изменяемой переменной наряду с объектом «событие синхронизации» ядра. Захват критической секции означает атомарное увеличение переменной на 1. Переход к ожиданию на событии ядра осуществляется только в случае, если значение переменной до захвата было уже больше 1, то есть есть реальное «соревнование» двух или более потоков за ресурс.
Таким образом, при отсутствии соревнования захват/освобождение критической секции обходятся без обращений к ядру.
Кроме того, захват уже занятой критической секции до обращения к ядру какое-то небольшое время ждёт в цикле опроса переменной, и, если переменная становится равной 0, то захват происходит без обращений к ядру.
2. Управление вводом-выводом: Буферизация, кэширование, спулинг.
Под буфером обычно понимается некоторая область памяти для запоминания данных при обмене данных между двумя устройствами, двумя процессами или процессом и устройством
Существуют три причины буферизации в базовой подсистеме ввода-вывода:
Разные скорости приема и передачи данных, которыми обладают участники обмена. Рассмотрим, например, случай передачи потока данных от клавиатуры на модем. Скорость, с которой поставляет данные клавиатура, определяется скоростью набора текста человеком и обычно существенно меньше скорости передачи данных модемом. Для того чтобы не занимать модем на все время набора текста, делая его недоступным для других процессов и устройств, разумно накапливать введенные данные в буфере или нескольких буферах достаточного размера и отсылать ее через модем после заполнения буферов.
Разные объемы данных, которые могут быть приняты или получены участниками обмена единовременно. Возьмем другой пример. Пусть данные поставляются модемом и записывается на жесткий диск. Помимо обладания разными скоростями совершения операций модем и жесткий диск относятся к разным типам устройств. Модем является символьным устройством и выдает данные байт за байтом, в то время как диск является блочным устройством и для проведения операции записи для него требуется накопить необходимый блок данных в буфере. Здесь также можно применять более одного буфера. После заполнения первого буфера модем начинает заполнять второй одновременно с записью первого на жесткий диск. Поскольку скорость работы жесткого диска в тысячи раз больше, чем скорость работы модема, то к моменту заполнения второго буфера операция записи первого будет завершена, и модем снова может заполнять первый буфер одновременно с записью второго на диск.
Третья причина буферизации связана с необходимостью копирования данных из приложений, осуществляющих ввод-вывод, в буфера ядра операционной системы и обратно. Допустим, что некоторый пользовательский процесс пожелал вывести данные из своего адресного пространства на внешнее устройство. Для этого он должен выполнить системный вызов с обобщенным названием запись, передав в качестве параметров адрес области памяти, где расположены данные, и их объем. Если внешнее устройство временно занято, то возможна ситуация, когда к моменту его освобождения содержимое требуемой области окажется испорченным (например, при использовании асинхронной формы системного вызова). Чтобы избежать возникновения подобных ситуаций, проще всего в начале работы системного вызова откопировать необходимые данные в буфер ядра операционной системы, постоянно находящийся в оперативной памяти, и выводить их на устройство из этого буфера.
Под словом «кэш» обычно понимают область быстрой памяти, содержащую копию данных, расположенных где-либо в более медленной памяти, предназначенную для ускорения работы вычислительной системы.
В базовой подсистеме ввода-вывода не следует смешивать два понятия: буферизация и кэширование, хотя зачастую для выполнения этих функций отводится одна и та же область памяти. Буфер часто содержит единственный набор данных, существующий в системе, в то время как кэш, по своему определению, содержит копию данных, существующих где-нибудь еще. Например, буфер, используемый базовой подсистемой для копирования данных из пользовательского пространства процесса при выводе на диск, может в свою очередь использоваться как кэш для этих данных, если операции модификации и повторного чтения этого блока выполняются достаточно часто.
Функции буферизации и кэширования не обязательно должны быть локализованы в базовой подсистеме ввода-вывода. Они могут быть частично реализованы в драйверах и даже в контроллерах устройств, скрытно по отношению к базовой подсистеме.
Под словом «спул» (spool) обычно понимают буфер, который содержит входные или выходные данные для устройства, на котором следует избегать чередования его использования различными процессами. Правда, в современных вычислительных системах такой буфер практически не используется для ввода данных, а в основном предназначен для накопления выходных данных.
Рассмотрим в качестве внешнего устройства принтер. Хотя принтер не может печатать данные, поступающие одновременно от нескольких процессов, может оказаться желательным разрешить процессам совершать вывод на принтер параллельно. Для этого операционная система вместо передачи данных напрямую на принтер накапливает выводимые данные в буферах на диске, организованных в виде отдельного файла (spool) для каждого процесса. После завершения некоторого процесса, соответствующий ему файл ставится в очередь для реальной печати. Механизм, обеспечивающий подобные действия, и получил название спулинг (spooling).