Это концепция так называемых «собственных групп», поддерживаемая во многих системах «ГНУ/Линукс».
В этом же поле отображаются и другие правомочия, которые мы не обсуждаем. В случае, если в этом поле присутствует другая буква, строчная буква (например, «s») означает исполняемый файл, а заглавная (например, «S») — неисполняемый.
Во многих системах крайне полезным оказывается определить особый режим для некоторых каталогов, при котором пользователь имеет право создавать в нем новые файлы, но удалять может лишь те, что принадлежат ему. Для этого стандарт предусматривает расширение набора прав, известное, как «липкий бит».
Именно поэтому метафора «папка» для каталога является неприемлемой.
Формальное определение стандарта гласит, что процесс — «Адресное пространство с одним или более витком, исполняющимся в нем, и системными ресурсами, необходимыми для исполнения этих витков». Виток (thread, поток) в свою очередь определяется как «поток управления». Понятие витка в этом курсе нам не понадобится, поскольку отдельные витки недоступны оператору оболочки. Хотя стандарт и определяет процесс через виток, понятие витка является менее фундаментальной позднейшей добавкой к концепции открытых ОС и, по мнению многих авторитетных аналитиков, является лишь средством повышения производительности.
В некоторых системах части кода ядра все же представлены в виде процессов, «усыновленных» инициализационным процессом.
Точность представления «снимка» в различных реализациях варьирует; так что не пугайтесь, если при подаче такой команды, допустим, ОС «Солярис», не увидите информации о «ps» — используемая при выводе таблица просто не успела обновиться.
Обычному пользователю предоставление информации о чужих процессах может быть ограничено по соображениям безопасности.
Обратите внимание, что процессы, порожденные при подаче одинаковых команд (например «login» на tty1 и tty2 или «bash» на tty1, tty2 и pts/0), имеют разные идентификационные номера.
Собственно говоря, определить, что представляет собой тот или иной процесс, можно, подав команду «man» с именем команды из столбца CMD в качестве аргумента. В «ГНУ/Линукс» этот фокус не пройдет с квазипроцессами, которыми представлены некоторые компоненты ядра, поскольку они не имеют страниц руководства.
На самом деле сигнал приостановки и клавиатурная комбинация Control-Z не описаны в стандарте, но вы найдете эту возможность практически в любой открытой ОС.
В некоторых «доюниксовых» ОС понятие переднего и заднего планов выполнения было связано с приоритетами заданий или с выполнением одного из них в режиме «реального времени». В открытых ОС понятие приоритета и понятие плана выполнения взаимонезависимы.
В разумных пределах.
Например, сигналы об аппаратных или системно-программных ошибках, получение которых, как правило, приводит к аварийному завершению процесса-получателя с записью файла дампа памяти (core) в домашний каталог пользователя-хозяина процесса. Список известных системе сигналов (их число может приближаться к сотне) можно получить по команде «kill -l», но смысла указанных там идентификаторв, как правило, приходится доискиваться в технической документации.
На самом деле современные ОС ставят в соответствие процессам каталоги в фиктивной файловой структуре, смонтированной в каталоге «/proc/», и управляют доступом к процессам на основании правомочий, сопоставленных этим «каталогам» и входящим в них «файлам».
Хотя экранные команды («more», «vi») перехватывают нажатие Control-C.
В терминах стандарта «группа команд» является полным синонимом «задания», так что задание, состоящее из одной простой команды, тоже называется «группой».
Строго говоря, стандарт не говорит об этом прямо, но ограничивает набор символов стандартной локали семибитной латиницей, так что кроме американского или британского английского полностью реализовать стандартную локаль, не прибегая к транслитерации, можно разве что на латыни.
Программы, входящие в утилиты ГНУ, составляющие большую часть системных программ в «ГНУ/Линукс», заметную — в ОС семейства «БСД» и часто используемые в других ОС, реализуют более продвинутую стратегию. Если определена переменная LANGUAGE, она будет интерпретироваться как список локалей (разделенных двоеточием) в порядке их предпочтения, в соответствии с которым программа будет искать локализационные ресурсы.
Читать дальше