ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Архитектура Nginx



Alex Koshelev wrote:
Почему именно файловый I/O блокируется? В современных ОС вполне можно
сделать его не блокирующим, и отпускать воркер на то время пока ОС не
заполнит буфер и не просигнализирует об этом. В чем в данной ситуации
концептуальное различие между сетевым I/O?

Концептуальное различие между сетевым и дисковым I/O заключается в том, что в сетевом I/O имеем дело с потоками байт или пакетов, а в дисковом -- с пространством байт или блоков.

Насколько я помню, в рассылке про ядро Linux кто-то писал, что архитектура Unix не приспособлена для асинхронного дискового I/O, поскольку там есть два архитектураных уровня -- кэш и файловая система, в которых возможность выполнения операций асинхронно изначально не закладывали.

То есть, надо либо код этих двух уровней переписать наизнанку, либо использовать ядерные трэды.

Таким образом, сделать файловый I/O неблокирующимся нетривиально. Приходится использовать специальный API, который не в каждой ситуации реально асинхронный.

--
Regards,
Valery Kholodkov



 




Copyright © Lexa Software, 1996-2009.