Что из этого является потоками?

Что из этого является потоками?

14.03.2018 06:56:06 Просмотров 26 Источник

Доброго времени суток.

Не могу разобраться, что из этого является именно потоками, и как их вообще отличать от процессов.

Самой системы Linux на PC нет, опираюсь на скриншоты. Именно этот сделан в командной строке с "top H".

Очень надеюсь на Вашу помощь, т.к. сам разобраться не смог, да и в сети что-то так и не нашел однозначного ответа на то, как их отличать. введите сюда описание изображения

У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8#comment1259970_797928
top H показывает потоки. Всё что вы видите это потоки.
https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8#comment1260210_797928
Всё что вы видите это потоки - кто вам такое сказал ?!!! Читаем man: The top program provides a dynamic real-time view of a running system. It can display system summary information as well as a list of processes or threads А опция H означает, что треды печаются отдельно, а НЕ суммируются внутри процесса: *H - Instructs top to display individual threads. Without this command-line option a summation of all threads in each process is shown. Later this can be changed with the `H' interactive command.
https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8#comment1260790_797928
@Sergey: да, каждая строчка это поток -- всё что вы видите (каждая строчка в таблице) это потоки. Я тоже man процитировать могу: "top -H :Threads-mode operation Instructs top to display individual threads. Without this command-line option a summation of all threads in each process is shown." [выделение моё]¶ Используйте \@-синтаксис, если хотите, чтобы мне уведомления о вашем комментарии приходили.
https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8#comment1261008_797928
Вы как раз и процитировали то место, в котором говорится, что ооция -H показывать треды отдельно. Т.е. можно показывать треды внутри процесса-хозяина, а можно - отдельно. Но далеко не все процессы содержат треды. Процесс - первичен, а тред - вторичен.
https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8#comment1261151_797928
@Sergey: каждый процесс содержит как минимум один поток, поэтому каждой строчке в таблице соответствует поток¶ У вас похоже проблемы с чтением как документации так и комментариев -- даже после подсказки не способны \@-синтаксис использовать.
https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8#comment1261181_797928
@jfs Я понимаю, что оскорбление - лучший способ доказательства правоты. У меня к Вам только одна просьба, откройте стандарт IEEE Std 1003.1c-1995, который вводит понятие "поток" и объясните мне, как же несчастные процессы существовали в *NIX системах до 1995 года, когда никаких потоков в природе не существовало? И как существует огромное множество приложений, к которым, при их сборке, не применялся ключ -lthread, кто же в них поддерживает эту призрачную единственную нить?
https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8#comment1261226_797928
@Sergey ну вот с двух подсказок и научились @ знак писать — это не оскорбление это просто констатация факта. Причём здесь IEEE стандарт какой-то? Цитату приведите, которая противоречит тому что я сказал, которая к "top H" команде на Linux применима. Подумайте как в течении лет менялась реализация потоков на Linux — каким стандартам она следовала или не следовала (привести вам цитату Линуса из 90х? Вы знаете, что ядро думало о потоках в то время?)— более того на разных платформах разная реализация может быть. Проверка: что вы думаете PID колонка выше показывает?
https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8#comment1261590_797928
@jfs Причём здесь IEEE стандарт какой-то? - я думаю, пора заканчивать дискуссию.

Ответы - Что из этого является потоками? / Что из этого является потоками?

gbg

14.03.2018 07:35:05

Потоки чисто технически не отличаются от процессов - при создании потока создается новый процесс, который наследует ту же память и дескрипторы, что и родитель. Чтобы увидеть такие процессы, нужно слегка настроить htopвведите сюда описание изображения

Поставив эти галочки, получим вот такой вывод:

введите сюда описание изображения

Красным отмечены дочерние потоки, которые насоздавала suricata. Вы можете видеть, что фактически, это отдельные процессы с разными PID. Но при этом, графы, касающиеся используемой памяти, у них заполнены идентично - что подтверждает мое первое утверждение - процесс, реализующий поток наследует от родителя дескрипторы и память.

https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8/797932#comment1259954_797932
Я бы с радостью настроил и команду и понажимал галочки, если б у меня была такая возможность. Но, как я уже писал в первом сообщении-вопросе, у меня есть только скриншот, сделанный на аудиторном компьютере, по которому мне нужно определить эти несчастные потоки. Но, судя по комментарию, я так понимаю, что в моем случае потоками будут выделенные красным строки? Потоки Вот прямо все?
https://ru.stackoverflow.com/questions/797928/%d0%a7%d1%82%d0%be-%d0%b8%d0%b7-%d1%8d%d1%82%d0%be%d0%b3%d0%be-%d1%8f%d0%b2%d0%bb%d1%8f%d0%b5%d1%82%d1%81%d1%8f-%d0%bf%d0%be%d1%82%d0%be%d0%ba%d0%b0%d0%bc%d0%b8/797932#comment1259964_797932
@ago - группы потоков вы выделили неправильно. И что за странный способ изучения ОС - по скриншотам? Поставьте линукс в виртуалку
Sergey

14.03.2018 01:18:46

Есть два внешних признака, позволяющие отличить процесс от потока.

  1. У всех потоков одного процесса PPID (родитель) совпадают. Но любой процесс может порождать и процессы и потоки. Поэтому, надо использовать критерий № 2:
  2. У всех потоков одного процесса совпадает командная строка, из которой они были запущены. Все потоки запускаются из ОДНОГО исполняемого файла. А вот процессы, как правило, из разных.

На картинке, которую Вы прилагаете нет ни PPID ни командной строки. Поэтому, я думаю, эта задача неразрешима. Что бы на самом деле выполнить поиск потоков, рекомендую следующую последовательность действий:

  1. ps -eLf > proc_list.txt

  2. В полученном файле удаляем все колонки, кроме PID, PPID и command

  3. Сортируем по полю PPID

  4. Группируем по Command

Если в некоторой группе будет больше 1 строки, значит все дополнительные - потоки.

Закрыть X