Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - SIGSEGV10 июня 2011В POSIX-системах, сигнал, посылаемый процессу при попытке обращения к несуществующей памяти или обращения с нарушением прав доступа. SIGSEGV целочисленная константа, определённая в заголовочном файле ЭтимологияSIG общий префикс сигналов, SEGV англ. segmentation violation нарушение сегментации. На самом деле, современные Unix-подобные операционные системы используют для управления памятью технологию страничного преобразования, вызывающую «страничные нарушения» и «нарушения защиты». Сегментация же не используется, или используется в специфических трюках. ИспользованиеСистема отображает память в адресное пространство процесса страницами размером 4—8 КБ, по мере необходимости — по мере выделения памяти процессом. Также, в адресное пространство могут быть отображены:
Страницы, в которые ещё ничего не отображено, вызывают страничное нарушение. Обрабатывая страничное нарушение для «вытесненной» страницы памяти или незагруженной части файла, операционная система обеспечивает наличие страницы, вызывавшей нарушение, при возврате к выполнению процесса. Если же в странице адресного пространства ранее ничего отображено не было, то операционная система посылает процессу сигнал SIGSEGV, чтобы прекратить его выполнение. Кроме этого, каждая страница адресного пространства имеет атрибуты, разрешающие процессу чтение и запись. При попытке записи, чтения или выполнения программы в странице, в которой это запрещено, возникает нарушение защиты, обрабатывая которое, операционная система посылает процессу сигнал SIGSEGV, чтобы прекратить его выполнение. Операционная система может предоставить дополнительные данные о возникшей ошибке, используя стек сигнала, который может помочь разработчику в отладке данной ошибки. По умолчанию, процесс аварийно завершается с генерацией дампа памяти, который можно использовать для получения информации об условиях возникновения исключения. SIGSEGV может быть перехвачен или проигнорирован. Однако игнорирование SIGSEGV, в некоторых случаях, может привести к непредсказуемым результатам . Примером программы, перехватывающей SIGSEGV, может служить отладчик, который способен проанализировать стек и информировать разработчика, на каком этапе произошла ошибка. Просмотров: 1198
|