390 likes | 545 Views
1. Процессы. Понятие процесса относятся к одному из основополагающих в ОС. Существует много определений термина процесс в том числе: Выполняющаяся прикладная программа пользователя Экземпляр программы, выполняющийся на компьютере
E N D
1. Процессы. Понятие процесса относятся к одному из основополагающих в ОС. Существует много определений термина процесс в том числе: Выполняющаяся прикладная программа пользователя Экземпляр программы, выполняющийся на компьютере Объект, который можно индетифицировать и выполнять на процессоре Единица активности, которую можно охарактеризовать единой цепочкой последовательных действий, текущим состоянием и связанных с ней набором системных ресурсов.
Как понятие процесс является определенным типом абстракции, и обычно следует придерживаться следующего неформального определения. Последовательный процесс (задача) – выполнение отдельной программы и ее данные на последовательном процессоре. В качестве примера можно назвать следующие процессы: Выполняющаяся прикладная программа пользователя Утилит Трансляция программ Компоновка, выполнение
Определение понятия процесс ставит цель выработать механизм распределения и управления ресурсами. Понятие ресурс как и понятие процесса является основным при рассмотрении ОС. Термин ресурс применяется к повторно используемым, относительно стабильным и часто недостающем объектом, которые запрашиваются, используются и освобождаются процессами в период их активности, т.е. ресурсом называется всякий объект, который может распределяться внутри системы. Мысленно процесс можно разделить на 3 компонента: Выполняющаяся программа Данные нужные для работы
Контекст выполняющейся программы (execution context) или состояние процесса (process state) Включат в себя всю информацию нужную ОС для управления процессами и процессору для его выполнения. Данные, характеризующие это состояние, включают в себя содержимое различных регистров процессора, таких как программный счетчик и регистры данных, приоритет процесса и сведения о том, находится ли данный процесс в состоянии ожидания вв-выв.
1-список процессов • А-процесс А • В-процесс В • 2-индекс процесса • 3-PC счётчик команд • 4-базовый регистр • 5-граничный регистр
На рис. Показан пример реализации процесса. Два процесса А и В находятся в различных областях основной памяти. Каждому процессу отведён блок памяти, в к-ом создаётся код программы, данные и информация о состоянии процесса. Каждый процесс заносится в список процессов, к-ый создаётся и поддерживается OC. Часть этого списка, соответствующая определённому процессу, содержит указатель размещения этого процесса в памяти. В регистре индекса процесса содержится индекс выполняющегося в текущий момент времени процесса, идентифицирующий его в списке процессов. Содержимое команд (PC) указывает на очередную инструкцию, к-ую нужно выполнить. Базовый и граничный регистры задают область памяти, занимаемую процессом. В базовый регистр заносится адрес начальной ячейки памяти, а в граничный- её размер в байтах.
Содержимое программного счётчика и всех ссылок на данные отсчитывается от значения базового регистра. По своей величине эти ссылки не могут превосходить значения граничного регистра. Регистр индекса процесса показывает, что выполняется процесс В, до этого выполняется процесс А, но он временно прерван. Содержимое всех регистров в момент прекращения этого процесса записано в виде данных о состоянии процесса. Впоследствии ОС сможет к выполнению процесса А. При этом будет сохранён контекст выполнения процесса В и восстановлен контекст процесса А. Когда в программный счётчик загрузится значение, указывающее на область кода, программа процесса Автоматически возобновиться выполнение этого процесса. Таким образом процесс реализируется в виде структуры данных.
. Он может выполняться или находиться в состоянии ожидания. Состояние процесса в каждый момент времени заносится в специально отведённую область данных. Использование структуры позволяет развить мощные методы координации и взаимодействия процесса. Расширяя и добавляя данные о состоянии процесса доп. информации можно разработать новые возможности ОС. В обычных ОС общего назначения процес может находиться в активном и пассивном состоянии.
В активном состоянии процесс участвует в конкуренции за исп-ие ресурса выч системы, а в пассивном- он только известен системе, но в конкуренции не участвует. В свою очередь активный процесс м/б в одном из следующих состояний: • 1. Выполнение- все затребованные процессом ресурсы выделены. В этом состоянии в каждый момент времени может находиться только один процесс (В однопроцессорной выч системе) • 2. Готовность к выполнению- ресурсы м/б предоставлены, тогда процесс перейдёт в состояние выполнения • 3.Блокирование или ожидание- затребованные ресурсы не м/б предоставлены или не завершена операция вв/выв.
Процесс состояния бездействия может перейти в состояние готовности в следующих случаях: • 1. По команде оператора. • 2. При выборе из очереди планировщиком. • 3. По вызову из другой задачи. Один процесс может создать, инециировать, приостановить, уничтожить другой процесс. • 4. По прерыванию от внешнего инециативного устройства. (Сигнал о завершении некоторого события может запускать соответствующий процесс). • 5. При наступлении запланированного времени запуска программ.
Из состояния выполнения процесс может выйти по одной из следующих причин: • 1)Процесс завершается, при этом он передаёт управление ОС и сообщает о своём завершении. • 2)Процесс переводится ОС в состояние готовности к выполнению в связи с появлением более приоритетной задачи и в связи с окончанием выделенного ему кванта времени. • 3)процесс блокируется (переводится в состояние ожидания) либо в силу невозможности предоставить ему ресурс, запрошенный в настоящий момент. При наступлении соответствующего события (завершилась операция вв/выв, освободился затребованный ресурс в опер. памяти, загружена необходимая страница виртуальной памяти и т. д. ) процесс деблокируется и переводится в состояние готовности к исполнению. Таким образом движущей силой, меняющей состояние процесса является событие. Один из ост. видов- прерывание.
Для того чтобы ОС могла управлять процессами, она должна распологать необходимой для этого информацией. С этой целью на каждый процесс заводится специальная специальная информационная структур, называемая диструктором процесса. (описатель задачи, блок управления задачей) Деструктор содержит следующую информацию: • 1. Идентификатор процесса (Process Identificator (ID)) • 2. Тип или класс процесса, который определяет для ОС некоторые правила предоставления ресурсов. • 3. Приоритет процесса. В соответствии с которым ОС предоставляет ресурсы В рамках одного класса процессов в первую очередь обслуживается более приоритетный процесс. • 4. Переменную состояния, которая определяет в каком состоянии находится процесс (готов кработе, состояние выполнения, ожидание устройства ввода/вывода и т. д.) • 5. Защищённую область памяти в которой хранится текущее значение регистров процессора, если прерывается не закончив работу. Эта информация называется контекстом процесса(задачи). • 6. Информацию о ресурсах, которыми процесс владеет и имеет право пользоваться (указатели на открытые файлы, инфа о независимых операциях вв/выв и т. т.) • 7. Место памяти или адрес этого места для организации общения с другими процессами. • 8. Параметры времени запуска. (момент времени, когда процессор должен активизироваться и периодичность этой операции).
Дескрипторы процесса постоянно находятся в опер. памяти, чтобы ускорить работу ОС, которая организует их в списки (очереди) и отображает изменение состояния процесса, перемещением соответствующего дескриптора из одного списка в другой. В некоторых ОС количество дескрипторов определяется жёстко и заранее на этапе генерации варианта ОС или в конфигурационном файле, который исполняется при загрузке ОС. В других ОС по мере необходимости система выделяет участки памяти под новые дескрипторы. • Для аппаратной поддержки работы ОС с дескрипторами задач процессора реализованы соответствующие механизмы. Например процессора intel (i80*86) имеется специальный регистр Task Register (TR) указывающий местонахождение сигмента состояния задачи Task State Segment (TSS) вкотором при переключении с процесса на процесс автоматически сохраняется содержимое регистров процессора.
2. Потоки. • Концепцию процесса можно охарактеризовать двумя параметрами: • 1. Владение ресурсами. • Процесс включает виртуальное адресное пространство в котором содержится образ процесса и время от времени может владеть такими ресурсами, как основная память, устройство вв/выв, файлы. ОС выполняет защитные функции предотвращая нежелательные взаимодействия процессов. • 2. Планирование и выполнение. • Выполнение процесса осуществляется путём выполнения кода программы при этом выполнение процесса может чередоваться с выполнением других процессов. Таким образом процесс имеет такие параметры как состояние и текущий приоритет, в соответствии с которым ОС осуществляет его планирование и диспетчеризацию.
В большинстве ОС эти две характеристики являются сущностью процесса. Однако они являются независимыми и ОС может рассматривать их отдельно друг от друга. Чтобы различать эти две характеристики единицу диспетчеризации называют потоком (термин нить, волокно), а единицу владения ресурсами – процессом или задачей. Многопоточностью называется способность ОС поддерживать в рамках одного процесса выполнение нескольких потоков.
Традиционный подход, при котором каждый процесс представляет собой единый поток выполнения называется однопоточным. Например MS-DOS. В однопоточной модели процесса, в его представление входит управляющий блок этого процесса и пользовательского адресного пространства, а также стеки ядра и пользователя, с помощью которого осуществляются вызовы процедур и возвраты из них при выполнении процесса, когда выполнение процесса прерывается, содержимое регистра процессора сохраняе-тся в памяти, в много-пользовательскойсре-де с каждым процесс-сом также связан уп-равляющий блок и адресное прост-ранство, но теперь для каждого потока соз-даются свои отдельные стеки, а также свой уп-равляющий блок, в котором содержатся значения регистра, приоритет и другая информация о сос-тоянии потока.
Таким образом все потоки процесса разделены между собой состоянием и ресурсами этого процесса, они нахо-дятся в одном и том же адресном пространстве и имеют доступ к од-ним и тем же данным. Если один поток изме-няет в памяти какие-то данные, то другой поток, во время этого доступа к этим данным , может отследить эти изменения. Если один поток открывает файл с правом чтения, то другие потоки данного процесса могут читать данные из этого файла. Основные преимущества использования потоков:1)создание нового потока в уже существующем процессе занимает меньше времени, чем создание нового процесса2) поток можно завершить быстрее чем процесс3)переключение потоков в рамках одного и того же процесса происходит быстрее4)при использовании потока повышается эффективность обмена информацией между двумя выполняющимися программами.
3.Планировщик процессов (scheduler). Распределение процессов между имеющимися ресурсами носит название планирование процессов. Одним из методов планирования процессов, является метод очередей ресурсов. Новые процессы находятся во входной очереди, часто называемой очередью работ – заданий. Входная очередь находится во внешней памяти, во входной очереди процессы ожидают освобождение ресурса. Готовые к выполнению процессы располагаются в основной памяти и связаны очередью готовых процессов.
Процесс в состоянии ожидания завершения операции ввода/вывода находится в одной из очередей к оборудованию ввода/вывода. При прохождении через компьютер процесс мигрирует между различными очередями под управлением программы, которая называется планировщик ( scheduler). Операционная система, обеспечивающая режим мультипрограммирования, обычно включает в себя два планировщика – долгосрочный и краткосрочный. Например в OS/360 долговременный планировщик называется планировщиком заданий, акратковременный – супервизором задач.
Основное различие между долгосрочным и краткосрочным планировщиками заключается в частоте запуска, например краткосрочный может запускаться каждые 100 мс, долгосрочный – 1 раз за несколько секунд. Долгосрочный планировщик – решает, какой из процессов, находящийся во входной очереди, должен быть переведен в очередь готовых процессов в случае освобождения ресурсов памяти. Краткосрочный – решает, решает, какой из процессов, находящийся в очереди готовых процессов, должен быть передан на выполнение в CPU.
В некоторых ОС долговременный планировщик может отсутствовать. Например в системах разделения времени (time – sharing system)каждый новый процесс сразу же помещается в основную память.
Выводы. • Для систем, использующих концепцию многопоточности используются следующие определения: • Процесс – единица активности операционной системы, создаваемая при запуске программы на выполнение, и обладающая свойствами: - Отдельное виртуальное адресное пространство - Код выполняемой программы, загруженный в адресное пространство процесса - Начальные параметры запуска – аргументы запуска, рабочую папку и т.п. - Набор привилегий на доступ к системным ресурсам и вызовам - Текущее состояние, включая статус процесса
- Набор потоков, выполняющих код программы в адресном пространстве процесса, имеющих доступ к общим ресурсам процесса • Поток – единица активности операционной системы, создаваемая при запуске процесса системой или программно из другого потока того же процесса, обладающая свойствами: • Счетчик команд – указатель на текущую выполняемую команду • Регистры – значения регистров процессора в текущий момент времени • Стек • Состояние
Для конкретной операционной системы определение процесса может быть лаконичнее, так как опирается на конкретные механизмы этой системы, например: • Для систем, не поддерживающих параллельное выполнение средствами потоков, каждый процесс фактически имеет один поток, и понятия потока и процесса объединены. • Для систем, не поддерживающих многозадачность, необходимость в понятии процесса отпадает – одновременно может быть запущена только одна программа, и нет необходимости в разделении запущенных программ и их свойств.
Создать процесс — это прежде всего означает создать описатель процесса, в качестве которого выступает одна или несколько информационных структур, содержащих все сведения о процессе,, необходимые операционной системе для управления им. В число таких сведений могут входить, например, идентификатор процесса, данные о расположении в памяти исполняемого модуля, степень привилегированности процесса (приоритет и права доступа) и т. п. Примерами описателей процесса являются блок управления задачей (ТСВ — TaskControlBlock) в OS/360, управляющий блок процесса (РСВ — ProcessControlBlock) в OS/2, дескриптор процесса в UNIX, объект-процесс (object-process) в Windows NT.
В многопоточной системе при создании процесса ОС создает для каждого процесса как минимум один поток выполнения. При создании потока так же, как и при создании процесса, операционная система генерирует специальную информационную структуру — описатель потока, который содержит идентификатор потока, данные о правах доступа и приоритете, о состоянии потока и другую информацию. В исходном состоянии поток (или процесс, если речь идет о системе, в которой понятие «поток» не определяется) находится в приостановленном состоянии
. Момент выборки потока на выполнение осуществляется в соответствии с принятым в данной системе правилом предоставления процессорного времени и с учетом всех существующих в данный момент потоков и процессов. В случае если коды и данные процесса находятся в области подкачки, необходимым условием активизации потока процесса является также наличие места в оперативной памяти для загрузки его исполняемого модуля.
Во многих системах поток может обратиться к ОС с запросом на создание так называемых потоков-потомков. В разных ОС по-разному строятся отношения между потоками-потомками и их родителями. Например, в одних ОС выполнение родительского потока синхронизируется с его потомками, в частности после завершения родительского потока ОС может снимать с выполнения всех его потомков. В других системах потоки-потомки могут выполняться асинхронно по отношению к родительскому потоку. Потомки, как правило, наследуют многие свойства родительских потоков. Во многих системах порождение потомков является основным механизмом создания процессов и потоков.
Потоки создаются и выполняются в родительском адресном пространстве, то есть в адресном пространстве процесса, создавшего потоки, но каждому потоку даётся свой стек. Потоки могут обмениваться друг с другом информацией без ограничений. • Когда приложение запрашивает ресурс, операционная система проверяет, свободен ли запрашиваемый ресурс, и, если свободен, уменьшает счётчик доступа к ресурсу.
Создание потоков требует от ОС меньших накладных расходов, чем процессов. В отличие от процессов, которые принадлежат разным, вообще говоря, конкурирующим приложениям, все потоки одного процесса всегда принадлежат одному приложению, поэтому ОС изолирует потоки в гораздо меньшей степени, нежели процессы в традиционной мультипрограммной системе. Все потоки одного процесса используют общие файлы, таймеры, устройства, одну и ту же область оперативной памяти, одно и то же адресное пространство
Использование потоков связано не только со стремлением повысить производительность системы за счет параллельных вычислений, но и с целью создания более читабельных, логичных программ. Введение нескольких потоков выполнения упрощает программирование. Например, в задачах типа «писатель-читатель» один поток выполняет запись в буфер, а другой считывает записи из него. Поскольку они разделяют общий буфер, не стоит их делать отдельными процессами. Другой пример использования потоков — управление сигналами, такими как прерывание с клавиатуры (del или break). Вместо обработки сигнала прерывания один поток назначается для постоянного ожидания поступления сигналов. Таким образом, использование потоков может сократить необходимость в прерываниях пользовательского уровня. В этих примерах не столь важно параллельное выполнение, сколь важна ясность программы.
Ресурс – это общий термин, описывающий физическое устройство или область памяти, которые могут запрашиваться для использования несколькими задачами. Если ресурс может быть использован одновременно несколькими задачами, то он называется разделяемым. Если в данный момент времени ресурс может быть использован только одной задачей, то он является неразделяемым. Неразделяемый ресурс называется критическим.
Неразделение ресурсов происходит по одной из следующих причин: • Физическая природа ресурса делает невозможным его разделение: типичный пример – принтер: невозможно переключить его между печатью листов различных процессов. • Ресурс таков, что если он используется несколькими процессами одновременно, то действие одного процесса может взаимодействовать с действиями другого. Например, область памяти содержит переменные, доступные для более чем одного процесса: если один процесс проверяет переменные, в то время как другой модифицирует их, то результат будет непредсказуем и обычно гибелен. Неразделяемые ресурсы включают в себя большинство периферийных устройств, доступных для записи файлов, и области данных, являющихся предметом модификации.
Буфер обмена. Буфер обмена — промежуточное хранилище данных, предоставляемое программным обеспечением и предназначенное для переноса или копирования между приложениями или частями одного приложения. Приложение может использовать свой собственный буфер, доступный только в нём, или общий, предоставляемый операционной системой или другой средой через определённый интерфейс. А теперь объясню своими словами. Буфер обмена – это невидимая часть памяти, в которое временно сохраняется информация, которую вы скопировали, перед тем, как вставить в нужное место. То есть, вы выделили какой-либо файл(ы), папку(и), текст, или что-нибудь другое, нажали правой кнопкой мыши, после чего нажали на пункт «Копировать» или просто нажали Ctrl+C (горячая клавиша),
В Windows XP буфер обмена можно было легко найти. Все что вы скопировали, хранилось в файле clipbrd.exe. Путь к нему был такой: Диск C (системный диск) -> папка WINDOWS -> папка system32 -> clipbrd.exe. И если бы вы открыли его, то обнаружили бы в нем тот текст или картинку (или что-либо другое), которую вы скопировали. Что касается систем Windows 7 и Vista, то там уже файла clipbrd.exe нет, там есть файл clip.exe и если вы попробуете его открыть, то у вас ничего не получиться. Хотя при наведении мышкой на данный файл, высветиться пояснительное окно с описанием, и там будет написано «Clip – копирование данных в буфер обмена». Именно этот файл отвечает в Windows 7 и Vista за буфер обмена, но к нему нет доступа.
Можно конечно скопировать файл clipbrd.exe в папку system32 систем Windows 7 и Vista, в интернете есть много инструкций, но вопрос – зачем? Ещё раз напомню, что удобнее всего работать с буфером обмена используя следующие комбинации клавиш: Ctrl+A - выделить всё. Ctrl+C - скопировать выделенные объекты в буфер обмена. Ctrl+X - вырезать выделенные объекты в буфер обмена (для перемещения). Ctrl+V - вставить из буфера обмена.
Помните, что системный буфер обмена вмещает одновременно только один блок данных. При следующем копировании данных в буфер обмена старое содержимое будет заменено новыми скопированными данными. Теперь представьте, что необходимо из одного документа скопировать двадцать отрывков в другой документ. Чтобы это сделать, придется двадцать раз повторить вышеперечисленные три пункта. Было бы намного удобнее сначала скопировать сразу все отрывки в буфер, а затем один раз перейдя в другой документ поместить туда эти отрывки. Стандартный буфер обмена Windows этого делать не умеет. Зато это умеют специальные программы - менеджеры буфера обмена.
CLCL — простая программа (даже не требующая установки) для восстановления данных из буфера обмена. Сохраняет в свой журнал занесенные в буфер обмена текстовые и графические фрагменты. Таких фрагментов может быть очень много и при необходимости любой из них можно вставить в документ, выбрав его из списка. Кроме этого существует ряд других настроек программы, с которыми думаю, вы сможете без труда разобраться самостоятельно.