Как работают программы в linux? //Демо-занятие курса «Инфраструктура высоконагруженных систем»

Системные вызовы, сигналы, межпроцессное взаимодействие

На открытом уроке:

  1. Узнаем как запускаются исполняемые файлы в Linux. Без понимания этого процесса сложно выполнять некоторые задачи дебага и администрирования
  2. Познакомимся со структурами ядра которые создаются процессом
  3. Научимся применять эту информацию для дебага и расследования инцидентов

Расшифровка видео

0:01
Инга Спрашивает какой терминал предпочитаю использовать на винде не использую Винду начну с
0:10
этого Поэтому ну одна наверное из причин поэтому я вам не подскажу какой
0:21
терминал так Павел задаёт вопрос у нас на сайте есть программа
0:27
амини обучают Это вопрос зада кураторам
0:33
курса Я думаю что там будет скорее всего линейка Ну какие-то отдельные
0:39
преподаватели предпочитают линейку навряд ли там будет что-то из разряда
0:45
там или Павел Вот вы пишете что ва лучший
0:58
терминал по мне лучший терминал – это просто чисто установленный голый Linux или macos самый лучший вариант – это
1:05
maos вот всё лучше ничего нет для инженера Да их и валом всякая всяких
1:14
разных терминалов они все под капотом используют путти то есть миус и все эти штуки они все как правило являются
1:22
надстройками над пути вот на Маке я юзаю it напишу Давайте название
1:38
вот на Маке я юзаю Ну а Да пожалуй будет лучшим потому что у вас запустится
1:44
виртуальная машина с линуксом там будет нативный вот все видовые терминалы
1:49
страдают одной большой проблемой проблемой проброс портов ЕС
2:00
если у вас авторизация по ключам и так далее вообще лучше не использовать То есть если вы инженеры ваши повседневные
2:06
обязанности Это Linux подобные системы Ну значит на вашем рабочем месте должна быть Linux или macos система всё всё
2:14
остальное как бы ну минус Вот лично моё мнение Windows – это операционная система для геймеров и домохозяек Ну и
2:20
для бухгалтера всё А на этом её применение заканчивается и то сейчас
2:26
Steam активно развивается под Linux nVidia активно пишет дрова под
2:35
Linux вот говорят обидно как стало не знаю кто такой
2:43
Расшифруйте Ну смотрите Павел здесь такая вот ситуация системный инженер Ну смотрите
2:50
здесь такая ситуация То есть к сожалению
3:00
Если вы допустим хотите расти как специалист вам рано или поздно прид отказаться от винса И когда вы от него
3:06
откажетесь и проживёте без него хотя бы годик два-три максимум пять да вы просто
3:11
поймёте Господи как хорошо вам без неё живётся и почему вы раньше от неё не отказались И когда вы попытаетесь с ней
3:17
потом после прошествии 3-5 лет по взаимодействовать вас будет мягко говоря выворачивать наружу потому что вы будете
3:24
не понимать Господи кто это придумал вообще максимально неудобно максимально небе дае
3:32
но играть ну играть опять же тоже видите какие-то вещи можно играть на линуксе
3:37
какие вещи можно играть на консоли то есть я говорю что винда – это в основном ну геймерская операционная система то
3:42
есть ну не для администраторов она винде всё совсем по-другому работает работает
3:48
по-другому сетевой стек работает по-другому ядро работает по-другому многопоточность Мы кстати сегодня затронем Винду Вы не переживайте сегодня
3:55
будет как бы про Linux да Но и немножко будет про Windows после того как я вам посоветую в конце
4:01
там пару книжек Да вы их прочитаете вы поймёте Почему Windows как бы плохое то
4:07
есть Особенно серверные винд это вообще смешно
4:16
просто так что вот такие пирожки с котятами у нас
4:22
получаются исключение когда винда нужна это когда вы разрабатываете софт под Винду вот тогда может быть нужна Да в
4:30
остальных случаях Ну не знаю Ну опять же какой софт под вин то есть вот В текущей
4:35
ситуации да с этими санкциями скажем так когда винда стала платной и купить её невозможно и вс переходит на Linux я вам
4:42
так скажу все госучреждения давно на линуксе там нет винды нигде вот очень-очень редко где можно там
4:48
единичные компьютеры Где стоит Windows и то сейчас в последнее время я вот сколько в гасу ных учреждениях скажем
4:54
так не встречался Да там нигде нет Виндовса
5:04
Да Добрый вечер в гос идти работать там же нет ЗП
5:10
Ну вы ошибаетесь смотря в какие ГОСы
5:21
идти так вот здесь пришла ссылка на опрос ну ссылка на опрос у нас будет в конце так я вижу у нас 59 Да у нас 1
5:28
минута до начала собственно м
5:56
эфира Кстати по поводу холиварофорум особенно когда можно голосом поспорить
6:01
иногда даже специально закидываю такие провокационные вещи чтобы подогреть скажем так
6:07
аудиторию начали спорить ругаться между собой что лучше что
6:15
хуже Мом они все используют эти самые там их
6:20
целая куча они все используют под капотом путь то есть они без установленного пу работать не будут используют мощность пу работат
6:27
сй вот поэтому писали выше Используйте vsl Так у нас 20:00 Я предлагаю Начинать
6:33
все кто опоздает будут смотреть собственно в записи да либо всё равно у нас первые какие-то там минутки это
6:39
будет скорее такая Техническая вводная информация значит коллеги ещё раз всех вас приветствую Меня зовут Сергей Андрю
6:45
чуть попозже мы с вами подробнее познакомимся значит Сегодня у нас открытый урок перед стартом курса лот и
6:53
инфраструктура и сегодня мы будем говорить об инфраструктуре высоконагруженных систем
7:00
и конкретно мы сегодня с вами поговорим о том как же работают всё-таки программы в Linux Что такое системные вызовы Что
7:06
такое сигналы Как происходит межпроцессное взаимодействие Не факт что мы
7:13
[музыка] охватит обширные и на этом нужно очень-очень много времени Вот и
7:19
сегодняшнее занятие преимущественно теоретическое Может быть я конечно что-то покажу в терминале но скорее
7:24
всего там будет команда которая покажет отработку по времени какой-то нибудь
7:30
утилиты Да и там будет системное и пользовательское время это нам нужно будет в процессе там значит нашей
7:35
презентации Вот Но сегодня будет скажем так чисто теоретическое занятие Почему
7:41
чисто теоретическое Потому что я не раз сталкивался с тем что ни разработчики ни
7:46
системные администраторы ни инженеры ни тестировщики вообще понятия не имеют как запускается код в линуксе Да который они
7:52
пытаются каким-то образом запустить и как-то с ним по взаимодействовать прилетел вопрос какой
8:00
я дистрибутив использую я использую линейку в текущем моменте я использую
8:05
для себя лично у меня Альма девятка на работе У меня НС сево и сейчас переходит
8:14
всё это дело нас такое не очень мне нравится дистрибутив слишком они ИС погани Короче
8:20
так Давайте продолжать Значит у нас
8:29
и слышно но я думаю меня видно и слышно раз идёт реакция такая значит Сегодня у
8:35
нас Как работают программы в Linux ач кавка Не обращайте внимания Это мой косяк я не не
8:41
исправил значит меня зовут Сергей Андрю Я devops инженер и работаю собственно
8:47
Как вы могли догадаться на государственных различных проектах помимо этого я веду курсы по линуксу и
8:53
попс в тусе также я ещё веду часть курса пого А в тусе вот в it я на самом деле
9:00
22 года Это мой официальный трудовой стаж работала в очень разных и крупных и не оче компаниях Да ну самые такие
9:07
известные крупные Это от гп Да немецкая компания Ram вот работал в банках таких
9:13
как Абсолют ВТБ Альфа Кто там ещё Зенит рсхб ещё что-то там вот и собственно во
9:21
всех этих компаниях как правило Я специализировался на построени систем мониторинга и логирования ну случалось
9:27
Так что я приходил на проекты и там было плохо с мониторингом и логи поэтому я могу очень много рассказывать вокруг
9:33
всего этого И помимо того что я очень хорошо могу рассказывать про мониторинге логирования я могу писать программы на
9:40
ГО питоне и жава скрипте то есть то есть можно так сказать что разработчик Да ну
9:46
уровень наверное л Да не скажу что я там сеньор разработчик Да потому что
9:52
какие-то вещи я допустим могу не знать Потому что я не занимаюсь коммерческой разработкой Я чисто разрабатываю лы для
9:58
вот когда они нужны значит по проводу нашего вебинара по правилам Значит мы
10:04
активно участвуем то есть не стесняемся пишем в чат любые вопросы даже самые
10:09
глупые это всё приветствуется Это только делает наши вебинары интересней все
10:15
вопросы Я вижу сразу в чате в онлайн отвечаю на них по мере возможности Если есть какие-то вопросы которые не
10:21
касаются сегодняшней темы да то я отвечаю либо на них там сразу либо чуть-чуть попозже В общем все вопросы
10:27
будут отве без внимания как гори не останутся А давайте познакомимся с маршрутом нашего сегодняшнего вебинара
10:34
вначале у нас будет небольшое знакомство поговорим немножко об тусе потом поговорим о потоках и процессах потом
10:40
поговорим как запускаются завершаются программы в этом же моменте будем периодически говорить о сигналах
10:46
межпроцессное взаимодействия и так далее вот а далее мы Познакомимся с командой
10:51
курса немножко расскажу о курсе и программе обучения Как проходит обучение на м курсе Ну и седьмое немножко
10:59
бонусной карьерной информация если честно она будет даже ну посредине лекции тоже будет бонусная Карьерная
11:04
информация там немножко будет от меня про собеседование Вот и в конце мы
11:10
подведём небольшую рефлексию и я вам дополнительно ещё пришлю ссылку на опрос собственно по сегодняшнему вебинара
11:17
чтобы вы смогли ответить что вам понравилось что не понравилось да может быть как-то меня похерить и закидать
11:22
шапками тухлыми яйцами Как говорится оторваться но мне по полной программе чем честнее тем лучше значит а
11:29
пожалуйста пока Я буду рассказывать вам следующий слайд Вы расскажите о себе Как вас зовут Откуда вы ваш опыт работы в it
11:37
И с какой основной целью вы записались на это занятие и какую цель вообще в принципе преследуете да А может быть вы
11:43
даже хотите купить курс или уже покупали какие-то курсы отус и сейчас пришли Просто А на онлайн-версиям
11:59
материал потому что я могу его рассказать совсем поверхностно если у нас в основном здесь все новички сидят да либо очень углубленно если у нас
12:06
здесь сейчас сидят матёры админы вплоть до того как там адреса выделяются в оперативной памяти что
12:12
такое к как он уменьшается увеличивается и так далее Поэтому чем больше вы о себе расскажете тем как бы наше будет занятие
12:19
интереснее значит давайте пока вы пишете о себе я расскажу немножко обсе читс
12:25
специализируется ус на обучении в области it и собственно основная фишка Оса – это продвинутые программы для
12:34
специалистов с опытом и быстрый запуск курсов по новым технологиям что это значит это значит То что
12:41
АС идёт В ногу со временем Если вдруг выходит какая-то новая технология которая начинает применяться в компаниях
12:48
А класса Да это такие как Яндекс Авито там озоны то есть высокотехнологичные
12:54
собственно компании то эта технология включается программу и по этой
13:00
технологии собственно вам в том числе начинают рассказывать какой-то материал
13:05
вот ОТС имеет образовательную лицензию вот поэтому вы сможете получить удостоверение о повышении квалификации и
13:12
диплом о профессиональной подготовке а также сделать налоговы вычет Это тоже я считаю скажем так является неким бонусом
13:20
так я Telegram Сейчас закрою а потом в конце его открою мешать будет неким бонусом да то есть не секрет что многие
13:26
покупают курсы за свои личные деньги Им сделать налого вы и вернуть какую-то
13:33
часть Вот для этого нужна образовательная лицензия у той компанию которой они покупают курсы значит курсы
13:41
которые проводит отус рассчитаны на специалистов разных грейдов то есть ажна то есть от совсем новичка Да
13:47
продвинутых сеньор и допустим там архитект специалистов для лидов команд и
13:53
так Дале дасе направления програмирование истру
13:59
управление име и информационная безопасность значит перед тем как начать
14:07
что есть такое программа и основную нашу часть лекции давайте я зачитаю собственно чат и собственно всех друг с
14:14
другом познакомлю Максим хочу полностью перейти на Linux винды так как считаю Lin более свободным Максим Linux не то
14:21
что более свободным а скам времи зар вы
14:30
получать больше денег ина какой смыс есть такая вот пово когда я
14:35
устраивался в м то человек который проводил со мной Собес Да Денис Ястребов
14:42
он как бы сказал такую вещь Мне нужны люди которые пришли сюда Работать да не
14:47
и зарабатывать деньги а не за интересными программами и за опытом Вот то есть мне нужны люди которые готовы
14:53
работать и зарабатывать деньги потому Эти люди гото ра и зава де задачи будут интересны они будут в
15:00
любом случае развиваться поэтому когда допустим на сох ему говорили что вот зачем ты идёшь в Рамблер Ну я хочу типа
15:07
получать интересные задачи Я хочу там ещё что-то там делать Да новый опыт какой-то получить да тогда Ну в
15:13
большинстве случаев этому кандидату был отказ потому что ну человек пришёл обучаться Да а не работать и
15:19
зарабатывать деньги Так Павел системный инженер 16 лет зашёл для познакомился со
15:24
школой 16 лет в it отлично 12 лет в It 6 лет работа администратором Илья пишет
15:30
Мария Мария из Москвы системный администратора Windows 2005 пользователь Linux де се Хочу уйти в
15:36
администрирование Linux подобных систем иду ищ Ну скорее всего не иду а ищу Где учиться ну Мария учиться нужно
15:42
однозначно в отсе Я до сидите до конца я вам расскажу почему именно Вотс Не
15:48
потому что я здесь там рекламу какую-то Да пытаюсь продвинуть Я просто своим личным опытом поделюсь когда основная
15:53
часть закончится и то есть это мнение просто могут вырезать из основного видео которая будет в записи
15:59
вот чтобы оно не было последи где-то в конце я про него расскажу почему то есть сравню с другими школами это конечно
16:05
наверное не политкорректно запрещено но Мы это сделаем значит Константин системный администратор Linux 4 года так
16:12
Иван Linux более свободный за счёт всего выше свободного времени так 3 п сре на
16:19
собе несколько поплыл на вопросах сигналов Окей Александр System иннер 12
16:25
лет в it ищу курсы по повышению квалификации вам тоже сюда Егор 20 лет
16:30
те за в его на тот момент не было записал на теперь Вот проверяю что в вот
16:38
Москва повысить свои пронавыки нравится живое общение Екатерина написала так Виталий 3 года системным администратором
16:45
хочу углубить знания по линус и уходить от винды ознакомиться со школой в целом Ага Окей Павел будешь учиться
16:53
вже из свого [музыка]
16:59
домика из броса так 3 года Linux Admin расширяя знания разработка 12п Используй
17:05
только Linux хочете подробности 1 год техподдержки погружался в Linux почти с нуля так и Алексей картинку и ведущего
17:12
вижу сигнал при подключении есть но ведущего не слышу от слова совсем так Алексей Ну наверное у вас какие-то
17:18
проблемы потому что все остальные слышат а Попробуйте другой браузер Chrome или обновить его или Яндекс зайти в it с
17:25
2008 года получается 16 лет в линуксе последние 5 лет с утра и до
17:32
вечера как Одержимый так Окей давайте собственно переходить к основной части
17:38
Да и разбираться что же есть такое программа значит А из источника
17:43
Википедии Мы можем взять следующее определение я его зачитаю а потом своими словами расскажу да А если взять вот
17:50
прямо погуглить компьютерная программа то мы увидим два определения комбинация компьютерных инструкций данных
17:55
позволяющая аппаратному обеспечению Вычислите систе выполнять вычисление или функции управления Да и вторая – это
18:03
синтактичен Наго языка программирования и есть небольшая сноска что первое определение соответствует понятию
18:09
исполняемая программа то есть бинарный файл уже да А второе относится к понятию исходный скорее не текст Да я бы сказал
18:15
Исходный код то есть теоретически У нас существует две скажем так вариации
18:20
программы это когда у нас код а уже
18:26
скомпилировать позже тоже поговорим да либо у нас код написан и хранится в виде исходного кода и он у нас выполняется с
18:33
помощью специального интерпретатора коллеги кто может назвать хотя бы ну по
18:38
одному языку программирования в первом и во втором случае когда мы получаем статически или динамически скомпоновано
18:44
бинарный файл и во втором случае когда мы получаем просто текст который мы потом
18:49
интерпретируем и есть ещё исключение кстати отлично Ну я так понимаю к перво
18:56
c+ ко второ по второму питон отлично Руби Python Да да да ну го Баш
19:05
Да а исключение есть которые туда и туда
19:11
относится можете назвать есть такой вот язык даже несколько не не
19:17
1С assem Нет assem – Это у нас всё-таки компилируемые история Ну
19:25
нет запись вебинара да будет JS близко но нет Del Нет ну самое популярное вы
19:34
что ребята в банках вообще активно используется Java во Вадим правильно всё верно Java
19:39
elixir это три вещи которые запускаются на собственно своих машинах скажем так
19:46
Java машина Ну Java на Java машине Эликсир на Эликсир машине Да на машине
19:52
то есть там есть некий некая скажем прослойка между операционной системой и кодом то есть там код
19:59
То есть он компилируется в код для этой скажем так машины Ну CSP на dnet Ну
20:05
похожая история но мы не говорим сейчас о винде мы сейчас говорим больше всё-таки о линуксе вот Хотя Даша на
20:11
винде и вообще в принципе dotnet – это та же самая история что-то типа CP он Изначально и делался как Java кстати
20:17
Microsoft поняла что плохая идея И решила Всё своё начать переписывать шапов на ust ust им больше понравился и
20:25
они кстати активно контрит В вот Поэтому да вот у нас есть как бы и такие
20:33
такие дадада Сергей Вы всё правильно пишете что Java не компилируется под операционную систему она компилируется
20:40
под Java машину и является некой прослойкой то есть у вас есть Java машина которая работает на определённой
20:45
системе архитектуре а под эту Java машину компилируется Java код соответственно один раз скомпилированный
20:50
Java код Может запуститься на любой архитектуре и системе и такая идея была
20:55
очень актуальна 20 лет назад когда Да компьютеры развивались очень быстро языки программирования тоже развивались
21:02
очень быстро программисты не успевали на них учиться а бизнесу нужны были программисты чтобы писать программы
21:08
соответственно тогда выстрелила Java которая Представила вот такую вот модель потому что программисты учились только
21:14
две да и была какая-то кор Team команда которая разрабатывала Java машину и Код Этот запускался таким образом
21:20
программистам не нужно было много и быстро сильно переучиваться они всё время писали код под одну и ту же скажем
21:26
так архитектуру да Дальше он уже как-то где-то сся вот сейчас такая парадигма
21:31
считается скорее злом чем добром Да и сейчас больше ценятся программисты которые умеют писать архитектурно
21:38
зависимый код то есть а го разработчики СТ разработчики C разработчики c+ Plus
21:44
разработчики они ценятся гораздо выше чем самые крутые двист вот как бы вот так Ладно продолжаем значит дальше да
21:51
Давайте теперь поговорим о программе для нас как для инженера мы всё-таки больше здесь инженеры а не программисты и
21:57
поэтому нас интересует то как её видим Мы то есть программа для нас это некий файл на файловой системе
22:04
операционной системы в данном случае у нас Linux который мы можем запустить каким-либо образом то есть неважно это
22:11
Java машина либо это Python скрипт какой-то Да с помощью Python мы запускаем его вот то есть мы получается
22:17
прибегаем к помощью виртуальной машине либо интерпретатора или же непосредственного запуска в том случае
22:23
если наш файл является бинарным и собран конкретно под конкретную архитектуру и
22:28
конкретную операционную систему ну как не называя программистов
22:35
они всё равно будут программисты вот в результате запуска программы у нас появляется процесс исполнения
22:42
программного кода то есть в ядре появляется некая сущность которая называется процесс и этот процесс
22:49
выполняет тот программный код который был каким-либо образом записан в этот файл то есть в виде текста если это у
22:56
нас интерпретируемые да либо пред
23:05
[музыка]
23:13
компилировать коллеги Есть ли вопросы по поводу того что такое программа в нашем понимании то есть без этого дальше у нас
23:20
как будет трудно обща эдения сго
23:28
как выяснилось есть совсем прям нулевые с нуля начинающие и для них как бы это
23:34
очень важно Вот поэтому вы Уж кто совсем это всё знает Вы уж извиняйте Да что это было добавлено ну нужно для общего так
23:40
сказать приведения знаменателя чтобы все понимали О чём идёт речь так вот в результате того что мы запустили программу у нас появляется процесс и
23:47
Давайте поговорим более подробно что же есть процесс в линуксе значит процесс – это скажем так основополагающая
23:54
абстракция операционной систе семейства сда тоже входит дефакто Это программа
24:01
хранящаяся на каком-либо носителе информации которая находится в состоянии выполнения Какие бывают ещё состояния мы
24:09
рассмотрим чуточку позже сейчас мы понимаем что процесс – это просто программа которая находится в состоянии
24:16
выполнения что включает в себя процесс процесс включает в себя открытые файлы
24:22
сигналы ожидающей обработки внутренние данные ядра состояние процессора адресное пространство пам в которой
24:29
отображается один или несколько объектов один или несколько потоков выполнения кода сегмент данной программы и
24:36
собственно содержит глобальные переменные это всё содержится в процессе Почему Сейчас узнаем значит процесс –
24:43
это живое результат выполнения программного кода которым прозрачно и эффективно управляет ядро для
24:50
взаимодействия с пользователем устройствами и операционной системой для того чтобы эффективно управлять нашими
24:56
процессами в ядре существует механизм так который называется а планировщик
25:03
задач да Или по-другому а скажем так менеджер процессов или
25:08
можно так сказать что есть механизм а конкуренции да некой Вот соответственно Linux считается а операционной системой
25:16
не реального времени а скажем так конкурентной многозадачности то есть ядро Linux посредством планировщика
25:24
старается дать всем программам поработать одинаковое время при условии
25:29
что у них у всех одинаковый приоритет выполнения приоритет выполнения или по-другому в линуксе называется эта
25:35
штука най мы можем либо повышать либо понижать соответственно программы с большим приоритетом получают больше
25:42
процессорного времени программы с меньшим приоритетом получают Меньше процессорного времени всё это нужно для
25:49
того когда у нас система находится под высокой нагрузкой соответственно дефолт
25:54
установленный дистрибутив и дефолт расставленные скажем так
26:00
администраторов высоконагруженных систем не всегда скажем так устраивают и
26:05
поэтому допустим в угодах тюнинга производительности каким-то скажем так
26:11
функциям в том числе и операционной системы даётся больше приоритет каким-то даётся меньше приоритет сделан Это для
26:18
того чтобы основной процесс который у нас находится под нагрузкой получал больше скажем так процессорного времени
26:24
и успел выполнить больше рабо да чем остальные процессы которые
26:30
находятся у нас в системе То есть если допустим это у нас какой-нибудь Пограничный балансировщик который
26:36
принимает трафик на весь цод да под цдо я понимаю ну не конкретное здание Да И
26:42
вот всё что там находится Да а предполагаю что у нас есть проект который разнесённая
26:58
вот а записи у нас допустим смотрят на два IP например о IP у нас смотрит в о
27:06
Второй I у нас смотрит там в другой цот Да этот IP например может быть плавающим
27:11
между двумя этими балансира Вот соответственно там у нас тоже могут быть
27:17
разные схемы или Не суть важно да и собственно Вот это баланси который
27:23
принимает Рафик он может быть достаточно под большой нагрузкой
27:28
обработать весь входящий на него трафик даже когда его ддосят соответственно мы условно если у нас там крутится в
27:35
качестве веб-сервера мы можем Иу повысить приоритет исполнения а всем остальным процессам понизить приоритет
27:40
исполнения каким процессом например ssh да де SS мы можем ему сделать более
27:46
низкий приоритет то есть в случае высокой нагрузки у нас будут проблемы подключения по SS к этому узлу Но с
27:52
другой стороны трафик мы будем обрабатывать более активно так на отвечаю на вопросы до конве обработки
27:58
команд процессором будем опускаться до конвейер обработки команд скорее всего не будем опускаться потому что на
28:04
архитектуре x86 это делается одним образом на и архитектуре Арм это делается совсем
28:11
по-другому там более уреза на архитектуре Арм меньше регистров общего назначения там по-другому всё работает
28:16
со стеком и так далее так Мария Как бороться с низко приоритетными таска от
28:22
выполнения которых зависит что-то ценное банальное повышать паритет Да Мария всё правильно Если а ваша таска делает
28:29
что-то ценное то тогда она не должна быть низко приоритетной Вот повышайте ей приоритет пусть она работает гораздо
28:35
чаще так продолжаем значит А есть такое понятие как контекст
28:41
процесса да Давайте немножко об этом поговорим самой важной частью процесса является программный код Ну это логично
28:47
вот считываемый из какого-то файла этот код выполняется в адресном пространстве
28:54
процесса обычно выполнение программ происходит в пространстве пользователя
28:59
но когда в программе возникает исключительная ситуация я сейчас говорю о стектрейс да то есть когда у нас
29:05
программа падает с необработанной ошибкой мы вываливается с какой-то трассировкой и так далее это вот есть
29:11
исключительная ситуация или вызов системной функции то программа начинает работать в пространстве ядра при выходе
29:17
из пространства ядра программа продолжает работать в пространстве пользователя если в это время не появляется готовый к выполнению более
29:24
приоритетный процесс в таком случае управление передаётся не программе а планировщик линуса Ну или юкса который
29:30
выбирает для выполнения наиболее приоритетный процесс Давайте теперь русским языком что здесь такого я
29:36
зачитал смотрите то есть вся суть работы программы сводится к двум вещам первое
29:41
работа бизнес логики в режиме пользователя и работа с операционной системой То есть это драйвера устройства
29:48
железо какое-то ещё что-то там в режиме ядра то есть вызов допустим системных
29:54
функций да либо когда мы падаем там с трассировкой тогда включается некий режим отладки и тогда у нас вываливается
30:00
отладочная информация соответственно в консоль вот что это значит То есть
30:06
де-факто мы можем сказать Что программа работает следующим образом то есть она работает бизнес логика и дёргание си
30:12
сколов на этом как бы всё всем спасибо можем расходиться шучу Вот то есть смотрите если взять средне
30:18
статистическую программу то она э выглядит следующим образом у нас есть например какой-нибудь веб-сервис который
30:25
принимает какой-нибудь трафик например с нашего фронтенда на этом фронтенде есть форма заполнения условно кредитной
30:31
заявки вы заполняете например какие-то данные да фамилия имя отчество и сумму
30:37
кредита который вы хотите взять нажимаете кнопочку там типа получить кредит Да и вам говорят что ваша заявка
30:44
принята и в общем-то ждите её одобрения Что происходит в этот момент в этот момент фронтенд отправил запрос на Банд
30:50
Да и Банд начинает его принимать Вот в тот момент когда он его принимает Когда
30:55
происходит взаимодействие с с Так ну совсем простыми словами с сетью Да когда вот он слушает трафик из сети то есть
31:02
открыт соке он из этого сокета начинает читать в этот момент программа работает в режим ядра потому что всё
31:08
взаимодействие с ядром и с драйверами и с устройствами которые находятся у нас внутри сервера Да оно происходит через
31:15
ядро оно происходит в защищённом так называемом режиме Да и работает в пространстве ядра вот как только оно
31:22
получило весь сетевой трафик да Ну например там набор байт и приложение Наше понимает что этот набор это на
31:28
самом деле Ну какой-то джисон да в котором написано там допустим это First
31:33
name Last name midn и потом допустим аут – это сумма Да он понимает что вот эти
31:39
данные нужно нам метом сейчас как-то обработать занести в базу в этот момент программа переключается из режима ядра в
31:46
режим пользователя потому что ей не нужно привилегированный доступ к устройствам ей не нужен привилегированный доступ к ядру ей не
31:52
нужно ничего дополнительно там вызывать ей не нужно работать с процессором и с
31:57
его там потоком команд в каком-то там режиме защищенном да Для того чтобы получить какие-то определённые Функции
32:02
там начинает работать простая бизнес логика Понятное дело что она выполняется На том же самом процессоре там
32:08
по-разному устанавливаются регистр этого процессора Да если говорить уже на совсем низком уровне там начинается
32:15
поток выполнения вот этих вот команд Да но всё что там происходит там к примеру может происходить что мы вот берём
32:20
фамилия имя общество как-то складываем обрабатываем переходим в Верхний нижний регистр В общем какие-то действия
32:26
которые не связаны с действуем с железом Да с какими-то драйверами с сетью Там и
32:31
так далее И как только мы эти данные каким-то образом обработали реализовали нам эти данные Например нужно сохранить
32:37
например в базу данных в этот момент программа переключается на режим работы в ядре и собственно происходит открытие
32:44
сокета сетевой вызов соединение к серверу баз данных передача данных по
32:49
сети Ну точнее вот в этот открытый сот Да этот сот там потом посредством сетевого драйвера формирует пакеты
32:57
сетевые и эти пакеты отправляются там на сетевую карту сетевая карта их отправляет дальше в сеть вот как только
33:02
она закончила передачу данных по сети она собственно опять начинает работать скажем так в режиме пользователя так вот
33:09
в тот момент когда она выходит из режима ядра То есть когда допустим она
33:14
сделала отправку пакета да Или принятие пакета в этот момент собственно программа может
33:22
продолжить работать в пространстве пользователя только в том случае если планировщик не увидит что У нас есть
33:28
более высокий приоритетный процесс который сейчас хочет выполниться да готовы к выполнению а готовы к
33:35
выполнению не обязательно на уровне ядра да Но даже на уровне пользователя То есть если такой процесс У нас есть то в
33:41
момент выхода из режима ядра у нас будет происходить переключение контекста То есть если допустим кто работал с
33:47
мониторинговый системами какими-то поставьте плюсик в чат например закс прометеус вот такие
33:55
есть вот эти ребята могли видеть такой параметр как переключение контекста или контекст свитчинг и там циферка
34:02
постоянно бежит вот собственно этот контекст свитчинг – это как раз вот и есть та самая история Когда наш
34:08
работающий программный код выходит из режима ядра и в этот момент Может происходить переключение контекста Что
34:14
это значит То есть у нас есть один процесс и его контекст а планировщик
34:20
увидел что этот процесс у нас поработал и Он увидит что у нас есть другой процесс который готов к запуску он
34:25
переключает этот контекст на другой процесс по-другому устанавливает регистры флаги всякое разное подгружает
34:31
там его память ещё что-то там делает да и передаёт этот код на исполнение процессору Вот вот этот контекст свинг –
34:37
это вот как раз та самая Метрика и есть которую мы можем видеть соответственно Когда у нас м мы видим большие цифры по
34:43
контекст свитчинг это означает только то что у нас очень много на нашей системе процессов которые готовы к запуску
34:49
которые выполняются и у нас очень часто переключается как бы с одного А собственно процесса на другой вся э
34:57
штука может решаться путём жёсткой прибив скажем так наших потоков
35:03
выполнения конкретному цпо в
35:15
гошкевича иногда бывает так что в некоторых задачах виртуальные ядра работают быстрее физических иногда
35:21
бывает так что физические ядра работают быстрее виртуальных всё это зависит как раз от контекста исполнения Какие вещи
35:27
мы делаем вот и собственно системные программисты которые стоят дороже чем
35:32
любые обычные банчи они всё это дело знают они знают Как прибивать процессы конкретным ядром и
35:39
куда лучше прибивать и как устанавливаться директивы эти кому интересно Напомните мне про это я скину
35:44
классную книжку по го где рассказано как это делается Ну в контексте го Там директивы похожие на си поэтому я думаю
35:51
си ишни ков и плюсов будет плюс-минус также Вот книгу Да я скину в конце Напомните мне просто про неё
35:58
Потому что если я сейчас начну отвлекаться на книги то я забуду То что я вам хотел сегодня рассказать коллеги А
36:03
есть ли вопросы по тому что такой процесс по его контексту выполнения и так далее если вопросы есть задавайте
36:09
если нет ставьте минуси я пока начну следующий слайди листать значит вы
36:15
слышали такое понятие как поток Да и я его уже тоже упоминал что у нас в результате запуска программы появляется
36:21
некий процесс да и у этого процесса могут быть потоки выполнения Давайте поговорим о том же что это такое да
36:28
то есть потоки представляют обекты из себя некого программного кода который выполняет определенные действия внутри
36:35
нашего процесса в каждом из потоков содержится уникальный счётчик команд к команд и набор регистров процессора Ну
36:41
помимо того что у него есть там так называемая разделяемая память стек и так
36:47
далее и так далее коллеги А кто ещё может дать определение потока может быть кто-то изгот
36:56
дава собеседовани И вам зададут вопрос Что такое поток Сейчас мы посмотрим есть ли среди А нас такие люди которые знают
37:04
ошибочное определение потому что следующий слайд как раз будет про это То есть Вы наверняка это слышали и
37:11
наверняка это даже говорили Давайте если нет предположений поставьте восклицательный знак о ДД вы совершенно
37:18
правы лёгкий процесс я вас поздравляю Вы один из тех кто знает неправильное
37:25
определение вот а значит давайте по поводу лёгких процессов мы с вами
37:30
поговорим это вот будет буквально чуть-чуть смотрите благодаря потокам появляется возможность выполнения
37:36
нескольких команд в общем адресном пространстве Да соответственно появляется у наш меж процессная
37:43
взаимодействия и потоки совместно используют открытые файлы и другие ресурсы операционной системы позволяют
37:49
реализовывать режим одновременного выполнения программ и обеспечивает истинный параллелизм в многопроцессорных
37:54
системах Антон пишет слушаю понимаю что я
38:01
несколько тупой да как с этим бороться с этим бороться бесполезно потому что я больше чем уверен что сейчас кто-то из
38:07
вас насчёт мне рассказывать какую-нибудь тему в которой я тоже ничего не буду понимать и буду пипец тупым а
38:13
иллюстрации не хватает Ну очень сложно подобрать иллюстрацию вот под этот слайд да под поток Ну не знаю какую здесь
38:20
иллюстрацию можно подобрать Вот вы Кстати это отметьте потом по ссылке на вопрос что вам не
38:26
хватило иллюстрация чуть позже будут эти иллюстрации сейчас пока у нас определения идут поэтому нам тут не до
38:31
иллюстраций значит давайте теперь сравним процесс в поток и помним про определение лёгкий процесс который дал
38:38
Дмитрий Значит кто у нас в главе Ну главнее в системе поток или процесс
38:43
важно понимать что планировщик дра управляет отдельными потоками выполнения а не как ошибочно думают процессами то
38:51
есть де-факто планировщик ядра у нас выполняет потоком выполнения То есть у нас может быть один физический процесс у
38:57
этого физического процесса может быть 28 потоков и у вас примерно 28 ядер вы все
39:03
28 потоков прибили на 28 ядер в вашей системе и планировщик будет периодически
39:08
снимать один из потоков с одного ядра ставить на него другой какой-то например
39:14
системный процесс и потом этот поток ставить обратно на это же ядро вот для
39:19
выполнения Вот соответственно процес у нас всего один да а потоков 28 управлять
39:25
он будет именно потоками каждый процесс содержал только один поток это до появления многоядерных
39:32
и многопоточный ну скажем так процессоров То есть у нас был один поток и один поток выполнения один процесс но
39:38
с приходом многоядерных и многопоточный процессоров современные программы стали все многопоточные но по-прежнему могут
39:44
иметь всего лишь один процесс очень часто всякие Руби пайтон и так далее и всякие джавы бывают однопоточный
39:53
многопоточность заявлена но разработчики пишут однопоточный код вот а как
39:58
значение приоритета процесса распространяется на его потоке Ну смотрите поток и процесс вот
40:04
это чуть позже будет я забегаю Вперёд для линуса это одно и тоже вот то есть и поток и процесс это всё одинаково они
40:11
чуть-чуть отличаются только структуры ядра вот прям буквально чуть-чуть вот там есть такая структура мы об этом чуть
40:18
дальше будем говорить поэтому
40:27
есть потоки А в контексте линуса процесс и поток это всё одно и тоже поэтому как бы он смотрит что есть процесс который
40:34
должен сейчас выполниться дай-ка я сниму у текущего процесса один из потоков с одного ядра Вот примерно это так будет
40:41
нет нас вы устанавливаете на процесс да но из-за того что допустим у нас многопроцессорная система и
40:47
многопоточные у нас приложение мы запустили на тиво допустим ядрах поэтому
40:52
из-за того что у нас там 28 ядер то только на одном из них [музыка]
40:59
планировщик снимет наш поток выполнения Да на следующем ядре возможно что допустим может получиться Так что п ядер
41:06
освободится Да а остальные допустим 23 будут выполнять потоки нашего
41:12
процесса в момент смены потока контекст переключается Да контекст будет переключаться в момент смены потока
41:18
потому что что поток что процесс это одно и тоже Конте
41:27
перек контекст потому что ну мы выполняли сначала одни инструкции Да теперь нам нужно выполнить другие инструкции поэтому в этот момент
41:33
происходит переключение контекста Так давайте реализация потока и процесса в линуксе сейчас Готовьте сейчас будет
41:39
усложняться в современном линуксе нет никакой разницы между потоком и процессом я это уже сказал поток в Linux
41:45

