Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Миргородская 7сессия / Операционные системы / %D0%9E%D0%A1_%D0%A1%D0%93%D0%A2%D0%A3%20v5

.pdf
Скачиваний:
86
Добавлен:
12.02.2015
Размер:
4.09 Mб
Скачать

программу Запуска и передает ей управление. Стандартный начальный за-

грузчик QNX может быть заменен любым другим. Среди таких замен могут быть полнофункциональные продукты типа U-Boot или RedBoot, которые через канал TFTP-клиента передают новый образ загрузки и записывают его во флеш-память. Обычно работа начального загрузчика продолжается не ме-

нее 6 мс до того, как начнется загрузка в память образа ОС. Фактическое время зависит от архитектуры ЦПУ, от того, что требуется материнской пла-

те для определения минимальной конфигурации и что выбранный начальный загрузчик делает перед началом передачи управления ОС. После включения питания ЭВМ, на которой инсталлирована ОСРВ QNX, в зависимости от то-

го, установлена QNX одна или совместно с другими ОС, сразу запускается процесс начальной нагрузки, либо мультизагрузчик сначала предлагает вы-

брать, какую ОС следует загружать. Если используется мультизагрузчик

QNX, то сообщение выглядит примерно так:

Press F1-F4 to select drive or select partition 1, 2, 3, 4? 2

Нажмите Fl — F4 для выбора дисковода или выберите раздел 1, 2, 3, 4? 2

Запуск (Startup). На этапе запуска происходит копирование об-

раза ОС из флеш-памяти в ОЗУ и запуск образа на выполнение. Эта фаза ко-

пирования составляет самую длительную часть процесса начальной загрузки ОСРВ QNX Neutrino. То есть, системному архитектору есть над чем порабо-

тать, чтобы обеспечить управление длительностью этой фазы, пусть даже косвенное. В ОСРВ QNX Neutrino файловая система на базе образа ОС (IFS, image file system) содержит как собственно образ ОС, так и программу Запус-

ка (которые начальный загрузчик копирует в ОЗУ). Образ ОС состоит из яд-

ра, сценария построения и любых других драйверов, приложений и бинарных кодов, которые необходимы системе. Поскольку вы можете управлять соста-

вом IFS, то и время выполнения данного этапа есть величина переменная. На рис. 1 она обозначена значением Х. Это время может составлять и 200 мс, и 2-3 с. В некоторых особых случаях, когда система имеет образ большого размера и не имеет никакой другой файловой системы, кроме IFS, этап За-

161

пуска может продолжаться дольше (до 10 и более секунд). В QNX обычно используются два загрузочных образа: основной образ помещается в файл

/.boot, а резервный — в файл / .altboot. Вторичный загрузчик startup предлага-

ет нажать клавишу "ESC" для загрузки резервного образа: Hit Esc for .altboot.

Если ничего не нажимать, то загружаться будет основной образ. Для добав-

ления, удаления или конфигурирования файлов, хранящихся в IFS можно от-

редактировать сценарий построения или использовать инструмент построи-

теля встраиваемых конфигураций в интегрированной среде разработки QNX

Momentics® IDE.

Ядро (Kernel). На этапе запуска ядра инициализируется блок управления памятью (MMU, memory management unit), создаются структуры для управления страницами, процессами и исключениями, а также разреша-

ется работа системы прерываний. После завершения этого этапа ядро стано-

вится полностью работоспособным и может начать загрузку и запуск процес-

сов пользователя из сценария построения.

Сценарий построения (build script). В сценарии определяется,

какие драйверы и приложения должны быть запущены и в какой последова-

тельности (/etc/system/ sysinit.). Поскольку ОСРВ QNX Neutrino является микроядерной ОС, то каждый драйвер, сервер или приложение запускаются в виде отдельного загружаемого процесса пользовательского уровня.

Такой подход имеет явные преимущества: вам не нужно ждать загруз-

ки и инициализации ядра и полного набора драйверов, прежде чем приложе-

ниям будет передано управление. При запущенном микроядре можно чере-

довать запуск драйверов и приложений, чтобы достичь максимально быстро-

го завершения этапа запуска системы.

162

3.8. Интерпретаторы команд и пакетные файлы в QNX

Командных интерпретаторов существует несколько. В QNX стандарт-

ным считается интерпретатор Korn Shell (ksh). Хотя, вы можете использовать и другие, такие как C-Shell (csh) или Bourn Vgain Shell (bash). Для систем с ограниченными ресурсами можно использовать Embedded Shell (esh) или Fat

