Внутренности Linux - КИТ 2024
Vložit
- čas přidán 23. 06. 2024
- Спикер: Андрей Мичурин, руководитель группы разработки компонентов Деплоя
Рассмотрим, как работают планировщик процессов и подсистема виртуальной памяти. Проговорим, для чего нужны прерывания. И узнаем, что такое cgroup и namespace.
Спасибо, было очень интересно!
00:00:00 Ожидание начала трансляции
00:05:03 Начало. Содержание.
00:05:50 Зачем?
00:06:44 Процессы - дитя INIT-а
00:44:52 Планировщик
01:12:20 Прерывания
01:22:33 Системные вызовы
01:30:30 Перерыв
01:44:37 Память процесса
02:26:04 Изоляция
02:50:35 Вопросы
03:09:45 Завершение трансляции
Спасибо за просмотр и интерес к технологиям.
Хочу отметить, что в данной лекции я допустил несколько неточностей, ошибок и опечаток.
* 17:02 clone() будет видно, если трейсить bash из которого я запускаю strace
* 25:01 обрабатывать нельзя только kill
* 42:49 Stopped обозначается T
* 44:33 Terminated обозначается X
* 40:54 LA учитывает не только R, но процессы с D стейтом.
* 2:44:21 utc namespace - про имя хоста
Будьте внимательны!
Очень познавательно! Спасибо за лекцию
Спасибо за очень интересную лекцию!
34:02 в 2024 так не делали, 31 декабря 2023 блин последний день когда через мц можно пайпы через мц отправить в логи
17:02 немного тут Вас не понял - "этот вызов имел под собой и fork и exec" - мы запускаем strace, который также создаёт child процесс. Чтобы увидеть желаемый вызов нужно запустить второй bash (в соседнем pty, например), в котором запустить strace c аттачем по pid на первый баш (strace -p $PID) - то системный вызов (clone, все же это Linux) будет видно.
Очень крутое замечание!
Без clone() никуда, действительно надо стрейсить баш из которого вызываем, что бы поймать clone()!
Тут главная мысль, что все пишут про fork() && exec(), а по факту, мы видим другое clone && execve.
40:54 LA - это не количество процессов, исполняющихся на CPU (в состоянии Running). Это отношение всех процессов (с состояниями R и D) к имеющимся ресурсам CPU
Спасибо !
Я это подсветил в своем комментарии выше. Ошибки опечатки и неточности описываю там .
2:02:56 где-нибудь тут можно было упомянуть про TLB, наверно про него и был вопрос (косвенно, если я верно понял..)
Будто Роберта Лава перечитал. Конечно поверхностно, но для студентов наверно глубже пока и не надо
Я в лекции прям явно упоминал, что это краткий пересказ Роберта Лава, в моей интерпретации и с моими ошибками. Спасибо за просмотр.
системный вызов malloc? )
Нельзя так нагло обманывать неокрепшие умы детей про load average.
Когда в Linux впервые появились средние значения нагрузки, они отражали только потребность в ресурсах процессора, как и в других ОС. Но позднее они претерпели изменения, в них включили не только выполняемые задачи, но и те, что находятся в непрерываемом состоянии (TASK_UNINTERRUPTIBLE или nr_uninterruptible). Это состояние используется ветвями кода, которые хотят избежать прерывания по сигналам, в том числе задачами, блокированными дисковым вводом/выводом, и некоторыми блокировками. Вы могли уже сталкиваться с этим состоянием: оно отображается как состояние "D" в выходных данных ps и top. На странице ps(1) его называют «uninterruptible sleep (usually IO)».
Спасибо за уточнение!
Действительно, похоже сейчас это так работает.
Наконец-то хоть на понятном русском языке объяснют бугуртские технологии без всякой нераскрытой терминологии и на реальных примерах