|
СД типа очередь.Date: 2015-10-07; view: 437.
При реализации очереди рассматриваются очередь как отображение на массив (полустатическая реализация) и очередь как отображение на список. Совокупность операций, определяющих структуру типа очередь: 1. Операция инициализации. 2. Операция включения элемента в очередь. 3. Операция исключения элемента из очереди. 4. Операция проверки: очередь пуста / очередь не пуста. 5. Операция проверки: очередь переполнена / очередь не переполнена. В последовательной памяти очередь имеет следующий вид:
Здесь: Uk 1 – указатель на “голову” (начало) очереди, Uk 2 – указатель на “хвост” (конец) очереди. Чтобы избежать переполнения, рациональней использовать кольцевую очередь. При этом Uk 1 > Uk 2 или Uk 2 > Uk 1. В случае же если очередь не кольцевая, то всегда Uk 2 > Uk 1. Если очередь пуста или переполнена, то Uk 1 = Uk 2. Пусть n – текущее состояние очереди, а N – количество элементов в очереди, тогда имеем условие 0 £ n £ N и значение n может являться условием проверки состояния очереди. Операция включения возможна, если n < N, а операция исключения, если n > 0. В случае кольцевой очереди при операции модуля указатели будут меняться следующим образом: Uk 1 = Uk 1 mod N + 1, Uk 2 = Uk 2 mod N + 1. Схема на физическом уровне СД типа очередь выглядит следующим образом: Дескриптор:
Применение очереди: Очередь используется при передаче данных из оперативной во вторичную память (при этом происходит процедура буферизации: накапливается блок и передается во вторичную память). Наличие буфера обеспечивает независимость взаимодействия процессов между производителем и потребителем (ранжирование задач пользователя). Задачи разделяются по приоритетам: 1) задачи, решаемые в режиме реального времени (высший приоритет) (очередь 1); 2) задачи, решаемые в режиме разделения времени (очередь 2); задачи, решаемые в пакетном режиме (фоновые задачи) (очередь 3). Очереди выполняются последовательно.
|