В. Столлингс - Операционные системы (1114679), страница 86
Текст из файла (страница 86)
Если метки (нли их числовые р е отоб ажения) расположи. я ке бина ный поиск эна в таблице в возрастающем (убывающем) поряд е, р тельно быстрее последовательного (табл. 8.7) и Р У и не т еб ет специального паратного обеспечения. Таблица 8.7. Средняя продолжительность поиска одного из Ж элементов в таблице Размером М Продолжительность поиски Алгоритм М+1 Л ььнейное хеьпиронанне Хешнровзньье (переполнение е цепочками) Ф вЂ” 1 1+— 2М Многообещающе для поиска н таблице выглядит бинарный поиск. Основным его недостатком является то, что добавление нового элемента в таблицу— процесс обычно непростой и требует переупорядочения записей таблицы. Таким образом, бинарный поиск обычно используется для более или менее статичных таблиц, которые достаточно редко изменяются. Конечно, хотелось бы избежать как перерасхода памяти при прямом доступе, так и излишней работы процессора при остальных перечисленных подходах.
Наиболее часто используемым компромиссным методом является хеширование. 1 Этот метод, разработанный еще в 50-х годах, прост н реализации и имеет два достоинства. Во-первых, он позволяет найти большинство элементов за одно обРньцеыие к таблице, как прн прямом доступе. а во-вторых, добавления элементов н таблицу и удаления элементов из нее выполняются без излишней сложности. Хеп1ИРОвание можно оПрЕДЕЛитЬ СЛЕдумщИм Образом. Предположим, что до .ь~' элементов хранятся в таблице размером М > М, причем М не намного больше 'ь'. Вставка элемента в таблицу осуществляется следующим образом. 11 Преобразуем метку элемента в почти случайное число и между О и М вЂ” 1- Например, если метки представляют собой числовые значения, довольно распространенным методом является деление метки по модулю М.
12* Используем полученное значение и в качестве индекса в хеш-таблице. н. Если соответствующая запись н таблице пуста, значит, элемент ранее не был сохранен в таблице. б Если запись уже занята и ее метка соответствует искомой, значит, найден требуемый элемент. 'Часть 3. Более депьалено г хеьиироаанием можно аознакоииаььея в разделе 6.4 книги ЛнУаь 11екуеетно программировььнин.
Том 3. Сортировка и поиск, 2-е изд. — М.: Оздааьель '" д и .я 2000 Прим рд .; ~лана 8. Виртуальная память 451 в. Если запись занята и ее метка не соответствует заданной, продол поиск в области переполнения. различные схемы хеширования отличаются способом обработки перепо я. Одна из ш . О широко распространенных технологий„обычно использую1цая ' мпиляторах,— , — технология линейного хеширования.
В этом случае прав" ,б выглядит следующим образом. 3.б. Если запись занята, установить л = (я+1) пкх) М и вернуться к шагу 12.п,',.'„. Соответствующим образом изменяется и правило 12.е. На рис. 8.24,а приведен пример использования линейного хешированвщ;:,' .ином случае чае метки элементов хранятся в виде чисел, а размер хеш-табл' ' .вен 8 (М =- 8). Функция отображения представляет собой остаток при деле " 8. П агается что элементы вставляются в таблицу в возрастающем. '" ~дке (хотя это ус то условие и не является необходимым). Таким образом, элема '' ' "н ) и 51 отображаются на позиции 2 и 3, соответственно, и поскольку соо ~ющие записи пусты, элементы оказываются вставленными в положения 1.
Элемент 74 также отображается в позицию 2, но так как она занята,— ообуем вставить элемент в позицию 3. Поскольку она тоже занята, элемеягвз :тавляется в таблицу в позиции 4. Определить среднюю продолжительность поиска элемента при откр еш-таблице не так просто из-за наличия кластеризации. Приближенная фэ а 1БСНА621 выглядит следующим образом: 2-г И Средняя продолжительность поиска = —, где г = —.
2-2г М Обратите внимание, что полученный результат не зависит от размера., ицы, а зависит только от степени ее заполненности. Приятной неожид казывается то, что даже при заполненности таблицы на 80% средняя при '. кительность поиска оказывается равной 3. Однако даже такое значение продолжительности поиска можно рас ать в ряде задач как слишком большое, да и процесс удаления элемента иэ. ~ицы при линейном хешировании достаточно сложен. Более привлекателен,' юд, обеспечивающий меньшую продолжительность поиска (см.
тее простое удаление элементов — переполнение с цепочками, ми показаня " >ис. 8.24,б. В этом случае имеется отдельная таблица, в котор р ой азмеп1в ~лементы, вызывающие переполнение. Записи этой таблицы включают ~и, связывающие элементы с одинаковым хеш-значением в цеп ° Ряг... в епочки. Пряг,, зайно распределенных данных И-1 Средняя продолжительность поиска = 1+— 2М а1 Линейное кешироаание Хещ-таблица 61 Переполнение о цепочками Рис. 8.24. Хеширование Для больших значений И = М средняя продолжительность поиска стремится к 1.5.
Таким образом, этот метод обеспечивает быстрый поиск при компактном хранении. Часть 3. ',т ~ла вва 8- Виртуальная память Планирование Операционная система должна распределять компьютерные ресурсы между множеством процессов с потенц,иально конкурирующими требованиями, При использовании процессора распределяемый ресурс представляет собой время выполнения ~или, что то же, использование процессора), а само распределение именуется планированием (асЬейи11пд).
Планирование должно быть разработано таким образом, чтобы удовлетворять ряду требований, включая беспристрастность, обеспечение отсутствия голодания любого из процессов, эФФективное использование процессорного времени и малые накладные расходы. Кроме того, системе планирования может потребоваться учет различных уровней приоритета процессов либо требований процессов реального времени. Планированию всегда уделялось много внимания исследователями и разработчиками, и в данной области имеется большое количество разработанных алгоритмов.
На сегодняшний день основной упор в исследовании планирования делается на многопроцессорные системы, многопоточные приложения и планирование реального времени. Глава 9. Планирование в системах с одним процессором В данной главе рассматривается планирование в вычислительных системах на базе одного процессора. Эта ограниченная ситуация позволяет определить и прояснить многие вопросы, связанные с планированием Глава начинается с рассмотрения трех типов планирования: долгосрочного, среднесрочного и краткосрочного, В основном материал главы посвящен вопросам краткосрочного планирования.
Будут представлены в сравнении различные алгоритмы планирования. в системах тесть 4. ПлаивР~,, ава 10. Многопроцессорное планирование планирование реального времени Зта глава посвящена двум основным направлениям современнь х иссл» ~ в области планирования. Наличие множества процессоров усложняет , ращений при планировании и одновременно открывает новые возмо астности, многопроцессорность позволяет одновременно выполнять рящ-' ~ одного процесса. Первая часть данной главы содержит обзор, посажу огопроце со цессорности и многопоточному планированию. Остальной ма* ~вы посвящен планированию реального времени. Требования реального существенно усложняют планирование, поскольку они выходят за р' ,1чных требований беспристрастности или учета приоритетов, ставя змеиные рамки для запуска и завершения процессов.
ГЛАВА Планирование с одним процессором 9.1. Типы планирования процессора 9.2. Алгоритмы планирования 9.3. Традиционное планирование ЮХ1Х 9.4. Резюме, ключевые термины и контрольные вопросы Я.б. Рекомендуемая литература 9.6. Задачи Приложение А. Время отклика Приложение Б. Очереди ый ~блица 9.1. Типы планирования )лгосрочное аниравпние асрачнав иравание Дапгаарач плзн нрав )одноарочное :анирование >зткасрочное ~анирование па нирование ,ода-вывода )))) й ' среднесрочное 4$- планирование планирование яасть 4.
ПланиРо о многозадачных системах в основной памяти одновременно содерж код нескольких процессов. В работе каждого процесса периоды испо вания процессора чередуются с ожиданием завершения выполнения опе'""' й ввода-вывода или некоторых внешних событий. Процессор (или проце ~ят выполнением одного процесса, в то время как остальные находятся.в >янин ожидания.
Ключом к многозадачности является планирование. Обычно используивта~~,"' гыре типа планирования (табл. 9.1). Одно из них — планирование ввбд(9)', ' ~вода — рассматривается в главе 11, "Управление вводом-выводом и дисковавр!" аннрование™, посвященной вопросам ввода-вывода. Планирование осталь ех типов, являющееся планированием процессора, будет рассматриватьсв,")" ай и следующей главах.
Решение о добавлении процесса в пул выполняемых процессов Решение о добавлении процесса к числу процессов, полностью частично размещенных в основной памяти :' Ф;4;. Решение о том, какой из доступных процессов будет выполняться:!~- процессором Решение о том, какой из запросов процессов на операции в вывода будет обработан свободным устройством ввода-вывода ":: '-% Данная глава начинается с рассмотрения трех типов планирования проц >ра, выявляя их взаимосвязь. Вы увидите, что долгосрочное и среднесроч санирование определяется в первую очередь вопросами производительное вязанными со степенью многозадачности (материал, с которым вы вкратце лакомились в главе 3, "Описание процессов и управление ими'*, и которь1й зе детально был рассмотрен в главах 7, "Управление памятью", и '. '- ' Виртуальная память").
В остальной части данной главы рассматриваются росы краткосрочного планирования в однопроцессорной системе. Поско зучение планирования при использовании нескольких процессоров сопряжен ополнительными сложностями, методологически правильнее сначала рассм., еть работу одного процессора, чтобы отчетливее увидеть отличия разных ал, . итмов планирования. Раздел 9.2 посвящен различным алгоритмам, которые могут использоват .
ри краткосрочном планировании. 9.1. ТИПЫ ПЛАНИРОВАНИИ ПРОЦЕС» ОРА;.": Цель планирования процессора состоит в распределении во времени проц, ов, выполняемых процессором (или процессорами) таким образом, чтобы Удо., ~етворять требованиям системы, таким, как время отклика, пропускная сп !ость и эффективность работы процессора. Во многих системах планиров разбивается на три отдельные функции — долгосрочного, среднесрочного"'. краткосрочного планирования. Их названия соответствуют временным мас ~ам выполнения этих функций.