Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мои шпоры ОСиСП(1).doc
Скачиваний:
32
Добавлен:
26.09.2019
Размер:
1.63 Mб
Скачать

Билет 7

1. Процессы в ос unix. Типы процессов. (7, 23) – 56

Процесс можно представить как совокупность данных ядра системы, необходимых для описания программы в памяти и управления её выполнением, или как программу, на стадии выполнения, т.к. все выполняющиеся программы предоставлены в ОС UNIX в виде процессов.

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

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

Типы процессов:

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

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

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

2. Синхронизирующие примитивы. Решение задачи взаимного исключения с использованием семафоров (7, 8, 19, 20) - 152

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

1. Вводятся специальные целочисленные общие переменные, называемые семафорами.

2. Добавляются к набору действия, из которых состоят процессы, два новых примитива: p-опера­ция и v-операция.

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

s1 – семафор, p(s1) или v(s1) – запись операций над семафором.

V-операция – операция с одним аргументом, который должен быть семафором. Ее назначение – увеличение аргумента на единицу. Это действие рассматривается как неделимая операция.

Имеется достаточно принципиальное различие между семафорными и обычными операциями сложения. Если двумя параллельно-развивающимися процессами выполнена семафорная операция v(s1) над общим семафором s1, получим увеличение семафора s1 на два, так как операция v неделимая. А выполнение операции сложения s1 с единицей параллельными процессами может привести к увели­чению значения s1 на единицу.

P-операция – операция с одним аргументом, который должен быть семафором. Ее назначение – уменьшение аргумента на единицу, если только результирующее значение не становится отрицатель­ным. Завершение р-операции, то есть решение о том, что в настоящий момент является подходящим для выполнения уменьшения и последующее уменьшение значения аргумента, рассматривается как неделимая операция. P-операция определяет потенциальную задержку. Если инициируется р-операция над семафором, который в этот момент равен нулю, то в данном случае р-операция не может завершиться, пока какой-либо другой процесс не выполнит v-операцию над тем же семафором и не присвоит ему значение 1. Несколько процессов могут одновременно начать р-операцию над одним семафором. Утверждение о том, что завершение р-операции есть неделимое действие, означает, что когда семафор получит значение 1, только одна из начавшихся р-операций над семафором завершится, какая именно – не определено.

begin integer свободно;

свободно := 1;

очередь := 0;

parbegin

процесс 1: begin … end;

процесс 2: begin … end;

процесс N: begin … end;

parend;

end;

процесс i:

begin

Li: p(свободно);

Критический интервал i;

V(свободно);

Остаток цикла i;

goto Li;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]