Программное обеспечение вычислительной системы

Автор работы: Пользователь скрыл имя, 16 Декабря 2012 в 12:09, курс лекций

Краткое описание

Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и в непрерывном взаимодействии. Между программами, как и между физическими узлами и блоками существует взаимосвязь – многие программы работают, опираясь на другие программы более низкого уровня. Уровни программного обеспечения (ПО) представляют собой пирамидальную конструкцию. Каждый следующий уровень опирается на программное обеспечение предшествующих уровней (рис.1).

Вложенные файлы: 1 файл

Лекции.doc

— 510.00 Кб (Скачать файл)

           очередь до момента первого обращения к терминалу. Является важным для

           интерактивных программ.

Правильное планирование сильно влияет на производительность всей системы.

 

 

 

  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. Память и отображение

 

В общем случае это  делается в два этапа (см. рис.1): сначала  системой программирования, а затем  операционной системой. Между этими этапами обращения к памяти имеют  форму виртуального или логического адреса. Множество всех допустимых значений виртуального адреса для некоторой программы определяет ее виртуальное адресное пространство или виртуальную память.

Система программирования осуществляет трансляцию и компоновку программы и производит привязку основной части виртуальных адресов программы  к физическим ячейкам (первое отображение), а окончательная привязка делается операционной системой на этапе загрузки программы в память для ее исполнения (второе отображение).

Возможны частные случаи отображения пространства имен на физическую память:

  1. тождественность виртуального адресного пространства физической памяти. Здесь нет необходимости осуществлять второе отображение. Система программирования генерирует абсолютно двоичную программу (адреса физические);
  2. тождественность виртуального адресного пространства исходному пространству имен. Здесь отображение осуществляется самой операционной системой, путем использования таблицы символьных имен.

 

В настоящее время  даже на ПК объем виртуальной памяти больше объема физической памяти. Имеется  несколько методов распределения  памяти для этой ситуации.

 

  1. Простое непрерывное распределение и распределение с перекрытием

 

Простое непрерывное  распределение – это самое простая схема, при которой вся память  условно разделена на три части:

    • область, занимаемая операционной системой:
    • область, в которой размещается исполняемая задача;
    • свободная область памяти.

       Эта  схема предполагает, что ОС не  поддерживает мультипрограммирование. Область памяти, отводимая под  задачу, является непрерывной, что облегчает работу системе программирования.

Чтобы для задач отвести  как можно больший объем памяти, ОС строится таким образом, что постоянно  в оперативной памяти располагается  самая нужная ее часть (ядро). Остальные  модули ОС могут быть диск-резидентными, т.е. загружаются в память по необходимости, а после своего выполнения вновь освобождают память.

Такая схема распределения несет  два вида потерь вычислительных ресурсов – потеря процессорного времени (процессор простаивает, ожидая завершения операций ввода-вывода) и потеря самой оперативной памяти, т.к. не каждая программа использует всю память, а режим работы в этом случае однопрограммный.

Если есть необходимость создать  программу, логическое адресное пространство которой должно быть больше, чем  свободная область памяти, то используется распределение с перекрытием (оверлейные структуры). При этом программа разбивается на сегменты. Каждая оверлейная программа имеет одну главную часть (main) и несколько сегментов (segment), причем в памяти одновременно могут находиться только ее главная часть и один или несколько не перекрывающих сегментов. Пока в оперативной памяти располагаются выполняющиеся сегменты, остальные находятся во внешней памяти.

Первоначально программисты сами должны были включать в тексты своих программ обращения к ОС для вызова сегментов и тщательно планировать, какие сегменты одновременно могут находиться в оперативной памяти. Сейчас, например, в Turbo Pascal достаточно указать, что данный модуль оверлейный и все обращения к ОС для загрузки оверлеев генерируются самой системой программирования.

 

  1. Распределение статическими и динамическими разделами

 

Для организации мультипрограммного режима необходимо обеспечить одновременное расположение в оперативной памяти нескольких задач. Самая простая схема распределения памяти предполагает, что память, незанятая ядром ОС, сожжет быть разбита на несколько непрерывных разделов. Разделы характеризуются именем, типом, границами (начало, конец и длина). Разбиение на несколько непрерывных разделов может быть фиксированным (статическим), либо динамическим (выделение нового раздела происходит при появлении новой задачи).

 

Рис.2. Распределение памяти разделами с фиксированными границами

 

В каждом разделе в  каждый момент времени может располагаться  по одной программе. При небольшом  объеме памяти увеличение количества параллельно выполняемых приложений можно за счет свопинга (swapping). При свопинге  задача целиком перемещается во внешнюю память, а на ее место загружается другая задача, находившаяся на диске в приостановленном состоянии. Серьезная проблема, которая возникает при организации мультипрограммного режима, -  это защита самой ОС, так и других задач друг от друга.

