Абстрактное понятие описывающее работу программы

IT, SEO, NET, C#, Design Pattern, Internet, Web 2.0, Юмор и о ж….

Страницы

  • Все обо всем
  • Истории
  • Выбираем матрас правильно
  • Истребование документов
  • Как выгодно и безопасно снять квартиру в Одессе на длительный срок?
  • Какой вид спорта выбрать?
  • Качественные светильники Kutek
  • Надо ли лечить юношеский максимализм?
  • Оценка недвижимости в Одессе – быстро и удобно!
  • Продажа недвижимости в Болгарии – заманчивые предложения для украинцев
  • ТОП-5 запросов по теме военного бизнеса
  • Что говорят ученые про рашгарды?

Поиск

Рубрики

Архивы

Посещений

Концепция процесса в теории операционных систем…

22 октября, 2006

Поводом для написания этого поста, послужил тот факт, что сидя на двух разных лекциях, двух разных преподов (а может даже и трёх), я услышал одну и ту же формулировку, объясняющую понятие процессов и их планирования. «Ну это когда Вы вот запускаете Ворд, Аутлук и при этом еще переписываетесь в асе, процессор же их на самом деле не одновременно выполняет, а по очереди, планирует так сказать последовательность исполнения команд» — сказал один. Другой сказал тоже самое, но (вот здесь внимание), когда он перечислял проги, которые Вы запустили, добавил: «…или слушаете музыку в своем эмпэтретьем плеере» =). Кстати о нем я расскажу поподробней, после окончания семестра=) (именно с ним связан пост Ответ учителя…=)). Тут я понял, что мальчики слегка не теме, а самое главное — я тоже. Исправляемся.

Абстрактное понятие

Для того, чтобы Вы сразу поняли, что из себя представляет процесс для ОС, приведу пару аналогий из жизни, а потом поговорим «языком книжек»:

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

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

Абстрактный тип данных (простыми словами)

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

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

Тогда, по аналогии, рецепт — это программа (то есть алгоритм записанный в заданном виде), Вы — это процессор, а ингридиенты — входные данные. Процессом является следующая последовательность действий: Вы читаете рецепт(ваша программа), смешиваете продукты и печете торт.

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

У каждого процесса есть своя программа(рецепт и «алгоритм уборки»). После уборки, Вы возвращаетесь к выпечке. Ну а теперь уяснили? Ок, двигаемся снова.

Создаются процессы в ОС посредством следующих событий:

  • Инициализация системы.
  • Выполнение изданного работающим процессом системного запроса на создание процесса.
  • Запрос пользователя на создание процесса
  • Инициирование пакетного задания

Обычно при загрузке системы создаются несколько процессов. Некоторые из них являются высокоприоритетными процессами, то есть обеспечивающими взаимодействие с пользователем и выполняющими заданную работу. Отсальные процессы являются фоновыми — их также называют демоны. Список демонов ты видишь нажимая Ctrl-Alt-Del.

Читайте также:
Программа задание производственной практики

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

  1. Работающий (в этот конкрентный момент использующий процессор).
  2. Готовый к работе (процесс временно приостановлен, чтобы позволить выполняться другому процессу).
  3. Заблокированный (процесс не может быть запущен прежде чем произойдет некое внешнее событие).

proc

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

Стоит сказать, что процесс не единственное понятие для ОС или так сказать «неделимое». Существуют более мелкие и крупные модели. На рисунке ты можешь увидеть, «кто в что одет», на примере Windows 2000:

process2

  • Задание — набор процессов с общими квотами и лимитами
  • Процесс — контейнер для ресурсов
  • Поток — сущность, планируемая ядром
  • Волокно — облегченный поток, управляемый полностью в пространстве пользователя

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

PS (не в тему): я редко смотрю телек, но сегодня включил около 11 утра НТВ. Оказывается Шнур начал вести программу: «Шнур Вкоруг Света». То есть Серёга путешествует=). И надо сказать, гид из него хоть куда. Сегодня он был на Ямайке — родине Боба Марли. Я запомнил пару фраз, кинутые «ленинградским путешественником»:

