
- •Управление процессами и потоками в мультипрограммных ос. Общие сведения о процессах и потоках в ос Windows. Понятие объекта ядра. Типы объектов ядра.
- •Описатель, командная строка, и переменные окружения процесса.
- •Создание процессов.
- •Завершение процесса.
- •Общие сведения о потоках. Создание потоков.
- •Выполнение потоков.
- •Завершение потоков.
- •Планирование потоков. Приостановка и возобновление процессов и потоков.
- •Приоритеты потоков. Классы приоритетов процессов и относительные приоритеты потоков.
- •Синхронизация процессов и потоков в мультипрограммных ос. Независимые и взаимодействующие процессы. Понятие критических ресурсов и критических секций.
- •Синхронизация процессов и потоков в ос Windows. Объекты синхронизации и функции ожидания.
- •Синхронизация с помощью критических секций.
- •Мьютексы.
- •События.
- •Семафоры.
- •Передача и обмен данными между процессами. Способы передачи данных и типы связей между процессами.
- •Средства передачи и обмена данными между процессами в ос Windows.
- •Обмен данными с помощью буфера обмена данными Clipboard.
- •Обмен данными по технологии dde.
- •Обмен данными по технологии ole. Понятие документно-ориентированной среды.
- •Принципы технологии ole.
- •Особенности ole 2.0
- •Обмен данными через разделяемые файлы.
- •Обмен данными через файлы, проецируемые в память. Создание файлов, проецируемых в память.
- •Обмен данными через проекцию файлов в память.
- •Обмен данными через страничный файл.
- •Обмен данными через программные каналы.
- •Средства организации анонимных и именованных каналов в Windows.
- •Концепция почтовых ящиков.
- •Создание почтовых ящиков.
- •Соединение клиентов с почтовым ящиком.
- •Обмен данными через почтовый ящик.
- •Закрытие почтового ящика.
- •Получение информации о почтовом ящике.
- •Обмен данными с помощью очередей сообщений.
- •Подсистема управления памятью. Функции подсистемы управления памятью.
- •Физическая и логическая память. Виртуальное (логическое) и физическое адресное пространство.
- •Способ построения вап процессов.
- •Способы распределения памяти на уровне управления процессами. Односвязное непрерывное распределение памяти.
- •Распределение памяти фиксированными разделами.
- •Распределение памяти динамическими и перемещаемыми разделами.
- •Виртуализация оперативной памяти. Свопинг и виртуальная память.
- •Страничное распределение памяти.
- •Преобразование адресов страниц прямым отображением.
- •Преобразование адресов страниц ассоциативным отображением.
- •Преобразование адресов страниц комбинированным ассоциативно-прямым отображением.
- •Совместное использование программ и данных в системах со страничной организацией памяти. Выбор размера страниц.
- •Сегментное распределение памяти.
- •Управление доступом в системах с сегментной организацией памяти.
- •Сегментно-страничное распределение памяти.
- •Реализация режима виртуальной памяти. Стратегии замещения страниц.
- •Стратегия замещения случайной страницы.
- •Стратегия замещения по принципу fifo.
- •Замещение страницы, которая использовалась наименее часто (lfu).
- •Замещение страницы, которая не использовалась в последнее время (nur).
- •Концепция локального и рабочего множества программ в системах с виртуальной памятью.
- •Уровни привилегий и защита по привилегиям.
- •Кеширование данных в памяти эвм. Иерархия устройств памяти. Понятие и принцип действия кэш-памяти.
- •Способы отображения основной памяти на кэш.
- •Двухуровневое кэширование.
- •Кеширование в процессорах моделей Pentium.
- •Структура линейного виртуального адресного пространства процесса в ос Windows.
- •Раздел 4 используется для хранения совместно используемых всеми процессами данных. Сюда же загружаются все системные .Dll модули, поэтому же доступны любому пользовательскому процессу.
- •Управление устройствами. Основные понятия и концепции организации.
Кеширование данных в памяти эвм. Иерархия устройств памяти. Понятие и принцип действия кэш-памяти.
Память современных ЭВМ представляет собой многоуровневую структуру запоминающих устройств нескольких типов, которые отличаются по своим характеристикам. Основными из них являются информационный объем, время доступа и стоимость хранения одного бита информации.
Данная схема отражает известную закономерность. Чем больше носитель, тем медленнее доступ. Стоимость хранения бита возрастает с увеличением быстродействия устройства. Устройства памяти, которое было бы недорогим, быстродействующим, и отвечало бы требованиям по объему, в настоящее время не существует.
Получение такой памяти реализуется применением особого вида памяти, называемого кэш-памятью.
Кэш-память – это способ совместного использования двух типов запоминающих устройств, отличающихся по приведенным характеристикам. Одно из этих устройств, обладающее меньшим временем доступа, и как правило, более высокой стоимостью, условно называется быстрым, а другое устройство, обладающее большим временем доступа, меньшей стоимостью и большим объемом, условно называется медленным.
Кэшем называется не только способ взаимодействия двух типов запоминающих устройств, но и просто одно из этих устройств – быстрое из них.
Работа кэш-памяти основана на том, что за счет периодического динамического копирования в быстрое ЗУ наиболее часто используемой информации из медленного ЗУ оказывается возможным:
Уменьшить среднее время доступа к данным;
Сэкономить дорогостоящую быструю память.
Важным свойством кэш-памяти называется её «прозрачность» для программ и пользователей. Это означает, что ни пользователи, ни их программы никоем образом не участвуют в перемещении данных из ЗУ одного типа в ЗУ другого типа. Все операции выполняются автоматически системными средствами.
Если кэширование используется для уменьшения времени доступа к ОП, то в качестве кэша на практике используется быстродействующая полупроводниковая память статического типа.
Если кэширование применяется в системах ввода/вывода ЭВМ для ускорения доступа к данным во внешней памяти, то функции кэш-памяти возлагаются на ОП, в которой создаются специальные буферные области ввода/вывода, куда записываются наиболее часто используемые данные.
Виртуальную память также можно рассматривать как один из вариантов реализации принципа кэширования, при котором ОП выступает в роли быстродействующей кэш-памяти по отношению к кэш-памяти.
Обобщенную схему кэширования и структуру кэш-памяти можно представить следующей схемой:
Ячейки кэш-памяти |
Адрес данных в основной памяти |
Данные |
Управляющая информация |
|
|
|
|
… |
… |
… |
|
|
|
|
Под основной памятью понимается любое конкретное устройство памяти, обладающее меньшим быстродействием по сравнению с устройством кэш-памяти. Содержимое кэш-памяти представляет собой совокупность записей о загруженных в эту память элементах данных из основной памяти.
Каждая запись об элементе данных включает в себя:
Адрес элемента данных в основной памяти;
Содержание элемента данных;
Дополнительную управляющую информацию, которая используется для реализации алгоритма замещения данных в кэше. Обычно эта информация включает признак модификации и признак действительности данных.
Обращение к основной памяти вырабатывается в источнике запросов, которым в большинстве случаев является выполняющийся процесс. При исполнении каждого запроса с использованием физического адреса основной памяти в кэше просматривается содержимое всех ячеек с целью нахождения нужных данных. При этом просмотре используется берущийся из запроса адрес данных в основной памяти. В ходе выполнения запроса к памяти возможны два варианта:
Данные обнаруживаются в кэш-памяти. Это означает, что произошло кэш-попадание. Данные считываются из кэш-памяти и передаются источнику запросов (быстрый ответ).
Данные в кэше не обнаруживаются. В этом случае происходит кэш-промах. Данные считываются из основной памяти (медленный ответ), передаются источнику запроса и одновременно копируются в кэш-память.
Очевидно, что эффективность кэширования зависит от вероятности попадания данных в кэш. Это можно проиллюстрировать, если оценить зависимость среднего времени tср доступа к данным от вероятности P кэш-попаданий. Будем считать, что t1 – это среднее время доступа к основной памяти, t2 – среднее время доступа к кэш-памяти. Очевидно, что t2<t1. Тогда среднее время tср доступа к системе памяти, состоящей из основной и кэш-памяти, может быть оценено по соотношению tср=t2*p + t1*(1-p)= (t2-t1)*p + t1 – формуле полной вероятности.
Среднее время линейно зависит от вероятности p и от t1 при p=0 до t2 при p=1. Это означает, что смысл использования кэш-памяти существует только при достаточно высокой вероятности кэш-попаданий. Вероятность кэш-попаданий зависит от разных факторов: объема кэш-памяти, объема основной памяти, способа замещения данных в кэше при записи туда новой информации, алгоритма работы программы, в которой формируется запрос и других характеристик вычислительного процесса. Тем не менее, на практике, в большинстве систем с кэш-памятью вероятность кэш-попадания оказывается достаточно высокой. Pср=90%.
Это объясняется наличием у данных двух объективных данных:
Свойства временной локальности;
Свойства пространственной локальности.
Основываясь на свойстве временной локальности, данные, только что считанные из основной памяти, записываются в кэш-память в предположении, что они снова потребуются в ближайшие интервалы времени. В самом начале работы системы памяти, когда кэш-память пуста, каждый запрос к основной памяти выполняется полностью.
Просмотр кэш-памяти;
Фиксация кэш-промаха;
Чтение данных из основной памяти;
Передача данных источнику запроса;
Копирование прочитанных данных, то есть их запись в кэш-память.
По мере работы системы, кэш-память заполняется данными, и в соответствии со свойством временной локальности, возрастает вероятность обращения к данным, которые уже были использованы в предшествующие моменты времени. Эти данные содержатся в кэше, и могут быть считаны быстрее, чем из основной памяти.
Свойство пространственной локальности также оказывает влияние на увеличение вероятности кэш-попадания. Чаще всего из кэш-памяти считывается не отдельный информационный элемент, а группа (блок) элементов, расположенных в непосредственной близости друг от друга. Это увеличивает вероятность присутствия в кэш-памяти данных, к которым будет происходить обращение в ближайшие моменты времени, например, к элементам массивов, которые расположены в непосредственной близости от прочитанного текущего элемента, или к команде программы, которая будет выполняться после текущей команды. В первом случае, в кэш считывается несколько элементов массива с последовательными номерами, или даже весь массив. Во втором случае считывается группа команд программы с последовательными адресами.
В процессе работы системы с кэш-памятью, содержимое кэш-памяти постоянно обновляется. Это означает, что периодически вследствие ограниченности объема кэш-памяти, некоторые данные из неё должны вытесняться. Вытеснение означает либо простое объявление кэш-памяти как свободной, если данные, хранившиеся в этой области не были изменены, либо в дополнение к этому – копирование данных в основную память, если за время нахождения в кэше данные изменились.
Алгоритм замещения данных, вытесняемых из кэша, оказывает заметное влияние на эффективность работы кэш-памяти. Такой алгоритм, во-первых, должен быть максимально быстродействующим, и во-вторых, должен обеспечивать максимально возможную вероятность кэш-попадания. Вследствие непредсказуемости развития вычислительного процесса во времени, ни один алгоритм замещения данных в кэш-памяти не может гарантировать абсолютно оптимального результата, поэтому на практике, при разработке систем с кэш-памятью, выбирается компромиссный алгоритм, который, прежде всего, не сильно замедляет работу кэш-памяти, и во-вторых, обеспечивает приемлемую вероятность кэш-попадания.
В используемых алгоритмах замещения используются подходы, аналогичные принципу LRU в системах виртуальной памяти. Наличие в системе с основной кэш-памятью двух копий данных ведет к возникновению проблемы согласования данных. Она состоит в том, что если происходит запись в основную память по некоторому адресу, и содержимое этой ячейки еще присутствует в кэш-памяти, то эта информация в кэш-памяти становится недостоверной, то есть с течением времени устаревает, и её необходимо обновлять. Проблема согласования данных может решаться двумя способами:
Сквозная запись. При каждом запросе к основной памяти, в том числе и при выполнении операции записи данных в неё, просматривается содержимое кэш-памяти. Если данные по сформированному в запросе адресу в кэш-памяти отсутствуют, то запись осуществляется только в основную память, и в кэш не заносятся. Если же эти данные находятся в кэше, то запись осуществляется одновременно и в кэш-память, и в основную память.
Способ обратной записи. При появлении запроса к памяти просматривается кэш-память. Если запрашиваемых данных в ней нет, то запись выполняется только в основную память. В противном случае, когда данные в кэше имеются, запись осуществляется только в кэш-память, и записываемые данные сопровождаются специальным дескриптором, в котором делается отметка, называемая признаком модификации. Он указывает на то, что при вытеснении этих данных из кэша их необходимо переписать в основную память, чтобы модифицировать устаревшее содержимое, и не потерять внесенные изменения.
Существуют разновидности этих способов, в которых предусматривается первоочередная выгрузка из кэша модифицированных данных. Она может выполняться не только в момент освобождения места в кэш-памяти, но и в любой другой момент работы системы, когда интенсивность обращений к памяти не столь высока.