Главная страница
Навигация по странице:

  • IEEE standard 1003.1с

  • Первое

  • Процессы. Процессы и потоки. Процессы и потоки


    Скачать 0.73 Mb.
    НазваниеПроцессы и потоки
    АнкорПроцессы
    Дата09.03.2023
    Размер0.73 Mb.
    Формат файлаppt
    Имя файлаПроцессы и потоки.ppt
    ТипПрограмма
    #975992
    страница5 из 8
    1   2   3   4   5   6   7   8

    Модель потока (5)


    Каждый поток обладает собственным стеком




    Потоки в POSIX


    IEEE standard 1003.1с — стандарт создания переносимых многопоточных программ.
    Пакет Pthreads, реализует работу с потоками, поддерживается большинством UNIX-систем.
    В стандарте определено более 60 вызовов функций.
    Все потоки Pthreads имеют определенные свойства.
      У каждого потока есть свой идентификатор, набор регистров (включая счетчик команд) и набор атрибутов, которые сохраняются в определенной структуре. Атрибуты включают размер стека, параметры планирования и другие элементы, необходимые при использовании потока.




    Потоки в POSIX


    Функции пакета Ptheads




    Реализация потоков





    Есть два основных способа реализации пакета потоков: в пространстве пользователя и ядре.

    Реализация потоков (смешанная реализация)




    Активация планировщика


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




    Активация планировщика


    При использовании активации планировщика ядро назначает каждому процессу определенное количество виртуальных процессоров, а системе поддержки исполняемых программ (в пользовательском пространстве) разрешается распределять потоки по процессорам.





    ЯДРО
    ВП №1


    ЯДРО
    ВП №2


    ЯДРО
    ВП №3


    ЯДРО
    ВП №4


    Поток
    №1


    Поток
    №2


    Поток
    №3


    Поток
    №4


    Процесс


    Центральный процессор


    Виртуальные процессора

    Всплывающие потоки


    Потоки часто используются в распределенных системах.
    Пример:
      обработка входящих сообщений.

      При поступлении сообщения система создает новый поток для его обработки, называется всплывающий поток.
      Основное преимущество всплывающих потоков заключается в том, что они создаются заново и не имеют прошлого — никаких регистров, стека и всего остального, что должно быть восстановлено. Каждый такой поток начинается с чистого листа, и каждый их них идентичен всем остальным.
      Это позволяет создавать такие потоки довольно быстро.
      Новый поток получает сообщение для последующей обработки.
      В результате использования всплывающих потоков задержку между поступлением и началом обработки сообщения можно свести к минимуму.



    Всплывающие потоки


    Создание нового потока при поступлении сообщения




    Межпроцессорное взаимодействие




    Межпроцессорное взаимодействие





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

    Состояние состязания





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

    1   2   3   4   5   6   7   8


    написать администратору сайта