Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Потоки в операционных системах.






Концепцию процесса можно охарактеризовать двумя параметрами:

1. Владение ресурсами.

Процесс включает виртуальное адресное пространство в котором содержится образ процесса и время от времени может владеть такими ресурсами, как основная память, устройство вв/выв, файлы. ОС выполняет защитные функции, предотвращая нежелательные взаимодействия процессов.

2. Планирование и выполнение.

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

В большинстве ОС эти две характеристики являются сущностью процесса. Однако они являются независимыми и ОС может рассматривать их отдельно друг от друга. Чтобы различать эти две характеристики единицу диспетчеризации называют потоком (термин нить, волокно), а единицу владения ресурсами – процессом или задачей. Многопоточностью называется способность ОС поддерживать в рамках одного процесса выполнение нескольких потоков.

Традиционный подход, при котором каждый процесс представляет собой единый поток выполнения называется однопоточным. Например, MS-DOS.

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

Таким образом, все потоки процесса разделены между собой состоянием и ресурсами этого процесса, они находятся в одном и том же адресном пространстве и имеют доступ к одним и тем же данным. Если один поток изменяет в памяти какие-то данные, то другой поток, во время этого доступа к этим данным, может отследить эти изменения. Если один поток открывает файл с правом чтения, то другие потоки данного процесса могут читать данные из этого файла. Основные преимущества использования потоков: 1)создание нового потока в уже существующем процессе занимает меньше времени, чем создание нового процесса; 2) поток можно завершить быстрее чем процесс; 3)переключение потоков в рамках одного и того же процесса происходит быстрее; 4)при использовании потока повышается эффективность обмена информацией между двумя выполняющимися программами. В большинстве ОС обмен между независимыми процессами происходит с участием ядра, в функции которого входит обеспечение защиты и механизма необходимого для осуществления обмена. Однако благодаря тому, что различные потоки одного и того же процесса используют одну и ту же область памяти и одни и те же файлы, они могут обмениваться информацией без участия ядра.

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

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.