Pull to refresh
0
0
Send message
Спасибо за развернутое обсуждение. К сожалению, мы не могли ответить в выходные, поэтому отвечаем сейчас всем участникам дискуссии.
Асинхронный ввод-вывод не был рассмотрен в лекции по двум причинам:
1). Он используется в Linux крайне редко, и вообще плохо реализован в Linux для сетевых соединений (см. ниже).
2). У автора нет опыта написания программ в этом стиле.

Теоретически, асинхронный ввод-вывод может быть основой для программы, обрабатывающей одновременно много соединений. Под Windows IOCP – это и есть асинхронный ввод-вывод, и он действительно используется в сетевых приложениях. Под Linux это остается теорией, поскольку в ядре AIO работает только на блочных устройствах, а userspace-реализация в glibc основана на потоках и поэтому не может быть лучше решения, использующего потоки напрямую.
Спасибо за конструктивную критику. По поводу ссылки на LWN — действительно, в 2005 году использование Timer Wheel в качестве структуры данных было оправдано, поскольку эта структура естественным образом поддерживает «округление» времени срабатывания таймера до ближайшей jiffie, а таймеров высокого разрешения в то время не существовало.

Современные ядра linux имеют две системы обработки событий, связанных со временем. Одна, о которой уже было сказано, основана на Timer Wheel, а другая — на rb-tree. Действительно, если следовать Вашей терминологии, первая в основном используется для таймаутов (где округление времени срабатывания допустимо и иногда даже желательно), вторая — для таймеров.
Идею любой лекции можно объяснить за пару минут. Сама же лекция в данном случае — это процесс поиска правильного решения, из которого слушатели могут почерпнуть (или не почерпнуть) для себя что-то новое.
Зарисовка с поездом символизирует ускорение, а его вагоны — идею группировки данных.

Information

Rating
Does not participate
Location
Россия
Registered
Activity