скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Администрирование локальных сетей

  • id - это ранее полученный дескриптор сегмента
  • addr - желаемый процессом виртуальный адрес, который должен соответствовать началу сегмента в виртуальной памяти
  • virtaddr - реальный виртуальный адрес начала сегмента не обязательно совпадает со значением прямого параметра addr
  • если addr == 0, ядро выбирает наиболее удобный виртуальный адрес начала сегмента

shmdt(addr);

  • addr - виртуальный адрес начала сегмента в виртуальной памяти, ранее полученный от системного вызова shmat

shmctl(id, cmd, shsstatbuf);

  • cmd идентифицирует требуемое конкретное действие
  • важна функция уничтожения сегмента разделяемой памяти

Семафоры

Обобщение классического механизма семафоров общего вида Диекстры

Целесообразность обобщения сомнительна

Обычно использовался облегченный вариант двоичных семафоров

Известен алгоритм реализации семафоров общего вида на основе двоичных

Семафор в ОС UNIX:

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

Три системных вызова:

  • semget для создания и получения доступа к набору семафоров
  • semop для манипулирования значениями семафоров
  • semctl для выполнения управляющих операций над набором семафоров

id = semget(key, count, flag);

  • key, flag и id - обычный смысл
  • count - число семафоров в наборе семафоров, обладающих одним и тем же ключом
  • индивидуальный семафор идентифицируется дескриптором набора семафоров и номером семафора в наборе
  • если набор семафоров с указанным ключом уже существует, то число семафоров в группе можно узнать с помощью системного вызова semctl

oldval = semop(id, oplist, count);

  • id - дескриптор группы семафоров
  • oplist - массив описателей операций над семафорами группы
  • count - размер этого массива
  • возвращается значение последнего обработанного семафора

Элемент массива oplist:

  • номер семафора в указанном наборе семафоров
  • операция
  • флаги

Если проверка прав доступа проходит нормально

  • указанные в массиве oplist номера семафоров не выходят за пределы общего размера набора семафоров
  • для каждого элемента массива oplist значение семафора изменяется в соответствии со значением поля "операция"

Значение поля операции положительно

  • значение семафора увеличивается на единицу
  • все процессы, ожидающие увеличения значения семафора, активизируются (пробуждаются)

Значение поля операции равно нулю

  • если значение семафора равно нулю, выбирается следующий элемент массива oplist
  • иначе число процессов, ожидающих нулевого значения семафора, увеличивается на единицу
  • обратившийся процесс переводится в состояние ожидания (усыпляется)

Значение поля операции отрицательно

(1) его абсолютное значение меньше или равно значению семафора

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

(2) значение семафора меньше абсолютной величины поля операции

  • число процессов, ожидающих увеличения значения семафора увеличивается на единицу
  • текущий процесс откладывается

Стремление добиться возможности избегать тупиковых ситуаций

Системный вызов semop выполняется как атомарная операция

Флаг IPC_NOWAIT заставляет ядро ОС UNIX не блокировать текущий процесс

  • лишь сообщать в ответных параметрах о возникновении ситуации, приведшей бы к блокированию процесса

semctl(id, number, cmd, arg);

  • id - это дескриптор группы семафоров
  • number - номер семафора в группе
  • cmd - код операции
  • arg - указатель на структуру, содержимое которой интерпретируется в зависимости от операции

Можно уничтожить индивидуальный семафор в указанной группе

Очереди сообщений

Четыре системных вызова:

  • msgget для образования новой очереди сообщений или получения дескриптора существующей очереди
  • msgsnd для посылки сообщения (его постановки в очередь сообщений)
  • msgrcv для приема сообщения (выборки сообщения из очереди)
  • msgctl для выполнения управляющих действий

msgqid = msgget(key, flag);

Сообщения хранятся в виде связного списка

Декскриптор очереди сообщений - индекс в массиве заголовков очередей сообщений

В заголовке очереди хранятся:

  • указатели на первое и последнее сообщение в данной очереди
  • число сообщений
  • общий размер в байтах сообщений, находящихся в очереди
  • идентификаторы процессов, которые последними послали или приняли сообщение через данную очередь
  • временные метки последних выполненных операций msgsnd, msgrsv и msgctl

msgsnd(msgqid, msg, count, flag);

  • msg - это указатель на структуру, содержащую целочисленный тип сообщения и символьный массив

