Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Процессы



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

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

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

Таким образом, приостановленный процесс состоит из собственного адресного пространства, обычно называемого образом памяти (соге image, соге в переводе означает «сердечник», в честь использовавшейся давным-давно памяти на магнит­ных сердечниках), и компонентов таблицы процесса, содержащей, помимо других величин, его регистры.

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

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

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

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

 
 

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

Каждому пользователю, которому разрешено пользоваться системой, системный администратор присваивает UID (User IDentification— идентификатор пользова­теля). У каждого работающего процесса есть идентификатор пользователя, запус­тившего его. Дочерний процесс получает тот же самый UID, что и его родитель. Пользователи могут становиться членами групп, каждая из которых имеет иден­тификатор группы (GID, Group IDentification).





Дата публикования: 2015-01-26; Прочитано: 636 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...