Главная Обратная связь

Дисциплины:






API работы с процессами



● fork()

● waitpid()

● execl(), execv(), execle(), execve()

● exit()

● kill()

Фоновый процесс — демон (daemon)

● Закрыть STDIN, STDOUT, STDERR

● Сбросить обработчики и маску сигналов

● Вызвать fork() (дочерний процесс №1)

● Отключиться от терминала (setsid())

● Ещё раз вызвать fork()

● Завершить дочерний процесс №1

● Подключить STDIN, STDOUT, STDERR к /dev/null

● Сменить umask на 0

● Сменить рабочий каталог на /

● Записать PID в файл

● Понизить привилегии

● Уведомить бывший родительский процесс об успешном запуске

● Завершить родительский процесс

Представление процессов в ядре

● Любой процесс или поток — task

● Все задачи объединены в двусвязный список структур task_struct

Потоки в Linux

● clone(function, stack_ptr, sharing_flags, arg)

● Linux-специфичный вызов

● Новый поток получает PID родителя

● Для различения потоков и процессов используется TID (Task ID)

Планирование

● 3 класса потоков:

● Реального времени невытесняемые — FIFO

● Реального времени вытесняемые — RR

● Разделения времени

● Приоритеты реального времени от 0 до 99

● Приоритеты разделения времени от 100 до 140

● Приоритет — nice (-20 — +19)

● Больше приоритет — больше квант (800/5)

● Динамический приоритет от -5 до +5 на основе эвристики

● По очереди выполнения на каждый процессор системы

● Поддерживается CPU affinity

● Скорость планировщика — О(1)

IPC в Linux

● Сигналы

● Неименованные каналы:

● popen(), pclose()

● pipe()

● dup2()

● Именованные каналы:

● mkfifo() / mknod()

● Семафоры:

● semget()

● semop()

● semctl()

● Разделяемая память:

● shmat()

● shmdt()

● shmctl()

● Очереди сообщений:

● msgget()

● msgsnd(), msgrcv()

● msgctl()

● Сокеты (UNIX — AF_UNIX, Berkeley — AF_INET):

● socket(), socketpair()

● setsockopt(), getsockopt()

● send(), recv()

● sendmsg(), recvmsg(), cmsg()

 

Алгоритмы планирования

1) FCFS

2) SJF

3) SRT

4) RR

5) HRRN

6) Приоритетное планирование

7) Гарантированное планирование

8) Лотерейное планирование

9) Справедливое планирование

1) First Come First Served / FIFO

Задания выполняются в порядке их поступления в систему

+ Простота



+ Минимальные накладные расходы

Shortest Job First

Очередь строится на основе ожидаемого времени выполнения задания

(na+(n-1)b+(n-2)c+...)/n

+ Оптимальность в случае одновременного поступления заданий

- Необходимость вычисления длины задания

Shortest Remaining Time

Очередь строится на основе оставшегося до завершения задачи времени

+ Решение проблемы SJF с неодновременным поступлением процессов

- Необходимость регистрации времени работы процесса

- Увеличение накладных расходов

- Проблема «голодания»

Round Robin

FCFS с циклической очередью

Каждому процессу выделяется квант времени на работу

+ Оптимальность в системах разделения времени

- Проблема выбора кванта

Highest Response Ratio Next

Очередь строится на основе времени ожидания в очереди и ожидаемого времени выполнения

+ Баланс между быстрыми процессами и ожидающими долгими процессами

+ Нет проблемы «голодания»

- Высокие накладные расходы

Приоритет

Приоритет — искусственный коэффициент, влияющий на место процесса в очереди

Виды приоритетов:

Статические

Динамические

Приоритетное планирование

Несколько очередей

В каждой очереди находятся процессы одного приоритета

Проблема «голодания»

Схема снижения приоритета

Гарантированное планирование

Процессорное время гарантированно распределяется между процессами заранее известным образом

Требуется учёт использованного процессорного времени

Критерий построения очереди — соотношение потраченного и обещанного процессорного времени

Лотерейное планирование

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

Обмен билетами

+Позволяет приблизиться к достижению нужного разделения процессорного времени

Справедливое планирование

Учитывается пользователь, запустивший процесс, и количество процессов, запущенных этим пользователем

Планирование потоков

Потоки в пространстве пользователя

Время выполнения потока больше кванта

Время выполнения потока меньше кванта

Потоки в пространстве ядра

Задачи ядра

Обработка прерываний

Управление процессами и потоками





sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...