“Заблудшие" процессы
Иногда в системе появляются процессы, которыми по той или иной причине должен заниматься администратор.
Наиболее распространенная разновидность проблематичных процессов - зависшие. Зависший процесс не выполняется надлежащим образом, не отвечает своему управляющему терминалу и просто "висит", ничего не делая - отсюда название. Более неприятный тип "заблудшего" процесса - неуправляемый процесс. Они бывают двух видов: пользовательские, потребляющие слишком много системных ресурсов, и системные, которые внезапно впадают в буйство и крушат все на своем пути. Неуправляемый процесс первого вида - обыкновенный нахал, не обязательно работающий неправильно.
Контрольные вопросы:
Каковы функции ядра UNIX?
Какие существуют режимы выполнения процесса?
Что такое образ программы?
Какие функции у процесса Init?
Какие основные состояния у процесса?
Как создается новый процесс?
Что такое интерактивный процесс?
Какие функции у командной оболочки?
Лекция 17
ФАЙЛОВАЯ СИСТЕМА.
Файловая система - структура, с помощью которой ядро ОС организует и представляет пользователям ресурсы памяти системы. Ресурсы памяти включают память на различного рода носителях информации (жесткие диски, гибкие диски, магнитные ленты и CD-ROM). Ядро объединяет эти ресурсы в единую иерархическую структуру, которая начинается в каталоге "/" и разветвляется, охватывая произвольное число подкаталогов. Каталог самого верхнего уровня называется корневым. Цепочка имен каталогов, через которые необходимо пройти для доступа к заданному файлу вместе с именем этого файла называется путевым именем. Путевые имена могут быть абсолютными или относительными. Относительные имена интерпретируются, начиная с текущего каталога.
Файловое дерево ОС UNIX может быть произвольного размера. Однако существуют определенные ограничения: имя каталога должно состоять не более чем из 256 символов, а в определении одного пути не должно быть более 1023 символов. Чтобы получить доступ к файлу, абсолютное путевое имя которого не удовлетворяет этим требованиям, необходимо перейти в промежуточный каталог, а затем воспользоваться относительным путевым именем.
Файлы и каталоги UNIX хранятся и считываются с помощью внутренних номеров, которые называются индексными дескрипторами. UNIX отображает имена файлов и каталогов в их индексные дескрипторы (отслеживая таким образом соответствие имен файлов и каталогов). UNIX знает также, как конкретные индексные дескрипторы соотносятся с теми или иными блоками и дорожками на диске. Файловая система в наиболее упрощенной форме это собрание данных. Каждая содержащая Unix машина имеет минимум одну файловую систему на жестком диске. Эта система является корневой и загружается при включении компьютера. Она содержит в себе ядро Unix (/unix) и остается активной в течение всего времени работы компьютера.
Если на машине имеются дополнительные файловые системы, они могут быть смонтированы (mounted) и размонтированы (unmounted) по желанию. Ключевые моменты, которые необходимо знать и помнить, следующие:
1. Корневая файловая система никогда не может быть
размонтирована.
2. Файловая система не может быть размонтирована пока ее используют.
3. Поврежденная система не может монтироваться.
Когда инсталлируется Unix, решается вопрос о том, какой тип файловой системы требуется использовать. Его можно выбрать из некоторого количества типов. Наиболее популярные из них описаны далее в этой главе. Все они содержат три неизменных компонента:
1. superblock. Содержит информацию о файловой системе и ее физических данных.
2. inode list. Список индексных дескрипторов.
3. data blocks. Блоки данных.
Для каждого элемента, входящего в состав каталога, соответствующий индексный дескриптор хранит информацию о расположении. Функция индексного дескриптора как указателя — определять, где хранится информация среди блоков данных. Индексные дескрипторы включают девять компонентов:
1. Уникальный номер индексного дескриптора, который увеличивается всякий раз, когда создается новый файл или каталог. Исторически сложилось, что номера 0 и 1 отводятся для специальных целей, а корневой индексный дескриптор начинается с цифры 2.
Номер индексного дескриптора должен быть уникальным для физических данных. Эта уникальность традиционно обеспечивается увеличением номера с появлением каждого нового элемента. Вследствие этого данные, появившиеся в системе ранее, имеют меньшие номера inode.
2. Двузначный номер, описывающий тип элемента:
— именованный канал.
— специальный файл символьного устройства. 04 — каталог.
06 — специальный файл блочного устройства.
10 — обычный файл.
12 — символическая связь.
14 — гнездо (socket).
3. Полномочия. Представляют собой четыре цифры, первая из которых показывает, установлен ли специальный режим (1=бит задержки, 2=SGID, 4=SUID), и остальные три разрешают/запрещают операции Чтение, Запись и Выполнение.
4.Текущий физический размер файла.
5. Количество связей элемента.
6. Владелец файла (часто в числовой форме — информация, возвращаемая командой id).
7. Группа, владеющая файлом (тоже часто в числовом виде).
8.Времена создания, модификации и доступа. Эта информация отражается в листинге каталога, по
ней команда find осуществляет поиск в соответствии с заданным критерием.
9.Текущий физический адрес нахождения файла.
Эти девять пунктов составляют индексный дескриптор, но в зависимости от производителя Unix могут существовать еще некоторые компоненты. Чтобы увидеть поставленную дилером комплектацию, следует посмотреть файл: /usr/include/sys/inode.h.
Жестко связанные файлы (hard-linked files) используют один номер индексного дескриптора и не могут пересекаться в разных файловых системах, потому что каждая файловая система имеет свой собственный список индексных дескрипторов. Поскольку нумерация начинается с двух и увеличивается до уникального номера индексного дескриптора, возможно, чтобы одно число было использовано в двух различных файловых системах и указывало на два различных файла.
В то же время символические связи (файлы связей) — это не больше чем конкретные указатели с одного места на другое. Они имеют уникальные номера индексных дескрипторов на и от себя, которые могут совпадать в разных файловых системах. Символическая связь в корневой файловой системе может легко указывать на обычный файл в файловой системе базы данных.
Когда вводится имя файла, то UNIX выполняет следующую последовательность шагов:
для получения соответствующей таблицы использует маршрут;
находит введенное имя в этой таблице;
отмечает соответствующий индексный дескриптор,
использует индексный дескриптор для поиска файла на диске;
5. в соответствии с выполняемой командой работает с данными в этом файле (чтение, запись и т.д.).
Файлы UNIX называются простыми или плоскими файлами. Их можно рассматривать как простые байтовые или символьные потоки без какого-либо внутреннего формата или структуры. При работе с ними эти файлы могут свободно увеличиваться или сокращаться в размере. UNIX отслеживает размер файла в своих таблицах. Когда программа пытается читать данные после конца файла, UNIX генерирует сообщение EOF (конец файла), завершая чтение.
Другие ОС имеют развитый набор форматов, определяющих специальные заголовки поля для различных файлов. Этих строгих правил должны придерживаться все пользовательские программы.
В UNIX структуру байтовой стройки, находящейся в плоском файле этой ОС, определяют сами программисты. При редактировании файлов, можно увидеть обычные коды форматирования, такие как табуляции и возвраты каретки, включенные в файл программой-редактором аналогично обычным символам. Именно редактор, а не UNIX, интерпретирует их и позволяет получить превосходно отформатированные документы.
Файловое дерево формируется из отдельных частей, называемых файловыми системами. Каждая файловая система состоит из одного каталога, его подкаталогов и файлов. Файловые системы прикрепляются к файловому дереву в определенной точке.
Термин "файловая система" по сути, имеет два значения. С одной стороны, это составная часть файлового дерева, а с другой - все файловое дерево и алгоритмы, с помощью которых ОС UNIX управляет им. Как правило, значение термина становится ясным из контекста.
Корневая файловая система включает в себя коневой каталог и минимальный набор файлов и подкаталогов.
В ОС UNIX существует восемь типов файлов:
обычные файлы;
каталоги;
байт-ориентированные файлы устройств;
блок-ориентированные файлы устройств;
доменные гнезда UNIX;
именованные каналы (FIFO);
жесткие ссылки;
символические ссылки.
Обычный файл — просто последовательность байтов. Это наиболее широко распространенный тип файла. Обычный файл может содержать выполняемую программу, главу книги, графическое изображение, текст программы. В ОС UNIX не предусмотрено структурирование содержимого файла на уровне ядра, однако, поддерживается и последовательный, и прямой режимы доступа.
Байт-ориентированные и блок ориентированные файлы устройств. Файлы устройств позволяют UNIX-программам взаимодействовать с аппаратными средствами и периферийными устройствами системы. При конфигурировании ядра к нему "привязываются" те модули, которые "знают", как взаимодействовать с каждым из устройств системы. За всю
"грязную" работу по управлению конкретным устройством отвечает специальная программа, называемая драйвером устройства.
Драйверы устройств образуют стандартный коммуникационный интерфейс, который выглядит как обычный файл. Когда ядро получает запрос к байт-ориентированному или блок-ориентированному файлу устройства, оно просто передает этот запрос соответствующему драйверу устройства.
Связь между файлами устройств и соответствующими устройствами устанавливается посредством так называемых старшего и младшего номеров устройства, значения которых хранятся в индексном дескрипторе файла устройства. Старший номер устройства обозначает драйвер, с которым связан данный файл. Младший номер устройства указывает на то, к какому конкретно устройству данного типа надо обращаться. Файл устройства - это своеобразный интерфейс между пользователем и драйвером.
Чтение из блок ориентированного устройства и запись в него осуществляется по одному блоку (группа байтов, обычно кратная 512) за раз, тогда как чтение из байт-ориентированного устройства и запись в него может производиться по одному байту. В некоторых устройствах предусмотрен доступ, как через блок-ориентированные, так и через байт-ориентированные файлы.
Внутри ядра адреса стандартных функций для каждого драйвера хранятся в таблице переходов. Таких таблиц две: одна для байт-ориентированных устройств, другая - для блок-ориентированных устройств. Старшие номера устройств являются индексами таблиц переходов.
Когда программа выполняет операцию над файлом устройства, ядро автоматически перехватывает ссылку, ищет в таблице переходов соответствующее имя функции и передает ей управление. Для выполнения необычных операций, не имеющих прямых аналогов в модели файловой системы (изъятие гибкого диска), используется системный вызов ioctl, который передает команду из области памяти, выделенной для процедур пользователя, непосредственно в драйвер.
Доменные гнезда (sockets) UNIX (BSD) - это соединения между процессами, которые позволяют им взаимодействовать, не подвергаясь влиянию других процессов. В ОС UNIX поддерживается несколько видов гнезд, использование которых в большинстве своем предполагает наличие сети. Доменные гнезда UNIX локальны для конкретного host-компьютера. Обращение к ним осуществляется через объект файловой системы, а не через сетевой порт
Несмотря на то, что другие процессы "видят" файлы гнезд как элементы каталога, процессы, не участвующие в соединении, не могут осуществлять над файлами гнезд операции чтения и записи. Доменные гнезда UNIX создаются системным вызовом socket.
Именованные каналы (АТТ) - как и доменные гнезда (UNIX) обеспечивают взаимодействие двух несвязанных процессов, выполняемых на одной машине.
Фрагмент находящихся в файле простых данных "знает" только свой уникальный индексный дескриптор. Однако нельзя определить имя файла в UNIX путем чтения простых данных. Для определения имени нужно обратиться к таблицам, где UNIX хранит список индексных дескрипторов и имен. Каждое имя имеет уникальный индексный дескриптор, однако, несколько различных имен могут иметь одно и то же значение индексного дескриптора. В итоге, если два различных имени файла совместно используют одно и то же значение индексного дескриптора, то они представляют один и тот же файл.
Жесткие ссылки. Ссылка - это скорее не тип файла, а его дополнительное имя. У каждого файла имеется как минимум одна ссылка. Как правило, это имя, под которым он был создан. Добавлением ссылки создается псевдоним файла.
Ссылку невозможно отличить от имени файла, к которому она присоединена: в ОС UNIX они идентичны. UNIX подсчитывает количество ссылок, указывающих на каждый файл, и не освобождает блоки данных до тех пор, пока не удалит его последнюю ссылку. Так как ссылка непосредственно указывает на файл, жесткие ссылки можно задавать только в пределах одной файловой системы.
Символические ссылки (косвенные ссылки) обеспечивают возможность вместо путевого имени файла указывать имя ссылки. Индексный дескриптор ссылки содержит путевое имя файла, на который делается ссылка. Создание символических ссылок и работа с ними осуществляется ядром. Различие между жесткими и символическими ссылками состоит в том, что жесткая ссылка - прямая (то есть указывает на номер индексного дескриптора), тогда как символическая представляет собой ссылку по имени. Файл, на который указывает ссылка, и сама ссылка физически представляют собой разные объекты файловой системы.
Все файлы в файловой системе характеризуются набором атрибутов. Важнейшие из них - атрибуты принадлежности файлов и атрибуты доступа к ним.
Атрибутов принадлежности файла - три. Во-первых, каждый файл имеет своего владельца (owner). Это, как правило - пользователь, создавший его или скопировавший. Во-вторых, файл принадлежит группе пользователей (group) - причем не обязательно к одной из тех, в которые входит его владелец. И, наконец, все прочие пользователи (other), т. е. не являющиеся ни хозяином файла, ни членами группы, к которой файл приписан, также имеют некоторое отношение к данному файлу (и, соответственно, могут иметь некоторые права на него). Атрибутов доступа - также три: право на чтение (read), право на изменение (write) и право на исполнение (execute).
Наиболее важно различие в атрибутах доступа к обычным (regular) файлам и каталогам (directory). Так, право чтения обычного файла означает возможность просмотра его с помощью команд типа cat, more, less, текстовых редакторов или специализированных прикладных пакетов. Кроме того, обладатель права на чтение может скопировать файл в тот каталог, где он наделен правами записи (изменения). Право на изменение позволяет изменить содержание файла, но не удалить, переместить или переименовать его - для этих операций требуется право изменения не файла, а каталога, в который он входит. В то же время отсутствие права на изменение данного файла не мешает его копированию - ведь при этом содержание исходного файла не претерпевает никаких изменений, т. к. создается новый файл, наследующий атрибуты не источника, а пользователя, запустившего процесс копирования. Право на исполнение имеет смысл только для файлов исполняемых, т.е. откомпилированных бинарных программ и сценариев
оболочки.
В отношении каталогов смысл атрибутов доступа иной. Право на чтение каталога означает возможность вывода его содержания (например, командой ls имя_каталога), а также копирования каталога (в том числе и со всем его содержимым, если права доступа к последнему тому не противоречат). Однако права чтения для выполнения этих действий мало - необходимо еще право на исполнение. Право на запись для каталога - это возможность изменять его содержимое, т.е. записывать в него файлы или удалять их. При этом в последнем случае отнюдь не обязательно иметь права доступа на изменение удаляемого файла - ведь его содержимое не затрагивается, изменяется только содержимое каталога.
Право на исполнение в отношении каталога означает возможность перехода в него (командой cd имя_каталога) и последующего просмотра содержимого командой ls (при наличии права на чтение). Право исполнения и право чтения для каталога тесно сопряжены друг с другом - возможность перехода в каталог дает мало радости при отсутствии права его просмотреть. Поэтому следует предоставлять для каталога или оба права, или ни одного. Но иногда это может быть использовано для разграничения доступа.
И атрибуты доступа, и атрибуты принадлежности файла не являются неизменными. Владелец файла может легко сменить все права на доступ файла для самого себя, группы и прочих. Может он и назначить принадлежность файла другой группе, хотя и не любой, а только той, членом которой он сам является. Однако изменить владельца файла (т.е. назначить владельцем файла другого пользователя) он не имеет права. Это - прерогатива исключительно администратора, который располагает полномочиями изменить для файла все атрибуты доступа и принадлежности (как, впрочем, и почти все прочие атрибуты).
Файлы в UNIX организованы в виде файловых систем. Это понимается в трех различных значениях:
как часть ядра, которая управляет файлами - в этом смысле говорят о файловой системе (или подсистеме) ядра, наряду с системами (подсистемами) управления процессами и ввода/вывода;
как физический способ организации хранения информации на
диске (или ином накопителе) - при этом речь может идти о файловой системе FFS (Fast File System - файловая система FreeBSD, ext2fs (файловая система Linux), FAT16/FAT32 (файловая система DOS/Windows) и т. д.;
как логическая иерархия файлов и каталогов, в которую они организованы.
Структура каталогов в UNIX-системе имеет иерархическую (древовидную) организацию, в основании которой лежит корневой каталог. В качестве подкаталогов его выступают:
/bin - каталог для исполняемых (иначе называемых двоичными, или бинарными, binary) файлов общего назначения; здесь помещаются оболочки командной строки, общие команды управления файлами и их архивации, традиционные текстовые редакторы типа vi и т.д.; именно каталог /bin в первую очередь просматривается на предмет поиска введенной с клавиатуры команды;
/boot - содержит файлы, отвечающие за загрузку системы;
/cdrom - по умолчанию это точка для монтирования файловой системы соответствующего носителя;
/dev - каталог для файлов устройств;
/dist - каталог, в который монтируется дистрибутивный CD-ROM при вызове программы sysinstall (и только в этом случае - обычная точка монтирования CD-ROM, как уже говорилось, - /cdrom);
/etc - каталог для конфигурационных файлов общего пользования;
/home - включает в себя домашние каталоги пользователей со всеми их программами, личными конфигурационными файлами (имеющими в сеансе данного пользователя предпочтение перед общими файлами конфигурации) и данными;
/mnt - каталог для монтирования сменных накопителей (вроде дискет, Zip-дисков и т. д.) или временно подключаемых файловых систем (например, FAT-раздела диска);
/modules - каталог, в который помещаются загружаемые модули ядра, собираемые при каждой перекомпиляции последнего; при этом модули, собранные при предыдущей компиляции, перемещаются в каталог /modules.old;
/ргос - виртуальная файловая система для чтения информации о процессах;
/root - аналог каталога $НОМЕ для суперпользователя; по умолчанию закрыт для просмотра всеми, кроме администратора;
/sbin - содержит бинарные исполняемые файлы, используемые для системного администрирования;
/stand - близкий по назначению каталог, файлы из которого, однако, доступны для исполнения, только будучи вызваны в явном виде, с указанием полного пути;
/sys - символическая ссылка на каталог /usr/src/sys, содержащий исходные тексты ядра системы;
/tmp - включает в себя всякого рода временные файлы - в частности, те, которые образуются при перекомпиляции ядра или полной пересборке системы;
/usr - каталог для прикладных пользовательских программ со всеми их компонентами - исполняемыми, конфигурационными и разделяемыми файлами (/usr/bin, /usr/etc и /usr/share соответственно), библиотеками (/usr/lib) и т. д.;
/usr/local - подкаталог, имеющий самостоятельное значение; именно него устанавливается все дополнительное программное обеспечение из коллекции пакетов или системы портов, включая их исполняемые файлы (/usr/local/bin), документацию (/usr/local/doc, /user/local/info, /usr/local/man) библиотеки (/usr/local/lib), разделяемые файлы (/user/local/share);
/var - каталог для часто меняющихся файлов: различных системных журналов, почтовых и принтерных спуллингов и т.д.; кроме этого, в нем расположены базы данных устанавливаемых пакетов.
Каталоги /tmp, /usr, /var (а иногда и /usr/local) часто выделяются в самостоятельные файловые системы, расположенные в отдельных дисковых разделах (partitions). Как отдельную файловую систему имеет смысл располагать и каталог /home.
Под монтированием понимается включение файловой системы дискового раздела (или иного носителя) в структуру каталогов корневой
файловой системы.
Право монтировать файловую систему предоставляется как правило правами привилегированного пользователя.
Контрольные вопросы:
Что такое индексные дескрипторы?
Что такое superblock?
Что такое inode list?
Какие существуют типы файлов?
Какие функции выполняют sockets?
Какие атрибуты принадлежности и доступа у файлов?
Что такое жесткая и символическая ссылки?
Можно ли размонтировать корневую файловую систему?
1
Если - длина сообщения, то оно занимает канал на время плюс время передачи по каналу(скорость света). Таким образом и - это среднее время обслуживания сообщения каналом.
в (2) - это здесь, так как и то, и другое – это среднее время обслуживания.
- Структура сети и коммутация пакетов.
- Логическая и программная структура сети.
- Iso(Intrnational Standarts Organization), мос(Межднародная Организация Стандартов).
- Проектирование сетей эвм.
- Задача выбора пропускных способностей.
- Задача распределения потоков.
- Задача выбора пропускных способностей и распределения потоков (впс и рп).
- Выбор топологии сети.
- Адресация, маршрутизация пакетов и управление потоками данных.
- Протоколы и интерфейсы вычислительной сети.
- Протокол hdlc (High Data Link Connection).
- Транспортная сеть.
- Протокол х.25/3.
- Типы и форматы пакетов протокола х.25
- Стек протоколов tcp/ip.
- Формат ip-заголовка.
- Сегменты тср.
- Протокол udp ( user datagram protocol)
- Коммутация пакетов при передаче данных через спутник.
- Опорные точки.
- Передача управляющих сигналов.
- Основные методы доступа к среде.
- Случайный доступ.
- Локальная сеть Token Ring (ieee 802.5)
- Форматы пакетов Token Ring.
- Свойства объекта.
- Допустимые права на файл.
- Допустимые права на объект.
- Опекунство.
- Управление разделами и репликация.
- Функции операционной системы.
- Аппаратная среда.
- Распределение памяти.
- “Заблудшие" процессы