Архив метки: concurrency

Что надо знать программисту об устройстве современного процессора

Данная статья — всего лишь краткое введение в основные концепции устройства современного процессора. Цель статьи — дать основы, чтобы при объяснении каких-то нюансов в других статья я не повторялся. Все отсылки из тех статей к техническим подробностям и деталям будут вести сюда.

Читать далее

Многозадачность операционной системы и low-latency

На современной серверной машине low-latency процесс работает на многозадачной операционной системе. Это может быть Solaris, чаще Linux, FreeBSD или Windows Server. Помимо нашего процесса в ОС работают еще и другие процессы, которым ОС тоже должна выделять машинное время. Собственно потому ОС и называется многозадачной.

Конкретный процесс работает определенное время до тех пор пока:

  • не произойдет вызов операции ввода-вывода (i/o operation). Тогда процесс останавливается и ждет окончания — поступления данных. Это может быть ожидание очередной порции байтов из сети или загрузка с диска каких-то данных или страницы памяти (page fault), или окончания записи данных в систему вывода: это может быть запись данных в сеть или запись их на диск (page swap);
  • не истечет выделенное ядром ОС время (time slice), после чего ядро приостанавливает исполнение процесса. Специальный модуль ядра «планировщик» (scheduler) выбирает следующий в очереди процесс и начинает его исполнять. Такое переключение происходит примерно каждые 20~50 миллисекунд.

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

Читать далее

Top 15 вопросов по многопоточности в Java, которые могут задать на интервью в инвестиционном банке

Весьма толковый блог Java Reivisted разработчика, который работает в той же сфере, что и я. В его посте — краткая выжимка по многопоточности в Java, что может понадобиться освежить память перед интервью в инвестиционном банке.

Во имя высокой скорости обработки данных и снижения latency в брокерских отделениях банков стараются выжать из железа по-максимуму. Многопоточность тут важна и играет существенную роль, особенно в приложениях связанных с торговлей, доступом к биржам, обработкой рыночных данных, в движках алгоритмической торговли, в системах управленяи ордерами, в smart order routing системах. Чем ближе ваше приложение к рынку, тем ниже должна быть latency, тем выше требования к разработчикам, пишущим данные приложения.

3 книги о Java и concurrency и плюс еще одна

Многопоточное программирование в Java в частности и в программировании вообще является обширной и сложной темой. В связи с изменениями в процессоростроении, произошедшими уже упочти 15 лет назад многопоточное программирование выходит в скиллах программиста low-latency систем на первый план. Для самостоятельного вдумчивого освоения этой темы требуется уйма времени и хороший учебный материал.

Читать далее