Embedded Shell (fesh) [15].

Если регистрация пользователя в системе была выполнена с помощью командно-строковой утилиты login, то программа регистрации запустила входной Shell. Она определяет какой командный интерпретатор запускать на основе информации записаной в базе данных пользователей. По умолчанию в

систем есть только один пользователь "root" и его интерпретатор — ksh.

Пользователей, привыкших работать в Windows, обычно не вдохновля-

ет работа в командной строке. Командная строка в UNIX-подобных систе-

мах — весьма мощное средство управления системой. Некоторые наиболее

используемые команды приведены в табл. 10.

 

 

 

Основные команды QNX

Таблица 10

 

 

 

 

 

Что нужно сделать?

Команда

Что нужно сделать?

Команда

В каком каталоге находимся

pwd

Копировать файл

 

 

Просмотр содержимого каталога

ls

Копировать каталог

R

Перейти в другой каталог

cd

Удалить файл

rm

 

 

Создать пустой файл

touch

Удалить каталог

rmdir, rm –R

Создать каталог

mkdir

Просмотреть файл

cat

 

 

Информация о потоках

pidin

Переименовать файл

mv

 

 

Информация о процессах

ps

Удалить процесс

kill

 

 

Запуск текстового редактора

ped

Удалить процесс

slay

Запуск в режиме демона

ped &

Справка по команде

use

 

 

Запуск связи с целевой системой

qconn

Управление выводом

>,

>>, <, |

 

Большинство стандартных QNX-утилит содержат краткую информа-

цию об аргументах запуска утилиты. Для просмотра этой информации суще-

ствует команда use. Например, для просмотра информации по использова-

нию утилиты ls выполните такую команду: use ls.

163

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

чить командой set.

 

Таблица 11

 

 

Имя переменной

Что означает переменная

 

 

НОМЕ

Домашний каталог пользователя

PATH

Перечень каталогов для поиска запускаемых программ

LD_LIBRARY_PATH

Перечень каталогов для поиска динамических библиотек

IFS

Разделитель полей ввода

LOGNAME

Имя пользователя

PWD

Имя текущего каталога

PS1

Вид первичного приглашения

PS2

Вид вторичного приглашения (для ввода незаконченной команды)

UID

Идентификатор пользователя

TZ

Временной пояс

?

Код завершения последней выполненной команды

Изменять значения переменных в Korn Shell очень просто — надо вы-

полнить присваивание:

ПЕРЕМЕННОЙ=значение переменной

Однако присвоенное таким образом значение будет иметь смысл толь-

ко в данной работающей оболочке. Для того чтобы переменная распростра-

нялась на все запущенные процессы, используют такую команду: port ИМЯ_ПЕРЕМЕННОЙ

Можно экспортировать переменную непосредственно при создании:

Export ИМЯ_ПЕРЕМЕННОЙ= ЗНАЧЕНИЕ_ПЕРЕМЕННОЙ

Просмотреть значение одной из переменных (чтобы не выводить весь список) можно такой командой:

echo $ИМЯ__ПЕРЕМЕННОЙ

При запуске в качестве входной оболочки (login shell) Korn Shell вы-

полняет команды, содержащиеся в файле /etc/profile, затем команды, содер-

жащиеся в файле $номе/.profile. Разумеется, если эти файлы существуют и доступны по чтению. Для того чтобы при входе в систему автоматически ус-

танавливались необходимые переменные, необходимо откорректировать файл .profile, лежащий домашнем каталоге. Для этого можно, например, вос-

пользоваться редактором vi.

164

Для создания нового командного файла необходимо выполнить коман-

ду touch <имя файла> (например, touch d) и затем открыть созданный пустой файл в текстовом редакторе ped (например, ped d). В текстовом редакторе не-

обходимо набрать следующий текст:

#!/bin/sh ls

touch cc ls

rm cc ls

Затем сохранить файл, закрыть редактор. Если запустить пакетного файла так: # d, то ОС не находет файл и он не выполниться. Если указать полный путь, так: # ./d, то файл ОС найдет, но не сможет исполнить, так как у него не установлен атрибут исполняемого файла. Команда chmod 777 d ус-

танавливает все необходимые атрибуты. Теперь запуск пакетного файла: # ./d

обеспечит его успешное выполнение.

Сравнение команд QNX и MS-DOS

QNX

Назначение команды

MS-DOS

mkdir a1

Создать каталог с именем a1

md a1

ls

Вывод на экран содержимого каталога

dir

cd a1

Перейти в каталог a1

cd a1

pwd

