Почему делает “chmod 1777”, и “chmod 3777” оба установил липкий бит?

Если Вы распределяете вычисления с MPI, то использование MPI-осведомленного инструмента дало бы Вам более разумные результаты: с распределенным приложением у Вас могли бы быть проблемы неустойчивости загрузки, где один процесс MPI является неактивным ожиданием данных для прибытия из других процессов. Если Вы, окажется, будете профильными точно, что MPI обрабатывают, Ваш профиль производительности будет неправилен.

Так, первый шаг должен обычно узнавать о коммуникации и шаблоне баланса загрузки Вашей программы, и определять демонстрационный вход, который дает Вам рабочую нагрузку, которую Вы хотите (например, интенсивные ЦП на разряде 0), Например, mpiP является MPI профильный инструмент, который может представить очень полный отчет о коммуникационном шаблоне, сколько времени каждый вызов MPI взял и т.д.

Затем можно выполнить код, профильный инструмент на одном или нескольких выбрал разряды MPI. Так или иначе, использование perf на единственном MPI разряд вероятен не хорошая идея, потому что ее измерения будут содержать также производительность кода библиотеки MPI, который является, вероятно, не, что Вы ищете.

15
08.02.2013, 17:49
2 ответа

Каждое число (также называемый восьмеричным, потому что это - base8) в той группировке представляет 3 бита. Если Вы превращаете его в двоичный файл, это делает это намного легче.

1 = 0 0 1
3 = 0 1 1
5 = 1 0 1
7 = 1 1 1

Таким образом, если бы Вы сделали 1777, 3777, 5777, или 7777 Вы установили бы липкий бит, потому что третий столбец будет 1. Однако с 3 777, 5777, и 7777 Вы дополнительно устанавливаете другие биты (SUID для первого столбца и SGID для второго столбца).

С другой стороны любое другое число в том месте (максимум до 7) не установило бы липкий бит, потому что последний столбец не будет 1 или "на".

2 = 0 1 0
4 = 1 0 0
6 = 1 1 0

29
27.01.2020, 19:49
  • 1
    +1 для хорошего описания того, как работают восьмеричные числа и как он относится к битам полномочий файла. –  a CVn 08.02.2013, 16:44
  • 2
    Это называют "битовой маской", и +1 также для объяснения/показа, как это может установить и clear столбцы Owner Group & Other. –  Chris K 30.12.2013, 23:07

Полномочия, переданные как аргумент chmod, указаны как восьмеричное значение. Каждая цифра в значении представляет три бита. Если три цифры даны, Вы устанавливаете чтение, пишете и выполняете биты для владельца файла, группы и других (все остальные). Если четыре цифры даны, крайнее левое число устанавливает setuid, setgid и липкие биты. Восьмеричный 1 набор липкий бит. Восьмеричные 2 набора setgid укусили. Восьмеричные 2 + восьмеричный 1 восьмеричный 3, который устанавливает и бит setgid и липкий бит.

16
27.01.2020, 19:49
  • 1
    Разве это Не восьмеричные 2 | восьмеричный 1, а не восьмеричные 2 + восьмеричный 1? Операции, оказывается, имеют тот же результат в этом случае, но в целом это - поразрядное, или это имеет значение, не так ли? –  gerrit 08.02.2013, 11:06
  • 2
    @gerrit Да, в общем случае необходимо смотреть на binary or оператор. Однако как Вы указываете, в этом случае это удается к тому же результату, и еще много людей знакомо с дополнением. –  a CVn 08.02.2013, 16:44

Теги

Похожие вопросы