Ru-Board.club
← Вернуться в раздел «UNIX»

» Списки дескрипторов процессов

Автор: pavel1978
Дата сообщения: 10.06.2012 06:58
ДВС!

Родные, как вы считаете, сколько и каких списков дескрипторов задач может быть в системе? От чего должно зависеть это число?

Перечитал много лекций в инете, выданных гуглами-яндексами, а вот нифига! У кого какое мнение по этому поводу?
Автор: doktorpilulkin
Дата сообщения: 10.06.2012 07:02
http://www.thevista.ru/page11931-preodolevaya_granitsy_windows_deskriptory

плохо искал. конечное число. зависит от разрядности. мнений тут никаких не может быть


сорри не увидел что про UNIX

Добавлено:
ну так же посмотри разрядность переменной. вот столько и может быть
Автор: pavel1978
Дата сообщения: 10.06.2012 09:34
Статья полезная, добавил в избранное. Но хотелось бы ФОРМУЛУ для рассчета макс. количества дескрипторов. Есть такая?
П.С. в статье приведено в скобках 16*1024*1024 - почему именно такие?

Добавлено:
Каково макс число дескрипторов для системы в зависимости от ее разрядности, хотелось узнать...
Автор: doktorpilulkin
Дата сообщения: 10.06.2012 11:01
ну патамуша так сделали. микрософты винду.

в упор не помню с чего мне интересоваться этим в голову взбрело, но совершенно не помню в чем там суть. точно - трудно достичь предела. даже с учетом тредов
Автор: pavel1978
Дата сообщения: 10.06.2012 12:06
Предел там 16 милл с лишним, достичь трудно. А вот что значат 1024*1024?
Автор: ASE_DAG
Дата сообщения: 10.06.2012 13:57
pavel1978
> как вы считаете, сколько и каких списков дескрипторов задач может быть в системе?
Что такое «дескрипторы задач»? PID-ы? Т. е. узнать надо максимальное общее кол-во процессов? Тогда вы для начала бы указали, какое ядро используете. Если Linux™, то спросите его так:
$ /sbin/sysctl kernel.pid_max
Он вам скорее всего ответит так:
kernel.pid_max = 32768

> От чего должно зависеть это число?
В первую очередь — от вашего желания. Оно устанавливается в /etc/sysctl.conf.
Автор: pavel1978
Дата сообщения: 10.06.2012 15:27
да в общем случае, напр., в винде. Смотрел утилитой тестлимит - результат чуть другой, чем в учебнике - порядка десятков расхождение. Но! Оно при этом не критичное (в учебнике 16 744 434, а у меня 16 744 393) Вот как оно образуется, сие число?

Добавлено:

Цитата:
как вы считаете, сколько и каких списков дескрипторов задач может быть в системе?  От чего должно зависеть это число?

вот такой вопросище в конце статьи. И этот же вопрос мне попался в варианте контрольной работы, блин...

Добавлено:
тут упор именно нат слово "списков", по-моему.
Автор: doktorpilulkin
Дата сообщения: 10.06.2012 15:40
а оно случаем не образуется из 4 гигабайта, минус память необходимая для работы ядра и устройств, поделить на память необходимая для запуска пустого процесса?

Добавлено:
http://www.thevista.ru/page10539-preodolevaya_granitsy_windows_virtualnaya_pamyat&print=1


pavel1978
если узнаешь все таки в чем дело. не могу нагуглить статью которую читал и вспомнить не могу. вопрос встал когда прогу писал и разбирался что такое тред - вот это вспомнил. напиши в чем же дело в двух словах
Автор: pavel1978
Дата сообщения: 10.06.2012 16:30
Вот очень тепло, по-ходу!! Читал эту "Преодолевая границы виндовс"! А почему именно 4 ГБ?
Автор: doktorpilulkin
Дата сообщения: 10.06.2012 16:54
для чистых 32 битных систем, не использующих 64 битных инструкций.
в хп кажется адресное пространство для пользовательских процессов 2 гига тупо. системных не так много которые в остальные 2 гига влазят

Добавлено:
сервер 2003 хоть и 32 битный, но для расширенной адресации до 32 гиг стандарт и до 64 ентерпрайз он все равно использует помимо возможно и 32 битного декриптора наверно 36 битный линейный адреск, то есть все ранво использует 64 битные инструкции. врядли принцип окна используется, наверно корректируется адрес системой. не читал никогда как за 32 бит вылезли. у меня все равно процессор их не поддерживает

Добавлено:
восемь страниц какбы по 4 гига. так что ли. один процесс интересно может за пределы этой "страницы " выйти

Добавлено:
http://support.microsoft.com/kb/283037/ru
http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C


походу используется дескрипторы указывающие на разные блоки 4 гигового размера, а смещение тупо остается 32 битной, то есть один процесс не может использовать больше 4 гиг.
Автор: pavel1978
Дата сообщения: 10.06.2012 18:19
от чисел уже даже немного прёт, если честно. Вот сколько "весит" один дескриптор? Т.е. сколько выделяется памяти на 1 дескриптор?
Автор: doktorpilulkin
Дата сообщения: 10.06.2012 18:28
дескриптор процесса видимо имеется ввиду.

