Имитация обработки дискового ввода-вывода в системном программировании с помощью связанного списка - PullRequest
0 голосов
/ 25 апреля 2020

Очень застрял на C проекте! Нужна помощь по следующим требованиям, любая помощь приветствуется:

  1. Структура IORB: Его тип данных определяется как:

    typedef struct iorb {
      int base_pri;
      struct iorb *link;
      char filler[100];
    } IORB;
    

    где base_pri - целое число, представляющее базовый приоритет блока; link - указатель на следующий блок; filler - это описание блока, который непрозрачен для процедуры сортировки.

  2. Отдельный исходный файл для функции вычисления приоритета:

    void sortList(IORB * head, int(*prio)(int));
    

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

  3. Приоритетные вычисления функция:

    Для простоты приоритеты планирования будут вычисляться из одного целочисленного поля (с именем base_pri) в каждом IORB. Вы можете разработать любой вычислительный метод. Функция должна возвращать целое число, представляющее приоритет планирования.

  4. Алгоритм сортировки:

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

  5. Сортировка по месту:

    Список должен быть отсортирован по месту. Это означает, что ТОЛЬКО ссылки в списке могут быть изменены, ни один блок IORB не может быть скопирован в другое место в памяти.

  6. Построение и отображение списка:

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

Фон: Этот проект предназначен для имитации обработка дискового ввода / вывода в системном программировании по связанному списку. Отдельная операция ядра Unix обрабатывает дисковый ввод-вывод, позволяя независимым пользовательским процессам помещать блоки запроса ввода-вывода (IORB) в связанный список. Порядок, в котором эти запросы обслуживаются, зависит от их приоритета планирования. Стратегия планирования является адаптивной, что просто означает, что ядро ​​может выполнять разные вычисления в разное время, чтобы вычислить значение приоритета для каждого элемента списка. Вам необходимо написать C программу для Linux, которая разрабатывает, реализует и тестирует функцию сортировки: sortList (). Первым аргументом функции является указатель на заголовок списка. Второй аргумент - это функция вычисления приоритетов, которая вычисляет и возвращает приоритет планирования. Функция сортировки будет сортировать такой список в соответствии с приоритетом планирования каждого элемента. Поскольку в ОС будут другие структуры с указателями на блоки IORB, список должен быть отсортирован по месту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...