Выводит имя текущего каталога

-

touch aa

Создание нового файла

copy con aa

ls

Вывод на экран содержимого каталога

dir

cat aa

Вывод содержимого файла на экран

type aa

ped aa

Отредактировать файл aa

edit aa

cat aa

Просмотреть на экране содержимое файла aa

type aa

ls > bb

Перенаправить вывод команды ls в файл bb

dir > bb

cat bb

Просмотреть на экране содержимое файла bb

type bb

ls

Вывод на экран содержимого каталога

dir > bb

ls >> bb

Перенаправить вывод команды ls в файл bb

dir >> bb

cat bb

Просмотреть на экране содержимое файла bb

type bb

ls > bb

Перенаправить вывод команды ls в файл bb

dir > bb

cat bb

Просмотреть на экране содержимое файла bb

type bb

rm bb

Удаление файла bb

del bb

cd .

Переход из каталога сам в себя

cd .

cd ..

Переход в родительский католог

cd ..

cd /

Переход в корневой католог

cd /

165

Подробнее примеры работы в командной строке и применения потоков ввода/вывода и конвееров рассмотрено в книге «QNX Momentics. Основы применения» [15 стр. 40-51].

Работа в графической среде Photon microGUI. Если при входе в сис-

тему выполнен через phlogin или запущена команда ph после вохода через login, то пользователь оказывается в рабочем пространстве ("workspace")

графической оболочки Photon аналогичной Windows. Снизу находится па-

нель задач, в левой ее части находится кнопка Launch. При нажатии кнопки

Launch появляется меню, через которое можно вызывать различные при-

кладные программы. В правой части экрана находится меню быстрого запус-

ка приложений – Shelf.

Следует обратить внимание на следующие программы:

Photon Terminal — pterm. Это штатный псевдотерминал, позволяю-

щий работать с инструментами командной строкой (в том числе и с нашим рекстовым редактором vi);

Helpviewer — программа доступа к штатной электронной документа-

ции. Надо сказать, что в составе QNX поставляется достаточно обширная и подробная документация;

Photon File Manager (pfm) – штатный файловый менеджер Для люби-

телей Norton Commander есть продукт третьего производителя mqc (MiShell QNX Commander) анализа Linux-ового Midnight Commander.

Есть весьма полезный файл $HOME/.ph/phapps — это командный файл,

в котором можно перечислить приложения, которые Photon должен запускать автоматически при своем запуске.

Переключение между виртуальными консолями выполняется комбина-

цией клавиш Ctrl+Alt+F[1-6], где F1-F6 номера консолй.

166

3.9. Конфигурирование QNX

Командный сценарий sysinit . Процесс diskboot перед своим заверше-

нием запускает командный сценарий /etc/system/sysinit. Задача этого сцена-

рия — запустить процессы, обеспечивающие необходимую функциональ-

ность ОС [15]. Давайте посмотрим, что же делает этот командный файл.

1.Запускает сервис регистрации системных событий (если он еще не запущен) slogger.

2.Запускает администратор неименованных каналов pipe.

3.В случае если это первый запуск системы после инсталляции, то за-

пускает сценарий /etc/re.d/rc.setup-once. Факт первого запуска устанавливает-

ся по отсутствию файла /etc/sys tern/package/packages.

4. Устанавливает часовой пояс. Информация берется из файла

/etc/TIMEZONE.

5. Запускает командный сценарий /etc/re.d/rc.rtc (если таковой сущест-

вует) для настройки часов реального времени.

6. Определяет имя ЭВМ. Информация берется из файла

/etc/HOSTNAME.

7. Запускает командный сценарий /etc/rc.d/rc.devices (если таковой су-

ществует). Этот скрипт инициирует распознавание аппаратных устройств. 8. Если существует файл /etc/system/config/useqnet И запущен админи-

стратор сетевого ввода/вывода io-net, то загружается администратор сетевого протокола Qnet. Факт работы io-net определяется по наличию регистрируе-

мого этим администратором префикса – каталога /dev/ io-net. Администратор протокола Qnet реализован в виде DLL, расширяющей функциональность администратора io-net. Подключение выполняется следующей командой:

9.mount -Tio-net npm-qnet.so

10.Если существует файл /.swapfile, то он подключается в качестве уст-

ройства свопинга.

167

11.Запускает командный сценарий /etc/re.d/rc.sysinit (если таковой су-

ществует). Этот скрипт продолжает инициализацию системы.

12.Если не удается запустить rc.sysinit, то делается попытки запустить командный интерпретатор Korn Shell в интерактивном режиме. Если стан-