http://vsokovikov.narod.ru/New_MSDN_API/Process_thread/handle_identifiers_process.htm

в винде 32 битный, как в ядре так и в оболочке, но числа реально всегда в десятичном формате 4-ех значные. так что сколько битов не используется фиг его знает

Добавлено:
в диспетчере задача есть столбец количество потоков - даже с их учетом врядли у меня сейчас сотня потоков\процессов набереться. и есть еще какой то загадочный столбец счетчик дескрипторов, который аж 280 показывает например у µTorrent-а, эта походу когда процесс работает создает тред и даже заканчивает его то номер за собой забивает. хотя странно там есть функция освобождающая. экспериментировать надо

Добавлено:

Цитата:
Счетчик дескрипторов

Общее число дескрипторов, открытых в текущий момент, связанных с процессом. Это число равно сумме дескрипторов, открытых в текущий момент для каждого потока данного процесса.


походу в винде дескриптор или хендл объектов это одно и тоже множество. то есть хендл окна не может численно равняться дескриптору(хендлу) процесса, или треда.
Автор: pavel1978
Дата сообщения: 10.06.2012 19:32
Дескриптор, по-моему, в данный момент времени Т - уникальное число. По завершению процесса, потока, задачи он должен освобождаться, иначе будет т.н. утечка дескрипторов, с этим бороться надо (программистам-разработчикам).

Добавлено:
1 дескриптор весит 8 байт

Добавлено:
в общем, упор был не на количество дескрипторов, как выяснилось, а на сколько СПИСКОВ
дескрипторов, и каких.
Автор: doktorpilulkin
Дата сообщения: 10.06.2012 20:53

Цитата:
1 дескриптор весит 8 байт

64 битная система что ли?
Автор: pavel1978
Дата сообщения: 11.06.2012 06:22
нет, 32 разр пока рассматриваем.
Автор: doktorpilulkin
Дата сообщения: 11.06.2012 06:24
такта чета путаешь - 1 байт = 8 бит, 8х8=64

Добавлено:
спроси свой вопрос в теме Си, ассемблерная тема тут на форуме совсем дохлая, но тем не менее. погугли ассемблерный форум на русском
Автор: pavel1978
Дата сообщения: 11.06.2012 06:27
одна страница - 4 КБ=4096 байт, в страницу влезает 512 дескрипторов => 4096/512=8 байт
Автор: doktorpilulkin
Дата сообщения: 11.06.2012 06:32
скорее всего так еще какие то данные о процессе

Добавлено:
одна страница это наверно минимальная память для создания процесса, а дескрипторы процессов храняться где то в ядре в винде под это дело память зарезервирована видимо динамически изменяющаяся
Автор: pavel1978
Дата сообщения: 11.06.2012 06:47

Цитата:
а оно случаем не образуется из 4 гигабайта, минус память необходимая для работы ядра и устройств, поделить на память необходимая для запуска пустого процесса

формулу - в студию! делим на память пустого процесса ВСЁ выражение или только "минус памятьдля ядра... и устройств"? Сколько "весит " пустой процесс и почему?
Автор: doktorpilulkin
Дата сообщения: 11.06.2012 06:50
не помню сколько, читать надо.

под пользовательские процессы виндовс хп отводит адресное пространство - первые 2 гига, последние два гига под устройства и ядро.

если минимальная память 1 страница, то максимальное число пользовательских процессов = 524288, похже на правду?

Добавлено:
http://www.thevista.ru/page11563-preodolevaya_granitsy_windows_protsessy_i_potoki

ниче кроме этого по виндене гуглится. а про линукс максимальное число потоков вроде пишут задается в настройках ядра
Автор: pavel1978
Дата сообщения: 11.06.2012 10:20
да, спасибо, ты мне сильно помог! Кучу попутной инфы перечитал, в избранное добавил.
Но тут, походу, другая фенька:
Описатель задач (дескриптор процесса) содержит следующую инфу -
1. ПИД (идентификатор процесса)
2. Тип процесса, определяющий для супервизора ОС правила предост. рес-в
3. Приоритет пр-са
4. Переменную состояния - определяет, в каком состоянии находится пр-сс (готов к работе, в состоянии выполнения, ожидание ус-ва ввода-вывода и т.д.)
5. Защищенную область памяти (или ее адрес) - для контекста задачи
6. Сведения о рес-ах, которыми пр-сс владеет и\или имеет право пользоваться
7. Место д\организации общения с др. пр-ссами
8. параметры времени запуска
9. Адрес задачи на диске (в отсутствии СУФ)

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

Так вот, внимание, вопрос знатокам: в каких состояниях может нах-ся пр-сс? Это же конечное число ?
Автор: doktorpilulkin
Дата сообщения: 11.06.2012 10:34
я ниче про линукс не знаю. в винде ядро вот в таком виде инфу хранит. получаешь струтуру, в началее ее размер, потом разбираешь по процессам

http://msdn.microsoft.com/en-us/library/windows/desktop/ms725506%28v=vs.85%29.aspx

Страницы: 1

Предыдущая тема: Мониторинг и графики


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.