Основы Linux: процессы и их свойства
ฝัง
- เผยแพร่เมื่อ 27 ส.ค. 2024
- Что такое процесс и как он связан с программами и библиотеками
* сегменты процесса: text, data, stack, heap
* загрузка программ и библиотек в виртуальную память процесса
* ELF секции и права доступа сегментов памяти
* динамическая и статическая линковка
* виртуальная, резидентная и разделяемая память процесса
Атрибуты процесса
* wd, umask, environment
* pid, ppid, tty, sid, pgid, tpgid
* nice, pri
* ruid, euid, rgid, egid и их связь с SUID и SGID
Порождение процессов и запуск программ
* системные вызовы fork() и exec()
* системные вызовы wait() и exit()
* процессы-зомби и прародитель процессов
* параллельные программы
Об этом и о многом другом см. books.google.r...
Вы мой сенсей! Вы Сократ от IT - знание это высшее Благо и оно должно быть доступно всем! Учился и учусь у Вас
Как же долго я искал подобное видео, и вот, наконец-то картинка в моей голове собрана воедино, и я обрел столь желанное понимание! Тысяча благодарностей
Этим и отличается классическое образование от "инфоцыганских видео" из интерента 😁
@@DmitryKetov это прямо душа в душу от души, пятка к пятке, тютелька в тютельку сказано!
Я вообще в шоке от того что так мало просмотров, мне друг подкинул . Я удивляюсь как этот человек все чуть ли не до атомов раскладывает и при этом еще понятно и даже что-то запоминается.
Спасибо вам огромное, такой труд записали!!! Сейчас вспоминаю курс операционных систем из далекого студенчества!
Спасибо огромное! Прям камень с души сняли, заполнили кратер в знаниях :D
Информация очень высокого качества
😁
Отличный материал, однозначно в избранное!
О, а я этот курс платно проходил в политехе лет пять назад. Тысячу раз уже вспоминал, жалел что нет в открытом доступе. И вот, аллилуйя! Спасибо за шэйр. Курс офигенно составлен. А в конце сдавал курсач Дмитрию. Приятно вспомнить.
Теперь микросервисы, хайлоад, го, тарантул, но UNICS незыблим =)
unix
@@dmitrii.zhiliaev а что значит этот X ?)
Просто супер! Нет слов! Подписка, лайки и дальше буду по мере времени вас смотреть!
параллельно пытаюсь изучать питон после просмотра этого видео стало понятно как он работает автору спасибо смотрел видео о питоне на других каналах ничего не понял здесь видео о процессах на линукс и всё стало ясно это удивительно , большое спасибо
Отличная лекция! Спасибо!
Уважаемый, лекция - огонь. Спасибо вам за труд.
Шикарно объяснено про процессы, спасибо
Спасибо за полезное видео , я вам признателен.
Дмитрий Кетов в топе лучших преподавателей. Правда грустно слышать в лекции фразы на подобии "вчера мы с вами проходили", а ты в свою очередь упомянутый материал в предыдущем видео не видел... Дмитрий, подскажите есть где-нибудь ваш онлайн курс (пусть и платный) с где таких обидных камбеков не будет и где есть лабораторные работы, домашние задания?! На Степике каком-нибудь?!
Присоединюсь к вопросу. Это ценнейший материал!
Спасибо
очень достойное объяснение
Nice
а в 1:12:10 что значит программа устала и решила ее заместить?
Демоны в греческой мифологии это низшин божества, помошники богов.
Отсюда и название служб, которые служат на благо юзера)
Например cron от греческого кронос (время)
кто тогда такие админы?)
@@sashashad Когда это создавалось админы и были юзерами. Да и сейчас с большенством демонов полноценно могут работать только админы.
@@_RUDE_ Соглашусь, даже программисты до сих пор плохо представляют устройство операционных систем (если они не системные программисты).
Видео достаточно длинное, добавьте, пожалуйста, таймкоды, будет в разы удобнее
Дмитрий, подскажите пожалуйста, а вы сейчас где то преподаете? Возможно даете частные уроки?
Нет, уже отошел от дел :)
@@DmitryKetov Понял, спасибо за ответ и за этот материал :)
Очень хорошо рассказано о библиотеках и о возможности иметь в мистеме несколько версий библиотек. Однако на практике остается проблема неудовлетаоренных зависимостей, когда при установке какой либо программы она ругается на отсутствие необходимых библиотек, а когда пробуешь их в свою очередь установить, возникает проблема, что есть новые зависимости или что существующая версия библиотеки не подходит и в итоге уже нисего установить невозможно, тупик.
Можно ли устанавливать несколько программ, использующих разные версии библиотек, притом, что программы используют линки, указывающие на расположение библиотеки?
Можно, но только нештатным образом, что требует некоторых спец. усилий. На практике это решается контейнерами docker или snap.
@@DmitryKetov Дмитрий, спасибо за ответ, вы один из самых лучших преподавателей! Даете глубину знаний, потому что сами знаете глубоко.
ну или использовать виртуальные окружения
Огромное спасибо за лекции! Не могли бы вы более подробно рассказать что хранится в секции DATA?
Данные программы, например текстовые строки, которые она выводит в процессе работы
Еще уточнил бы что это глобальные или статические переменные, которые не меняются в контексте функций программы, т.к. размер этого сегмента фиксированный
Могут и меняться, никто им не запрещает. Просто их начальные значения известны на момент запуска программы.
@@Maksim-nu8hbДа, примерно так - для глобальных переменных и локальных статических, насколько я помню, это верно для большинства C-компиляторов. А вот локальные автоматические переменные - всегда в стэке.
10:08 - а почему в 64 bit разрядной системе всего возможно выделить памяти 2^48?
Почему мы её тогда не называем 48 битовой
Потому что процессор оперирует с 64 разрядными числами, АЛУ у него такое и шина данных. А шина адреса имеет "всего" 48бит (что позволяет иметь доступ к 256Тб [теребайт] байт-адресуемой памяти). Можно сделать шину адреса и 64 бит, но зачем усложнять и так непростую и недешевую реализацию, если даже при 48битном адресе используются жалкие проценты от его полного потенциала? Лишние биты это лишние транзисторы и лишнее энергопотребление, нагрев и прочее.
@@DmitryKetov Спасибо за развёрнутый ответ! Среди информационного шума сложно быстро найти нужное. Использую вашу книгу в работе.
Я правильно понимаю, что терминал, получается, при исполнение команды Х делает:
1. fork()
2. exec() - вставляя туда путь до файла Х, аргументы переданные в командной строки и т.д.
3. wait() - причем делает данный вызов сразу, посколько мы не можем пользоваться терминалом, пока дочерний процесс Х не завершится ?
Нет, ни терминал ни его драйвер не делают ничего. Все верно вышеперечисленное делает ваш командный интерпретатор, только если вы ему не скажете "не делать wait()" путем добавления амперсанда в конец команды: X &
Ubuntu 20.4 все LSB sared object, и ls и date и echo.🤷♂️Вот и полусается что учим старый материал.
А вы не учите, вы в корень зрите ;) насколько я помню в одном из моих видео (возможно правда не в этом) говорится что между ними (ELF executable и ELF shared) очень тооооонкая разница и показывается что SO можно..... тадам! запускать как программу :)
@@DmitryKetov как я понял sared это библиотека (тоже программа) и запускается она, когда к ней обращается другая программа, которая нуждается в данной библиотеке.
То есть в моем случае с ls, утилита file немного запуталась?
@@_RUDE_ Да, с большой вероятностью file как раз не справилась с этой тонкой разницей. Попробуйте readelf -h :)
Здесь ошибка на слайде. Насколько я знаю, stack идет ниже heap.
Этот слайд в принципе концептуален, ибо кучи как таковой нет уж давно.
Под ней стоит на текущий момент понимать набор разбросанных в адресном пространстве анонимных сегментов. В т.ч. тот, который создан при загрузке программы в процесс потому что в заголовке ELF файла программы есть секция .bss и в котором работают brk(), sbrk() и malloc().
Но в одном вы правы, в адресном пространстве он имеет адреса младше, чем стек.
+
Кто ставит дизлайки?!
а они существуют?