Мегаобучалка Главная | О нас | Обратная связь


ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 25



2015-12-13 600 Обсуждений (0)
ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 25 0.00 из 5.00 0 оценок




1. Именованные объекты.

2. Выход из процесса и его завершение.

После создания процесс начинает работать и выполняет свою задачу. Но ничто не длится вечно, даже процессы. Рано или поздно новые процессы будут завершены, обычно в силу следующих обстоятельств:

1) обычного выхода (добровольно);.

2) выхода при возникновении ошибки (добровольно);

3) возникновения фатальной ошибки (принудительно);

4) уничтожения другим процессом (принудительно).

Большинство процессов завершаются по окончании своей работы. Когда компилятор откомпилирует заданную ему программу, он осуществляет системный вызов, сообщающий операционной системе о завершении своей работы. Этим вызовом в UNIX является exit, а в Windows — ExitProcess. Программы, работающие с экраном, также поддерживают добровольное завершение. Текстовые процессоры, интернет-браузеры и аналогичные программы всегда содержат значок или пункт меню, на котором пользователь может щелкнуть, чтобы приказать процессу удалить все временные файлы, которые им были открыты, и завершить свою работу.

Вторая причина завершения — обнаружение процессом фатальной ошибки. Например, если пользователь наберет команду сс foo.c

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

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

Четвертая причина, из-за которой процесс может быть завершен, — это выполнение процессом системного вызова, приказывающего операционной системе завершить некоторые другие процессы. В UNIX этот вызов называется kill. Соответствующая функция Win32 называется Terminate Process. В обоих случаях у процесса, вызывающего завершение, должны быть на это соответствующие полномочия. В некоторых системах при добровольном или принудительном завершении процесса тут же завершаются и все созданные им процессы. Но ни UNIX, ни Windows так не делают.

Минимум 2 этапа завершения:

1. Процесс удаляется из всех очередей планирования, то есть ОС больше не планирует выделение каких-либо ресурсов процессу,

2. Сбор статистики о потреблённых процессом ресурсах с последующим удалением его из памяти.

Причины завершения процесса:

· Обычный выход,

· Выход по исключению или ошибке,

· Недостаточный объем памяти,

· Превышение лимита отведённого программе времени,

· Выход за пределы отведённой области памяти,

· Неверная команда (данные программы интерпретируются как инструкции для процессора),

· Ошибка защиты (выполнение непривилегированной команды),

· Завершение родительского процесса,

· Ошибка ввода-вывода,

· Вмешательство оператора.

 

3.Блокировка файлов.

Важный вопрос в любой системе с несколькими процессами —

координация и синхронизация доступа к совместно используемым объектам,

например файлам.

Win32 может блокировать файлы полностью или частично, т.е. так, чтобы

никакой другой процесс (выполняемая программа) не мог обращаться к

блокированной области файла. Заблокированный файл может быть открыт

только для чтения (совместный доступ) или для чтения и записи (монопольный

доступ). Следует подчеркнуть, что блокировка связана с процессом. Любая

попытка обратиться к части файла (с помощью ReadFile или WriteFile) в

нарушение существующей блокировки потерпит неудачу, так как блокировка

обязательна на уровне процесса. Любая попытка получить конфликтную

блокировку также будет неудачной, даже если процесс уже имеет блокировку.

Блокировка файлов — это ограниченная форма синхронизации параллельных

процессов и потоков.

Наиболее общая функция блокировки LockFileEx реализована только в

Windows 2000/NT. Менее общая функция LockFile может применяться в

Windows 9x.

LockFileEx принадлежит к классу функций расширенного ввода-вывода;

для указания 64-разрядных позиций в файле и размера блокируемой области

требуется структура перекрытия, которая уже применялась ранее для указания

позиции в функциях ReadFile и WriteFile.

BOOL LockFileEx ( HANDLE hFile, DWORD dwFlags,

DWORD dwReserved, DWORD nNumberOfBytesToLockLow,

DWORD nNumberOfBytesToLockHigh,

LPOVERLAPPED lpOverlapped)

Функция LockFileEx блокирует область байтов в открытом файле для

совместного (несколько читающих процессов) или монопольного (один

читающий и пишущий процесс) доступа.

Параметры

hFile — дескриптор открытого файла. Дескриптор должен иметь права

доступа либо GENERIC_READ, либо GENERIC_READ и GENERIC_WRITE.

dwFlags определяет режим блокировки и устанавливает, следует ли

ожидать, пока блокировка не станет возможна.

• LOCKFILE_EXCLUSIVE_LOCK обозначает требование на

монопольную блокировку с возможностью чтения/записи. Если этот флаг

не установлен, запрашивается совместная блокировка (с возможностью

чтения).

• LOCKFILE_FAIL_IMMEDIATELY указывает, что функция должна

завершиться немедленно, возвратив значение FALSE, если блокировку

нельзя установить. Если этот флаг не установлен, вызов функции

блокируется, пока блокировка файла не станет возможна.

dwReserved должен быть равен нулю. Следующие два параметра задают

длину области байтов и поэтому здесь не поясняются.

lpOverlapped указывает на структуру типа OVERLAPPED, содержащую

начало области байтов. Структура OVERLAPPED содержит три компонента

данных, которые должны быть заданы (остальные компоненты игнорируются);

первые два определяют позицию начала блокируемой области.

• DWORD offset (именно так, а не OffsetLow).

• DWORD OffsetHigh.

• HANDLE hEvent должен быть равен нулю.

Блокировка файла снимается с помощью функции UnlockFileEx;

параметры для нее указываются те же самые, кроме dwFlags.

BOOL UnlockFileEx ( HANDLE hFile, DWORD dwReserved,

DWORD nNumberOfBytesToLockLow,

DWORD nNumberOfBytesToLockHigh,

LPOVERLAPPED lpOverlapped)

При блокировке файлов следует учитывать несколько факторов.

• Снятие блокировки должно относиться точно к такой же области, что и

предшествующая блокировка. Не допускается, например, разблокировать

две заблокированных ранее области или часть заблокированной области.

Попытка разблокировать область, которая не точно соответствует

существующей блокировке, потерпит неудачу; функция возвратит FALSE,

и системное сообщение укажет, что блокировки не существует.

• Блокировки не могут пересекаться с ранее блокированными областями

файла, если при этом возникает конфликт.

• Допускается блокировать область, выходящую за пределы файла. Этот

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

• Блокировки не наследуются вновь создаваемым процессом.

В табл. 9.1 показана логика блокировки в случае, когда вся область или ее

часть уже имеют блокировку. Эта логика действует и тогда, когда предыдущая

блокировка принадлежит этому же процессу.

Таблица 9.1. Логика требования блокировки

Требуемый тип блокировки

Существующая

блокировка

Совместная

блокировка

Монопольная

блокировка

Нет Предоставляется Предоставляется

Совместная (одна

или несколько)

Предоставляется Предоставляется

Исключительная Не предоставляется Не предоставляется

В табл. 9.2 показана логика, применяемая в том случае, когда процесс

пытается выполнить чтение или запись в области файла с одной либо

несколькими блокировками, принадлежащими разным процессам, во всей или в

части области, допускающей чтение/запись. Неудачное чтение или запись

может принимать форму частично завершенной операции, если блокирована

только часть записи.

Таблица 9.2. Блокировки и операции ввода-вывода

Операция ввода-вывода Существующа

я блокировка

Чтение Запись

Нет Проходит успешно Проходит успешно

Совместная

(одна или

несколько)

Проходит успешно. Вызываю-

щий процесс не обязательно

должен владеть блокировкой

Неудача

Исключитель

ная

Проходит успешно, если бло-

кировкой владеет вызывающий

процесс. В противном случае —

неудача

Проходит успешно, если бло-

кировкой владеет вызывающий

процесс. В противном случае —неудача

Операции чтения и записи обычно имеют форму функций ReadFile и

WriteFile или их расширенных версий ReadFileEx и WriteFileEx. Для

диагностики неудачи чтения или записи вызывается GetLastError.

Еще одна форма ввода-вывода — обращение к памяти, в которую

отображается файл. Конфликты блокировки не обнаруживаются при

обращении к памяти; они проявляются, когда вызывается функция

MapViewOfFile. Эта функция делает часть файла доступной для процесса, а

потому в этот момент следует проверить блокировку.

LockFile — это ограниченная специальная версия функции блокировки.

Она обеспечивает рекомендательную блокировку (advisory locking). В этом

случае предоставляется только монопольный доступ и функция возвращает

управление немедленно. Иначе говоря, LockFile не блокируется. Установлена

ли блокировка, можно проверить по возвращаемому значению.

Снятие блокировки файла

За каждым успешным вызовом LockFileEx должно следовать одно

соответствующее ему обращение к UnlockFileEx (это правило

распространяется также на LockFile и UnlockFile). Если программа не может

снять блокировку или задерживает ее дольше, чем необходимо, другие

программы не смогут продолжать работу или же это негативно повлияет на их

быстродействие. Следовательно, программы должны быть аккуратно

спроектированы и реализованы так, чтобы блокировки снимались как можно

скорее; логики, которая заставляла бы программу обходить операцию разбло-

кировки, следует избегать.

Удобный способ убедиться, что блокировка снята, предоставляют

обработчики завершения.

 

 



2015-12-13 600 Обсуждений (0)
ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 25 0.00 из 5.00 0 оценок









Обсуждение в статье: ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 25

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (600)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.009 сек.)