Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Содержимое таблицы процессов (ее столбцы)




ЯДРО. МОДУЛИ ОС

Некоторые ОС выполнены так, что ядро содержит лишь 1 модуль, в этом случае изменение свойств ядра весьма сложно (Linux). Другие ядра содержат несколько модулей, они называются микроядерными (напр.Word 2000).

Функции ядра

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

Вспомогательные модули

1) Утилиты – это программы, решающие отдельные задачи управления и сопровождения компьютерной сист, такие как: программа сжатия дисков, архивации данных и т.д.

2) Системные обрабатывающие программы: текстовые и графические редакторы, компиляторы, компоновщики и т.д.

3) Программы, предоставляющие пользователю дополнительные услуги: специальные программы пользовательского интерфейса, игры и т.д.

4) Библиотеки процедур различного назначения, упрощающие разработку приложений.

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

ЯДРО В ПРИВИЛЕГИРОВАННОМ РЕЖИМЕ

Для надежного выполнения кода вычислительного процесса ОС должна иметь по отношению к приложениям привелегии, иначе некорректно работающее приложение может разрушить часть кода. Поэтому ОС должна обладать полномочиями, а так же для того, чтобы играть роль «арбитра в споре» приложений за ресурсы системы. Ни одно из приложений не должно иметь возможность без ведома ОС получить дополнительную область памяти, занимать процессор дольше разрешенного времени, управлять совместно используемыми внешними устройствами. Также привелегии можно обеспечить без специальных средств аппаратной поддержки. Аппаратура ПК должна поддерживать как минимум 2 режима работы: Пользовательский режим и Привилегированный режим (режим ядра). Приложение ставится в подготовительное положение за счет запрета воспроизведения в привилегированном режиме некоторых критических команд, связанных с переключением процессора с задачи на задачу, управлением устройства ввода-вывода, доступа к механизмам распределения и защиты памяти. Выполнение некоторых команд в пользовательском режиме запрещается (например команда перехода из польз. режима в привилегированный и обратно). Тогда как другие программы могут быть запрещены для выполнения в определенных условиях. Например, команды вв-выв могут быть запрещены при доступе к контроллеру жесткого диска, который хранит данные, общие для ОС и приложений. Если какому-то приложению требуется последовательный порт, то ОС может разрешить его. Условие выполнения критической команды находится под полным контролем ОС. Контроль обеспечивается за счет набора команд, защищенных в пользовательском режиме. Аналогичным способом обеспечиваются привелегии ОС при доступе к памяти. Например, выполнение команды доступа к памяти для приложения разрешается, если команда обращается к области, отведенной для данного приложения; и запрещается, если такое обращение происходит в области, где расписаны коды самой ОС. Полный контроль ОС над доступом к памяти достигается за счет того, что команды конфигурирования механизма защиты памяти (напр., команды, управляющие указателем таблицы дескриптеров памяти) разрешается выполнять только в привилегированном режиме. Важно, что ОС ограничивает обращение не только к своим областям, но и к областям, используемым другими приложениями. В этом случае говорят, что каждая программа выполняется в своем адресном пространстве. Это свойство позволяет локализовать некорректно работающее приложение и обеспечить т.о. общую стабильность работы ОС.

СТРУКТУРА ЯДРА

 
 

 

 


Состоит из следующих слоев:

1) Средства аппаратной поддержки ОС. К ОС относят не все аппаратные средства компьютера, а только средства ее аппаратной поддержки, т.е. те, которые прямо участвуют в организации вычислительного процесса: - средства поддержки привилегированного режима; - система прерываний; - средства переключения контекстов процессов; - средства защиты области памяти.

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

3) Слой базовые механизмы – выполняет основные функции ядра (низкоуровневые: переключение контекстов процессора; загрузка-выгрузка страниц памяти; низкоуровневые операции вв-вывода), ведет осн. таблицы. В этом слое не принимаются никакие решения относительно действий ядра в какой-либо ситуации; а выполняет лишь те директивы, которые приняты на более высоких слоях.

4) Менеджеры ресурсов (диспетчеры ресурсов) – состоят из модулей, решающих задачи по управлению основными ресурсами ОС.

Основные ресурсы:

- процессор, а точнее время, которое выделяется на определенные задачи;

- память;

- файловая система;

- устройство вв-выв.

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

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

ПРОЦЕСС. МОДЕЛЬ ПРОЦЕССА

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

СОЗДАНИЕ ПРОЦЕССОВ

В универсальных ОС способ создания и прерывания процессов происходит по мере их необходимости. Есть 4 основных события, приводящие к созданию процессов:

1) Инициализация системы.

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

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

ЗАВЕРШЕНИЕ ПРОЦЕССА

Рано или поздно процесс завершает свое существование. Чаще всего это происходит благодаря одному из следующих событий:

1) Обычный выход (преднамеренно).

2) Выход по ошибке (преднамеренно).

3) Выход по неисправимой ошибке (не преднамеренно).

4) Уничтожение другим процессом (не преднамеренно).

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

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

