Состояние процессов
Три состояния процесса:
o Выполнение (занимает процессор)
o Готовность (процесс временно приостановлен, чтобы позволить выполняться другому процессу)
o Ожидание (процесс не может быть запущен по своим внутренним причинам, например, ожидая операции ввода/вывода)
Возможные переходы между состояниями.
1. Процесс блокируется, ожидая входных данных
2. Планировщик выбирает другой процесс
3. Планировщик выбирает этот процесс
4. Поступили входные данные
Переходы 2 и 3 вызываются планировщиком процессов операционной системы, так что сами процессы даже не знают о этих переходах. С точки зрения самих процессов есть два состояния выполнения и ожидания.
На серверах для ускорения ответа на запрос клиента, часто загружают несколько процессов в режим ожидания, и как только сервер получит запрос, процесс переходит из "ожидания" в "выполнение". Этот переход выполняется намного быстрее, чем запуск нового процесса.
Потоки (нити, облегченный процесс)
Понятие потока
Каждому процессу соответствует адресное пространство и одиночный поток исполняемых команд. В многопользовательских системах, при каждом обращении к одному и тому же сервису, приходится создавать новый процесс для обслуживания клиента. Это менее выгодно, чем создать квазипараллельный поток внутри этого процесса с одним адресным пространством.
Сравнение многопоточной системы с однопоточной
Модель потока
С каждым потоком связывается:
o Счетчик выполнения команд
o Регистры для текущих переменных
o Стек
o Состояние
Потоки делят между собой элементы своего процесса:
o Адресное пространство
o Глобальные переменные
o Открытые файлы
o Таймеры
o Семафоры
o Статистическую информацию.
В остальном модель идентична модели процессов.
В POSIX и Windows есть поддержка потоков на уровне ядра.
Дата добавления: 2015-12-26; просмотров: 967;