Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект_ОС.doc
Скачиваний:
33
Добавлен:
15.09.2019
Размер:
434.18 Кб
Скачать

2. Основные компоненты операционных систем.

2.1. Понятия вычислительного процесса и ресурса

Понятие «вычислительный процесс» (или просто – процесс) является одним из основных при рассмотрении операционных систем. Под процессом обычно понимается последовательность операций при выполнении программы или ее части в совокупности с используемыми данными. В общем случае процесс и программа представляют собой разные понятия. Программа – это план действий, а процесс – это само действие, поэтому понятие процесса включает программный код, данные, содержимое стека, содержимое адресного и других регистров процессора. Таким образом, для одной программы могут быть созданы несколько процессов в том случае, если с помощью одной программы в центральном процессоре (central processor unitCPU) вычислительной машины выполняется несколько несовпадающих последовательностей команд.

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

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

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

Определение концепции процесса преследует цель выработать механизмы распределения и управления так называемыми «ресурсами», которые также относятся к числу важнейших понятий ОС.

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

Примерами ресурсов являются некоторые аппартные устройства ВМ (процессоры, запоминающие устройства, устройства ввода-вывода) или некоторые наборы информации (в частности, совокупности записей определенной структуры – так называемые «файлы»).

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

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

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

  • «нитью управления», т. е. адресом выполняемой команды (в реаль­ ном режиме - это CS: IP);

  • базовыми адресами на сегмент данных и стековый сегмент, а также указателем на вершину стека (значение регистра SP);

  • текущими значениями регистров общего назначения, в которых происходят вычисления.

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

Многозадачную систему с точки зрения выполняемой среды можно разделить на три уровня:

  • пользователя (в нем задача представляется в виде последовательно­ го и непрерывного набора программных кодов);

  • ядра, на котором происходит управление доступом программы к ресурсам вычислительной системы;

  • аппаратный, на котором осуществляется решение задачи на физическом уровне.

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

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

Все достоинства потоков по сравнению с процессами связаны с наличием общей области памяти:

  • экономия внешней и внутренней памяти;

  • быстрый обмен данными между потоками;

  • контекст потока укороченный;

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

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

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