Автор работы: Пользователь скрыл имя, 16 Декабря 2012 в 12:09, курс лекций
Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и в непрерывном взаимодействии. Между программами, как и между физическими узлами и блоками существует взаимосвязь – многие программы работают, опираясь на другие программы более низкого уровня. Уровни программного обеспечения (ПО) представляют собой пирамидальную конструкцию. Каждый следующий уровень опирается на программное обеспечение предшествующих уровней (рис.1).
очередь до момента первого обращения к терминалу. Является важным для
интерактивных программ.
Правильное планирование сильно влияет на производительность всей системы.
Во многих ОС, а в
ОС реального времени обязательно,
имеются средства для изменения
приоритета программ. Введение механизмов
динамического изменения
Например, в Windows NT каждый поток (задача) имеет базовый уровень приоритета, который лежит в диапазоне от двух уровней ниже базового приоритета процесса, его породившего, до двух уровней выше этого приоритета. Поток наследует этот базовый приоритет и может изменять его так, чтобы он стал немного меньше или немного больше. В результате получается приоритет планирования, с которым поток и начинает исполняться. Например, если поток обрабатывает пользовательский ввод, то диспетчер задач Windows NT поднимает его динамический приоритет, если он выполняет вычисления, то диспетчер постепенно снижает его приоритет до базового. Таким образом производится управление относительной приоритетностью потоков внутри процесса.
15
14 Диапазон значений
13
12 приоритета потока
11
10
9
8
7
6 Базовый приоритет
5
4 Базовый приоритет
3
2
1
Рис.3. Схема динамического изменения приоритетов в Windows NT
Для определения порядка
выполнения потоков диспетчер использует
систему приоритетов, направляя
на выполнение потоки с высоким приоритетом
раньше потоков с низкими
Существует группа очередей – по одной для каждого приоритета. Windows NT поддерживает 32 уровня приоритетов; потоки делятся на два класса: реального времени и переменного приоритета. Потоки реального времени, имеющие приоритеты от 16 до 31, используются программами с критическим временем выполнения. Большинство потоков в системе относятся к классу переменного приоритета с уровнями приоритета от 1 до 15. Для собственно системных модулей, функционирующих в статусе задач, зарезервирован приоритет с номером 0.
Управление памятью в операционных системах
В настоящее время программист обращается к памяти с помощью некоторого набора логических имен, для которых отсутствует отношение порядка (в общем случае множество переменных неупорядочено). Имена переменных и входных точек программных модулей составляют пространство имен. С другой стороны, существует понятие физической памяти, с которой работает процессор, извлекая из нее команды и помещая в нее результаты вычислений. Физическая память – это упорядоченное множество пронумерованных ячеек. К каждой из них можно обратиться, указав ее номер (адрес). Количество ячеек физической памяти ограниченно и фиксировано.
Системное программное обеспечение должно связать каждое указанное пользователем имя с физической ячейкой памяти, т.е. осуществить отображение пространства имен на физическую память компьютера.
Рис. 1. Память и отображение
В общем случае это делается в два этапа (см. рис.1): сначала системой программирования, а затем операционной системой. Между этими этапами обращения к памяти имеют форму виртуального или логического адреса. Множество всех допустимых значений виртуального адреса для некоторой программы определяет ее виртуальное адресное пространство или виртуальную память.
Система программирования осуществляет трансляцию и компоновку программы и производит привязку основной части виртуальных адресов программы к физическим ячейкам (первое отображение), а окончательная привязка делается операционной системой на этапе загрузки программы в память для ее исполнения (второе отображение).
Возможны частные случаи отображения пространства имен на физическую память:
В настоящее время
даже на ПК объем виртуальной памяти
больше объема физической памяти. Имеется
несколько методов
Простое непрерывное распределение – это самое простая схема, при которой вся память условно разделена на три части:
Эта
схема предполагает, что ОС не
поддерживает
Чтобы для задач отвести
как можно больший объем
Такая схема распределения несет два вида потерь вычислительных ресурсов – потеря процессорного времени (процессор простаивает, ожидая завершения операций ввода-вывода) и потеря самой оперативной памяти, т.к. не каждая программа использует всю память, а режим работы в этом случае однопрограммный.
Если есть необходимость создать программу, логическое адресное пространство которой должно быть больше, чем свободная область памяти, то используется распределение с перекрытием (оверлейные структуры). При этом программа разбивается на сегменты. Каждая оверлейная программа имеет одну главную часть (main) и несколько сегментов (segment), причем в памяти одновременно могут находиться только ее главная часть и один или несколько не перекрывающих сегментов. Пока в оперативной памяти располагаются выполняющиеся сегменты, остальные находятся во внешней памяти.
Первоначально программисты сами должны были включать в тексты своих программ обращения к ОС для вызова сегментов и тщательно планировать, какие сегменты одновременно могут находиться в оперативной памяти. Сейчас, например, в Turbo Pascal достаточно указать, что данный модуль оверлейный и все обращения к ОС для загрузки оверлеев генерируются самой системой программирования.
Для организации мультипрограммного режима необходимо обеспечить одновременное расположение в оперативной памяти нескольких задач. Самая простая схема распределения памяти предполагает, что память, незанятая ядром ОС, сожжет быть разбита на несколько непрерывных разделов. Разделы характеризуются именем, типом, границами (начало, конец и длина). Разбиение на несколько непрерывных разделов может быть фиксированным (статическим), либо динамическим (выделение нового раздела происходит при появлении новой задачи).
Рис.2. Распределение памяти разделами с фиксированными границами
В каждом разделе в
каждый момент времени может располагаться
по одной программе. При небольшом
объеме памяти увеличение количества
параллельно выполняемых
Основным недостатком такого способа распределения памяти является наличие достаточно большого объема неиспользуемой памяти ( рис. 2). Такие потери называют фрагментацией памяти. Избежать этого можно двумя способами:
При этом способе задаче память задаче выделяется не сплошной областью, а фрагментами. Для этого требуется аппаратная поддержка для ведения относительной адресации. Виртуальный адрес представляется состоящим из двух полей. Первое поле указывает часть программы, с которой сейчас осуществляется работа для определения местоположения этой части в памяти, а второе поле виртуального адреса помогает найти нужную ячейку относительно найденного адреса.
Существуют три способа организации виртуальной памяти для реализации разрывных методов: сегментный, страничный и сегментно-страничный.
О первых двух уже мы говорили при рассмотрении особенностей архитектуры микропроцессоров i80x86.
Вспомним:
Сегментная организация
Страничная организация
При сегментно-страничном способе организации виртуальной памяти виртуальный адрес состоит из трех компонентов: сегмент, страница, индекс. Этот способ организации памяти вносит еще большую задержку доступа к памяти. Сначала надо вычислить адрес дескриптора сегмента и прочитать его, затем вычислить адрес элемента таблицы страниц этого сегмента и извлечь из памяти необходимый элемент, и только потом можно к номеру физической страницы приписать номер ячейки в странице (индекс). Этот способ в ПК практически не используется (значительные затраты вычислительных ресурсов), хотя его возможность заложена в микропроцессорах i80x86. Его используют в дорогих, мощных вычислительных системах.
Это 32-разрядные, многопотоковые ОС с вытесняющей многозадачностью. Основной пользовательский интерфейс – графический.
В системе фактически действует
только страничный механизм преобразования
виртуальных адресов в
Информация о работе Программное обеспечение вычислительной системы