4) Выполнение другим процессом системного запроса на уничтожение определенного процесса (kill – Unix, Terminate Process – Windows 32). В обоих случаях процесс, который выбивает другой процесс, должен обладать соответствующими полномочиями. В некоторых ОС при завершении процесса преднамеренно или нет – все процессы, созданные этим процессом завершаются.

ИЕРАРХИЯ ПРОЦЕССОВ

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

СОСТОЯНИЯ ПРОЦЕССОВ

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

 

 


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

1 переход – процесс блокируется, ожидая входных данных.

2 переход – планировщик выбирает другой процесс.

3 переход – планировщик выбирает этот процесс.

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

Переход 1 происходит тогда, когда процессор обнаруживает, что продолжение работы невозможно. В некоторых ОС процесс должен выполнить системный запрос, напр., block или pause, чтобы оказаться в заблокированном состоянии. В других системах (Unix) процесс автоматически блокируется, если он не в состоянии считать из специального файла или канала данные. Переход 2 и 3 вызываются частью ОС, называемой планировщик процессов. Переход 2 происходит, если планировщик решил предоставить процессор другому процессу. Переход 3 происходит, когда все остальные процессы уже исчерпали свое процессорное время и процессор снова передается первому процессу. Переход 4 происходит с появление внешнего события, ожидавшего процессор, напр., прибытие входных данных. Если в этот момент не запущен никакой другой процесс, то срабатывает переход 3 и процесс запускается. В противном случае процессу придется некоторое время находиться в состоянии готовности, пока не освободится процессор.

ПЕРЕКЛЮЧЕНИЕ ПРОЦЕССОВ

Для реализации процессов ОС ведет информационную структуру, которая называется таблицей процессов. В ней столько строк - сколько процессов, и столько столбцов – сколько имеется параметров, описывающих данный процесс. Эти параметры можно разделить на три группы:

1 группа параметров относится к управлению процессами.

2 группа описывает используемую процессом память.

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

На начальной стадии этого процесса работают аппаратные средства процессора:

1) Аппаратно запоминается счетчик команд.

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

Содержимое таблицы процессов (ее столбцы)

Можно сгруппировать в двух частях:

1 часть столбцов – управление процессом:

1) Регистры (содержимое).

2) Счетчик команд.

3) Слово состояния программы.

4) Указатель стека.

5) Состояние процесса.

6) Приоритет.

7) Параметр планирования.

8) Идентификатор процесса (его PIT).

9) Родительский процесс (PPIT).

10) Принадлежность к группе процессов (если она есть).

11) Сигналы.

12) Время начала процесса.

13) Используемое процессорное время.

14) Процессорное время дочернего процесса.

15) Время следующего аварийного сигнала.

2 часть столбцов – управление памятью:

1) Указатель на текстовый сегмент.

2) Указатель на сегмент данных.

3) Указатель на сегмент стека.

3 часть столбцов - управление файлами:

1) Корневой каталог.

2) Рабочий каталог.

3) Дескрипторы файла (описатели).

4) Идентификатор файла (номер).

5) Идентификатор группы.

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

Динамика переключения между процессами опирается на алгоритм прерываний и включает в себя следующие действия:

1) Аппаратное обеспечение сохраняет в стеке счетчик команд и т.п.

2) АО загружает новый счетчик команд из векторов прерываний.

3) Процедура на ассемблере сохраняет регистры.

4) Процедура на ассемблере устанавливает новый стек.

5) Запускается программа обработки прерываний на яз.выс.ур. (она считывает и буферизует входные и выходные данные).

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

7) Программа на яз.выс.ур. передает управление процедуре на ассемблере.

8) Процедура на ассемблере запускает новый процесс.

ПОТОКИ. МОДЕЛЬ ПОТОКА

В универсальных ОС каждому процессу соответствует адресное пространство и одиночный управляющий поток. Фактически это и определяет процесс. Тем не менее, часто встречаются ситуации, в которых предпочтительно иметь несколько квазипараллельных управляющих потоков в одном адресном пространстве, как если бы они были различными процессами (но разделяющими одно адресное пространство). Модель процесса базируется на двух независимых концепциях: группирование ресурсов и выполнение программы. Иногда их необходимо разделять и здесь появляется понятие потока. У потока общее адресное пространство. У потока есть счетчик команд, отслеживающий выполнение действий; есть регистры, в которых хранятся текущие переменные; стек, содержащий протокол выполнения команд, где на каждую процедуру, вызванную, но еще не вернувшуюся, отведена часть стека. Хотя поток должен выполняться внутри процесса, следует разделять эти понятия. Процессы используются для группирования ресурсов, а потоки являются объектами, поочередно выполняемыми на центральном процессоре. Концепция потоков добавляет к модели процесса возможность одновременного выполнения в одном и том же процессе нескольких независимых программ. Несколько потоков, работающих параллельно в одном процессе аналогичны нескольким процессам, идущим квазипараллельно на одном компьютере. В первом случае потоки разделяют адресное пространство, открытые файлы и другие ресурсы. Во втором случае процессы совместно пользуются физической памятью, дисками, принтерами и др.ресурсами.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...