
- •1. Операционная система и ее основные функции
- •2. Основные этапы развития ос Первый период (1945–1955 гг.). Операционных систем нет
- •Второй период (1955 г.–начало 60-х). Пакетные операционные системы
- •Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ос
- •Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы
- •3. Классификация операционных систем
- •4. Принцип модульности при построении ос
- •5. Принцип особого режима работы при построении ос
- •6. Принцип виртуализации при построении ос
- •7. Принцип мобильности при построении ос
- •8. Принцип совместимости при построении ос
- •9. Принцип генерируемости при построении ос
- •10. Принцип открытости при построении ос
- •11. Принцип обеспечения безопасности вычислений при построении ос
- •12. Макроядерная структура операционных систем
- •13. Микроядерная структура операционных систем
- •14. Среды и оболочки операционных систем
- •15. Понятие потока, процесса, задачи Понятия «процесс» и «поток»
- •16. Понятие прерывания, исключительной ситуации
- •17. Функции ос по управлению памятью. Простейшие схемы управления памятью.
- •Простейшие схемы управления памятью
- •18. Управление памятью. Схема с фиксированными разделами
- •Один процесс в памяти
- •Оверлейная структура
- •Динамическое распределение. Свопинг
- •19. Управление памятью. Схема с переменными разделами
- •20. Управление памятью. Страничная организация памяти Страничная память
- •21. Управление памятью. Сегментная организация памяти
- •22. Прерывание. Обработка прерываний. Исключительные ситуации
- •Обработка прерываний и ошибок
- •23. Управление вводом-выводом в ос. Разделяемые и неразделяемые ресурсы Структура системы ввода-вывода
- •24. Буферизация и кэширование Буферизация и кэширование
- •25. Понятие спулинга, его назначение Spooling и захват устройств
- •26. Алгоритмы планирования запросов к жесткому диску. Алгоритм fcfs Алгоритмы планирования запросов к жесткому диску
- •Алгоритм First Come First Served (fcfs)
- •27. Алгоритмы планирования запросов к жесткому диску. Алгоритм sstf Алгоритмы планирования запросов к жесткому диску
- •Алгоритм Short Seek Time First (sstf)
- •28. Алгоритмы планирования запросов к жесткому диску. Алгоритм sсan и look Алгоритмы планирования запросов к жесткому диску
- •Алгоритмы сканирования (scan, look)
- •29. Управление процессами. Основные состояния процесса
- •Состояния процесса
- •30. Планирование процессов (задач). Алгоритмы планирования
- •31. Дисциплина диспетчеризации процессов (задач) fcfs
- •32. Дисциплина диспетчеризации процессов (задач) rr
- •33. Проблемы организации параллельных вычислений.
- •34. Тупиковые ситуации и способы их разрешения.
- •Способы предотвращения тупиков
- •Способы предотвращения тупиков путем тщательного распределения ресурсов. Алгоритм банкира
- •Предотвращение тупиков за счет нарушения условий возникновения тупиков Нарушение условия взаимоисключения
- •Нарушение условия ожидания дополнительных ресурсов
- •Нарушение принципа отсутствия перераспределения
- •Hарушение условия кругового ожидания
- •35. Страничная недостаточность («голодание» процессора) и ее обработка
- •36. Файловая система. Основные функции файловой системы
- •37. Простейшая таблица оглавления тома и её элементы
- •38. Логическая структура разделов диска на примере ibm- и ms-совместимых файловых систем
21. Управление памятью. Сегментная организация памяти
Сегменты, в отличие от страниц, могут иметь переменный размер. Идея сегментации изложена во введении. При сегментной организации виртуальный адрес является двумерным как для программиста, так и для операционной системы, и состоит из двух полей – номера сегмента и смещения внутри сегмента. Подчеркнем, что в отличие от страничной организации, где линейный адрес преобразован в двумерный операционной системой для удобства отображения, здесь двумерность адреса является следствием представления пользователя о процессе не в виде линейного массива байтов, а как набор сегментов переменного размера (данные, код, стек...).
Программисты, пишущие на языках низкого уровня, должны иметь представление о сегментной организации, явным образом меняя значения сегментных регистров (это хорошо видно по текстам программ, написанных на Ассемблере). Логическое адресное пространство – набор сегментов. Каждый сегмент имеет имя, размер и другие параметры (уровень привилегий, разрешенные виды обращений, флаги присутствия). В отличие от страничной схемы, где пользователь задает только один адрес, который разбивается на номер страницы и смещение прозрачным для программиста образом, в сегментной схеме пользователь специфицирует каждый адрес двумя величинами: именем сегмента и смещением.
Каждый сегмент – линейная последовательность адресов, начинающаяся с 0. Максимальный размер сегмента определяется разрядностью процессора (при 32-разрядной адресации это 232 байт или 4 Гбайт). Размер сегмента может меняться динамически (например, сегмент стека). В элементе таблицы сегментов помимо физического адреса начала сегмента обычно содержится и длина сегмента. Если размер смещения в виртуальном адресе выходит за пределы размера сегмента, возникает исключительная ситуация. Логический адрес – упорядоченная пара v=(s,d), номер сегмента и смещение внутри сегмента.
В системах,
где сегменты поддерживаются
аппаратно, эти параметры обычно хранятся
в таблице дескрипторов сегментов,
а программа обращается к этим дескрипторам
по номерам-селекторам. При этом в контекст
каждого процесса входит набор сегментных
регистров, содержащих селекторы
текущих сегментов кода,
стека, данных и т. д. и определяющих,
какие сегменты будут
использоваться при разных видах обращений
к памяти. Это позволяет процессору уже
на аппаратном уровне определять
допустимость обращений к памяти, упрощая
реализацию защиты информации от
повреждения и несанкционированного
доступа.
Рис. 8.8. Преобразование логического адреса при сегментной организации памяти
Аппаратная поддержка сегментов распространена мало (главным образом на процессорах Intel). В большинстве ОС сегментация реализуется на уровне, не зависящем от аппаратуры.
Хранить в памяти сегменты большого размера целиком так же неудобно, как и хранить процесс непрерывным блоком. Напрашивается идея разбиения сегментов на страницы. При сегментно-страничной организации памяти происходит двухуровневая трансляция виртуального адреса в физический. В этом случае логический адрес состоит из трех полей: номера сегмента логической памяти, номера страницы внутри сегмента и смещения внутри страницы. Соответственно, используются две таблицы отображения – таблица сегментов, связывающая номер сегмента с таблицей страниц, и отдельная таблица страниц для каждого сегмента.