- •Дисциплины замещения сегментов в памяти
- •Дисциплины замещения страниц в Unix и Windows системах.
- •Классификация ос. Архитектурные особенности ос
- •Контекст процесса и его состояния
- •Простейшая диаграмма состояний процесса
- •Механизмы межпроцессного взаимодействия (каналы, очереди сообщений, разделяемая память)
- •Механизмы синхронизации: блокирующие переменные, семафоры, мониторы. Блокирующие переменные (мьютексы):
- •Семафоры
- •Мониторы (условные переменные)
- •Мультипрограммирование. Особенности реализации мультипрограммирования в системах пакетной обработки, разделения времени, реального времени, с мультипроцессорной обработкой
- •1) Реализация защитных механизмов.
- •2) Наличие прерываний.
- •3) Развитие параллелизма в архитектуре.
- •Общая схема обработки прерываний в однопрограммной ос.
- •Оверлейный способ распределения памяти.
- •Основное отличие процессов и потоков.
- •Особенности реализации мультипрограммирования в системах пакетной обработки, разделения времени, реального времени, с мультипроцессорной обработкой.
- •12. Особенности эффективного использования таблицы страниц: многоуровневые таблицы страниц, ассоциативная память, инвертированная таблица страниц, хеширование.
- •Параллельные процессы, синхронизация процессов, пример необходимости синхронизации, критическая секция.
- •Планирование процессов и потоков: критерии, виды, алгоритмы планирования.
- •Понятие и структура ос. Эволюция вычислительных и ос. Основные функции ос
- •Понятие пространственной и временной локальности
- •Понятие процесса и потока. Создание процессов и потоков. Управляющие структуры процессов и потоков.
- •Понятия дорожки, сектора, блока на жестком диске
- •Принцип работы ассоциативной памяти. Ассоциативная память
- •Принципы построения файловой системы: интерфейс, функциональная схема, типовая структура файловой системы.
- •Проблемы синхронизации (тупики) и способы их разрешения
- •Распределение памяти: общие принципы управления памятью в однопрограммных ос, распределение памяти фиксированными, динамическими, перемещаемыми разделами.
- •Роль прерываний при мультипрограммировании.
- •Сегментное распределение памяти
- •Способы выделения дискового пространства. Управление дисковым пространством. Размер логического блока
- •Страничное распределение памяти
- •Управление памятью: задачи управления, типы адресации.
- •Физическая организация жесткого диска
- •Что понимается под «пробуксовкой» страниц памяти?
Физическая организация жесткого диска
Совокупность дорожек одного радиуса на всех поверхностях всех пластин пакета называется цилиндром (англ. cylinder). Каждая дорожка разбивается на фрагменты, называемые секторами или блоками, так что все дорожки имеют равное число секторов, в которые можно максимально записать одно и то же число байт. Сектор имеет фиксированный для конкретной системы размер, выражающийся степенью двойки (чаще всего – 512 байт).
Сектор – наименьшая адресуемая единица обмена данными дискового устройства с ОП.
Для того чтобы контроллер мог найти на диске нужный сектор, необходимо задать ему все соответствующие адреса сектора: номер цилиндра, номер поверхности и номер сектора.
ОС при работе с диском использует, как правило, собственную единицу дискового пространства, называемую кластером (логическим блоком). При создании файла место на диске ему выделяется кластерами, который состоит из одного или нескольких смежных секторов.
Например, если файл имеет размер 2560, а размер кластера в файловой системе определен в 1024 байта, то файлу будет выделено на диске 3 кластера.
Дорожки и секторы создаются в результате выполнения процедуры физического (низкоуровневого) форматирования диска.
Низкоуровневый формат диска не зависит от типа ОС, которая этот диск будет использовать.
Структура 1-го физического сектора жесткого диска
Размер (байт) |
Описание |
446 |
Загрузочная запись (MBR) |
16 |
Запись 1 раздела |
16 |
Запись 2 раздела |
16 |
Запись 3 раздела |
16 |
Запись 4 раздела |
2 |
Сигнатура 055AAh |
Головная запись загрузки (master boot record, MBR) - зарезервирована для программы начальной загрузки BIOS (ROM Bootstrap routine), которая при загрузке с жесткого диска считывает и загружает в память первый физический сектор на активном разделе диска, называемый загрузочным сектором (Boot Sector).
Каждая запись о разделах содержит начальную позицию и размер раздела на жестком диске, а также информацию о том, первый сектор какого раздела содержит загрузочный сектор.
Если информация о разделах будет повреждена, то не только не будет загружаться ни одна из установленных на компьютере ОС, но станут недоступными данные, расположенные в диске.
Последние два байта таблицы разделов имеют значение 055AA, то есть чередующиеся значения 0 и 1 в двоичном представлении данных.
Эта сигнатура используется для того, чтобы убедится в том, что сектор загрузочный и его можно использовать именно в этом качестве (загружать).
Многие ОС позволяют создавать расширенный (extended) раздел, который по аналогии с разделами может разбиваться на несколько логических дисков.
Микроядерная архитектура
Микроядерная архитектура является альтернативой классическому способу построения операционной системы. Под классической архитектурой в данном случае понимается рассмотренная выше структурная организация ОС, в соответствии с которой все основные функции операционной системы, составляющие многослойное ядро, выполняются в привилегированном режиме. При этом некоторые вспомогательные функции ОС оформляются в виде приложений и выполняются в пользовательском режиме наряду с обычными пользовательскими программами (становясь системными утилитами или обрабатывающими программами). Каждое приложение пользовательского режима работает в собственном адресном пространстве и защищено тем самым от какого-либо вмешательства других приложений. Код ядра, выполняемый в привилегированном режиме, имеет доступ к областям памяти всех приложений, но сам полностью от них защищен. Приложения обращаются к ядру с запросами на выполнение системных функций.
Суть микроядерной архитектуры состоит в следующем. В привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром (рис. 3.10). Микроядро защищено от остальных частей ОС и приложений. В состав микроядра обычно входят машинно-зависимые модули, а также модули, выполняющие базовые (но не все!) функции ядра по управлению процессами, обработке прерываний, управлению виртуальной памятью, пересылке сообщений и управлению устройствами ввода-вывода, связанные с загрузкой или чтением регистров устройств. Набор функций микроядра обычно соответствует функциям слоя базовых механизмов обычного ядра. Такие функции операционной системы трудно, если не невозможно, выполнить в пространстве пользователя.
Рис. 3.10. Перенос основного объема функций ядра в пользовательское пространство
Все остальные более высокоуровневые функции ядра оформляются в виде приложений, работающих в пользовательском режиме. Однозначного решения о том, какие из системных функций нужно оставить в привилегированном режиме, а какие перенести в пользовательский, не существует. В общем случае многие менеджеры ресурсов, являющиеся неотъемлемыми частями обычного ядра — файловая система, подсистемы управления виртуальной памятью и процессами, менеджер безопасности и т. п., — становятся «периферийными» модулями, работающими в пользовательском режиме.
Работающие в пользовательском режиме менеджеры ресурсов имеют принципиальные отличия от традиционных утилит и обрабатывающих программ операционной системы, хотя при микроядерной архитектуре все эти программные компоненты также оформлены в виде приложений. Утилиты и обрабатывающие программы вызываются в основном пользователями. Ситуации, когда одному приложению требуется выполнение функции (процедуры) другого приложения, возникают крайне редко. Поэтому в операционных системах с классической архитектурой отсутствует механизм, с помощью которого одно приложение могло бы вызвать функции другого.
Совсем другая ситуация возникает, когда в форме приложения оформляется часть операционной системы. По определению, основным назначением такого приложения является обслуживание запросов других приложений, например создание процесса, выделение памяти, проверка прав доступа к ресурсу и т. д. Именно поэтому менеджеры ресурсов, вынесенные в пользовательский режим, называются серверами ОС, то есть модулями, основным назначением которых является обслуживание запросов локальных приложений и других модулей ОС. Очевидно, что для реализации микроядерной архитектуры необходимым условием является наличие в операционной системе удобного и эффективного способа вызова процедур одного процесса из другого. Поддержка такого механизма и является одной из главных задач микроядра.
Схематично механизм обращения к функциям ОС, оформленным в виде серверов, выглядит следующим образом (рис. 3.11). Клиент, которым может быть либо прикладная программа, либо другой компонент ОС, запрашивает выполнение некоторой функции у соответствующего сервера, посылая ему сообщение. Непосредственная передача сообщений между приложениями невозможна, так как их адресные пространства изолированы друг от друга. Микроядро, выполняющееся в привилегированном режиме, имеет доступ к адресным пространствам каждого из этих приложений и поэтому может работать в качестве посредника. Микроядро сначала передает сообщение, содержащее имя и параметры вызываемой процедуры нужному серверу, затем сервер выполняет запрошенную операцию, после чего ядро возвращает результаты клиенту с помощью другого сообщения. Таким образом, работа микроядерной операционной системы соответствует известной модели клиент-сервер, в которой роль транспортных средств выполняет микроядро.
Рис. 3.11. Реализация системного вызова в микроядерной архитектуре