Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные понятия теории вычислительных процессов




ОБЕСПЕЧЕНИЕ МНОЖЕСТВЕННОСТИ ПРОЦЕССОВ

В профессиональном программировании процессом называют действия, выполняемые над конкретными данными под управлением программы. Следует отметить существенное отличие процесса от программы и даже от выполнения программы. Процесс разворачивается во времени, это динамический объект, программа – это статический, неизменяемый объект. (Заметим, что программы, модифицирующие сами себя, практически никогда и нигде не применяются, а теоретически – не способны быть надежным средством обработки данных.) Замечательной особенностью современных операционных систем является их способность обеспечивать одновременное выполнение нескольких программ, даже если в компьютере используется лишь один процессор (последнее имеет место практически во всех персональных компьютерах). Для начального представления можно сказать, что одновременное выполнение нескольких программ в одном компьютере и составляет несколько процессов. Для большой ясности следует уточнить, что на основе одной программы в компьютере могут одновременно существовать (выполняться) несколько процессов! Например, хотя такая ситуация скорее характерна для мощных серверов обработки данных, в одном компьютере может одновременно компилироваться несколько текстов программ с одного и того же языка и одним компилятором. Компилятор – программа, она присутствует в оперативной памяти в одном экземпляре, но выполняет обработку нескольких исходных текстов. Каждая такая обработка определяет процесс, но все они связаны с одной программой. Зато обрабатывают различные данные – исходные тексты. При подобной организации процессов, когда несколько таких процессов одновременно обрабатывают различные данные, пользуясь при этом единственным общим экземпляром программы, приходится принимать особые меры. Они заключаются в построении такой программы как реентерабельной (reenterable – повторно входимой).

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

Процессы называются одновременно выполняющимися или параллельными, если каждый из них начат, но не завершен. Процессор компьютера может быстро переключаться (с помощью операционной системы и средств системной архитектуры) с одного процесса на другой, запоминая при этом переключении всю необходимую информацию, чтобы в дальнейшем продолжить выполнение процесса с места его приостановки. Системные средства быстрого переключения процессов рассмотрены в ряде технических и учебных источников [17, 19].

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

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

Заметим, что в ряде основополагающих ОС 60-70-х годов многопрограммное функционирование ОС строилось исключительно на понятии и использовании процессов, а нити как составляющие части процессов стали широко применяться относительно недавно. Поэтому теория вычислительных процессов строилась исключительно на понятии абстрактного процесса.

В настоящее время в рамках процесса могут функционировать несколько (и даже много) нитей. В простейших случаях в составе процесса обязательно присутствует одна нить. Собственно процесс в современных разработках и применениях специализирован исключительно на владении ресурсами вычислительной системы. К ресурсам процесса относятся области данных, используемые и обрабатываемые процессом (програм­мой). Более того, оперативная память, которую процесс использует по своему усмотрению, распределяется процессу и временно является как бы его собственностью. В современных ОС такая память распределяется и закрепляется с помощью архитектурных средств виртуальной памяти, которыми управляет соответствующая подсистема ОС. Эта подсистема - одна из наиболее важных и ответственных частей ОС. К другим ресурсам процесса относят открытые файлы, которые конкретизируются для процесса благодаря дескрипторам (учетно-информационным описателям работы с файлом) и обозначаются их логическими номерами – хэндлами (handle). В многозадачных ОС в качестве ресурсов процесса появляются дескрипторы и хэндлы еще ряда более сложных объектов (очередей, конвейеров, окон и т.д.).

Отдельный процесс, выполняемый в компьютере, это не отвлеченное понятие, а конкретный объект для операционной системы. Эта конкретизация обеспечивается тем, что ОС поддерживает процесс, используя внутренний учетный "документ", аналогичный паспорту для гражданского лица или материального технического объекта. (Есть документ – есть процесс, нет документа – нет процесса.) Такой учетный документ представляет собой специализированную структуру данных, которая содержит в своих полях всю информацию, необходимую для учета и оперативного технического сопровождения. Подобная структура данных, предназначенная в первую очередь для использования собственно ОС по традиции называется управляющим блоком процесса (Process Control Block) – сокращенно PCB. Иногда эти управляющие блоки называют также дескрипторами процессов. Некоторые ОС предоставляют профессиональному программисту с правами администратора ОС доступ по чтению к отдельным полям PCB; другие, ориентированные преимущественно на непрофессионалов, полностью скрывают структуру и содержание таких блоков. В любом случае такие блоки содержат, как минимум, уникальный идентификатор (некоторое специальное число) для процесса и указатель или иную форму доступа к информации о памяти, доступной процессу В современных ОС последняя информация тесно связана с аппаратурной реализацией доступа к памяти и представляет аппаратно-программные структуры доступа к таблицам дескрипторов памяти. Уникальность идентификатора процесса относится ко всей ОС, но для более частных применений процесс может обозначаться еще и хэндлом. Этот хэндл служит для обозначения процесса в некоторой группе процессов. Обычно такой группой является совокупность некоторого процесса и явно, по его приказу, дополнительно созданных процессов (дочерних в сложившейся терминологии), они будут рассмотрены позже в этой же главе. Если в операционной системе используются нити, то для них ОС также строит и использует управляющие блоки – Thread Control Block (TCB).

При переключении (во временно приостановленное состояние) процессов, которые непосредственно осуществляет процессор (или процессоры, если их более одного в компьютере), оказывается принципиально необходимым сохранять всю информацию, которая потребуется для продолжения приостанавливаемого процесса после того, как ему будет предоставлена такая возможность. Современные компьютеры строят так, чтобы информация в оперативной памяти, относящаяся к различным процессам, автоматически сохранялась вне зависимости от действий этих процессов. (Эти средства включают защиту памяти процессов друг от друга и подкачку страниц виртуальной памяти, которые будут рассмотрены позже.) Но кроме информации в оперативной памяти, вычислительные процессы современных компьютеров используют еще и аппаратные блоки (временного) хранения информации. Их обычно называют регистрами процессора. Совокупность значений, одновременно хранимых процессом в таких аппаратных блоках, называют контекстом процесса или соответственно контекстом нити. Для указания места сохранения контекста процесса или нити используют соответствующие поля их управляющих блоков. Заметим, что в современных архитектурах процессоров сохранение и восстановление контекстов нити осуществляется специальными аппаратными процедурами по упрощенному указанию самого действия – переключения между нитями. В этих случаях структура контекста процесса или нити определяется техническим описанием на архитектуру процессора, в частности технической документацией на архитектуру процессоров Pentium и его модификаций.

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

Для технической организации переключения процессов очень важное значение имеет характеристика, которую называют состоянием процесса. Эта характеристика записывается как одно из важнейших полей в управляющий блок процесса или управляющий блок нити, в зависимости от того, используются нити в операционной системе или нет. Для большей общности изложения и для его некоторого сокращения будем называть абстрактным процессом нить, если ОС допускает использование нитей, и обычный процесс – в противном случае. Абстрактный процесс обязательно использует как минимум три различных состояния. Эти состояния называют состоянием готовности (ready), состоянием выполнения (run) и состоянием блокировки или заблокированности (blocked). В состоянием выполнения процессор выполняет команды (операторы) именно этого абстрактного процесса. Иначе говоря, в состоянии выполнения абстрактный процесс владеет аппаратурой процессЮра. В состоянии УотовностШ абстрактЭыЩ процесс обладает всем необходимым для продоЫЦения Юбработки дРнных, кроме процессЮрР, который в этот момент обслуживает другой абстрактный процесс. Наконец, состояние блокировки отвечает необходимости дожидаться появления некоторого события или явления, без которого продолжить обработку данных абстрактным процессом невозможно. Характерным примером блокировки абстрактного процесса является ожидание выполнения аппаратурой внешнего устройства запроса на ввод, в частности ожидание нажатия на клавишу клавиатуры.

Распределение одного или нескольких наличных процессоров среди готовых абстрактных процессов выполняется на основе квантов времени (slice time) и приоритетов. Квант времени представляет собой небольшой (обычно временно фиксированный) промежуток времени, в течение которого абстрактному процессу разрешается занимать процессор. Величина кванта времени имеет порядок долей секунды, чаще всего малых долей секунды. С точки зрения имитации владения процессором со стороны многих процессов целесообразно уменьшать эту величину, но тогда увеличиваются "накладные расходы". Последние заключаются в том, что переключение между отдельными абстрактными процессами (особенно обычными процессами) занимает немало времени и является совершенно непроизводительной затратой этого времени. Все же только использование квантов времени обеспечивает эффективную для интерактивного пользователя работу параллельных программ.

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

 

Рис. 7.1. Диаграмма состояний абстрактного процесса

 

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

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

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

Далее в этой главе рассмотрим обычные процессы, а изучение нитей – в гл. 8.




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 609; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.045 сек.