это специализированный тип процесса который имеет свою структуру та совместно использует адресное
41:51
пространство с другими процессами временны проце предусматривают нах ресурсов
41:58
и виртуальной памяти потоки располагаются в общей виртуальной памяти процесса Но каждый из них выполняется на
42:04
собственном виртуальном процессоре Что это значит То есть благодаря тому что у нас появляется конкурентная
42:10
многозадачность благодаря тому что у нас операционная система может работать
42:17
ВНО приоритете многозадачности мы получается следующим образом
42:23
агии ирем процессоров и все наши потоки vs
42:30
там процессы Да они видят виртуальные ресурсы То есть никто напрямую не может обратиться к цпу Может конечно там
42:37
низкоуровневые всякими фика Да в cfg это реально сделать во всяких панах это уже
42:42
там сложнее да Нужно будет вызывать там ассемблерные вставки и там выполнять небезопасный код скажем так вот
42:49
соответственно все программы видят у нас виртуальный процессор и виртуальную память и с этими виртуальными ресурсами
42:56
каким-либо образом взаимодействует по поводу а тарак а это как раз та
43:02
структура в которой будут содержаться а различные метаданные по конкретному процессу то есть его адресное
43:09
пространство откуда оно докуда начинается то есть будет э некий пул
43:14
виртуальной памяти которая будет мапи физические адреса на физической памяти либо это допустим в ядре будет помечено
43:21
что эта физическая область памяти сейчас занята другим процессом а его область памяти допустим находится в сво если у
43:27
вас памяти мало Да и swop включен swop файл так называемый вот помимо этого там
43:32
будет
43:38
забинтованный и так далее там же будут храниться а всякие разные указатели на
43:43
вся на всякие дополнительные ресурсы а файловые дескрипторы открытые много
43:49
много много всего и всё это будет храниться А на файловой системе в по
43:54
адресу там СП да то есть виртуальная файловая система который вот это вот всё хранится это как раз вот там хранятся
43:59
структуры ядра там очень много всего интересного будет располагаться информация о конкретном процессе или
44:06
потоке выполнения это мы чуть попозже в конце посмотрим так вот по поводу
44:12
легковесный потоки Да люди ошибочно считают что потоки – это легковесные
44:18
процессы как вот наш многоуважаемый Кога [музыка]
44:27
что это гй процесс да что это лёгкие процесс или процессы с быстрым переключением контекста Но на самом деле
44:32
это не так в Linux переключение контекста и так происходит очень быстро то есть оно происходит очень часто и
44:38
очень быстро потому что КС пропагандирует скажем так планировщик Да который имеет приоритет равной
44:47
многозадачности да то есть всем процессам дать одинаковое процессорное время вот а указана высшая идея
44:53
принадлежит как раз так и семейству Windows где предусмотрено специально реализация в ядре поддержки
44:59
многопоточности в этом контексте поток – это точно такая же абстракция как и процесс но которая очень сильно
45:06
отличается которая обеспечивает облегчённые с точки зрения выполнения блоки кода по сравнению с обычными
45:11
тяжеловесными процессами то есть там даже треды по-другому немножко запускаются и по-другому они выглядят то
45:17
есть там когда пишется Виндой код и компилируется он в бинарный вот те вещи которые должны выполниться скажем так в
45:23
виде потока они оборачиваются в некую фун и там вот прямо маленький кусочек кода который быстро выполняется Да
45:31
почему это так сейчас узнаем дальше в семействе Windows многопоточный процесс будет иметь дескриптор процесса то есть
45:38
точно так же как в линуксе У нас есть дескриптор процесса который говорит что ну то есть этот pid да по которому мы
45:43
можем обратиться к нему который будет содержать в себе ссылки на все исполняемые потоки то есть в случае
45:50
линуса у нас будет грубо говоря сейчас Извините в нос что-то попало тся
45:57
вот так будет лучше значит некий дескриптор в котором будут ссылки на все его так скажем так потоки также в этом
46:05
дескрипторы будут описаны все совместные ресурсы такие как открытые файлы адресное пространство для совместного
46:11
взаимодействия и в дескриптора потока будут описаны ресурсы принадлежащие только этому потоку давайте я сейчас
46:17
немножко порисуй здесь специально нет заготовленной картинки для того чтобы мы всё это дело лучше поняли я перейду на
46:32
здесь вот у нас что-то тут такое с предыдущих история осталась да давайте вот сюда подвинул и нарисую вот такую
46:39
вот историю Вот это у меня будет не лист А это будет у меня М процес это
46:47
А М давайте
46:55
поте о
47:10
2 3 Так здесь
47:16
сейчас 3 так не переживайте я здесь покрупнее чуть попозже сделаю сейчас я сам нарисую сперва Да И вот у меня
47:23
непосредственно пошли треды да где это у
47:30
нас вот получается у нас о и здесь у нас значит идёт ссылка
47:39
допустим FD
47:45
мем Ну и и что-то там другое всё описывать не будем нам вот этого достаточно будет
47:51
2Т 1Д вот так ит
47:58
ит здесь сделаем Да чтоб
48:06
тебя здесь сделаем два здесь сделаем
48:13
три ровняю Вот так и Тепа стрелочку нарисую сюда
48:28
сюда и сюда Так давайте я сейчас увеличу на
48:35
150% вот так коллеги Хорошо ли вам видно вот эту картинку Давайте 200
48:44
сделаю поставьте плюсик в чат если вам хорошо видно
48:53
картинку Так давайте т т чит смотрите это винда в винде У нас
49:00
есть головной процесс и он у нас неожиданно стал многопоточный и в этом
49:06
головном процессе помимо основных структур данных которые нужны для того чтобы процесс работал там всякие
49:11
заголовки и так далее там адресы памяти там на каком пу исполнятся и так далее У него есть указатели на его потоки
49:18
выполнения на треды 1 2 3 У каждого есть набо сфп
49:26
фай это может быть один и тот же файл но везде он может быть с разным номером и так далее Потому что они у нас то есть в
49:33
виндоусе это скажем так независимые истории реализовано Так что у трейдов
49:39
нет ничего общего то есть у них нет общего скажем так общей памяти Да вот
49:45
как таковой то есть там есть какие-то ресурсы Да но они как бы каждый поток
49:50
работает со своей как бы со своим кусочком памяти своими ресурсами на своём как бы цпу да
50:00
вот смести выполнения на будет следующая история то есть едро
50:07
планировщик винса пойдёт прочитает
50:13
таблицу рут основного головного процессора Найт
50:19
по на
50:25
допусти Где в памяти лежит исполняемый кусок кода загрузит его и передаст саму управление Да процесс изолированы друг
50:32
от друга Каждому процессору валяет своё адресное пространство Да всё Совершенно верно я про это только что и сказал что видите они у нас не вместе они по
50:39
отдельности Вот соответственно этот процесс достаточно долгий потому что нужно пойти сначала в одну структуру там
50:44
найти потом пойти в другую структуру там загрузить поставить поменять память нужно будет загрузить всю память которая
50:52
нужна вот этому реду эту соответственно выгрузить и так далее и так далее В результате получается что один и тот же
50:58
код который рос платформе написан Вы можете это просто попробовать взять а Наго написать какой-то кусок кода
51:05
который допустим там считает числа фибоначи скомпилировать его под Windows скомпилировать его под Linux запустить
51:11
его скажем так под строенный бенчмарком Гош и посмотреть где он быстрее выполнится Вот вы очень сильно удивитесь
51:16
что на одном и том же железе Да на одном и том же компьютере на линуксе код будет выполняться по-другому почему сейчас мы
51:22
как раз поймём Почему так вот почему это происходит вот
51:28
потому что в линуксе многопоточная программа имеет только Ну имеет столько так называемых структур сколько потоков
51:35
выполнения эта структура настроена таким образом чтобы эти процессы могли использовать совместно некоторые ресурсы
51:42
Поэтому в Linux Программа запускается быстрее и работают тоже здесь мы плавно подвига к такому механизму C on Кто
51:49
знает что-то про ко поставьте плюсик в
51:55
чат у Отлично вот так вот благодаря
52:03
этому механизму происходит Следующая история из-за того что если мы сейчас допустим у
52:11
нас двух ядерная система у нас очень много есть процессов готовых к выполнению и получилось так что на одном
52:19
ядре Мы хотим запустить другой поток того же самого скажем так приложения Да
52:24
изза того что у на есть рак который настроен Так что мы используем некую
52:30
Memory Что такое C сейчас мы к этому подойдём это через пару слайдов будет не
52:36
переживайте так вот за счёт того что у них есть общая память ядро видит что
52:43
этот поток выполнения будет обращаться к тому же адресному пространству соответственно ему не нужно будет а
52:49
дополнительно там перегружать память и так далее и так далее да соответственно в линуксе это одна и та же структура то
52:56
есть поток и процесс – это одно и то же структура одинаковая соответственно чтобы выполнить в ней поиск Ну не нужно
53:02
открывать две структуры и по ним там итерироваться да это сделать гораздо проще чем в винде поэтому и программы
53:07
работают собственно быстрее значит Далее в системе может существовать
53:14
несколько процессов которые выполняют одну и ту же программу Но это как бы логично То есть если у нас Э примерно
53:20
есть какая-то программа у нас многопользовательская система и два разных пользователя запустили одну и ту
53:26
же программу это вполне как бы Окей Да Под разными пользователями Да даже под одним и тем же пользователям нам Никто
53:33
не запрещает запустить там три копии редактора например да или там три копии редактора нано Или допустим несколько
53:40
копий MN командера также может существовать несколько процессов которые используют одни и те же ресурсы такие
53:46
как открытые файлы адресное пространство и так далее и так далее почему так происходит буде узнавать ближе и ближе
53:52
будем похо ме Как выглядит та структ которой я
53:58
говорил да то есть это скажем так можно простыми словами сказать что это таблица
54:04
которая называется тарак в этой таблице очень-очень много различных полей и
54:10
соответственно на каждый процесс создаётся Вот такая вот таблица Да в
54:15
которой много заполненных полей что в этой структуре содержится в ней содержится список процессов в ядре в
54:22
виде двух связанного списка который называется списком задач Каждый элемент списка описывает один запущенный процесс
54:28
называется дескриптора процесса дескриптор процесс содержит всю информацию об определённом процессе То
54:33
есть у нас вот здесь есть различные поля Да И вот там есть Питт Да там Пит и так
54:40
далее Всё это связано почему это связаный список А сейчас мы тоже это узнаем в линуксе Программа запускается
54:47
не просто так а с помощью определённого вызова системного который нам собственно
54:53
копирует текущий процесс да а потом заместо него с помощью вызова EX загружает туда Исходный код который мы
55:00
бы хотели выполнить вот поэтому Когда у нас делается форк Мы знаем от какого
55:06
дочернего процесса мы
55:20
форклифт идентификатор Pit то есть проце инфи расшифровывается то есть
55:25
представляе собой целое число для совместимости со старыми версиями ядра это число ограничено значение 32768 Это
55:33
означает что больше чем 32.768 процессов на дефолтной операционной системе Linux дефолтная
55:39
инсталляции у вас запустить не получится собственно этот тип
55:44
имеет тип данных у этого значит поля имеет Short int Да но пожеланию его
55:50
можно увеличить до 4 млн для этого нужно отредактировать файлик в исходном коде
55:57
ядра Linux trs Да и пересобрать ядро но есть лайфхак который позволяет это сделать без пересборка
56:12
Он попытается запуститься а он захочет получить вот этот вот Пит больше 32.000
56:18
и не сможет это сделать И будет крашиться Да если нам поддерживает такой софт не нужен а как правило В
56:24
современных ре реалиях нам какой софт поддерживать не нужно Если вы уже работаете там с нй выше там шестой даже
56:30
пятой версии если CentOS 5 или CentOS 6 или CentOS 7 вам 100% это уже не нужно
56:35
соответственно мы можем эту фичу исправить на литу как я уже говорил есть некая файловая система про в которой
56:41
хранится очень много всего интересного Да и в том числе информация о запущенном ядре запущенной системе и о всех
56:47
процессах так вот по пути sis pmax а лежит чисел эту чисел мы можем поправить
56:55
вот и собственно и увеличить количество возможных процессов зачем это один из
57:02
параметров который тют на высоконагруженных системах вот которые работают с большим объёмах данных
57:08
Например если у нас есть какое-то сетевое приложение Да многопоточная которые на каждый запрос открывает
57:15
соединение там с базой данных или ещё с чем-нибудь да Или что-то пытается сделать получить отправить знаю там на
57:22
принтере Распечатать и так далее В общем отдельный поток выполнения что нам таких потоков у нас будет
57:28
очень-очень много потоки мы вспоминаем это те же самые процессы соответственно
57:33
они точно также нумеруется так как их может быть больше чем 32.000 Да если мы под нагрузкой то нам вот этот параметр
57:40
нужно будет затюнить и тогда мы можем собственно запускать высоконагруженные многопоточные приложения и не париться о
57:47
том что мы не сможем обработать трафик только потому что мы не сможем создать новую структуру в ядре Да и
57:53
запустить процесс вот значит коллеги Есть ли вопросы по этой
58:00
части потому что дальше сейчас будем ещё больше
58:05
усложняться Угу отлично значит мы коротко резюмируем мы определили что
58:11
потоки процесса – это плюс-минус одно и то же вот а когда они запускаются создаётся некая структура это связанный
58:18
список в котором хранится много всякой разной информации в том числе так называемый Пит процессор идентификатор с
58:24
которым мы можем как-то поработать это процесс Дефо достигает 32000 Но мы его
58:30
можем увеличить либо перебрав ядро либо поправив одну определенную чисел в структурах
58:36
ядра хранится Да в памяти Совершенно верно это виртуальная файловая система хранится она в
58:42
памяти Но несмотря на это она у нас может быть
58:48
и значит давайте теперь говорить Том дит запу про запу проко про
58:56
Она работает примерно разобрались Как же она теперь запускается в нашей операционной системе а зарождение жизни
59:02
у нас происходит следующим образом а процесс начинается своё существование с момента Ну с момента его создания То
59:09
есть как его создать а создать его можно в результате вызова системной функции у
59:15
системной функции ещё есть дополнительные функции синонимы которые принимает несколько другой набор
59:21
аргументов Да но в результате они всё делают одно и тоже то есть вызов C for
59:28
делает собственно копию текущего процесса Да он берёт текущий процесс
59:33
делает его копию то есть переносит все туда структуры всев данные всв меняет
59:39
Там только А собственно чисел эту Пит Да оставляет parent Pit parent Пит у нас
59:45
становится пи дом текущего процесса после чего у нас происходит вызов EX или EX ещё там всякие разные
59:53
это как раз тот вызов который загружает основной код программы с диска подменяет этот код а то есть у нас был запущен код
1:00:01
предыдущего процесса у нас подменяется он на загруженной И после этого ему передаётся управление вот собственно
1:00:08
процесс который у нас вызвал ФРГ называется родительским а ВНО созданный процесс называется дочерним то есть
1:00:14
получается у нас есть parent и chd родительский процесс после вызова Fork продолжает свою работу а дочерние
1:00:20
начинает работать с одного и того же места а именно с момента возврата системной функции Ford а если родитель
1:00:26
нит А я без разницы хоть не нит хоть кто то есть в любом случае у нас происходит
1:00:33
Следующая история какой бы процесс бы ни был То есть первый процесс который запускает какой-то следующий процесс то
1:00:38
для запущенного вновь процесса он будет родительским да А тот который он запустил будет для него дочерним то есть
1:00:44
в результате возврата ифр выполняется А из ядра у нас дважды один раз в
1:00:49
родинском а второй раз в дочернем процессе Вот значит как это всё выглядит
1:00:56
более подробно да В современных ядрах Linux у нас for реализована через некую функцию лон то есть уже for заменена на
1:01:02
функцию лон Я говорю о ядрах там Пятая версии четвёртая пятая шестая версия ядра вот после вызова р и разветвления
1:01:10
процессов нам нужно выполнить программный код И для этого используется функция EX которой я тоже уже говорил эта функция позволяет создать новое
1:01:16
адресное пространство и загрузить него исполняемое программу но адресное пространство создаётся не всегда Да
1:01:24
поэтому мы сечас перейм механизм котом я говорил это то что позволяет запускать программу быстрее то
1:01:30
есть инженеры которые Рава яро подумали придумали получилась эта штука да Значит
1:01:37
ранее при вызове делается дубликат всех ресурсов родительского процесса и
1:01:42
передавался дочернему на этом этапе процесса Ничем не отличается кроме и у дочернего процесса появляется параметр
1:01:55
код неэффективен так как копирует множество данных то есть старые версии ядра до версии 2 по-моему 17 или даже
1:02:03
216 делали что то есть иногда вот люди путаются да то есть на собеседованиях спрашивают А что делает РК это когда Ну
1:02:09
уже такие хардкорные собеседования и типа раньше ФРК делал копию дубликат всех ресурсов То есть у нас было
1:02:16
допустим там а условно какой-то адресное пространство в которое были загружены
1:02:21
какие-то данные вызов for брал это адресное пространство копировал на новое место
1:02:27
помел Откуда начинается адресное пространство нового процесса и так далее и так далее сейчас Так не делается
1:02:33
сейчас работает по-другому Собственно как сейчас работает сейчас работает с
1:02:38
помощью механизма C on то есть Поэтому в современных вызовах при вызове функции
1:02:44
используется механизм копирования страниц памяти который называется cy что это за механизм этот механизм позволяет
1:02:52
ть копирование Ох дан дочернему процессу использовать адресное пространство
1:02:58
родителя и перераспределяет его данные только когда в этом пространстве данные
1:03:04
нуждаются в изменении Что это значит дефолт шарик так называемая да то есть
1:03:18
расшаренной попадает шарик память между вот этими проми нужно чтото записать
1:03:28
назва арим есть что происходит кусок этого адресного пространства копируется
1:03:33
в другое место в адресном пространстве текущего процесса который запросил изменение данных в таблице адресных
1:03:40
пространств помещается этот блок то есть там адреса сменяются на новые Да куда
1:03:45
этот блок памяти был скопирован этот блок становится
1:03:51
ВМ дание
1:03:56
У нас есть многопоточная система которая обрабатывает баланс пользователя на
1:04:02
момент вызова у нас ну у нас может быть много всяких разных транзакций То есть у
1:04:08
нас допустим есть две банковские карты которые привязаны к одному лицевому счёту карта мужа и карта жены муж и жена
1:04:14
раздельно ходят по магазинам прикладывают терминалу и списываются деньги то есть каждое списание – это отдельный поток пропонит
1:04:26
То есть у нас есть некая сумма например там 1000 руб вот э 1000 руб хранится в ячейке памяти под каким-то там номером и
1:04:33
все процессы которые вот скажем так работают с этими данными Да с этим
1:04:38
балансом этом лицевым счётом они все знают что там лежит 1000 руб к примеру
1:04:44
вот в этот момент когда происходит запуск программного кода который делает списание с какой-то карты он видит что
1:04:51
ему нужно этот баланс изменить соответственно в этот момент проди области памяти Да там изменяется баланс
1:05:00
Да и так как у нас собственно эти данные попадают в базу да то наш программный
1:05:07
код записывает новые данные в базу и в результате того что мы записали эти Новые данные в базу эти данные тоже
1:05:13
обновятся в основной так разделяемой памяти То есть это сделается там под капотом условно говоря да то есть не будем вникать как это произойдёт Но в
1:05:19
общем для всех остальных пользователей там станет допустим на 100 руб меньше да И следующий поток точно также возм не
1:05:26
900 руб сделать там своё вычитание и эти данные опять положа у нас собственно в память после того как мы обновим Да
1:05:32
инвалиди так сказать значение нашего баланса вот поэтому программы в линуксе
1:05:38
запускаются достаточно быстро потому что он есть у нас условная шел оболочка из которой мы можем запустить условно
1:05:44
редактор VI для того чтобы запустить редактор VI нам нужно загрузить ряд
1:05:49
библиотек допустим каких-то там в память Зачем нам эти библиотеки загружать если наше ядро командная оболочка эти
1:05:56
библиотеки Уже загрузила соответственно эти библиотеки которые уже загружены мы их загружать не будем мы просто новому
1:06:02
процессу скажем что вот эти данные которые тебе нужны они лежат вот в этом адресном пространстве Используй их но
1:06:09
когда редактор VI начнёт открывать какой-то файл Да и ему нужно будет этот файл разместить в памяти то в этот
1:06:15
момент это работает механизм Cop on произойдёт перераспределение памяти на
1:06:21
так называемой куче Да не на стеке на стеке у нас хранятся глобальные переменные там
1:06:27
порядок вызова функций и так далее и так далее да А всё что касается работы с данными у нас хранятся там так называемый кучи то есть будет вызван
1:06:34
дополнительный метод То есть это уже из области распределения памяти Log Да у нас ядро выдаст определённое количество
1:06:42
адресных пространств которое соответствует определённому размеру памяти который запросил наш процесс да запросить он может Сколь угодно может
1:06:48
даже запросить больше чем у нас есть физической памяти потому что мы работаем с виртуальной Да и ви есть такая
1:06:53
настройка vmc который позволяет нам менять поведение ядра то есть разрешать
1:06:59
использовать больше памяти чем у нас физической или не разрешать соответственно если мы разрешаем то мы можем что-то
1:07:08
[музыка] свопинг больше то тогда у нас получается а
1:07:16
придёт ошибка Out Of M и наше приложение свалится с этой ошибкой то есть Вы наверняка кто-то когда-то встречал такую
1:07:22
ошибку там Out of memory Да это как раз вот про это мы запросили больше памяти чем нужно аром собственно не
1:07:28
разрешило Вот соответственно Вот это механизм работает в последних ядрах
1:07:34
начиная там с последних там которые версия 2 что-то там последние вот эти
1:07:40
сборки второй версии ядра потом поменялась нумерация стала третья четвёртое пятое шестое вот во всех этих
1:07:46
ядрах работает механизм при вызове поэтому запу
1:07:52
быст пово
1:07:57
и почему Он позволяет запускаться соту
1:08:02
быстрее Отлично Теперь давайте поговорим о состоянии процессов то есть программу мы
1:08:10
запустили она у нас работает что-то там делает и как-то ядро и планировщик должен понимать что с этим делать как с
1:08:16
этим жить а понимает он благодаря тому что у нание
1:08:25
ктото у на завалился на собеседование по поводу сигна чит текущее состояние
1:08:31
процесса описывается в по дескриптора процессора дескриптора процес дескриптор
1:08:37
процесса это я напоминаю То есть это структура ядра которую мы можем посмотреть она лежит там и так далее
1:08:44
каждый процесс в системе гарантировано находится в одном из пяти состояний Давайте теперь поговорим о этих пяти
1:08:52
Сония гение находится Больше всего времени это
1:08:57
процесс готовый к выполнению иными словами процесс либо уже выполняется в данный момент на каком-то из ядре нашего
1:09:04
процессора да либо стоит в очереди на выполнение для пользовательских процессов это состояние единственным
1:09:11
возможным но и активно выполняющиеся системные процессы могут находиться в этом состоянии то системные процессы
1:09:17
Какие допустим условно systemd Journal D да Или systemd resolv D Это вроде как бы
1:09:23
системный процесс он работает незави но тоже может находи в состояни и когда
1:09:29
он в состояни сна вае или Нева в том числе но все пользовательские процессы
1:09:35
которые вы запускаете своими руками и как-то с ними взаимодействует в состоянии та пока не
1:09:40
произойдёт некоторые вещи значит Какие вещи могут произойти процесс может перейти так
1:09:48
называемый или снов вни
1:09:55
до наступления определенного события при наступлении этого события ядро переводит процесс состояния ран и также это можно
1:10:02
сделать специальным сигналом принудительно То есть ему можно отправить соответственно сип и так далее
1:10:09
эти все сигналы и процесс просто плавне остановится То есть он выполнялся выполнялся и раз как бы заснул при
1:10:16
этом процессы которые находятся в состоянии сна могут находиться там
1:10:21
потому что они например ожидают пользовательского ввода вывода или ввода
1:10:27
вывода например с диска или ввода вывода из сети то есть пока они ожидают они
1:10:32
могут находиться в состоянии сна и будут собственно Пробуждение переведены в
1:10:37
состояние ран когда собственно произойдёт чтение с диска да то есть об этом оповестит ядро операционной системы
1:10:44
наш процесс отправит сигнал скажет я с диска считал вот э область памяти вот там лежат твои данные он запустится перейдёт в состояние ранинг и будет с
1:10:51
этими данными работать Да есть у нас ещё также То есть он То есть Task in interrupt это
1:10:58
Аналогично предыдущему Но процесс нельзя разморозить специальным сигналом то есть чтобы мы ему туда не посылали то Данное
1:11:05
состояние будет всегда сохраняться и использует только в тех случаях когда процесс находящиеся в ожидании нельзя
1:11:12
прерывать или Когда ожидается что некоторое событие Может возникать достаточно часто процесс находящийся в
1:11:18
этом состоянии не реагирует на посылаемые ему Сигнал это состояние используется очень редко то есть в этом состоянии процессы как бы зависшие Какие
1:11:25
процессы в этом состоянии могут находиться это могут находиться какие-то консьюмер которые работают с очередями сообщений такими как rabit MQ кавка и
1:11:32
так далее да то есть там например часто сваливаются события в очередь сообщения они эти события часто вычитывает а
1:11:39
соответственно они должны это сообщение отработать и там может быть какой-то ввод-вывод в базу данных или ещё куда-то
1:11:45
соответственно они ожидают этого ввода-вывода и для того чтобы их в этот момент не Киль нули они переводятся в
1:11:52
Task UN interrupt не прерываемый да то есть его нельзя как бы м вывести оттуда принудительно и
1:11:59
собственно эти важные процессы Да они потому и важны что они делают некие важные задачи иногда системные задачи и
1:12:07
нежелательно чтобы их кто-то там
1:12:19
прерывался тоже может находиться в этом состоянии когда он обрабатывает трафик передаёт или получает
1:12:25
Значит именно в этом состоянии находятся так называемые неубиваемые процессы Потому что нельзя посылать сигналы такие
1:12:34
как и тому подобное так как считается что завершить
1:12:39
такой процесс неразумно так как он выполняет важную задачу в выводе команды эти процессы будут отображаться в
1:12:45
состоянии то есть у нас а у нас
1:12:54
как просто собеседование Что за процесс отображаются в состоянии значит
1:12:59
следующее состояние это состояние возникает лишь тогда когда у нас выполняется
1:13:05
трассировка процесса с помощью другого процессора например отладчика то есть кто знает какие отладки в системе дефолт
1:13:11
существует Напишите пожалуйста в чат Да собственно этот отладчик подключается к нашему процессу Да верно гдб Вот
1:13:19
подключается с помою специального вызова отправляет вызов туда и собственно переходит в трассировку да И
1:13:27
периодически из этого процесса он выходит в состояние Ring когда мы например там нажимаем кнопочку выполнить
1:13:32
этап программного кода он переводится Вран выполняется и опять переходит в TAS Вот соответственно помимо гдб есть ещё
1:13:40
такая утилита S Вот S тоже теоретически может перевести процесс Task trac Да
1:13:49
потому что мы к ней подключаемся и хотим Ну подключаемся к процессу и там тоже вызывается вызов P для того чтобы
1:13:55
получить все запросы которые делает наш А собственно процесс который у нас работает вот поэтому на продакшн
1:14:03
системах не всегда рекомендуется подключаться рейсом к процессам потому что процессы переводятся в Task traced
1:14:09
Да и начинается трассировка и как бы замедление работы самого процесса потому что для того чтобы перехватить системные
1:14:15
вызовы которые делает А процесс какой-то Да этот этому процессу нужно вызов
1:14:21
отправить функции P Trace вот чтобы он встал на трассировку значит следующее состояние Task это
1:14:28
выполнение остановлено без права выполнения такое происходит если процесс получает один из сигналов СИП
1:14:35
си и вот а также если в момент отладки происходит любой из выше описанных
1:14:42
сигналов То есть если мы рейсом условно подключились к какому-то процессу и
1:14:48
начинаем смотреть как работает этот процесс какие системные вызовы он вызывает и неожиданно ему прилетает этот
1:14:54
сигнал да то собственно и наш процесс и этот процесс перейдут в состояние TAS стоп Ну потому что выполнять никакого
1:15:00
смысла нет то есть предыдущий то есть тот которому мы подключили который Мы начинали трассировать он остановлен он не выполняется Да и не может быть
1:15:07
выполнен то и наш процесс который выполнял трассировку тоже будет установлен потому что ну нет никакого
1:15:12
смысла дальше трассировать Потому что нет процесса который бы онс выполнялся коллеги Есть ли вопросы по
1:15:21
сигналам мы здесь Разумеется не все сигналы смотрели
1:15:27
Да и кстати давайте я задам вопрос в чат У меня есть вопросы [музыка]
1:15:37
Аа Кто знает чем отличается м Кил по девятке и Кил по
1:15:46
пятнашке если не знаете Давайте равно в чатик
1:15:58
значит мину 9 Это я могу сечас ошибиться какой-то из них там смотрите девятка –
1:16:05
это сил а пятка – это сип нуте Да вот
1:16:11
отличаются они следующим – это отрубание башки То есть когда вы отправляете
1:16:16
сигнал процессору или девятку Да высь что
1:16:26
состо немедленно заверши то есть бросай все свои дела Никакого Просто жёстко ты гро
1:16:34
то отловить нельзя обработать Его невозможно если процесс находится в
1:16:41
состоянии прерывание сна или он 100% будет
1:16:46
убит Мария вы
1:16:55
актерм наш процесс ловит код 15 и мы как бы вежливо просим Пожалуйста дорогой
1:17:01
процеси заверши Что происходит при отправке пятнашки при отправке пятнашки ситер да Или сик СТП можно отловить и
1:17:08
его обработать Как происходит обработка процесс получивший сигнал Сим закрывает
1:17:16
все свои соединения останавливает собственно все рабочие процессы завершат все порождённые потоки
1:17:24
так называе выполняет ф shd после того как он выполнил ф shd то есть остановил
1:17:30
все рабочие процессы он останавливает главный поток выполнения и выходит с кодом возврата ноль Таким образом он
1:17:36
завершается то есть сил используется для безопасного завершени процессов То есть
1:17:42
когда у нас есть например база которую по какой-то причине Мы хотим аварийно завершить мы отправляем
1:17:48
Кил 15 если мы е отправим л 9 в этот момент если происходила какая-нибудь
1:17:54
запись данных то мы 100% получим гарантию битых
1:17:59
данных Возможно даже повреждение всей базы данных поэтому базы данных очереди сообщений всякие разные штуки которые
1:18:06
что-то пишут на диск никогда не завершаем по девятке всегда стараемся завершить по пятнашке если по пятнашке
1:18:13
не реагирует в течение какого-то времени да то тогда завершаем по девятке фиг с ним если там всё
1:18:19
наглухо вся с ещё какие-нибудь вещи которые
1:18:26
ничего не пишут ничего не читают Да их можно сразу рубить по девятке Ну всякая вирусняк подобное их можно рубить сразу
1:18:33
по девятке так дочитаю чат на тир наверное должен ловить какой-то код что-то делать А может указать Какая
1:18:38
механика у Kill как под капотом работает л а л под капотом работает следующим образом это один из сигналов который не
1:18:45
отлавливает операционной системой этот сигнал отправляется процессу а так как у
1:18:52
нас ядро отвечает тоже в том числе за обработку у Эх сигналов ядро видит что процессу Был передан сигнал сел и он без
1:18:59
всяких возражений просто принудительно прибивает процесс то есть удаляется то есть
1:19:06
процесс переводится в Task sted принудительно сразу начинает удаляться
1:19:12
структуры ядра и так далее и так далее как завершается процесс мы вот сейчас как раз до этого дойдём вот сил работает
1:19:17
по такому же принципу как и сиктим только Терм можно отловить и Грейс флом завершить То есть все свои процессы Аким
1:19:23
сразу бошку отруба и всё это кстати тоже один из вопросов на собеседованиях чем отличается убийство по девятке и
1:19:29
убийство по пятнашке Так вопросы Я думаю что они были я на них поол если вопросы ещё есть
1:19:36
задавайте минуси уже можно не ставить Мы двигаемся дальше как происходит завершение процессов Да это как раз вот
1:19:42
к вопросу Олега и по поводу сейчас Марии тоже будем Значит Как происходит смерть процесса в конечном счёте выход
1:19:48
программы всегда осуществляется с помою системного выва то есть про
1:19:54
делает сикол в режиме ядра Exit который завершает выполнение процесса и освобождает все занятые ими ресурсы то
1:19:59
есть закрываются файловые дескрипторы освобождается Память то есть удаляются страницы памяти То есть она говорит что
1:20:04
она не используется на самом деле ничего не удаляется просто помечается что вот этот вот вот эти блоки занимаю этим процессором они теперь не используется
1:20:11
да Вот соответственно если были заняты какие-то дополнительные ресурсы сетевые там работа с какими-то драйверами
1:20:16
устройствами то тоже они освобождаются родительский процесс может выдать запрос о состоянии завершения дочерних
1:20:23
процессов с помощь функции вей это как раз то самое когда мы отправляем пятнашку у нас вызывается Exit и
1:20:29
вызывается вей вей ожидает когда все у нас дочерние потоки завершаться и только после этого у нас происходит завершение
1:20:36
родительского процесса функция ве позволяет одному процессу дождаться завершения другого процесса и после
1:20:42
завершения процесса он переводится в специальное состояние зомби это как раз ответ Марины который используется для
1:20:48
предоставления завершённое до момента пока порождающий процесс не вызовет функцию Wi что это зна
1:20:55
смотрите зомбаки по факту это завершенные дочерние процессы которые
1:21:01
находятся в этом состоянии для того чтобы они представляли некую структуру
1:21:06
ядра да до того момента пока наш основной Ну порождающий процесс то есть
1:21:13
мастер процесс не вызовет функцию в результате вызова функции мы идм по связанному списку
1:21:22
нашего процессам процессы видим в каком состоянии они находятся там Остаётся
1:21:27
только в этой структуре Остаётся только поле статус в этом поле статусе будет написано что он Зомби что он завершён Да
1:21:33
когда все скажут что он завершены тогда основной процесс может собственно завершиться и все зомби процессы по идее
1:21:40
тоже сразу же будут завершены то есть удаляться все структуры и так далее и так далее значит а зомби процессы будут
1:21:47
выглядеть примерно ну вот так давайте разберёмся страшны ли они нам или нет Да а завершение процесса происходит при
1:21:53
вызове функции exit или исключительной ситуации исключительная ситуации – это вот тот самый То есть это необработанная
1:21:59
ошибка и собственно исключение к этому моменту освобождены все объекты занятые процессором Ну процессом процесс больше
1:22:06
не может выполняться поскольку у него нет адресного пространства То есть когда мы вызвали Exit Да мы все ресурсы
1:22:12
освобождаем адресного пространства нет в тарак у нас только лежит информация о
1:22:18
том что этом единствен области памяти которая занимает процесс в состоянии Зомби это системный стек и структу
1:22:26
и у нас в статусе лежит Зомби Да в лежит информация о том какому родительскому
1:22:32
процессу мы относились эти структуры нужны родительскому процессу после того как родительский процесс уведомляет ядро
1:22:37
что эта информация Ему больше не нужна То есть он сам завершается да Или он просто ну закончил существование этих
1:22:44
трев вот эти области памяти освобождаются и возвращаются операционного
1:22:51
иния воо процесс завершается до момента
1:22:56
завершения всех его дочерних процессов да Или до момента вызова то такие
1:23:02
процессы будут называться сиротка они навсегда останутся в состоянии Зомби и занимают системную память коллеги Как вы
1:23:09
думаете какую системную память они занимают Напишите в чат Если
1:23:20
знаете если не знаете давайте вы слезай знак
1:23:29
вижу не знаете Ну Пит Да совершенно верно Тао и
1:23:35
тара то есть они занимают всего лишь две структуры том числе
1:23:42
Пит ну как бы Пит лежит у нас в структуре та Поэтому вот они занимают
1:23:47
системную пам механизм знания родительского
1:23:53
просм и собственно новым родительским процессом становится один из потоков группы родительского процесса или инить
1:23:59
что это значит если у нас Мы грохнули родительский процесс но у нас остались какие-то живые треды которые работают в
1:24:06
состоянии runing то остальным треда которые были в состоянии Зомби могут
1:24:11
назначить родительским один из этих тредо но не всегда это работает если например вы убивали там например кого-то
1:24:16
по девятке соответственно Если вы кого-то убивали по девятке у вас умерли все родительские процессы и дочерних не
1:24:23
осталось они были у вас все в состоянии Зомби то тогда их под себя должен забрать ИТ но не всегда Это тоже
1:24:30
получается по каким-либо причинам соответственно в системе тогда начинают появляться процессы которые выглядят вот
1:24:36
так да имя процесса от какого пользователя запущен Вот и вот он в
1:24:42
статусе Зомби причины связаны с тем что в результате завершения Да вызова вот
1:24:47
этих вот функций скажем так не была вызвана функция которая
1:24:55
как раз так занимается освобождением этих ресурсов Вот то есть если вы Киль
1:25:00
нули процесс по девятке Киль нули мастер процесс он не вызвал вейт и эти работающие треды они остались и нит их
1:25:07
не смог просто забрать Вот получается зомбаки – это
1:25:13
процессы которые у нас завершились и не имеют адресного пространства а сиротки – это собственно процессы которые Ну
1:25:20
остались незавершённые убийства мастер про то есть основного нашего потока выполнения
1:25:26
родительского то есть эти сиров процессы они имеют адресное пространство они имеют контекст выполнение у них есть
1:25:33
память и так далее а зомбаки это уже ну завершённые процесс в результате в
1:25:38
результате ом Киллера олер отправляет всегда пятнашку
1:25:44
олер по девятке никогда не завершается
1:25:50
справить камуто проу безусловно остановку но собственно этот
1:25:59
процесс может делать отправлять какую-то важную работу писать какие-то данные вот чтобы не побить Да он старается завершить всё-таки сите отправить
1:26:07
сигнал вот в результате ума редко остаются Зомби и так
1:26:14
далее сиротами становится тогда когда смотрите то есть зомби этот прос у
1:26:19
которого нет контекста выполнения есть него нере может рисовать что-то писать читать из
1:26:26
памяти у него есть только две структуры которые сохраняют его Пит Да и Пит
1:26:31
родительского процесса и сохраняют его статус что он находится в статусе Зомби что он завершён всё он уже не рабочий
1:26:37
процесс а сиротки – это полноценные процессы которые работали работали работали но неожиданно у них А умер
1:26:45
мастер процесс То есть их родительский процесс неожиданно умер например по девятке Его убили да то все его дочерние
1:26:51
потоки потому что поток и процесс в линуксе – это одно и то же то все его дочерние потоки вдруг неожиданно становятся сиротка
1:26:59
вот да когда родительский процесс завершился раньше дочернего вот здесь просто на
1:27:05
слайде это всё написано Давайте дальше так коллеги Ну я думаю вопросы у вас уже
1:27:11
которые вот здесь были Да я думаю что новых не возникнет но если есть Давайте сообщайте о них в общем если
1:27:19
вопросы есть задавайте если Вопросов нет то минуси продолжаем даль есть ЗМ мы разобрались то есть зомбаков и сиротов
1:27:25
пугаться не стоит отличие Вы теперь между ними понимаете сиротки – это Тот процесс который может выполняться ещё а
1:27:30
зомби – это тот который уже собственно выполняться не может потому что ему негде выполняться вот Давайте теперь
1:27:35
поговорим о Юз кейсах Да а первое Я наверное вам сначала покажу м
1:27:40
какую-нибудь историю связанную
1:27:50
с Так скажите мне у вас экран поменялся
1:27:55
вы видите консоль плюс если видите минус если не видите не видите Да давайте я се тогда
1:28:03
покажу вам заново перер экран Так давайте вот весь экран м Поша вот
1:28:10
это вот так Я надеюсь что сейчас консоль видно Рила покрупнее
1:28:18
есть такая команда называтся измерить выполнение нашей
1:28:25
программы и Давайте запустим простейшую программу Date которая выводит нам текущую дату и время что мы видим в
1:28:31
результате этой операции мы видим вывод этой программы То есть если я запущу сейчас Date то я получу Только первую
1:28:37
строчку да Видите То есть она нам говорит что у нас там ту апрель шестнадцатое 21 22 мска 2024 вот эта
1:28:44
дополнительная информация говорит о том какой бинарный файл мы запустили Date время которое мы потратили на работу в
1:28:50
режиме скажем так пользователя в секундах да и в режиме системы да И
1:28:57
сколько процентов цпу и так далее от всей мощности моего цпу мы собственно
1:29:03
заняли то есть нам вывела такая вот история То есть если мы у меня здесь с
1:29:08
по-моему не установлен Да у меня не установлен Давайте
1:29:13
ssh куда подключиться Давайте
1:29:20
вот на какую бы тачку сечас подключиться Я думаю чтобы вам продемонстрировать эту историю с рейсом ssh
1:29:30
а темпа Нет наверное да темпа Нет давайте d00 блок
1:29:39
прокси прокси не хочет да Давайте тогда вот так
1:29:44
по айпишник на какую-нибудь тачку так 172 16 201
1:29:52
154 вот так значит и
1:30:04
Давайте утилита командной строки которая позволяет нам подключаться к процессу и посмотреть как он работает внутри Давай
1:30:11
теперь сделаем ту же команду посмотрим что у нас ВС работает Давайте
1:30:25
есть чтобы посмотреть как она работает да вот вот так Работает наша программа то о ЧМ я говорил наша программа
1:30:31
разделена на вызов системных функций да то есть мы не говорим сечас о стандартной библиотеке потому что это
1:30:37
очень долго и очень сложно это всё вы на курсе можете подробно узнать смотрим что у нас происходит Мы говорим что у нас
1:30:45
был какой-то родительский процесс Баш Да из которого
1:30:54
то у нас вызвался то есть когда вот мы нажали здесь Enter у нас вызвался создался новый процесс и в этом процессе
1:31:01
вызвался функция EX да то есть у неё есть всякие там псевдонимы как я уже говорил в данном случае это что он
1:31:08
говорит Он передаёт аргументы нужно вызвать по такому-то адресному
1:31:13
пространству вот такое-то количество там значений столько-то памяти там в результате получается Вер только-то бай
1:31:21
после этого вызвать сть приостановить выполнение программы Да и
1:31:27
дальше мы смотрим что у нас происходит Мы пытаемся запросить доступ к такой-то системно библиотеки Да мы видим что её
1:31:34
не существует потом мы пытаемся открыть такой-то файл на да получается мы
1:31:42
открыли этот файл Да дальше мы FS то есть пытаемся из этого вызвать вот эту
1:31:47
функцию я к сожалению не знаю что она делает Да ну бы не вспом сечас мы передам файловый есть вот нам п 3 Мы в
1:31:55
этот файло descript 3 пытаемся что-то там делать Да ну здесь устанавливаем какие-то флаги 0644 это флаги доступа к
1:32:03
этому файлу потом мы Map а выделяем скорее всего какое-то количество памяти
1:32:08
потом закрываем потом собственно открываем файл по такому-то пути вызываем вот а fvd cvd то есть перейти в
1:32:15
другую рабочую директорию вызвать ли 64 вот эту Red Only опять третий файловый
1:32:21
дескриптор начинаем читать Из третьего файлового скрипте какой-то определённый на мор байт нам возвращается 832 байта
1:32:28
потом мы вызываем функцию PR 643 раза из этого файло дескриптор ещё дополнительно читаем и таким образом мы вот работаем
1:32:35
работаем то есть как вы можете понять Да из этого выхлопа Мы видим что вся работа утилиты сводится к тому что мы дёргали
1:32:41
какие-то функции из стандартной библиотеки си Да и даже Наш бизнес код тоже в принципе бы их дёргал Да когда
1:32:47
нам нужно там читать распределять память закрывать открывать и так далее вот мы
1:32:52
видим что устанавливаем адрес какого-то адресного пространства вот значит здесь получаем
1:33:00
какой-то Рандомный блок оп устанавливаем выполнение програм потом выполняем а
1:33:06
дополнительно открываем USB Local то есть мы хотим понять а Ели у нас
1:33:11
такой-то файл да то есть он говорит что открываем либо этот либо этот да Local alas Ага этот находим файловый скриптор
1:33:17
3 читаем там устанавливаем режим чтения записи там Да туда по-моему вот эта вот
1:33:22
функция делает мы говорим Что читаем читаем лалала то есть считываем
1:33:29
2988 байт потом ещё что-то там считываем закрываем получаем какую-то локаль то
1:33:35
есть мы понимаем Где мы находимся там да В данном случае там да написано потом мы считаем
1:33:41
entation Вот не нашли нашли по такому-то его пути то есть мы поняли что у нас utf8 да из локаль мы вычитали Да поняли
1:33:47
что у на 8 читаем Вот это закрываем потом начинаем
1:33:54
другие модули грузить и так далее и так далее и так далее потом мы ещ всякие разные штуки там читаем
1:34:02
где там кучу ку ку ку куча всего Вот и только после этого мы вот
1:34:09
пишем в консоль то есть в да файло то есть дескриптор 1 мы пишем что вот вот
1:34:15
такая вот значение вот такую вот штучку дано 29 есть ЕС мы возм вот эту историю
1:34:22
всю считаем то у нас будет Как раз ровно 929 байт После этого мы закрываем файлы в дескриптор 1 то есть закрываем
1:34:28
стандартный вывод Да закрываем файлы рипто 2 и собственно посылаем Exit выходим и Exit выходим с кодом ноль да
1:34:35
то есть как раз вот здесь произошло выход из программы да то есть И вот здесь всё вот это вот предыдущее
1:34:41
читалось там Local Time Там и так далее да то есть читались различные параметры
1:34:46
настройки операционной системы для того чтобы вот эту строку сформировать То есть как мне выводить день месяц год как
1:34:53
выводить в двенадцати числовом формате или в двадцати четырёх часовом формате выводить ли мне вот этот МСК 24 часовой
1:35:00
пояс или мне там П3 как-то вывести то есть вот таким вот образом то есть программа Date читала на файловое
1:35:06
системы различные файлы черпала из них информацию Да в результате чего эту информацию как-то там обрабатывала и
1:35:13
сформировала нам вот собственно такой-то вот выхлоп да то есть с помощью утилиты стрей мы посмотрели как всё это дело у
1:35:19
нас собственно работает да то есть какие вызовы происходят да Давайте теперь поговорим о файловой системе про я вам
1:35:25
немножко покажу да если пойти CD ой если пойти CD про сделать LS минула да то мы
1:35:34
увидим что здесь много-много там всякого разного интересного лежит и вот лежат всякие разные цифры да как раз Под
1:35:41
разными пользователями вот мы видим что здесь вот такие такие такие цифры есть и так далее и так далее Что же это на
1:35:47
самом деле такое да то есть мы вспоминаем что здесь можно было пойти в определённое место то есть да то есть
1:35:54
Давайте а сделаем кат м к
1:35:59
сис потом по-моему идёт у нас кернел и прок Макс
1:36:05
Ой Господи так кернел прок
1:36:13
Макс М или так
1:36:18
Макс так сейчас сам вспомню л
1:36:27
Смотрим idma Да Да всё верно idma Вот мы видим видите Да вот пимак мой установлен
1:36:33
вот таким-то образом дефолт могу сюда записать другую чиселки у меня будет другое число То есть вы это
1:36:40
могли обратить внимание что у меня процессы создавались видите больше чем 32 Да вон даже 50.000 есть да как
1:36:47
посмотреть все процессы то есть мы можем сделать И вот мы видим кае про
1:36:54
ВМ состоянии находятся вот мы видим у нас процессы в состоянии
1:37:00
собственно вот состояни н есть процессов у нас
1:37:08
нет и соответственно давайте мы возьмём какой-нибудь интересный процеси да давайте мы сделаем
1:37:15
вот так запустим редактор мы его запустили и по-моему
1:37:21
Ctrl Z выход видите мы отправили ему сигнал стоп приостановили его Давайте PS
1:37:27
а отправили его в фон вот он наш wm да и видите он у нас находится в состоянии
1:37:33
стоп то есть мы Его остановили он не работает пока совсем вот что мы можем у
1:37:38
него то есть мы видим его Пит 5.000 31 Ну 531 мы можем сделать здесь следующее
1:37:45
мы можем пойти вот сюда CD 531 L и увидеть всю информацию в структурах ядра
1:37:52
что у нас здесь собственно собралось во-первых мы можем посмотреть с какой с
1:37:58
какими энвайронмент сделать вывести Cat
1:38:06
inon и посмотреть С каким вам запустился наш VI То есть если я сейчас сделаю
1:38:13
следующую вещь да то есть Видите вот тут хоне всякие такие то есть я могу дополнительный свой добавить и
1:38:18
соответственно он добавится и будет запущен помимо этого я могу посмотреть
1:38:24
это как раз те параметры которые влияют придёт ли за ним Kill И в какую очередь он его будет убивать Да здесь у нас есть
1:38:33
Это ссылка на тот исполняемый файл Откуда мы запустили Это где мы сейчас как бы из
1:38:39
какой папке мы запустили этот редактор то есть текущая установленная директория то есть этот процесс считает что он
1:38:44
запустился в папке помимо этого мы можем здесь
1:38:49
помос сде запустили у Bean wm Да я могу сюда
1:38:55
передать ещё целую кучу параметров вот есть здесь интересная Папочка FD эта
1:39:00
Папочка отвечает за файловые дескрипторы да то есть если мы перейдём CD FD Вот то
1:39:06
мы увидим у нас файловые дескрипторы стандартный ввод вывод и стандартная
1:39:12
ошибка да А теоретически мы можем сюда даже что-то там эх нуть да Давайте
1:39:19
попробуем Эхо ой Эхо а допустим татататата и отправить в
1:39:27
д Вот мы отправили Ну мы сейчас мы отправили на стандартный то есть дескриптор 2 и
1:39:35
получили здесь Кто думает почему Ну кто знает почему у нас здесь произошло Так почему вы увидели это не V а увидели
1:39:42
на нашей консоли есть предположение если предположение есть ставьте плюсик в чат
1:39:48
Если нет то минуси
1:40:02
Ну ну я бы сказал не это не то что СД дело всё в том что вот эти три ресурса
1:40:09
они у нас унаследовали от нашего дочернего процесса ой дочернего этого
1:40:15
родительского процесса а родительский у нас был шел а в у нас были открыты стандартный ввод вывод по вот этим вот
1:40:20
адресам 0 2 соответственно даже если Мы попытаемся по взаимодействовать сейчас с
1:40:26
вишко и отправить ему на это то это общие ресурсы и поэтому они относится кше и поэтому мы здесь всё увидели с
1:40:33
вами Вот именно поэтому так происходит так давайте я сейчас временно
1:40:38
из консоли выйду и Переключись на презентацию значит сейчас я бы вам хотел
1:40:44
немножко рассказать о кейсах да которые собственно зада я мй бос от
1:40:52
ня менять полученные знания на практике и это то что допустим когда я провожу собеса Я спрашиваю да то есть что нам
1:40:59
даст знания о том как запускаются наши программы что в результате создаётся где Что искать Да например поиск файла
1:41:05
конфигурации незнакомого приложения смоделируем ситуацию У вас есть некий сервер на котором работает приложение И
1:41:12
вам нужно понять Откуда это приложение считало файл конфигурации что для этого нужно нужно как минимум найти Пит этого
1:41:19
процесса Да через команду там PS или ещё как-нибудь неважно да вот найти перейти в файловую систему про
1:41:27
и посмотреть файловые дескрипторы вот если вдруг файловых дескриптора Вы не
1:41:33
нашли нечто похожего на название конфигурационного файла да то тогда есть
1:41:39
предположение что это приложение читает этот конфигурационный файл один раз для того чтобы этот конфигурационный файл
1:41:46
найти Да заставить приложение почитать этому приложени отправить
1:41:53
да Или SIG sr2 который заставит приложение перечитать конфигурацию вот в
1:41:59
результате того как оно будет перечитывать конфигурацию в папочке FD появится временно файловый дескриптор
1:42:06
который будет назначен за открытым файлом конфигурации таким образом можно найти как его можно найти можно
1:42:11
запустить Watch на папку можно запустить утилиту lsof или можно подключиться
1:42:16
просто к этому процессу во время запуска сигнала с помощью ули и посмотреть
1:42:21
системные вызовы которые будет вызывать Как посмотреть системные вызовы Вы видели там в аргументах будет написано
1:42:26
файл который он пытается читать вот таким образом этот кейс решается на со бесах очень часто спрашивают Я тоже
1:42:32
часто спрашиваю поэтому имейте в виду то есть зная о том что у нас хранится в
1:42:37
структурах ядра и где это хранится можно вот такие штуки находить второй кейс
1:42:43
частый Да поис плавающей ошибки с помощью отладчика Что это значит То есть
1:42:48
например есть кейс Когда у вас в базу данных данные ви через раз
1:42:54
соответственно чтобы отловить эту ошибку Мы можем с помощью у подключиться к нашему процессу Да и посмотреть что у
1:43:01
нас происходит после записи в базу данных вызывается ли у нас функция Close
1:43:07
то есть закрытие файлового дескриптора закрытие сокета или ещё чего-нибудь если она у нас вызывается то значит у нас
1:43:13
проблема где-то глубже не с приложением если она не вызывается значит проблема у нас где-то там в приложении образно говоря да то есть это тоже задают нам
1:43:20
эти знания о том как работают наше приложение соответственно третий кейс который позволяет нам это делать поиск
1:43:25
открытых файлах используемых ресурсов анализ среды выполнения То есть это я вам уже сейчас показал на практике
1:43:31
Вживую то есть мы увидели редактор VI который у нас открыт А в результате чего
1:43:37
мы пошли в структуры ядра по конкретному биду Да и посмотрели с каким энвайронмент запустился С какой
1:43:43
командной строкой итд и ТП всё это дело можно посмотреть собственно в этих структурах ядра это вот один из кейсов
1:43:49
который тоже часто применяется так коллеги Есть ли вопросы по этому материалу если Вопросов нет
1:43:56
минусы в
1:44:03
чат Угу отлично давайте я теперь немножко
1:44:08
расскажу о курсе А ну некоторые сейчас начнут разбегаться но я бы не рекомендовал вам это делать потому что в
1:44:14
конце А я дополнительно ещё кое-какой информации для вас припас Да потому что обычно те вот в этом моменте начинают
1:44:20
разбегаться и чтобы вас как-то удержать я ещё в конце что-нибудь интересного расскажу вот не буду говорить чего плюс
1:44:26
книжку вам обещал Да продемонстрировать значит давайте поговорим о команде курса
1:44:31
Да как происходит процесс обучения обучение проходит онлайн по вечерам или выходные дни все занятия получается вы
1:44:40
можете получить в записи и материалы в том числе они у вас сохраняются в личном кабинете А вы можете вернуться к ним
1:44:46
после окончания обучения и дополнительно что-то там посмотреть поделать домашние задания отель
1:44:54
по какой-то пройденной теме и по каждому домашнему заданию преподаватель Дат развернутый фидбек То есть если вы
1:45:00
хотите получить фидбек Вот то вы делаете домашнее задание его проверяют и дают вам
1:45:09
фидбек вот значит следующий момент в процессе можно задавать преподавателю
1:45:15
различные вопросы по материалам
1:45:21
Том четырёх академических часов до 8 часов Да на домашнюю работу в неделю
1:45:28
Почему так ну потому что все занятия идут вживую без записи Ну как без записи то есть они онлайн как вот сейчас я с
1:45:34
вами но запись этого занятия естественно будет да Вот соответственно на занятиях
1:45:40
даётся много разной информации лекции бывают разные по времени какие-то бывают проходят быстро какие-то бывают проходят
1:45:46
долго Да у меня бывает лекции по 3 часа идут вот программа обучения на курсах обновляется каждый запус в зависимости
1:45:52
от акту во и запросов в it сфере То есть если сейчас будет актуален какой-то
1:45:57
инструмент то собственно этот инструмент будет включён в программу Тема профилирования и Рейсинга в курсе уже
1:46:04
есть уточните у кураторов есть ли она или нет профилирование Рейсинга в
1:46:26
заходим ищем собственно
1:46:32
программирование У меня сейчас будет тут немножко тормозить это нормально Вот
1:46:38
и и нас интересует ADV и собственно давайте мы здесь
1:46:50
попробуем нуно Да у нас вообще интересовала инфраструктура да давайте вот
1:46:56
инфраструктуру
1:47:02
поставим Так давайте Поставим все они могли по-другому переименовать Давайте попробуем
1:47:14
поискать Давайте посмотрим что там на слайдах у меня было вставлено програм
1:47:23
Да он может кстати Хало называться так так-так инфраструктура отлич открытых
1:47:28
ключей Давайте лот поищем тут я признаюсь не
1:47:39
подготовился Да печаль беда Ну давайте условно Linux Professional откроем Бог с ним хотя у вас скорее
1:47:48
всего будет да называться Давайте посмотрим что у нас тут программа курса
1:47:54
просто переименовали курс и я его не могу
1:48:00
[музыка] найти Нет это не тот курс видите не тот
1:48:08
курс Так давайте смотреть так да спасибо за ссылку вот у нас кстати здесь
1:48:13
Модераторы сидят могли бы кстати ссылочку то и скинуть бы
1:48:23
вот инфраструктура высоконагруженных систем Да назвали собственно по-русски Да я по-английски
1:48:28
ещ описание стандартно для кого кому как пригодится да Что даст вам этот курс вот
1:48:34
дополнительно можете тут почитать Вот про трудоустройство формат обучения программа да то есть
1:48:42
кластеризация р
1:48:54
эластики и Ко
1:49:01
контейнеризация контейнер оркестрация то есть будет скорее всего несколько
1:49:11
занятий хранилище файловое системы Да и проек
1:49:24
нех сертификатов чит команда курса
1:49:30
фотография Да здесь можно тоже все эти фотографии собственно найти вот преподаватели их тут много всяких разных
1:49:37
Вот они тут все грузятся можно их тут всех поискать то есть людей много я тоже
1:49:42
где-то здесь вот где-то там в серединке есть Вот он я да вот
1:49:53
будут собственно проходить в рамках этого курса вот сейчас одно из них происходит Да вот собственно креативное
1:49:59
обучение для ваших сотрудников Это для уже для организации отзывы можно познакомиться да об отзывах то есть
1:50:05
какой сертификат вы получите Сколько будет стоить там обучение записаться там какие-то вопросы и тому подобное то есть
1:50:11
всё это дело Вы можете уточнить здесь да давайте дальше я ещё немножко тут по слайдам прогуляюсь Да нас интересует
1:50:19
сейчас Карьерная информация Давайте слайдшоу сделаю меня Чем дальше в лест те начинает
1:50:24
сильнее Мак тормозить вот значит значит анализ по позиции систем
1:50:31
администратор Linux на данный момент 1435 открытых вакансий для системных
1:50:36
администраторов открытых в апреле 2 чет года яко искатели из России Да это по данным
1:50:43
хэдхантера А значит какая примерная зарплата вас ожидает Если вы получите
1:50:50
знания которые собственно даются здесь на курсе да то есть средние вот этот опыт который
1:50:57
вы приобретёте на курсе он набирается обычным администраторам за 3 тише лет опыта Да и такие администраторы получают
1:51:04
там от 190.000 руб на руки я вам скажу что это как бы не максимальная не
1:51:10
минимальная планка Всё зависит от того В каком регионе в Какую компанию вы Как вы будете собеседовать как пройдёте этот
1:51:15
Собес да то есть есть как бы зарплата и больше есть зарплата и меньше Всё зависит от того как вы себя продадите Да
1:51:21
примерные вакансии администрирование Lin ви
1:51:29
ще лет опыт настройки поддержки кластеров это то что вот на курсе
1:51:35
рассказывается балансировки докеры сам ба питон за прометеус всякие лки
1:51:41
постгрес и так далее и так далее То есть всё что требуется в этой вакансии оно
1:51:51
есть аба например тоже самое примерно такая же да то есть видите Альфабанк ищет специалистов как раз по тем
1:51:58
технологиям которые будут рассказа на курсе вот вот Обычный систем
1:52:03
администратор Linux то есть от 2 ну от 200000 на руки да то есть Linux писать
1:52:09
документацию здесь требования такие простенькие Да и 200к на руки предлагают Я думаю что когда вы будете проходить то
1:52:15
вы его собственно из
1:52:22
вот есть ребята которые там с винсом любят работать вот для них собственно тоже такие вакансии есть да Но несмотря
1:52:28
на то что здесь вот есть в том числе и ксое вещи Да и которые рассказываю на курсе Вы можете свою зарплату немножечко
1:52:35
приподнять вот значит Давайте немножко рефлексии Да и дальше там от меня ещё
1:52:40
бонусы пойдут Сегодня мы узнали что такое программа как она работает в линуксе Да и немножко поговорили о том как она работает в виндоусе
1:52:46
познакомились с понятиями проток и процес выли для это одно и тоже хны
1:52:53
программ нет Да всё это одинаково То есть это всё Виндой история про легковесные потоки узнали о сигналах и
1:52:59
как взаимодействовать процессы Да все процессы взаимодействуют с помощью так называемой общей области памяти и с
1:53:05
помощью сигнала Ну есть ещё там пайпы и так далее меж процессорное взаимодействие это вы всё будете дальше
1:53:10
на курсах там более подробно изучать значит список материалов для изучения Это не все книги которые Я рекомендую
1:53:17
значит для тех кто хочет очень хорошо разбираться в том как работает м Linux
1:53:23
его дебажить и дебажить в нём софт Я рекомендую две книжки этор Love это ядро
1:53:29
Linux описание процессора разработки и Майкл керис – это Linux
1:53:35
исчерпании Сразу говорю вторая книжка в два раза больше чем первая сложные
1:53:40
нудные Вот Но зато После прочтения их вы будете вообще знать там просто все кишки
1:53:46
Linux Ну и дополнительная ссылочка которую можно будет открыть конкретно про
1:53:52
описание то есть выдан кусок документации из ядра с картинками со всем чего вот как бы там кому-то не
1:53:58
хватало Да как говорится Ну презентация у вас будет А ссылочка собственно тоже будет Давайте я её открою Да и вам скину
1:54:05
эту ссылочку в чат так она у меня открывается вот так она выглядит на
1:54:12
английском языке вот кидаю ссылочку вам собственно в чат Значит от меня дополнительные плюшки
1:54:21
сейчас тоже пойдут сейчас только достаем немножко презентацию до конца значит курс стартует
1:54:29
254 2024 та теория операционных систем Да
1:54:37
она может быть но я сейчас вам порекомендую ещё другие книжки Вы не переживайте таум само собой Мы просто
1:54:44
ещё не дошли Я же говорил что будут бонус е меня здесь информация поду скорее всего о курсе можно пря навести
1:54:51
Каме Дони сведения Да вот собственно Заполните опрос Да Методическая
1:54:56
подсказка тут была для меня я должен был её удалить но как всегда я запи не удалил сейчас я вам пришлю ссылочку и
1:55:02
после чего расскажу ещё несколько книжек хорошие переводы были первые две
1:55:09
книжки Майкл керис и вот как раз второй про ядро Linux Так давайте я вам сейчас
1:55:15
скину книжечку сло
1:55:21
на ссылочка Пройдите опрос важное замечание опрос доступен только зарегистрированным пользователям Вот и
1:55:28
Давайте я Вам сейчас ещё покажу несколько книжек для тех кто хочет с нуля научиться разбираться в линуксе и
1:55:34
ещё кое о чём с вами поговорим и я обещал рассказать Почему тус как бы да Я рекомендую Лично от себя проходить
1:55:41
обучение в Осе Значит есть такая книжечка
1:55:46
значит многопоточность в гос
1:55:52
найдём эту книжку м картинки
1:55:57
ля-ля-ля-ля угу так так так так
1:56:05
так я забыл просто как она называется Давайте книга напишем книга
1:56:12
Она у меня есть я её давно прочитал Вот Но уже к сожалению м забыл
1:56:20
её название так так так так так так так так так
1:56:37
м так давайте пойдём Озон короче там точно
1:56:45
будет проще всего будет найти
1:56:53
Вон кто-то даже скинул давайте я открою
1:57:00
Картино Нет не немножко другая книжка сейчас
1:57:07
найдём во есть вот она Linux эффективное низкоуровневое программирование вот я
1:57:12
помню что там многопоточность вот короче вот эта книжка
1:57:22
програмы конкретному процессу и тут вот рассказано о том как программы размещаются на процессоре и так далее и
1:57:27
так далее Тут очень интересно первые полкниги как раз посвящены именно этому ссылку киньте да Давайте я лучше скину
1:57:34
название А вы потом собственно найдёте потому что ну со ссылкой такое о зоновская ссылка Это капец дадада Я
1:57:41
обещал похвалить Я все помню обещания мы сейчас до них дойдём Я просто не все книжки показал дальше следующая книжка
1:57:47
Давайте попробуем тоже назоне найти нет
1:57:59
[музыка] вот эта книжка линус Икс руководство
1:58:05
системного администратора это Мах для новичков Я видел такие новички есть в чате которые пришли с нуля я им
1:58:11
рекомендую эту книжку потому что здесь начинается в принципе от основ азы
1:58:18
немножко про Баш немножко про то немножко про каждую программу Как настроить и так далее вот да вот кто-то уже читает
1:58:25
это вообще Вот такая клёвая книжка Я прямо её прямо рекомендую да Ну естественно таненбаум
1:58:31
таненбаум у танен
1:58:38
Баума операционные системы вот вот это очень-очень классная книга Да и
1:58:44
архитектура компьютера тоже можно почитать вот эти две они старенькие Но это вузовские книжки которые вот если вы
1:58:51
по заставили эти нижки чи потому что во
1:58:56
всяких Бау и так да читают на первом курсе вот то есть
1:59:03
это прямо основа без которой невозможно будет разобраться вот также наверное
1:59:09
смотрите я вам обещал рассказать некоторые Я обещал некоторые
1:59:21
рассказать встроены на то что спрашивают базу какую базу спрашивают базу спрашивают о том как раз процессы потоки
1:59:29
сиротки Зомби сигналы и так далее и так далее поэтому это вам всё нужно знать
1:59:34
где вы эти знания возьмёте эти знания углубленно располагается в первых двух
1:59:39
книгах которые я вам посоветовал по ядру Linux А также есть вот такая книжка
1:59:44
Давайте я Вам сейчас её найду я тоже не помню название но мы сейчас по линуксу быстро по картинке найду её
1:59:51
ре устройство
1:59:56
Linux вот достаточно вот этой книжки тоже почитать и вы в принципе сможете ответить на большинство вопросов
2:00:03
технического интервью любого собеседования потому что дальше начинаются уже конкретные вещи например
2:00:09
спрашивают как работает кубернетес как работает то как работает всё да это вы уже конкретно можете подчеркнуть на
2:00:14
курсе но многие сыпятся на базе на баше Кому принадлежит там Т1 Чем
2:00:21
отличается тостар это всё расписано вот здесь есть ещ одна книжка по линуксу
2:00:26
сейчас я её тоже найду она такая вот была неказистая сейчас я её найду Вот кстати
2:00:33
эти две книжки описание вот это вот Получается кто у нас Роберт ла а вот это
2:00:38
вот Майкл керис две книжки они кстати подешевели советую их брать потому что обычно она стоит вот это стоит пятёрка
2:00:44
Вот это обычно стоит трёшку так сейчас найм по линуксу полису
2:00:50
полису е одна книжечка Ну скорее всего её может тут не
2:00:58
быть книга рецептов не то короче она такая Тоненькая маленькая
2:01:06
то ли от ули то ли от кого-то ещё и там типа карманный справочник Linux как-то
2:01:12
так он был назывался Ну короче там прям вот основа основ пря очень простенько
2:01:17
очень по верхам для того чтобы как раз Вспоминать про
2:01:24
собеседование а почему книги а не скажем курсы на например можете курсы не вопрос но я считаю что
2:01:32
книги лучше потому что книги у вас как справочник Вы можете там пометки наделать на вставлять закладки а потом
2:01:38
из этого подготовить себе шпаргалку вывести её на второй монитор сидеть собе и по этой шпаргалке Отвечать по курсам
2:01:44
навряд ли у вас так получится
2:01:50
вот сес ещё страницу
2:01:57
пролистайте свия не то не то не то не то не то не то
2:02:02
а я использую обсидиан может быть от Барта я не помню
2:02:08
у меня вот сзади за мной стелаж стоит Я же сейчас не пойду при вас там ковыряться искать эту книгу Она у меня есть но просто мне её как бы ну достать
2:02:15
надо тоже врем потратить сейчас поищем если здесь не найду то ну как бы не нашёл и не нашёл
2:02:26
Давайте напишу справочник может как-нибудь так у меня плохо с названиями
2:02:31
книг я их не запоминаю Баш карманный
2:02:39
справочник Джобс Ну да Джобс вы все уже [музыка]
2:02:49
увидели короче вот она от издательства Поли Вот примерно с такой же штукой Да только картинка другая и там было Linux
2:02:55
что-то там вот короче можно её будет найти вот а можно кстати здесь нет поставить а продавец нет издательство А
2:03:02
вот можно издательство поставить Давайте издательство М И фиг
2:03:08
Да о даёт только издательство выбрать которое её выпустило
2:03:22
вот эту кстати bpf для мониторинга линуса тоже рекомендую но уже продвинутым это уже те кто умеет писать
2:03:28
код здесь можно поработать с bpf И пописать всякие разные Тулы для
2:03:34
мониторинга под халом Короче не вижу её Ну ш карманный
2:03:40
справочник тоже можно купить почитать Ну та как бы была немножко
2:03:45
другая так новатека ска
2:03:52
Почему я считаю лучшим на сегодняшний день то
2:03:57
есть после админа Linux Растите в девопс ие инженеры изучайте языки
2:04:03
программирования без знания языка программирования расти в зарплате будет очень тяжело то есть Go Python как
2:04:10
минимум вот поэтому Присматривай курсы по го по пайтону книжки по го по пайтону
2:04:15
учитесь и тогда можно будет собе Всякие Яндекс тиньковы и так далее кстати в тинькове весь стек написан практически
2:04:22
на пайне и на вот у них практически не осталось То есть ВС выпиливают
2:04:28
значит Почему Я рекомендую именно знаете я до этого сотрудничал с разными другими
2:04:33
онлайн площадками да и с некоторыми из них я перестал сотрудничать по скажем так некоторым причинам Да потому что мне
2:04:40
не нравилось отношение к студентам Вот и
2:04:46
собственном взи
2:04:53
проходили не в онлайн формате то есть обещали студентам онлайн а были в записи и поэтому на сегодняшний день скорее
2:05:02
всего соответственно и Да это единственные наверно две
2:05:08
платформы которые делают практически все ну не практически А 100% все вебинары
2:05:14
проходят в онлайне
2:05:22
но тоже известные как бы конкуренты отса у них Несмотря на то что написано на
2:05:27
лендинге у вас будет идти записанная лекция то есть всё будет в оффлайне то
2:05:32
есть пред записанная лекция которая вы будете смотреть видео которая будет мало
2:05:38
информативно будут добавлены дополнительные ссылки для чтения на какие-то статьи которые вы должны сами
2:05:43
прочитать понять Да и вы за это Заплатите дене неживые которы можно задавать вопрос
2:05:50
обни общаться в телеге и так далее и так далее и получать больший Профит поэтому
2:05:55
я лично рекомендую отус Да немножко тут как бы полил грязью другие компании Да
2:06:01
но я не называл какие то есть У меня просто есть опыт работы как преподавателя я вот вам просто честно от
2:06:07
себя говорю что как бы вот тус и Рейн – это вот две на сегодняшний день конторы
2:06:12
которые делают своё дело хорошо и качественно Да Казалось бы не надо было тут называть Рейн мы всё-таки вот ус
2:06:18
сидим Да но отметить я их не могу потому что ребята Действительно делают тоже классный контент тем более ВС равно это
2:06:24
срет вот Данил пишет унв суп Частично на по п jav библиотеке у Тинькова
2:06:30
практически не осталось джавы она выливается семимильными шагами я это говорю как человек который сейчас проходится без теньков вот причём на
2:06:39
достаточно такую крупную серьёзную позицию поэтому могу вам с уверенностью сказать что джавы там Практически не
2:06:44
осталось ап – это по который Затон под нагрузку
2:06:52
Альфа Альфа в Альфе много питона вот в Газпроме много питона АБЕ много
2:07:00
двы с очень много очень много и никто е там выпиливать не собирается с это
2:07:07
единственные конторы которые набирают разработчиков вот
2:07:12
да практически всё наве точно также
2:07:20
как сегодня всё и с официальной с неофициальной частью Если ещё какие-то вопросы накидайте Я готов на них
2:07:26
отвечать Вот то есть эту часть вы понимаете прекрасно что скорее всего вырежут потому что мы здесь много чего
2:07:33
такого говорили того что нельзя На каком уровне надо знать Вот да я вопрос пропустил не ответил да На каком уровне
2:07:40
надо знать гон в СГ чтобы начать Ну не Hello world Да но хотя бы
2:07:46
уже писать какой-то софт если тите я могу скинуть свой в пи
2:07:52
экспорт для esxi Вот примерно На таком уровне нужно знать чтобы идти уже
2:07:59
собственно в с инженеры То есть вы должны быть самостоятельной единицей которая может писать самостоятельные
2:08:07
Тулы вот вам пожалуйста ссылочка для обучения это примерный уровень чтобы уже быть на уровне так Егор пишет есть курс
2:08:14
Linux ADV есть в ЧМ фишка вашего РСА по описанию протехнологии забили по полной
2:08:21
согласен про удобство онлайн лекций в принципе нормальных лекторов но код домашек на devops курсе большую часть на
2:08:28
кастле обхода тестов тра что у вас смотрите Значит так Linux Advanced – это
2:08:34
курс посвящённый линуксу Linux администраторам там вы будете глубоко изучать Как работает операционная
2:08:41
система Linux и всякие разные прикладные штуки для организации скажем так
2:08:46
а работы смежных команд в том числе devops инженеров потому что без знания
2:08:52
вы навряд ли сможете поставить какой-нибудь там Jin и правильно его настроить и так далее курс по хайду
2:08:58
посвящён именно уже тюнингу линуса под задачи высокой нагрузки под
2:09:05
отказоустойчивость под кластеризации и так далее и так далее Если Вы посмотрите программу Да которую мы с вами там листа
2:09:12
вот вся программа заточена под высокую нагрузку веб-приложений
2:09:19
Давайте я вот это закрою у меня начинает просто тормоза идти то есть всё заточено
2:09:25
под нагрузку веб-приложений то есть видите у нас есть всякие разные штуки ээ
2:09:30
база данных в кластере как их тюнить ребит очереди сообщения эластики в кластере как их тюнить капки консулы
2:09:37
дисы различные виртуализации это всё Что касаемо А за то есть здесь не будет
2:09:43
подробно рассматриваться Open Stack да то есть он будет поверхностно там в основном будет рассказано о том как его
2:09:48
затюнить под какие-то вещи как его там развернуть строить и так далее вот курс
2:09:53
по devs – это совсем другое devs инженеры они могут не знать как работает
2:09:59
кубер в кишках там под капотом Как работает це как его шутить и так далее Потому что задача деса обеспечить
2:10:05
разработку то есть задача это написание CD палав этой это просмотр всяких мониторингов и
2:10:13
ещё так далее так далее Вот это
2:10:18
скажем вни то пытаются как бы из то есть в России
2:10:24
Linux администратор S это одно и тоже потому что у нас самы чары не понимают кого они ищут Да но если в классическом
2:10:31
понимании Да SE инженер он более продвинутый более высокооплачиваемый чем The инженер Да а Linux администратор он
2:10:38
менее оплачиваемый чем S инженер то есть S инженер – это высшая цепочка эволюции Почему Потому что это S инженеры это те
2:10:46
люди которые могут и поработать то есть написа
2:10:52
могут пойти что-то пожить могут раскатить какой-то прикладной Соф постеров и так далее а ещ они могут код
2:10:58
писать Вот то есть они как бы разрабатывают ещё всякие разные утилиты вот поэтому они стоят очень-очень дорого
2:11:05
вот асы в основном предназначены для того чтобы облегчить труд разработчику чтобы разработчик мог нажимать различные
2:11:12
кнопочки в гите да Или в каких-то смежных системах и у него разворачиваюсь его сл на каких-то стендах Вот это
2:11:19
работа работодатели считают что дево должны знать как работает как работает кластер
2:11:25
ла Что такое как его администрировать как его пировать Что такое спш в как их
2:11:33
делать когда начинает тормозить и так далее они думают что девос должны это знать на самом деле Ну задача немножко
2:11:39
другая поэтому сначала люди растут Linux администраторов потом в инженеров потом в S инженеров вот а оттуда уже в
2:11:46
Архитекторов расту
2:11:52
во Надеюсь я вот на вопрос Егора
2:11:58
ответил по поводу того что будет у нас на курсе Ну я в общем-то веду на всех КС
2:12:05
курсах поэтому везде интересно в отсе то есть в тусе немножко ну я открою
2:12:11
вам ещ немножко внутренней кухни в тусе очень сложный от бординг преподавателе там кого
2:12:16
Полот тах см излагать умеют чтобы те знания
2:12:23
которые есть в голове у преподавателей они как-то оседали в голове у будущих инженеров Да у студентов скажем так и
2:12:30
вот это тоже Ключевая как бы особенность например в условно другую компанию не буду говорить как её гораздо проще
2:12:36
попасть в преподавателям Ну там более скажем так лайтовый подход к этому и поэтому качество курсов там гораздо ниже
2:12:42
при схожей цене вот Ну и как бы онлайн вживую оно
2:12:49
есть онн вживую когда зать во при со своим вопросом Прити со
2:12:55
своей проблемой и так далее это гораздо лучше чем вот посмотреть какую-то фигню записанную как на тубе в записи Да а
2:13:00
потом что-то там какие-то тексты читать пытаться в них вникнуть и сделать домашки Ну вот моё
2:13:06
мнение так второй вопрос про домашку Давайте про домашку второй вопрос
2:13:16
значит пово
2:13:21
з м при поднимать одни две систе поднимать несколько вертушек на них что-то разворачивать настраивать и так
2:13:28
далее и так далее высшая точка развития архитектор правильно понял да высшая точка развития архитектор потому что
2:13:34
архитектор знает как всё это дело работает и знает как это штуку применять и комбинировать так Григорий Ты должен
2:13:40
знать всё зарплата соответствующая 15000 руб в месяц Ну это как бы конторы так предлагаю
2:13:51
домашку тоже домашки необязательные но они сложные Сразу
2:13:56
говорю то есть на домашке будет у вас по 8 часов уходить Потому что много чего нужно поднять много чего нужно будет
2:14:07
настроить Да всем спасибо за положительные отзывы кому понравился вебинар А если ещё в это вопросники
2:14:14
Напишите будет вообще классно а по поводу бонуса в качестве клауда это
2:14:21
лучше уточнить у кураторов да Или у менеджеров с кем вы общаетесь на этапе
2:14:26
оформления сделки по покупке курса потому что я этой информацией не обладаю не могу точно сказать да в одной
2:14:33
компании например дают Яндекс облако здесь не знаю может быть что-то и дают Я
2:14:38
просто домашки Ну как бы не сказать что я их прямо активно и часто проверяю Да
2:14:43
вот поэтому Ну как бы не знаю где студенты их выполняют я только вижу готовый результат что всё
2:14:50
работает скорее всего что-то дают но лучше уточнить Ну скорее всего
2:14:56
какой-нибудь промокод который действует там какой-то определённое время пока действует курс и вы там будете что-то
2:15:01
делать Наверняка какое-то партнёрство есть какое не скажу Ну чтобы просто вас
2:15:07
не ввести в заблуждение так коллеги ещё
2:15:13
вопросы Давайте если Вопросов нет Ставим тогда
2:15:19
девяточка потому что У всех разные часовые пояса все могут устать я-то как бы готов с вами ещё трындеть Сколь
2:15:26
угодно долго и много вот Чувствую все устали пошли девяточка Ну что давай тогда расходиться В общем всем спасибо
2:15:32
большое что пришли послушали по задавали вопросы если вы ещё сомневаетесь стоит
2:15:38
идти втус не стоит идти брать не брать курс моя рекомендация Берите не пожалеете если будете задавать много
2:15:45
вопросов и как говорится быть иголкой в одном месте Да у преподавателей у вас будет максимальная эффективность от
2:15:52
этого курса потому что вы Спросите всё что не поняли и всё что боялись спросить у вас будет очень много знаний вы
2:15:58
пройдёте все собесы да устроитесь на классную работу и вы будете получать большую зарплату Именно для этого все
2:16:04
сюда приходят Все сюда приходят для того чтобы прокачать свои знания и получать больше денег это нуни для кого не секрет
2:16:10
Вот соответственно для того чтобы это делать нужно знания качать вот тогда ребят Всё Всем спасибо большое Ещё раз
2:16:17
спасибо что пришли вопросов вижу Нет все ходится поэтому я тоже с вами прощаюсь
2:16:23
вот всем Машу ручкой пока пока пока вот закрываю всё это дело и запись
2:16:28
соответственно вам где-то будет приложено где я к сожалению не знаю это вот а Вам наверное по электронной почте
2:16:36
придёт собственно ссылка на запись Может быть она кстати на ютубери вот я если
2:16:41
честно ни разу не интересовался этим вопросом Где же они появляются Ну наверное всё-таки задам Чтобы в следующий раз Потом вам будущим
2:16:48
студентам Да об этом говорить где она будет Вот всё ребят Всем спасибо давайте всем
2:16:54
заранее там хорошо отдохнуть жду всех вас на курсе увидимся там будет много чего интересного

Поделиться: