Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OSISP_shpory.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.14 Mб
Скачать

2. Применение семафоров для решения задачи «производитель» - «потребитель» с неограниченным буфером. Решение «спящий парикмахер». (10, 22) – 155

begin

integer ЧПБ, РБ, ЗП;

ЧПБ:=0; РБ:=1; ЗП:=0;

parbegin

производитель: begin

n1: производство новой порции;

P(РБ);

добавление новой порции к буферу;

ЧПБ:=ЧПБ+1;

if (ЧПБ=0) then begin V(РБ); V(ЗП); end

else V(РБ);

goto n1;

end;

потребитель: begin

n2: P(РБ);

ЧПБ:=ЧПБ-1;

if (ЧПБ=-)1 then begin V(РБ); P(ЗП); P(РБ); end;

взятие порции из буфера;

V(РБ);

обработка взятой порции;

goto n2;

end;

parend;

Эта программа называется "спящий парикмахер"

Используется два двоичных семафора: работа с буфером и задержка потребителя.

Особенности:

- используются только двоичные семафоры;

- задача взаимного исключения реализуется через семафоры;

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

3. Организация защиты в процессорах ia32

Процессор поддерживает 4 механизма защиты:

Защита по размеру сегмента – предотвращает выход за пределы сегмента;

Привилегированные команды – есть группа команд, которые могут выполнять только на нулевом уровне привилегий. Команды, связанные с обращением к системным регистрам. Есть группа IOPL команд: команды работают с портами ввода/вывода и команды установки флага прерывания. Они выполняются только когда уровень привилегий больший или равен IOPL;

Защита по привилегиям – есть понятие CPL – текущий уровень привилегий процессора (Current Privilege Level). Это уровень, на котором работает процесс в данный момент. Значение в младших битах регистра CS. При обращении к данным или другим системным объектам сравнивает значение текущего уровня привилегий с уровнем привилегий дескриптора (DPL). По результату сравнивания процессор выполняет/не выполняет действие. Более того, при обращении к памяти max(CPL,RPL)<=DPL;

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

Важным механизмом защиты является то, что передача управления возможна только на текущем уровне привилегий (команды FAR CALL и FAR IMP).

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

  1. подчиненные сегменты;

  2. шлюзы вызова.

Билет 23

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

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

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

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

Виды процессов:

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

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

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

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

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