- •Часть 1
- •1. Что такое ос? Основная задача и основные функции.
- •2. Базовые понятия ос
- •3. Понятие Виртуальной Машины (вм).
- •9. Образ процесса
- •10. Базовые функции ос и функции ядра
- •11. Что представляет собой ядро ос
- •12. Вспомогательные модули.
- •13. Классификация ос по назначению и по режиму обработки задач
- •14. Классификация ос по способу взаимодействия с системой
- •15. Классификация ос по способу построения ос
- •22. Монолитная ос
- •23. Структура монолитной ос Структура монолитной ос
- •24. Классическая структура ос
- •27. Системный вызов
- •28. Понятие процесса
- •29. Режимы функционирования процессов.
- •30. Системная таблица процессов.
- •31. Создание процесса.
- •32. Состояния процесса
- •33. Иерархия процессов.
- •34. Завершение процесса.
- •Плановый выход по известной ошибке
- •Выход по неисправимой ошибке
- •Уничтожение другим процессом
- •35. Основные характеристики процесса.
- •36. Понятие потока. Модель потока
- •37. Преимущества использования потоков.
- •38. Реализация потоков в пространстве пользователя
- •39. Реализация потоков в пространстве ядра.
- •40. Различия между процессами и потоками.
- •41. Преимущества процессов над потоками
36. Понятие потока. Модель потока
Каждому процессу соответствует адресное пространство и одиночный поток исполняемых программ. В многопользовательских системах при каждом обращении к серверу приходится создавать новый процесс для обслуживания клиента. Это менее выгодно, чем создать квазипараллельный поток внутри этого процесса с одним адресным пространством. Таким образом, потоки (нити) – параллельно выполняемые части одной программы. Иначе потоки называются облегченным процессом.
Сравнение одно- и многопоточной системы:
Модель потока.
С каждым потоком связываются счетчик выполнения команд, регистры для текущих переменных, стек и т.д.
Потоки делят между собой следующие элементы своего процесса:
адресное пространство
глобальные переменные
открытые файлы
таймеры
переменные специального типа – «семафоры»
статистическую информацию
В остальном модель потока подобна модели процесса
В POSIX и Window’s есть поддержка потоков на уровне ядра.
POSIX – PTHREAD_CREATE
Window’s – CREATETHREAD
В LINUX существует новый системный вызов CLONE для создания потоков.
37. Преимущества использования потоков.
1 Упрощение программ, в некоторых случаях за счет использования общего адресного пространства.
2 Быстрота создания потока по сравнению с процессом (~ в 100 раз)
3 Повышение производительности самой программы (есть возможность одновременно выполнять вычисления в процессоре и операцию ввода-вывода).
Поток может одновременно взаимодействовать с пользователем, форматировать текст и записывать на диск резервную копию.
38. Реализация потоков в пространстве пользователя
В случае реализации потоков в пространстве пользователя ядро о потоках ничего не знает, поэтому каждому процессу необходима таблица потоков, аналогичная таблице процессов.
Преимущества этой реализации:
1 – многопоточность можно реализовать на ядре, которое не поддерживает многоопоточность.
2 – более быстрое переключение, создание и завершение потоков
3– процесс может иметь собственный алгоритм планирования
Недостатки:
1 – отсутствие прерывания по таймеру внутри одного процесса
2 – при использовании блокирующего системного запроса (процесс переходит в режим ожидания) все остальные потоки блокируются.
3 – сложность реализации
39. Реализация потоков в пространстве ядра.
При этой реализации создается таблица потоков, аналогичная таблице процессов.
Преимущества:
1 – использование блокирующего системного запроса остальные потоки не блокирует.
2 – более простая реализация
Недостаток:
1 – многопоточность нельзя реализовать на ядре, не поддерживающем многопоточность.
Особенности реализации Window’s
В Window’s используются следующие понятия:
Задание – набор процессов с общими квотами и лимитами
Процесс – контейнер ресурсов, который содержит как минимум 1 поток
Поток – именно исполняемая часть, планируемая пользователем. Работает в режиме пользователя, но при системных вызовах переключается в режим ядра. Из-за переключений в режим ядра и обратно очень замедляется работа системы, поэтому было введено понятие «волокна».
«Волокно» - облегченный поток, управляемый полностью в пространстве пользователя (1 поток может создать несколько волокон).