Современные операционные системы

Современные операционные системы
Что такое операционная система / Процессы

Процессы




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

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

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

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

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

Если процесс способен создавать несколько других процессов (называющихся дочерними процессами), а эти процессы в свою очередь могут создавать собственные дочерние процессы, то перед нами предстает дерево процессов, подобное изображенному на рис. 1.13. Связанные процессы, совместно работающие над выполнением какой-нибудь задачи, зачастую нуждаются в обмене данными друг с другом и в синхронизации своих действий. Такая связь называется межпроцессным взаимодействием. Кулинарные хитрости №15 (август) 2006



Полное описание: Процессы




С этим описанием рассматриваются следующие темы:


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

Функции Win32 CreateProcess
В Windows все происходит иначе: одним вызовом функции Win32 CreateProcess создается процесс, и в него загружается нужная программа. У этого вызова имеется 10 параметров, включая выполняемую программу, параметры командной строки для этой программы, различные параметры безопасности, биты, управляющие наследованием открытых файлов, информацию о приоритетах, спецификацию окна, создаваемого для процесса (если оно используется), и указатель на структуру, в которой вызывающей программе будет возвращена ... Читать

Состояния процессов
Несмотря на самостоятельность каждого процесса, наличие собственного счетчика команд и внутреннего состояния, процессам зачастую необходимо взаимодействовать с другими процессами. Один процесс может генерировать выходную ин4юрмацию, используемую другими процессами в качестве входной информации. В команде оболочки cat chapterl chapter2 chapter3 | grep tree первый процесс, запускающий программу cat, объединяет и выдает на выходе содержимое трех файлов. Второй процесс, запускающий программу grep, в ... Читать

Управление памятью с помощью связанных списков
Другим способом отслеживания памяти является ведение связанных списков распределенных и свободных сегментов памяти, где сегмент либо содержит процесс, либо является пустым пространством между двумя процессами. Участок памяти, изображенный на рис. 3.6, а, представлен на рис. 3.6, в как связанный список сегментов. Каждая запись в списке хранит обозначение, содержит сегмент «дыру» — hole (Н) или процесс —process (Р), адрес, с которого сегмент начинается, его длину и указатель на следующую запись.

Реализация потоков в пользовательском пространстве
Есть два основных способа реализации набора потоков: в пользовательском пространстве и в ядре. Это утверждение носит несколько спорный характер, поскольку возможна еще и гибридная реализация. А теперь мы опишем эти способы со всеми их достоинствами и недостатками. Первый способ — это поместить весь набор потоков в пользовательском пространстве. И об этом наборе ядру ничего не известно. Что касается ядра, оно управляет обычными, однопотоковыми процессами. Первое и самое очевидное преимущество сос ... Читать