— Сколько же выкурков в нашей стране мечтают побывать на этой площади, а я вот не курю, а здесь! (на Ямайке есть целая площадь и улица Боба)

— Интересно, сколько же они выкурили, для того чтобы додуматься начать заниматься бобслеем? (я тоже офигел, когда показали бар посвященный участию сборной Ямайки по бобслею. на олимпийских играх )

Вообщем, приколов хватает — советую и Вам смотреть=).

PSS: а крокодила он назвал клаббером , за то, что тот днем спит, валяется на солнце и пьет воду, а ночью начинает охотиться…

Источник: seregaborzov.wordpress.com

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

vedro-compota's picture

Основным понятием, связанным с операционными системами является
процесс — абстрактное понятие, описывающее работу программы (программа во время выполнения). Процессом по сути является программа в момент её выполнения. Все остальное базируется на этом понятии.

Все современные компьютеры умеют «делать несколько дел» одновременно.

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

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

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

Key Words for FKN + antitotal forum (CS VSU):

  • программирование
  • ошибки
  • неофициальный форум фкн
  • фкн
  • вгу воронеж
  • фкн + вгу + antitoal

Источник: fkn.ktu10.com

ОС архив / Лекция 4

Разберем, что же понимается в программировании под термином «процесс». В большинстве учебников под процессом понимается абстрактное понятие, описывающее работу программы. Это определение не вполне точно.

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

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

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

Любой процесс в операционной системе характеризуется своим состоянием. Количество состояний и переход между состояниями процесса различны в разных операционных системах. Рассмотрим типичные состояния процесса и переходы из одного состояния в другое. Рис. 4.1. Диаграмма состояний процесса Представленная на рисунке диаграмма состояний процесса может отличаться от принятой в конкретной операционной системе. Но, тем не менее, она отражает типичный жизненный цикл процесса: рождение – готовность – выполнение – уничтожение. При рождении процесс получает в свое распоряжение адресное пространство, в которое загружается программный код процесса. Ему выделяется стек и системные ресурсы, устанавливается начальное значение программного счетчика процесса и т.д. Существуют четыре основных события, приводящие к созданию процессов: 1. Инициализация системы. 2. Исполнение запущенным процессом системного вызова создания процесса. 3. Запрос пользователя на создание процесса. 4. Инициализация пакетного задания. При загрузке операционной системы обычно создаются несколько процессов. Некоторые из них являются процессами, взаимодействующими с пользователями и выполняющими для них определенную работу. Другие процессы являются фоновыми: они не связаны с конкретными пользователями, однако имеют определенное функциональное назначение. Процессы, выполняемые в фоновом режиме и осуществляющие определенную деятельность (например печать), часто называют демонами. Процессы могут создаваться не только при загрузке операционной системы, но и во время ее работы. Запущенный процесс может создать один или несколько новых процессов, которые помогают ему выполнять свои функции. Таким образом, процессы в операционной системы образуют дерево. В любом случае новый процесс создается путем выполнения соответствующего системного вызова существующим процессом. В качестве последнего может выступать пользовательский процесс, системный процесс, активизируемый клавиатурой или мышью, а также менеджер пакетной обработки. Процесс исполняет системный вызов, запрашивающий у операционной системы создание нового процесса, и указывает (прямо или косвенно), какая программа должна быть запущена в этом процессе. Всякий новый процесс, появляющийся в системе, попадает в состояние готовность. Операционная система, пользуясь алгоритмом планирования, выбирает один из готовых процессов и переводит его в состояние исполнение. В этом состоянии происходит непосредственное выполнение программного кода процесса. Выйти из этого состояния процесс может по следующим причинам:

  • операционная система прекращает выполнение процесса;
  • процесс не может продолжать свою работу, пока не произойдет некоторое событие. В этом случае операционная система переводит процесс в состояние ожидания; После того, как событие произошло, операционная система возвращает процесс в состояние готовность.
  • в результате возникновения прерывания в вычислительной системе (например, от таймера по истечении предусмотренного времени выполнения) операционная система возвращает процесс в состояние готовность.