Основным недостатком  такого способа распределения памяти является наличие достаточно большого объема неиспользуемой памяти ( рис. 2). Такие потери называют фрагментацией памяти. Избежать этого можно двумя способами:

  • выделять раздел ровно такого объема, который нужен под текущую  задачу – разделы с подвижными границами. Диспетчер памяти ведет список адресов свободной памяти и выделяет под задачу раздел, равный или чуть больше объема задачи. При освобождении раздела диспетчер пытается объединить этот раздел со смежным свободным участком, если таковой имеется;
  • размещать задачу не в одной непрерывной области памяти, а в нескольких областях.

 

  1. Разрывные методы распределения памяти

 

При этом способе задаче память задаче выделяется не сплошной областью, а фрагментами. Для этого требуется аппаратная поддержка для ведения относительной адресации. Виртуальный адрес представляется состоящим из двух полей. Первое поле указывает часть программы, с которой сейчас осуществляется работа для определения местоположения этой части в памяти, а второе поле виртуального адреса помогает найти нужную ячейку относительно найденного адреса.

Существуют три способа  организации виртуальной памяти для реализации разрывных методов: сегментный, страничный и сегментно-страничный.

О первых двух уже мы говорили при рассмотрении особенностей архитектуры  микропроцессоров i80x86.

Вспомним:

Сегментная организация виртуальной  памяти состоит в том, что программа разбивается на логические элементы (например, блоки, процедуры) ─ так называемые сегменты разной длины, которые размещаются в памяти  как до определенной степени самостоятельная единица. Логически обращение к элементам программы будет представляться как указание имени сегмента и смещения относительно начала этого сегмента. Физическое имя сегмента (его порядковый номер) будет соответствовать некоторому адресу, с которого этот сегмент начинается при его размещении в памяти, и смещение должно прибавляться к этому базовому адресу. Таким образом, адрес для этого способа состоит из двух полей: номер сегмента и смещение относительно сегмента. Каждый сегмент, размещаемый в памяти, имеет соответствующую информационную структуру, называемую дескриптором сегмента.

Страничная организация виртуальной  памяти состоит в том, что все фрагменты программы, на которые она разбивается произвольным образом, имеют одинаковую длину. Эти одинаковы части называют страницами и говорят, что память разбивается на физические страницы, а программа ─ на виртуальные страницы. Часть виртуальных страниц задачи размещается  в оперативной памяти, а часть ─ во внешней. Величина страницы выбирается кратной степени двойки. Таким образом, вместо одномерного адресного пространства можно говорить о двумерном. Первая координата адресного пространства ─ это номер страницы, а вторая ─ номер ячейки внутри выбранной страницы (его называют индексом). Таким образом, физический адрес определяется парой (Pp,i), а виртуальный адрес ─ парой (Pν,i), где Pν ─ номер виртуальной страницы, Pp ─ номер физической страницы, i ─ индекс ячейки внутри страницы. Количество битов, отводимое под индекс, определяет размер страницы, а количество битов, отводимое под номер виртуальной страницы ─ объем возможной виртуальной памяти, которой может воспользоваться программа. При это нет необходимости ограничивать число виртуальных страниц числом физических, то есть не поместившиеся страницы можно размещать во внешней памяти, которая в этом случае служит расширением оперативной. Для отображения виртуального адресного пространства задачи на физическую память для каждой задачи, как и в случае сегментного способа, необходимо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти ОС заводит соответствующий дескриптор.

При сегментно-страничном способе организации виртуальной памяти виртуальный адрес состоит из трех компонентов: сегмент, страница, индекс. Этот способ организации памяти вносит еще большую задержку доступа к памяти. Сначала надо вычислить адрес дескриптора сегмента и прочитать его, затем вычислить адрес элемента таблицы страниц этого сегмента и извлечь из памяти необходимый элемент, и только потом можно к номеру физической страницы приписать номер ячейки в странице (индекс). Этот способ в ПК практически не используется (значительные затраты вычислительных ресурсов), хотя его возможность заложена в микропроцессорах i80x86. Его используют в дорогих,  мощных вычислительных системах.

 

  1. Распределение оперативной памяти в современных ОС для ПК

 

    1. Microsoft Windows 95/98

 

Это 32-разрядные, многопотоковые ОС с вытесняющей многозадачностью. Основной пользовательский интерфейс – графический.

В системе фактически действует  только страничный механизм преобразования виртуальных адресов в физические, т.к. используется плоская модель памяти (имеется только один сегмент). Этот сегмент отображается непосредственно в область виртуального линейного адресного пространства, состоящего из 4 Кбайт страниц. Каждая страница может располагаться где угодно в оперативной памяти или может быть перемещена на диск, если не запрещено использовать страничный файл.

Информация о работе Программное обеспечение вычислительной системы