Операционные системы

О теме

Процессы, потоки, память, I/O — как рантайм Go сидит на ОС.

Лекции

Операционные системы
Мультиплексирование I/O: select, epoll, kqueue

Один поток может ждать готовности многих файловых дескрипторов. На Linux это epoll, на BSD и macOS — kqueue. Netpoller Go сидит на этом механизме: горутина паркуется на Read, а не занимает OS thread на каждое соединение.

Операционные системы
Виртуальная память и page cache

Процесс работает с виртуальными адресами; ядро отображает страницы на RAM или диск. RSS — то, что реально в памяти. Page cache ОС ускоряет чтение файлов и часто WAL, и это не Redis и не куча Go.

Операционные системы
Процессы, потоки и файловые дескрипторы

Процесс — своё адресное пространство. Потоки одного процесса делят память и таблицу файловых дескрипторов. Горутина легче потока и мультиплексируется планировщиком M:N; забытый Close у HTTP Body часто течёт именно дескрипторами, а не «GMP».