Читайте также:
Как установить про100 на компьютер программу с библиотекой

После завершения своей деятельности процесс переходит в состояние уничтожение. Процесс завершается одним из следующих четырех способов: 1. Нормальное завершение (добровольное). 2. Завершение вследствие ошибки (добровольное). 3. Завершение вследствие фатальной ошибки (принудительное). 4. Уничтожение другим процессом (принудительное). По завершении работы операционная система освобождает все ресурсы, ассоциированные с данным процессом. При управлении процессами операционная система использует два основных типа информационных структур: дескриптор процесса и контекст процесса. Дескриптор процесса содержит такую информацию о процессе, которая необходима ядру в течение всего жизненного цикла процесса независимо от того, в каком состоянии он находится, а также находится ли образ процесса в оперативной памяти или выгружен на диск. Под образом процесса понимается совокупность его кодов и данных. Дескрипторы отдельных процессов объединены в список, образующий таблицу процессов. Память для таблицы процессов отводится динамически в области ядра. На основании информации, содержащейся в таблице процессов, операционная система осуществляет планирование и синхронизацию процессов. В дескрипторе прямо или косвенно (через указатели на связанные с процессом структуры) содержится информация о состоянии процесса, о расположении образа процесса в оперативной памяти и на диске, о значении отдельных составляющих приоритета, а также о его итоговом значении – глобальном приоритете, об идентификаторе пользователя, создавшего процесс, о родственных процессах, о событиях, осуществления которых ожидает данный процесс, и некоторая другая информация. Контекст процесса содержит менее оперативную часть информации о процессе, необходимую для возобновления выполнения процесса с прерванного места: содержимое регистров процессора, коды ошибок выполняемых процессором системных вызовов, информация о всех открытых данным процессом файлах и незавершенных операциях ввода-вывода и другие данные, характеризующие состояние вычислительной системы в момент прерывания. Контекст, также как и дескриптор процесса, доступен только программам ядра, то есть находится в виртуальном адресном пространстве операционной системы, однако хранится он не в области ядра, а непосредственно примыкает к образу процесса и перемещается вместе с ним, если это необходимо, из оперативной памяти на диск. Большинство современных операционных систем позволяют работать сразу с большим количеством процессов. Это позволяет лучше загружать ресурсы вычислительной системы: в то время как выполняющийся процесс может оказаться заблокированным в результате ожидания некоторого события или ресурса (например, ожидает данные из внешней памяти), другие процессы могут находиться в состоянии готовности, и какой-либо из них будет переведен в состояние выполнения. Таким образом, в результате изменения состояния процесса операционной системе приходится переключаться с одного процесса на другой. Для корректного переключения процессов необходимо сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. Такая процедура сохранения/восстановления работоспособности процессов называется переключением контекста.Рис. 4.2. Переключение контекста На рисунке 4.2. показано, как происходит переключение контекста при возникновении прерывания. Видно, что время, затрачиваемое на переключение контекста, складывается из времени сохранения контекста первого процесса, времени обработки самого прерывания, времени, затрачиваемого операционной системой на планирование (определения того процесса, который будет выполняться), и времени восстановления контекста второго процесса. Это время не используется вычислительной системой для совершения полезной работы и представляет собой накладные расходы, снижающие производительность системы. Это время зависит от конкретных особенностей вычислительной системы и может составлять от 1 до 1000 микросекунд. Существенно сократить накладные расходы позволяет расширенная модель процессов, включающая в себя понятие потоков или нитей (threads of execution – нитей исполнения). Рассмотренная выше модель процесса базируется на двух независимых концепциях: группировании ресурсов и выполнении программ. Иногда их полезно разделять. При этом и появляется понятие потока. С одной стороны, процесс можно рассматривать как способ группирования родственных ресурсов в одну группу. У процесса есть адресное пространство, содержащее код программы и данные, а также другие ресурсы. Ресурсами могут быть открытые файлы, обработчики сигналов, учетная информация и многое другое. С другой стороны, процесс можно рассматривать как поток исполняемых команд, или просто поток. У потока есть счетчик команд, отслеживающий порядок выполнения действий. У него есть регистры, в которых хранятся текущие переменные. У него есть свой собственный стек. Таким образом, процессы используются для группирования ресурсов, а потоки являются объектами, поочередно выполняющимися на процессоре. Концепция потоков добавляет к модели процесса возможность одновременного выполнения в одной и той же среде процесса нескольких программ, в достаточной степени независимых. Несколько потоков, работающих параллельно в одном процессе, аналогичны нескольким процессам, идущим параллельно на одном компьютере. Потоки имеют некоторыми свойствами процессов, поэтому их иногда называют упрощенными или легкими процессами. В многопоточном режиме процесс обычно запускаются с одним потоком, который называют основным или главным потоком. Более того, без потока процесс не может выполняться. В дальнейшем главный поток может создавать новые потоки. Рассмотрим, какие элементы процесса совместно используются всеми потоками, а что является индивидуальным для каждого потока:

