понедельник, 20 февраля 2012 г.

Последовательный вычислительный процесс

Сначала рассмотрим понятие последовательного процесса. Часто он определяется как выполнение отдельной программы с её данными на одном процессоре. Подчеркнем, что процесс рассматривается в двух аспектах: является носителем данных и выполняет операции, связанные с их преобразованием.

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

Для реализации абстрактного понятия процесс в теории операционных систем вводят еще и понятие ресурса. Последние распределяются между процессами, когда они выполняются. Можно сказать, что ресурсы являются объекты, которые [1. cтр. 25]: “. . . запрашиваются, используются и освобождаются процессами в период их активности”. Свойствами процесса как объекта являются: повторное использование, относительная стабильность и часто их дефицит.

Для углубления представления о важнейшем понятии ОС процессе рассмотрим пример, содержащийся в учебнике [2, стр. 42], немного расширив его. Пусть два пользователя компьютерной системы запускают программу, вычисляющую квадратный корень из х [√ (х)]. Если говорить с точки зрения этих пользователей, то запущенные ими программы являются одним процессом. Но с точки зрения вычислительной системы можно отметить следующие факты. Очень маловероятно, что бы они были загружены в одни и те же участки памяти. Если предположить, что один из пользователей задал в качестве исходного данного (значения х) число 4, а другой -2, то очевидно в процессе выполнения программы будут выполнены не полностью совпадающие машинные команды исполнимого файла. Даже можно сказать, что процесс со значением х равным -2 вызовет к жизни особую ситуацию. При этом может начаться выполнение машинных команд, не включенных в исполнимый код пользовательской программы. Далее Вы узнаете, что в процессе своего исполнения процесс может быть остановлен и от его имени будет в специальном режиме выполнены машинные команды ядра операционной системы. Такие ситуации могут быть запланированы программистом (автором прикладной программы) или возникнуть непредсказуемо в случае наступления непредусмотренных ситуаций.

На одном процессоре оба процесса не могут исполняться одновременно, так как должны получить доступ к неразделяемому ресурсу – процессорному времени. Значит один из них закончиться ранее. Так же в случае печати один из двух процессов выведет результаты раньше другого. Часто процесс рассматривают как некоторую абстракцию, характеризующую программу во время её исполнения. Такая абстракция описывается динамически предоставленными процессу системными ресурсами.

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

Рассмотренное далее относиться непосредственно к операционным системам семейства Linux. Для систем построенных на версии ядра 2.6 по адресу в Интернет http://www.informit.com/articles/article.asp?p=370047&rl=1 представлена информация о том, что представляют собой “…структуры данных, системные вызовы, связанные с управлением процессами…”

Но среди компонентов структуры данных описывающих процессы в семейства UNIX/Linux обязательно идентификатор (номер) самого процесса и его “родителя” (процесса инициировавшего его исполнение). С учётом того, что каждый процесс или подпроцесс имеет своего родителя, можно говорить о дереве подчиненности всех процессов. Для операционных систем семейства UNIX/Linux корнем этого дерева соответствует процессу с именем init, а распечатать на экране такое дерево можно командой pstree . Приведем пример выполнения такой команды [8, стр. 103].

init ─┬─acpid

├─atd

├─2*[automount]

Подчиненные процессы расположены в алфавитном порядке. Процесс automount существует в двух экземплярах.

Комментариев нет:

Отправить комментарий

Период запуска OnePlus 10T

Компания OPPO в ближайший месяц готова предоставить улучшенную модель OnePlus. Телефон будет называться OnePlus 10Т . Данная модель превзой...