Завершение процессов
В табл. 3.2 перечислены типичные причины завершения процессов. В любой компьютерной системе должны быть средства, позволяющие определить, закончилось выполнение процесса или нет. Пакетное задание должно включать в себя команду типа Halt (останов) или какой-то явный вызов службы операционной системы, приводящий к завершению процесса. В первом случае генерируется прерывание для извещения операционной системы о завершении процесса. Например, в системе с разделением времени процесс пользователя должен быть завершен, когда пользователь выходит из системы или выключает терминал. На персональном компьютере или рабочей станции пользователь может выйти из приложения (например, закрыть программу обработки текста или электронную таблицу). Все эти действия в конечном счете приведут к тому, что будет вызвана служба операционной системы, завершающая процесс.
Таблица3.2 Причины завершения процессов
Обычное завершение | Процесс вызывает службу операционной системы, чтобы сообщить, что он завершил работу. |
Превышение лимита отведенного программе времени | Общее время выполнения процесса превышает заданное предельное значение. Это время может измеряться несколькими способами. Одним из них является учет полного времени, затраченного на выполнение ("по настенным часам"); при выполнении интерактивного процесса время можно отсчитывать с момента последнего ввода данных пользователем |
Недостаточный объем памяти | Для работы процесса требуется больше памяти, чем имеется в системе |
Выход за пределы отведенной области памяти | Процесс пытается получить доступ к ячейке памяти, к которой у него нет прав доступа |
Ошибка защиты | Процесс пытается использовать недоступный для него ресурс или файл, или пытается сделать это недопустимым образом — например, производит попытку записи в файл, открытый только для чтения |
Арифметическая ошибка | Процесс пытается выполнить запрещенную арифметическую операцию, например, деление на ноль, или пытается использовать число, превышающее возможности аппаратного обеспечения |
Излишнее ожидание | Процесс ждет наступления определенного события дольше, чем задано в параметрах системы |
Ошибка ввода-вывода | Во время ввода или вывода происходит ошибка. Например, не удается найти нужный файл или выполнить чтение или запись за максимально возможное количество попыток (когда, например, на магнитном носителе попался дефектный участок) или производится попытка выполнить недопустимую операцию (например, чтение с печатающего устройства) |
Неверная команда | Процесс пытается выполнить несуществующую команду (часто это бывает, если процесс переходит в область данных и пытается интерпретировать их как команду) |
Команда с недоступными привилегиями | Процесс пытается использовать команду, зарезервированную для операционной системы |
Неправильное использование данных | Часть данных принадлежит не к тому типу или не инициализирована |
Вмешательство оператора или операционной системы | По какой-либо причине операционная система может завершить процесс (например, в случае взаимоблокировки) |
Завершение родительского процесса | При завершении родительского процесса операционная система может автоматически прекращать все его дочерние процессы |
Запрос со стороны родительского процесса | Обычно родительский процесс имеет право прекращать любой из своих дочерних процессов |
Кроме того, к завершению процессов могут привести и другие ошибки или условия отказа. В табл. 3.2 перечислены некоторые из наиболее часто возникающих условий4.
4Наконец, в некоторых операционных системах процесс может быть завершен процессом, который его породил, а также при завершении самого родительского процесса.
Дата добавления: 2016-06-05; просмотров: 2407;