·     count - задает размер сообщения в байтах

  • flag определяет действия ядра при выходе за пределы допустимых размеров внутренней буферной памяти

Условия успешной постановки сообщения в очередь:

  • процесс должен иметь право на запись в очередь
  • длина сообщения не должна превосходить верхний предел
  • общая длина сообщений не должна превосходить установленного предела
  • тип сообщения должен быть положительным целым числом

Процесс продолжает свое выполнение

Ядро активизирует (пробуждает) все процессы, ожидающие поступления сообщений из очереди

Превышается верхний предел суммарной длины сообщений

  • обратившийся процесс откладывается до разгрузки очереди
  • но есть флаг IPC_NOWAIT (как для семафоров)

count = msgrcv(id, msg, maxcount, type, flag);

  • msg - указатель на структуру данных в адресном пространстве пользователя для размещения принятого сообщения
  • maxcount - размер области данных (массива байтов) в структуре msg
  • type специфицирует тип сообщения, которое желательно принять
  • flag указывает ядру, что следует предпринять, если в указанной очереди сообщений отсутствует сообщение с указанным типом
  • count - реальное число байтов, переданных пользователю

Значением параметра type является нуль

  • выбирается первое сообщение
  • копируется в заданную пользовательскую структуру данных
  • процессы, отложенные по причине переполнения очереди сообщений, активизируются
  • если значение параметра maxcount оказывается меньше реального размера сообщения, ядро не удаляет сообщение из очереди и возвращает код ошибки
  • если задан флаг MSG_NOERROR, то выборка сообщения производится, и в буфер пользователя переписываются первые maxcount байтов сообщения

Значение type есть положительное целое число

  • выбирается первое сообщение с таким же типом

Значение type есть отрицательное целое число

  • выбирается первое сообщение, значение типа которого меньше или равно абсолютному значению type

В очереди отсутствуют сообщения, соответствующие спецификации type

  • процесс откладывается до появления в очереди требуемого сообщения
  • но есть флаг IPC_NOWAIT

msgctl(id, cmd, mstatbuf);

  • опрос состояния описателя очереди сообщений
  • изменение его состояния
  • уничтожение очереди сообщений

4.1   Старт системы

4.2   run levels

4.3   Остановка системы

4.4   Конфигурирование ядра системы

4.5   Инсталирование периферии на примере ленточного накопителя.

4.6   Инсталирование софта

4.7   Управление процессами

7.   Старт системы.

В самом начале, после включения питания выполяется последовательность команд записанная в Boot ROM машины. Boot ROM выполняет общую диагностику и проводит инициализацию устройств необходимую для дальнейшей загрузки операционной системы. В задачи Boot ROM кода входит:

·     Определение типа процессора

·     Инициализация и тест таймеров

·     Нахождение и инициализация видео консоли

·     Загрузка конфигурации с EEPROM

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

·     Распечатка на консоли copyright и других баннеров, типа процессора EEPROM статуса, количества памяти

·     Тестирование памяти  и распечатка общего количества памяти и найденных в результате теста ошибок

·     Тест и инициализация системы прямого доступа к памяти (DMA)

·     Поиск и распечатка информации о встроенных интерфейсных платах

·     Тест и инициализация SCSI интерфеса и интерфейса локольной сети

·     Предложение о выборе вариантов загрузки


При этом возможен вариант запгрузки как с SCSI устройства (диск, CDROM, лента, …) так и через локальную сеть. Загрузочный диск должен быть предварительно сконфигурирован. Так как обьем Boot ROM не может быть большим, в его задачи входит загрузка вторичного загрузчика операционной системы. Для этого загрузочный диск должен быть инициализирован определенным образом. Помимо стандартной файловой системы он еще должен содержать так называемы LIF (Logical Interchange Fomat) раздел в котором записан вторичный загрузчик и ряд необходимых утилит. Посмотреть состав LIF блока можно с помощью команды lifls принимающей в качестве аргумента имя блочного устройства диска:

                lifls /dev/dsk/c0t5d0

                ISL            AUTO                 HPUX                    LABEL

