Менее эффективны, чем монолитные (для выполнения операций программе приходится проходить слои).

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

Разновидностью такой архитектуры является конвейер, который представляет собой последовательность программ, в которой стандартный вывод каждой программы, кроме самой последней, связан со стандартным вводом следующей программы этой последовательности.

Рис. 4.4. Конвейер параллельно действующих программ

Конвейер обрабатывает поток сообщений. Каждое сообщение этого потока поступает на вход первой программы, которая, обработав, его передает следующей программе, а сама начинает обработку очередного сообщения потока. Таким образом, в конвейере, состоящим из n программ, может одновременно находиться в обработке до n сообщений. В силу того, что разные программы конвейера могут затратить на обработку очередных сообщений разные отрезки времени, необходимо обеспечить синхронизацию этих процессов (некоторые процессы могут находиться в стадии ожидания либо возможности передать сообщение, либо возможности получить сообщение).

Для обеспечения взаимодействия между подсистемами в ряде случаев не требуется создавать дополнительные программные компоненты - для этого может быть достаточно стандартных возможностей базового программного обеспечения (ОС):