Size: a a a

2020 December 08

AE

Andrey Enshin in pro.osdev
Привет, чатик!

читаю https://snyk.io/blog/kernel-privilege-escalation/ и думаю, зачем ядру кольцевой двусвязный список процессов?
Двусвязность можно понять - позволяет легко удалить процесс из списка, обновив ссылки у соседей без полного обхода.

А кольцо зачем?
Говорят, список процессов ещё и в виде красно-черного дерева представлен для каких-то других нужд
источник

TS

Timur Safin in pro.osdev
Andrey Enshin
Привет, чатик!

читаю https://snyk.io/blog/kernel-privilege-escalation/ и думаю, зачем ядру кольцевой двусвязный список процессов?
Двусвязность можно понять - позволяет легко удалить процесс из списка, обновив ссылки у соседей без полного обхода.

А кольцо зачем?
Говорят, список процессов ещё и в виде красно-черного дерева представлен для каких-то других нужд
хмм, хмм. А как сделать двусвязный список не закольцевав голову и хвост?
источник

AE

Andrey Enshin in pro.osdev
Да, хороший вопрос. У первого элемента ссылка назад - NULL, у последнего ссылка вперёд - NULL
источник

DP

Dmitry Ponyatov in pro.osdev
Andrey Enshin
Привет, чатик!

читаю https://snyk.io/blog/kernel-privilege-escalation/ и думаю, зачем ядру кольцевой двусвязный список процессов?
Двусвязность можно понять - позволяет легко удалить процесс из списка, обновив ссылки у соседей без полного обхода.

А кольцо зачем?
Говорят, список процессов ещё и в виде красно-черного дерева представлен для каких-то других нужд
потом что планировщик по кольцу ходит
а дерево — скорее всего для быстрого анализа приоритета процесса, более приоритетные оказываются ближе к корню, с близким приоритетом группируются в локальную область
источник

AE

Andrey Enshin in pro.osdev
Интересно. А где про это почитать можно? Про кольцо и дерево, как они используются внутри ядра
источник

DF

Dollar Føølish in pro.osdev
Практически в любой книге по ядру
источник

AE

Andrey Enshin in pro.osdev
да, действительно в первой книге по ключевому слову "linux kernel" -  Linux Kernel Development, Third Edition от 2010 года - это кое-как описано в 6 главе, общими словами пока что без примеров использования

думаю, примеры проще погрепать в сорцах по next_task, prev_task и for_each_process

спасибо
источник
2020 December 09

d

disba1ancer in pro.osdev
а какая стратегия создания процессов лучше на ваш счёт, как в юниксах (через fork) или как на винде (через CreateProcess)?
источник

DR

Dima Richev in pro.osdev
Windows
источник

d

disba1ancer in pro.osdev
у кого ещё какое мнение?
источник

A

Aleksandr in pro.osdev
Форк создает поток, а не процесс
источник

FL

First name Last name in pro.osdev
в юниксе?
источник

FL

First name Last name in pro.osdev
дочерний процесс
источник

d

disba1ancer in pro.osdev
Aleksandr
Форк создает поток, а не процесс
в юниксе создаётся именно процесс, который разделяет память и ещё кучу всего с процессом предком, и, вроде как, в юниксах долго не было концепции потока, если она вообще сейчас есть, но это уже не точно
источник

BV

Boris Vinogradov in pro.osdev
вы тут опять собрались обсуждать тонкости реализации линукса - идите в офтопик
источник

d

disba1ancer in pro.osdev
Boris Vinogradov
вы тут опять собрались обсуждать тонкости реализации линукса - идите в офтопик
нет, меня интересует каким способом лучше процессы создавать в своём ядре
источник

BV

Boris Vinogradov in pro.osdev
зависит от множества факторов
источник

d

disba1ancer in pro.osdev
Boris Vinogradov
зависит от множества факторов
интригующий ответ...
источник

BD

Berkus Decker in pro.osdev
disba1ancer
а какая стратегия создания процессов лучше на ваш счёт, как в юниксах (через fork) или как на винде (через CreateProcess)?
ты знаешь, fork местами сурово эффективнее выходит
источник

BD

Berkus Decker in pro.osdev
disba1ancer
интригующий ответ...
оно и правда зависит от кучи факторов, тебе надо посмотреть все способы и изобрести свой^W^Wвыбрать подходящий под твою систему
источник