`mmap`, виртуальная память и два дымящихся процесса
`mmap`, виртуальная память и два дымящихся процесса
00:00 Напоминаю, что делали в прошлые разы: https://youtu.be/dpM672WprWU?si=lrg2XilImsJvCP6C. 01:28 `mmap` вездусущный! 03:56 `malloc` это тоже `mmap`... тайны `libc`. 07:00 Страницы: как ОС/Linux управляют памятью. 09:16 Псевдо-FS под названием "procfs" по `/proc`: процессоотносящиеся структуры ядра, в том числе маппинги виртуальных адресов. 13:00 Перехожу к рабочему примеру: маленькая программа на чистом C. 17:56 Запускаю и показываю. Если я засну на сто лет, а потом меня спросят, что происходит в мире веб-разработки, я отвечу: девопсы не могут настроить DNS, а программисты не понимают что такое "виртуальная память". Именно о ней, родимой, и поговорим. Покажу `mmap`, покужа что Линукс дает для интроспекции внутрь ядра живьем (не останавливая выполняющиеся процессы и без дорогостоящего оверхеда) и как - с помощью вызова `mmap` - заставить виртуализацию показать свою силу. Без этого не поймете чем "процесс" отличается от "потока" и почему и первое, и второе в исходном коде Линукса известно под `task_struct`. Не поймете что такое "адресное пространство" и его изоляция, тем более не поймете что такое "copy-on-write" (COW).