Для создания LIF области используется команда lifinit (инициализируються только диски которые не являются подмонтированными файловыми системами). Для записи в или копирования из LIF области используется утилита lifcp .Например, команда:

            lifcp /dev/dsk/c0t5d0:ISL  a

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

                После завершения всех тестов и выполнения поиска возможных устройств загрузки в и в случае если параметр SECURE записанный  в EEPROM равен OFF возможен вход в меню загрузки boot ROM при нажатии на клавишу ESC. Если SECURE=OFF и процесс загрузки не прерывался нажатием ESC а также EEPROM параметр AUTOBOOT=ON, boot ROM попытается загрузить из LIF области вторичный загрузчик ISL. Устройство загрузки при этом выбирается из EEPROM параметра PRIMARY BOOT PATH. В случае неудачной загрузки, boot ROM будет грузить ISL из устройства имя которого записано в EEPROM параметре ALTERNATE BOOT PATH. Если не удается загрузиться и от туда, система выйдет в boot ROM меню. Для поиска всех возможных устройств загрузки boot ROM имеет команду SEARCH. Для загрузки с какогото конкретного устройства найденого командой SEARCH используется команда BOOT:

                boot [device_path] [isl]

запущеная без аргументов она приводит к загрузке системы из устройства адрес которого содержится в PRIMARY BOOT PATH. Если указан аргумент isl то система загрузит вторичный загрузчик ISL в интерактивный режим. Основные случаи когда необходима загрузка не с основного устройства перечислены ниже:

·     На основном диске нет загрузочного ядра

·     LIF область диска повреждена

·     Корневая файловая система ОЧЕНЬ сильно запорчена

Примечание: В том случае если SECURE=ON (безопасный режим) нет никакой возможности попасть в boot ROM меню за исключением как физически отключить устройства первичной и вторичной загрузки.

                Если был выбран интерактивный режим загрузки ISL то последний после загрузки, не станет автоматически загружать ядро системы а перейдет в диалоговый режим. В этом режиме есть ряд команд  влияющих на загрузку системы. Например по команде 700SUPPORT возможна загрузка с CDROM специальной версии ядра системы предназначеной для восстановления системы в том случае если ядро основной системы не загружается. Список утилит которые доступны для запуска ISL можно увидеть по команде LS. Основная утилита – HPUX, предназначенная для загрузки ядра системы. Для того чтоб посмоьреть содержимое директории /stand на устройстве загрузки по умолчанию нужно воспользоваться командой:

                ISL> HPUX ll disk (;0) /stand/

При загрузке ядра  возможно указание файла ядра отличного от того что используется по умолчанию (/stand/vmunix) для загрузки а также запустить ядро с определенными параметрами. Например команда:

                ISL> hpux /stand/vmunix.prev

загружает ядро с именем /stand/vmunix.prev (эту команду используют в тех случаях когда вновь собранное ядро не хочет по какимто причинам запускаться и нужно загрузить старое ядро).

А команда:

            ISL> hpux –is /stand/vmunix

загружает ядро с именем /stand/vmunix в однопользовательский режим. Ситуации прикоторых необходима загрузка в однопользовательский режим:

·     забыт пароль администратора и его нужно изменить

·     поврежден файл /etc/inittab

·     какой то из загрузочных скриптов по каким то причинам  зависает

 

Сразу же после получения управления ядро системы выполняет две задачи:

·     Находит и монтирует корневую файловую систему

·     Запускает процесс init и если ядру не было указано дополнительных аргументов относительно run-level то init переводит систему на default run-level (обычно это многопорльзовательский режим работы)

8.   Run-levels.

После успешного монтирования корневой файловой системы ядро запускает процесс init. Отличительной особенностью этого процесса является то что его создает непосредственно ядро,он имеет PID=1 и не имеет родительского процесса, в отличии от остальных процессов получающихся в следствие системного вызова fork(). Конфигурациооный файл программы init называется /etc/inittab. Приведем его формат:

            Id:run-levels:action:process

где

                id                             От одно до четырехбуквенный  индекс который идентифицирует

строку файла inittab.

                run-level                определяет run-level.в одной строке может быть несколько run-levels.

run-levels определяются как цифры от 0 до 6. Когда boot init пытается измнить run-level, все процессы которые не имеют run-level поля равному изменяемому run-level получают предупреждающий сигнал (SIGTERM) и те которые не завершили работу по истечению 20-ти секундного интервала получат сигнал  (SIGKILL).Если run level не определен, то это подразумевает все run levels, с 0 до 6.

                                                Это поле также может принимать три других значения “a”, “b” и “c”.

Строки имеющие эти значения в поле run-level выполняются только

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.