Архив автора: Дмитрий Алексеев

Интерпретаторы и их сценарии Linux

Командный интерпретатор является основой интерфейса командной строки, первой и главной программой, запускающейся в интерактивном сеансе пользователя. Кроме этого, он широко используется и в пакетном режиме работы, когда команды записываются в файл сценария «пьесы» и «проигрываются по ролям» при его запуске. В этом случае сценарий является простейшей интерпретируемой программой на языке соответствующего командного интерпретатора. [На текущий… Читать далее »

Разделяемая память, семафоры и очереди сообщений в ОС Linux

Разделяемая память Каналы и сокеты являются удобными средствами обмена информацией между процессами, но их использование при интенсивном обмене или обмене объемными данными приводит к значительным накладными расходам. Разделяемая память является специализированным средством взаимодействия, имеющим минимальные издержки использования. В листинге ниже при помощи команды ipcs показаны созданные в системе сегменты разделяемой памяти, массивы семафоров и очереди… Читать далее »

Именованные локальные сокеты Linux

Именованные локальные сокеты, как и именованные каналы, предназначаются для взаимодействия неродственных процессов и широко распространены в системе. В листинге ниже показаны сокеты разных служб операционной системы и их процессы-владельцы, выясненные при помощи утилиты fuser. Так, например, сокет /run/wpa_suppllcant/wlan0 используется для внешнего управления W:[WPA] «просителем» (предназначен для выполнения аутентификации при подключении к беспроводным сетям) wpa_supplicant, в… Читать далее »

Неименованные локальные сокеты Linux

Каналы являются однонаправленными средствами взаимодействия процессов, поэтому слабо подходят для двунаправленного обмена, например для организации обратной связи между процессами. В большинстве случаев именованные каналы позволяют эффективно реализовать только простейшую модель взаимодействия «поставщик  → потребитель», тогда, как для реализации модели «клиент сервер» используют специальное средство взаимодействия, называемое сокетом. Сокет — устоявшаяся русская калька с англ, socket, буквально… Читать далее »

Именованные каналы Linux

Именованные каналы повторяют поведение неименованных каналов, но предназначены для обмена информацией между неродственными процессами. Любые две запущенные программы Могут организовать однонаправленный канал передачи путем открытия файла канала по заранее согласованному имени на запись «с одной стороны» и на чтение «с другой». Файл канала должен быть предварительно создан в дереве каталогов при помощи специального системного вызова… Читать далее »

Неименованные каналы Linux

Кроме сигналов, которые могут использоваться как простейшие средства межпроцессного взаимодействия (IPC, inter-process communication), для эффективного обмена информацией между процессами используются каналы, сокеты, очереди сообщений и разделяемая память, а для синхронизации действий процессов над совместно используемыми объектами — семафоры. Самым простым средством обмена информацией между родственными процессами (родитель и любые его потомки) являются неименованные каналы. Канал… Читать далее »

Сеансы и группы процессов Linux: управление заданиями

Одним из основных применений сигналов при интерактивной работе пользователя в системе является  механизм управления «заданиями», которыми пользуются командные интерпретаторы и подобные интерактивные программы, например lftp. Для удобства управления процессами при помощи сигналов они объединяются в группы и сеансы (см. credentials), проиллюстрированные в листинге ниже при помощи команды ps атрибутами PGID (process group identifier) и SID… Читать далее »

Механизм сигналов Linux

Механизм сигналов signal является простейшей формой межпроцессного взаимодействия и предназначен для внешнего управления процессами. Каждый сигнал имеет свой обработчик, определяющий поведение процесса при отсылке ему этого сигнала. Этот обработчик является некоторым набором инструкций программы (подпрограммой), которым передается управление при доставке сигнала процессу. Каждому процессу назначаются обработчики «по умолчанию», в большинстве случаев приводящие к завершению процесса.… Читать далее »

Память процесса Linux

Еще одним ресурсом, подлежащим распределению между процессами, является оперативная память. В Linux, как и во многих других современных операционных системах, для управления памятью используют механизм страничного отображения, реализуемого ядром операционной системы при помощи устройства управления памятью — W:[MMU]. При этом процессы работают с виртуальными адресами (virtual address) «воображаемой» памяти, отображаемыми устройством MMU на физические адреса… Читать далее »

Классы и приоритеты процессов Linux

Переключение центрального процессора между задачами (процессами и нитями) выполняет специальная компонента подсистемы управления процессами, называемая планировщиком (scheduler). Именно планировщик определенным образом выбирает из множества неспящих, готовых к выполнению (runable) задач одну, которую переводит в состояние выполнения (running). Процедуры, определяющие способ выбора и моменты выполнения выбора, называются алгоритмами планирования. Выбор задачи, подлежащей выполнению, естественным образом происходит… Читать далее »