A brief history of threads and threading
Первые Mac 1984 года с одноядерным процессором Motorola 68000 выполняли только одно приложение за раз. Переломным моментом стал Switcher (1985), позволявший переключаться между программами, но не запускать их одновременно. В 1987 году MultiFinder представил кооперативную многозадачность, где приложения добровольно уступали процессорное время — однако плохо написанный код мог заблокировать систему.
С появлением A/UX (1988) и Multiprocessing Services (1996) macOS перешла к вытесняющей многозадачности, где планировщик ОС сам распределяет ресурсы. К 2000 году Power Mac G4 с двумя процессорами и Mac OS X принесли поддержку потоков (threads) — легковесных задач в рамках процесса. Сегодня приложение (process) имеет главный поток и может создавать дополнительные, разделяя память, но с отдельными стеками. Это позволяет эффективно использовать многоядерные процессоры современным Mac.
Комментарии (20)
- Участники отмечают неточности в статье о первых многопроцессорных Mac и истории потоков.
- Обсуждается, что для изучения истории потоков более релевантны ОС, отличные от Apple, например, NT, VMS или Solaris.
- Упоминаются ранние реализации потоков (нитей) в таких системах, как UNIVAC EXEC 8 (1966 г.) и библиотека «зеленых потоков» из Apache.
- Подчеркивается, что концепция потоков (threading) не обязательно связана с симметричной многопроцессорностью (SMP).
- Отмечается, что заголовок статьи может вводить в заблуждение, вызвав ожидания обсуждения другой темы.
Комментарии (44)
Hey folks, this is the 7th book in a series of readings I run over Google Groups. There are about 1800 people in the group and 300-800 join each reading. While we often read books on database internals this one seems pretty relevant to any developer working on systems that scale.