Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_os.docx
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
627 Кб
Скачать
☆

5. Взаимодействие процессов в ос Linux.

Основными активными сущностями в Линукс являются процессы. По определению эти процессы являются классическими последовательностями процессов. Каждый поток изначально получает один поток управления (имеет один счётчик команд, который отслеживает следующую исполняеую команду). Также в Линукс процессу позволяется создавать дополнительные потоки. ОС Линукс представляет собой многозадачную систему, следовательно несколько независимых процессов могут работать одновременно. Для создания процессов в ОС Линукс используется системный вызов fork. При этом создаются точные копии исходного процесса(родительский процесс) дочерний процесс. У каждого процесса есть свои области памяти. Открытые файлы используются обеими процессами совместно; изменения произведённые с этим файлом будут видны каждому из процессов. У каждого процесса есть свой идентификатор (PID - Для дочернего он равен "0", для родительского отличен от "0").

2) Взаимодействие между процессами.

Взаимодействие между процессами ОС Линукс осуществляется с помощью двух механизмов:

- трубы(pipes) - канал между двумя процессами, в который один процесс может писать поток байтов, а другой считывать.

- сигналы(signals) - в данном случае взаимодействие происходит посредством программных прерываний; процесс может посылать сигналы только своей группе процессов (родитель, братья, сёстры и т.д.)

6. Реализация потоков в ос Linux.

Исторически процессы были контейнерами ресурсов, а потоки — единицами исполнения. Процесс содержал один или несколько потоков, которые совместно использовали адресное пространство, открытые файлы, обработчики сигналов и все остальное.

В 2000 году в Линукс был введён новый системный вызов clone, который размыл различия между процессами и потоками. Ни в одной другой системе Unix вызова clone нет. Вызов clone создаёт новый поток либо в текущем процессе, либо в новом процессе. В первом случае, новый поток совместно использует совместно с уже существующими единое адресное пространство. Во втором случае, поток получает копию адресного пространства, которое становится недоступным для старых потоков (те, от которых он произошёл). Для сохранения совместимости с другими системами Линукс различает PID и идентификаторы задач (TID — Task IDentifer); оба эти поля хранятся с структуре задач. Когда вызов clone используется для создания нового процесса, PID устанавливается в новое значение, в противном случае задача получает новый TID, но наследует PID. Таким образом все потоки процесса получат тот же самый PID, что и первый поток процесса.

7. Планирование в ос Linux.

Операционная система linux алгоритмом планирования различает 3 класса потоков (планирование linux происходит только на основе потоков, а не процессов) :

1. потоки реального времени, обслуживаемые по алгоритму fifo. данные потоки имеют наивысший приоритет и могут вытесняться только потоками того же типа.

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

3. потоки разделения времени.

потоки реального времени имеют приоритеты 1 - 99, остальые - 100-139.

остальные потоки планируются в соответствии с приоритетами и алгоритмом циклической очереди.

Планировщик linux использует ключевую структуру данных, которая называется "очередь исполнения" (runqueue). Эта очередь связана с процессором и поддерживает 2 массива: active & expired. Каждый из этих массивов состоит из заголовков 140 списков.

Заголовок списка указывает на дважды связный список потоков данного приоритета. Планировщик выбирает задачу из активного массива с самым высоким приоритетом. Если квант времени этой задачи истек, то она переносится в список закончивших функционирование.

Если задача блокируется до истечения её кванта времени, то после события она помещается обратно в исходный активный массив, а её квант времени уменьшается на количество уже использованного времени процессора. Когда ни в одном из активных массивов больше нет задач, то планировщик меняет указатели для активного массива и массива задач, закончивших функционирование.

Разным уровням приоритетов, присваивается различный квант времени: чем больше приоритет, тем больший квант времени получает данный поток для приоритета 100 - 800млс, для приоритета 139 выделяется 5млс.

Приимущества данного подхода:

а) данный способ планирования гарантирует, что потоки с более низким приоритетом будут выполнены;

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

По-скольку система linux является системой разделения времени, то невозможно предугадать, каким будет выполняться следующий процесс. В связи с этим в системе linux используются идея статического и динамического приоритетов.

Статический приоритет является постоянным для данной задачи и назначается по умолчанию в начале работы. Динамический приоритет назначается и изменяется во время работы в соответствии с политикой планирования.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]