дартный интерпретатор не может запуститься, делается попытка запус-

тить интерпретатор с меньшими требованиями к ресурсам -- Fat Embedded Shell (fesh).

Таким образом, сценарий sysinit перед окончанием своего выполнения вызывает сценарий rc.sysinit.

Командный сценарий rc.setup-once. Этот командный сценарий вызы-

вается из скрипта /etc/system/ sysinit только один раз — при первом запуске системы.

Сценарий создает ряд каталогов: /tmp, /var с несколькими подкаталога-

ми, /pkgs С /pkgs/repository, /root (домашний каталог системного администра-

тора). Файл для своппинга /.swapfile, файл начальной конфигурации базовой системы /etc/system/package/packages.

Если существует файл /boot/setup.inf (в этом файле сохраняются любые настройки, выполненные в процессе инсталляции), то запускается сценарий

/etc/re.d/rc.setup-info.

Затем перезапускается администратор пакетной файловой системы fs-pkg и генерируется начальная поисковая база данных программы– просмотрщика электронной документации helpviewer.

Кроме перечисленных действий, создается рабочая копия файла

/etc/passwd.

Командный сценарий rc.devices. Командный файл /etc/re.d/rc.devices

вызывается при каждой загрузке QNX из сценария /etc/system/sysinit.

Этот сценарий запускает администратор псевдотерминалов devc-pty,

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

ройствах (для локального узла – /etc/ system/enum). После этого запускается

168

администратор конфигурирования аппаратуры enum-devices, сканирующий подключенные устройства.

Командный сценарий rc.sysinit. Командный сценарий /etc/re. d/rc. sysinit вызывается при каждой загрузке QNX из сценария /etc/system/sysinit и

предназначен для выполнения настроек, специфичных для данной ЭВМ, и

запуска необходимых сервисов [21].

Этот сценарий запускает процесс dumper, сохраняющий "посмертные" core-файлы процессов, завершившихся аварийно. Затем запускает сценарий

/etc/re. d/rc. local, если таковой существует. Этот сценарий нужен, если вы хо-

тите добавить свои команды инициализации, не редактируя созданные сис-

темой файлы. На моей рабочей станции, например, из сценария rc.local за-

пускается процесс, принимающий запросы к TСР/IР-сервисам inetd.

Последнее действие сценария rc.sysinit — запуск программы инициали-

зации терминала tinit. Эта программа запускает на терминале утилиту входа в систему login или графическую оболочку Photon с графической утилитой входа в систему phlogin. Какой вариант использовать, сценарий определяет по наличию или отсутствию файла /etc/system/config/nophoton.

Если запустить tinit не удалось, сценарий пытается последовательно за-

пустить командные интерпретаторы ksh(sh— это просто ссылка на ksh) и fesh.

169

4.ВИРТУАЛЬНЫЕ МАШИНЫ

4.1.Общие сведения о виртуальных машинах

Виртуальная машина (англ. virtual machine) — программная или аппа-

ратная среда, исполняющая некоторый код (например, байт-код, шитый код, p-код или машинный код реального процессора), или спецификация такой системы (например: «виртуальная машина языка программирования Си»).

Зачастую виртуальная машина эмулирует работу реального компьютера.

На виртуальную машину, также как и на реальный компьютер, можно устанав-

ливать операционную систему, у виртуальной машины также есть BIOS, опера-

тивная память, жёсткий диск (выделенное место на жёстком диске реального компьютера), могут эмулироваться периферийные устройства. На одном ком-

пьютере может функционировать несколько виртуальныхмашин [22] .

Виртуальные машины могут использоваться:

-для защиты информации и ограничения возможностей процессов.

-для исследования производительности ПО или новой компьютерной архитектуры.

-для эмуляции различных архитектур (например, эмулятор игровой приставки).

С целью оптимизации использования ресурсов мейнфреймов и прочих мощных компьютеров (см., например: IBM eServer).

Вредоносным кодом для управления инфицированной системой: вирус

PMBS, обнаруженный в 1993 году, а также rootkit SubVirt, созданный в 2006

году в Microsoft Research, создавали виртуальную систему, которой ограни-

чивался пользователь и все защитные программы (антивирусы и прочие).

Для моделирования информационных систем с клиент-серверной архи-

тектурой на одной ЭВМ (эмуляция компьютерной сети с помощью несколь-

ких виртуальных машин). Для упрощения управления кластерами — вирту-

альные машины могут просто мигрировать с одной физической машины на другую во время работы.

170