где ядро ​​хранит процессы, которые не запущены? - PullRequest
6 голосов
/ 22 апреля 2011

каждый У меня есть вопрос о задачах в Linux, я знаю, что все задачи, которые в настоящее время находятся в состоянии TASK_RUNNING, находятся в структуре данных, называемой runqueue, но как насчет задач, ожидающих какого-то события (состояния, которыене TASK_RUNNING, например тот, который ожидает ввода с клавиатуры).У меня есть какая-то другая структура данных для таких задач или только общая list of tasks?заранее спасибо за любые объяснения

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Процессы в состоянии TASK_INTERRUPTIBLE или TASK_UNINTERRUPTIBLE подразделяются на различные классы, каждый из которых соответствует определенному событию. В этом состоянии состояние процесса не предоставляет достаточно информации для быстрого извлечения дескриптора процесса, поэтому используется другой список процессов, называемый wait_queue. Wait_queue реализует условное ожидание событий. Процесс, ожидающий определенного события, помещается в надлежащую очередь ожидания.

Очереди ожидания реализованы в виде циклических списков, элементы которых включают указатели для обработки. дескрипторы. Каждый элемент списка очередей ожидания имеет тип wait_queue:

struct wait_queue {  
    struct task_struct * task;  
    struct wait_queue * next;  
}; 
0 голосов
/ 22 апреля 2011

очереди ожидания используются, чтобы позволить процессам ожидать определенного события, такого как ожидание ввода с клавиатуры.

...