А. Робачевский - Операционная система UNIX (1114671), страница 11
Текст из файла (страница 11)
Он может игнорировать сигнал. Не следует игнорировать сигналы, вы!званные аппаратной частью, например, при делении на 0 или ссылкена недопустимые области памяти, так как дальнейшие результаты вотношении данного процесса непредсказуемы.Точнее, с реальным и эффективным идентификаторами процесса, посылающегоЕсли вы посылаете сигнал командой kill(l), работая в shell, то речь идет о командном ин!терпретаторе.www.books-shop.com46Глава I. Работа в операционной системе UNIX2. Процесс может потребовать действия по умолчанию.
Как ни печально,обычно это сводится к завершению выполнения процесса.3. Наконец, процесс может перехватить сигнал и самостоятельно обрабо!тать его. Например, перехват сигнала SIGINT позволит процессу уда!лить созданные им временные файлы, короче, достойно подготовитьсяк "смерти". Следует иметь в виду, что сигналы S I G K I L L и SIGSTOPнельзя ни перехватить, ни игнорировать.По умолчанию командапосылает сигнал с номером 15 —действие по умолчанию для которого — завершение выполнения процесса,получившего сигнал.Иногда процесс продолжает существовать и после отправления сигналаSIGTERM. В этом случае можно применить более жесткое средство — по!слать процессу сигнал S I G K I L L с номером (9), — поскольку этот сигналнельзя ни перехватить, ни игнорировать:$ k i l l 9 pidОднако возможны ситуации, когда процесс не исчезает и в этом случае.Это может произойти для следующих процессов:Процессы!зомби.
Фактически процесса как такового не существует,осталась лишь запись в системной таблице процессов, поэтому уда!лить его можно только перезапуском операционной системы. Зомбив небольших количествах не представляют опасности, однако еслиих много, это может привести к переполнению таблицы процессов.Процессы, ожидающие недоступные ресурсы NFS (Network FileSystem), например, записывающие данные в файл файловой системыудаленного компьютера, отключившегося от сети. Эту ситуациюможно преодолеть, послав процессу сигнал SIGINT илиПроцессы, ожидающие завершения операции с устройством, напри!мер, перемотки магнитной ленты.Сигналы могут не только использоваться для завершения выполненияно и иметь специфическое для приложения (обычно для сис!темных демонов) значение (естественно, это не относится к сигналамSIGKILL и SIGSTOP).
Например, отправление сигнала SIGHUP серверуимен DNSвызовет считывание базы данных с диска. Длядругих приложений могут быть определены другие сигналы и соответству!ющие им значения.Более подробно сигналы мы рассмотрим в главах 2 и 3.между символьными именами и номерами сигналов может отличатьсяразличных версиях UNIX.
Команда kill !I выводит номера сигналов и их имена.www.books-shop.comУстройстваКак уже отмечалось, UNIX "изолирует" приложения (а значит и пользова!теля) от аппаратной части вычислительной системы. Например, в именифайла отсутствует указатель диска, на котором этот файл расположен, абольшая часть взаимодействия с периферийными устройствами неотличи!ма от операций с обычными файлами.UNIX предоставляет единый интерфейс различных устройств системы ввиде специальных файлов устройств.
Специальный файл устройства свя!зывает прикладное приложение с драйвером устройства. Каждый специ!альный файл соответствует какому!либо физическому устройству (напри!мер, диску, накопителю на магнитной ленте, принтеру или терминалу)или т. н. псевдоустройству (например, сетевому интерфейсу, пустому уст!ройству, сокету или памяти). Вся работа приложения с устройством про!исходит через специальный файл, а соответствующий ему драйвер обеспе!чивает выполнение операций ввода/вывода в соответствии с конкретнымпротоколом обмена данными с устройством.Существует два типа специальных файлов устройств:Файлы блочных устройствФайлы символьных устройствФайлы блочных устройствФайлы блочных устройств служат интерфейсом к устройствам, обмен дан!ными с которыми происходит большими фрагментами, называемыми бло!ками.
При этом ядро операционной системы обеспечивает необходимуюбуферизацию. Примером физических устройств, соответствующих этомутипу файлов, являются жесткие диски. Приведем фрагмент подробногосписка файлов каталога /dev системы Digital UNIX, отражающий файлыдля доступа к первому и второму разделам первого диска SCSI:11rootrootsystemsystem8, 18, 1Apr 18Apr 1811:0313:15Файлы символьных устройствФайлы символьных устройств используются для доступа к устройствам,драйверы которых обеспечивают собственную буферизацию и побайтнуюпередачу данных.
В качестве примера устройств с символьным интерфей!сом можно привести терминалы, принтеры и накопители на магнитнойленте. Заметим, что одно и то же физическое устройство может иметь какблочный, так и символьный интерфейсы. Для блочных устройств такойинтерфейс также называют интерфейсом доступа низкого уровня (rawwww.books-shop.comГлава 1.
Работа в операционной системе UNIX48interface). Так, для побайтного доступа к разделам диска, приведенным впредыдущем примере, используются соответствующие файлы:crwcrwrcrwrwrwcrwrwrw1111rootrootrootrootrootbinbinsystemsystemsystemsystemsystemterminalterminal8, 18, 113,17, 0V, 13, 23, 3AprAprAprAprAprAprApr1818181818181811:0413:1518:0815:2015:2016:1016:10/dev/rrzOb/dev/tty02/dev/tty03Последние три строки списка представляют интерфейс доступа к вирту!альной памяти ядра и двум псевдотерминалам.В поле размера файла (пятая колонка вывода командыу специаль!ных файлов устройств выводятся два числа. Это так называемые старшее(major) и младшее (minor) числа.
Часто драйвер обслуживает более одногоустройства. При этом старшее число указывает ядру на конкретный драй!вер (например, драйвера младшее передается драй!веру и указывает на конкретное устройство (например, конкретный псев!дотерминал).Интерфейс файловой системы для взаимодействия с устройством схемати!чески представлен на рис. 1.7.Рис. 1.7. Взаимодействие с устройствомwww.books-shop.comУстройстваМнемоника названий специальных файлов устройствв файловой системе UNIXНазвания специальных файлов устройств в большой степени зависят отконкретной версии UNIX. Тем не менее в этих названиях присутствуетобщая логика, позволяющая даже в незнакомой системе определить, какиефайлы отвечают за конкретные устройства.
Например, имена файлов дос!тупа к дисковым устройствам обычно содержат указание на тип диска,номер контроллера, логический номер устройства, раздел диска и т. д. Поназванию также легко определить, какой вид доступа предоставляет дан!ный интерфейс (блочный или символьный).В качестве примера рассмотрим специальный файл устройства для доступак разделу диска в операционной системе Solaris:/dev/dsk/cOt4dOs2Данный файл предоставляет блочный интерфейс, а соответствующий емусимвольный (или необработанный) файл имеет имя:/dev/rdsk/cOt4dOs2Файлы доступа к дисковым устройствам располагаются в специальныхподкаталогах — /dev/dsk (для блочных устройств) и /dev/rdsk (для сим!вольных устройств).
Такая структура хранения специальных файлов харак!терна для систем UNIX версии System V.Имя файла, характерное для систем версии SVR4, можно представить вобщем виде:snгде k — номер контроллера, / — номер устройства (для устройств SCSI этоидентификатор устройства ID), m — номер раздела,— логический но!мер устройства (LUN) SCSI.Таким образом файл устройства /dev/rdsk/cOt4dOs2 обеспечивает доступ кпервому разделу (нумерация разделов начинается с 0) диска сLUN=2 первого контроллера.Такой формат имен файлов в версии SVR4 применяется для всех дисковыхустройств и накопителей на магнитной ленте.
Иногда для этих стандарт!ных имен в файловой системе имеются символические связи с более про!стыми названиями. Например, в Solaris имя /dev/sdOa может использовать!ся вместо /dev/dsk/cOt3dOs, также обеспечивая доступ к устройству:root root12 Oct 3117:48/dev/sdOaВ SCO UNIX имеются специальные файлы с более простыми именами/dev/root, /dev/usr и т.
п, которые предоставляют доступ к разделам дискас такими же именами (root, usr).Ⱦɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.comГлава 1.50в операционной системе UNIXБолее простая мнемоника обнаруживается в именах специальных файловдругих устройств. Так, например, параллельный порт в большинстве сис!тем имеет имягде п — номер порта (О, 1 и т.
д.). Терминальныелинии, подключенные к последовательным портам компьютера обознача!ются как /dev/ttynn, гдеявляется идентификатором линии. В табл. 1.6приведены примеры других специальных файлов устройств.Таблица 1.6. Имена некоторых специальных файлов устройствОбщий вид имениПример/dev/rstn/dev/cdn/dev/rst1/dev/cdO/dev/ttypn/dev/ptypn/dev/ptyp5/dev/zeroОписаниедоступ ккоторому обеспечивается черезфайлНакопитель на магнитной лентеНакопитель на магнитной ленте в режимебез перемотки назад по окончании работыSCSI%накопитель на магнитной лентеCD%ROMПсевдотерминал (подчиненный)Псевдотерминал (мастер)Системная консольСиноним терминальной линии управляю%щего терминала для данного процессаФизическая оперативная памятьВиртуальная память ядраНулевое устройство — весь вывод на негоуничтожается, а при попытке ввода с этогоустройства возвращается 0 байтовНулевое устройство — весь вывод на негоуничтожается, а ввод приводит к получе%нию последовательности 0Пользователи системыПрежде чем вы сможете начать работу в UNIX, вы должны стать пользова!телем системы, т.
е. получить имя, пароль и ряд других атрибутов.С точки зрения системы, пользователь — не обязательно человек. Пользо!ватель является объектом, который обладает определенными правами, мо!жет запускать на выполнение программы и владеть файлами. В качествепользователей могут, например, выступать удаленные компьютеры илигруппы пользователей с одинаковыми правами и функциями.