Как настроить proc.c в minix для реализации алгоритма FCFS? - PullRequest
0 голосов
/ 24 марта 2012

Я хочу настроить код файла minix /usr/src/kernel/proc.c для реализации алгоритма FCFS, но я не получаю никакой идеи или подсказки. Мне уже говорили, что текущий алгоритм работает с некоторым уровнем приоритета, и все процессы сначала идут в одну очередь, а затем используют некоторый алгоритм, а затем процессам присваиваются некоторые приоритеты. Но если мне нужно реализовать FCFS, мне нужно работать только с одной очередью.

Но как связать эти вещи?

1 Ответ

2 голосов
/ 25 марта 2012

Одна возможность & ndash; вероятно, не очень хороший & ndash; изменить функцию enqueue():

PUBLIC void enqueue(register struct proc *rp)   
{
    /* Add 'rp' to one of the queues of runnable processes.  This function is 
     * responsible for inserting a process into one of the scheduling queues. 
     * The mechanism is implemented here.   The actual scheduling policy is
     * defined in sched() and pick_proc().
     */
    int q = rp->p_priority;                       /* scheduling queue to use */

Вместо присвоения rp->p_priority просто присвойте 0:

   int q = 0;

Таким образом, все процессы помещаются в одну очередь с приоритетами (очередь № 0), и у вас есть одна система FCFS. Конечно, это предполагает, что enqueue() - единственная функция, которая добавляет процессы в очереди. Есть неплохой шанс, что он единственный, но вам нужно знать большую часть ядра Minix.

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

Обратите внимание, однако, что вы, вероятно, не хотите только FCFS; приоритетные очереди существуют по уважительным причинам. Например, ваши обработчики прерываний должны обслуживаться быстрее, чем чудовище, работающее на SETI. Это означает, что должна быть определенная приоритетность.

...