Читайте также:
Программа не отображается в микшере громкости
Элементы процесса, разделяемые потоками Элементы, индивидуальные для потока
Адресное пространство Счетчик команд
Глобальные переменные Регистры
Открытые файлы Стек
Дочерние процессы Состояние
Сигналы и их обработчики
Информация об использовании ресурсов

Из таблицы видно, что все потоки совместно используют набор ресурсов процесса, а индивидуальными являются элементы, относящиеся к выполнению некоторой задачи. Как и процессы, потоки могут находиться в одном из состояний: готовность, ожидание, исполнение, уничтожение. Количество состояний может варьироваться в различных операционных системах (например, в Windows XP для потока определено 7 состояний, в Windows 2003 Server – 8). Исполняющийся поток взаимодействует с процессором, ожидающий – заблокирован возникновения некоторого события. Поток в состоянии готовности будет запущен, как только до него дойдет очередь и т.д. Иногда операционная система не заботится о программных потоках. Другими словами, управление программными потоками происходит целиком в пользовательском режиме. Например, когда программный поток блокируется, то, перед тем как остановиться, он решает, какой программный поток должен выполняться следующим, и запускает его. Существуют и широко используются несколько библиотек для поддержки пользовательских программных потоков, в том числе пакет PThreads от POSIX. Переключение с одного потока на другой в этом происходит существенно быстрее, чем при использовании процессов, так как требует сохранения только счетчика команд и регистров и может производиться без использования ядра. В других случаях ОС учитывает существование множества потоков, и когда один программный поток переходит в состояние блокировки, система выбирает для запуска следующий поток в том же самом процессе или в другом. Чтобы поддерживать такую функциональность, ядро системы должно хранить таблицу всех программных потоков в системе, наподобие таблицы процессов. Рассмотрим, например, структуры данных, которые использует Windows для управления процессами и потоками. Рис. 4.3. Структуры данных, сопоставляемые с процессами и потоками в Windows Из рис. 4.3 видно, что блок процесса (структура EPROCESS) находится в адресном пространстве ядра. Он содержит основную информацию о процессе. В адресном пространстве ядра также находится блок процесса Windows (структура KPROCESS), иногда называемый блоком управления процессом (Process Control Block, PCB). Он содержит базовую информацию, необходимую ядру Windows для потоков. В адресном пространстве процесса находится блок переменных окружения процесса (PEB, Process Environment Block). Он содержит информацию, необходимую загрузчику образов и другим системным модулям Windows для доступа из пользовательского режима. Кроме блоков управления процессами, имеются и соответствующие блоки, предназначенные для управления потоками (блок потока ETHREAD, блок переменных окружения потока – Thread Environment Block, блок потока ядра KTHREAD). Таким образом, в Windows потоки управляются ядром ОС.

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru