Lab2_short_FreeBSD

advertisement
1
Московский инженерно-физический институт
(государственный университет)
Факультет Автоматики и электроники
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
"РАЗРАБОТКА СПЕЦИАЛЬНОГО ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ ДЛЯ ОПЕРАЦИОННОЙ СИСТЕМЫ РЕАЛЬНОГО
ВРЕМЕНИ"
Работа № 2.
ОС РВ «Багет 2.0»: работа в среде ОС, запуск приложений, изучение
работы планировщика потоков
Разработан на кафедре Микроэлектроники
Московского инженерно-физического института (МИФИ)
Авторы: Станислав Седов
Илья Бакулин
Коллектив НИИСИ
2007 г.
Версия 1.2
2
Цель работы: изучение способов конфигурирования загрузчика ОС РВ.
Знакомство с протоколами SLIP, NFS. Ознакомление с различиями двух стратегий
планирования - FIFO и Round-Robin.
I. Конфигурирование и создание образа ОС РВ.
Примечание: данный раздел был перенесён в эту работу из работы №1, поскольку, по
опыту авторов, основная часть студентов не успевают должным образом
ознакомиться с ходом конфигурирования образа ОС РВ.
В процессе установки ОС РВ и ППМ в каталоге установки (~ос2000) создается каталог
target, в котором
содержатся подкаталоги, относящиеся к различным целевым
компьютерам (платам). Каждый подкаталог содержит набор специальных служебных
файлов, обеспечивающих разработку программ для конкретной целевой платформы. В
настоящем лабораторном практикуме используется подкаталог bt83b. Для работы по
созданию образа операционной системы нужно создать копию этого каталога (например, в
домашнем каталоге пользователя). Далее будем говорить о ней как о «целевом каталоге».
Для создания образа ОС РВ необходимо перейти в целевой каталог.
Создание образа ОС производится в два этапа:


конфигурирование,
вызов программы make для построения образа ОС.
Средства конфигурирования позволяют настроить операционную систему на нужды
прикладной программы, определив параметры ОС и включив в образ системы только
нужные части операционной системы (масштабирование).
Напомним, что для повышения мобильности операционная система разбита на три части:



не зависящая от аппаратуры,
зависящая только от типа центрального процессора,
пакет поддержки модуля (платы).
Конфигурирование производится путем условной компиляции, а также путем изменения
параметров компилятора и других программ, используемых при создании образа ОС
(изменения make-файла). Условная компиляция управляется DEFINE-переменными,
определяемыми в модуле configos.h. Наиболее удобный способ определения
конфигурации - формирование configos.h диалоговой программой. Внесение изменений в
модуль configos.h вручную возможно, но не рекомендуется.
Пакет поддержки модуля (ППМ) содержит ту часть ОС, которая зависит от конкретной
ЭВМ (платы). ППМ, в частности, содержит драйверы устройств и диспетчер прерываний
(за исключением пролога и эпилога). Отметим, что ППМ также может конфигурироваться
(например, в зависимости от состава аппаратуры). Конфигурирование ППМ производится,
прежде всего, с помощью DEFINE-переменных, определяемых в модуле configbrd.h.
На первом этапе (при диалоговом конфигурировании ОС) формируются файлы configos.h
и usermake.def. Последний файл (включаемый в makefile) управляет работой программы
make, вызываемой на втором этапе и, в частности, содержит список файлов, из которых
состоит прикладная программа.
3
Программа make компилирует исходные файлы ОС и/или прикладной программы, если
соответствующие объектные файлы отсутствуют или изменились с момента предыдущей
компиляции. Образ ОС будет собран, если он отсутствует или какая-либо часть его
изменилась с предыдущего раза.
Вызов диалогового конфигуратора производится следующим образом:
make xconfig
Диалог может вестись на русском или английском языке. Настроить конфигуратор на
русский язык можно с помощью команды:
set LANG ru_RU.koi8-r
Окно конфигуратора имеет следующий вид:
Параметры конфигурирования имею древовидную структуру. Соответствующее дерево
выводится в левой части окна. Одна из вершин дерева является текущей. Указать
текущую вершину можно с помощью "мышки". Знак "+" рядом с именем вершины
означает, что у данной вершины имеются подчиненные и можно запросить (с помощью
"мышки") вывести их список. Знак "-" рядом с именем вершины помещается, если
выведен список подчиненных вершин. C помощью "мышки" можно запросить убрать этот
список.
Правая часть окна предназначена для ввода параметров конфигурирования, относящихся
к текущей вершине. При вводе параметров конфигурирования в нижней части окна
выводится соответствующее пояснение. Для вывода фрагмента документации,
описывающего вводимые параметры можно использовать клавишу "F1" или кнопку
"Помощь".
На верхнем уровне дерева находятся следующие группы параметров.
4
Ядро
Масштабирование
Библиотеки стандарта С
Взаимодействие с сетью
Файловые системы
Многопроцессорные системы
Дополнительные возможности
Подключение прикладных программ
Средства отладки
Протоколирование
Загрузчик
Далее действия по конфигурированию и созданию образа ОС РВ будут приведены для
конкретного примера.
Пример. Лабораторный стенд включен и настроен в соответствии с разделами 2, 3.1
настоящего документа. Пользователь – mips.Требуется создать образ ОС РВ для загрузки
в РПЗУ. Образ ОС РВ должен включать файловые системы NFS и FTP. В домашнем
каталоге пользователя создан каталог ~bt83b/share, экспортируемый по NFS. В ОС РВ этот
каталог должен быть смонтирован под именем /nfs:.
i. Скопировать в домашний каталог пользователя целевой каталог ОС
РВ. Для этого выполнить следующую команду:
cp –r ~/oc2000/target/bt83b ~
ii. Перейти в целевой каталог ОС РВ. Для этого выполнить следующую
команду:
cd ~/bt83b
iii. Конфигурировать образ ОС РВ. Для этого выполнить следующую
команду:
make xconfig
С помощью конфигуратора настроить образ ОС РВ в соответствии со
следующей таблицей:
Раздел
Поле
Include FTP
Включить
Include NFS
Включить
Все
Включить
Scaling
Standard C
Libraries
Значение
5
Network
Network
Addresses
Host table
Slip protocol
Include RPC
Network
Addresses
Включить
Interface
name sl0
Включить и настроить его поля
IP address
192.168.1.2
Netmask
255.255.255.255
Partner
address
192.168.1.1
Host address
192.168.1.1
Slip protocol
Включить
/dev/aux0
Отключить
/dev/aux1
Включить
User ID
Идентификатор пользователя (можно
определить с помощью команды
Linux id), например: 1001
Group ID
Идентификатор пользователя (можно
определить с помощью команды
Linux id), например: 1001
NFS_NAME
имя файловой системы NFS на
целевой машине (имя устройства), по
умолчанию: nfs:
/home/<имя пользователя>/bt83b/nfs,
например:
/home/mips/share
Mount NFS
Export name
Mount FTP
Miscellaneous
Отключить
Mount FTP
Включить
Parameters
<имя пользователя>:<пароль
пользователя>@host
например:
mips:mips@host
Language
LANG_ID_STRING_RU
Теперь необходимо откомпилировать образ ОС. Существует несколько вариантов
компиляции.
Для загрузки по сети изпользуется формат .elf. Образ в формате .elf создается при
использовании скрипта mb_elf.sh.
Для создания образа ОС РВ, пригодного для записи в РПЗУ, необходимо использовать
скрипт mb_bin.sh.
6
Мы будем пользоваться вторым вариантом – запустите скрипт mb_bin.sh, и в Вашей
домашней директории появится файл oc83b.bin – образ ОС РВ для записи в РПЗУ.
II . Загрузка образа ОС РВ в плату и запись в РПЗУ.
Предполагается, что загрузчик в плате уже есть (записан в ходе работы №1).
1. Запустить скрипт быстрого входа в режим загрузчика:
sudo initLdr.kerm
2. Дождаться сообщения “Press Enter to stop auto-boot” и нажать Enter. Тем самым
автоматическая загрузка образа ОС будет прервана.
3. Сконфигурировать загрузчик ОС РВ следующим образом (перечислены только
параметры, значения которых необходимо поменять с умолчаний). Вход в
конфигурирование загрузчика – с (на экране должно быть приглашение загрузчика
>)
4.
5.
6.
7.
8.
Boot device
Sl=1,115200,
File name
Oc2000
Inet on Ethernet (e)
192.168.1.2
Host inet (h)
192.168.1.1
Gateway inet (g)
192.168.1.1
User (u)
mips
ftp passwd (pw)
mips
Сохранить конфигурацию загрузчика в NVRAM, набрав s.
Перезагрузить плату. Набрать команду g 0xb8000000 в мониторе PRIME. При
появлении сообщения “Press Enter to stop auto-boot” прервать загрузку. Еще раз
нажать Enter – появится приглашение SysLoader: ->
Последовательно выполнить:
n – поднимаются сетевые интерфейсы;
m – по FTP монтируется каталог с бинарным файлом образа ОС РВ.
ls – отображается содержимое директории /ftp_load, подмонтированной по FTP.
Оно будет соответствовать содержимому директории ~/share на рабочей машине.
Теперь самое время записать образ ОС в РПЗУ. У загрузчика есть встроенная
команда, позволяющая сразу писать содержимое файла в РПЗУ. Ею мы и
воспользуемся:
j 0xb8100000,"oc83b.bin"
Процесс записи будет продолжаться около двух-трех минут.
После завершения записи необходимо перенастроить загрузчик SysLoader так,
чтобы он грузил только что записанный образ ОС РВ. Для этого войдите в режим
конфигурации параметров загрузчика и заполните их согласно таблице:
Boot device
go=0xb81000000
File name
oc2000
Inet on Ethernet (e)
192.168.1.2
Host inet (h)
192.168.1.1
Gateway inet (g)
192.168.1.1
User (u)
mips
ftp passwd (pw)
mips
9. Сохранив параметры загрузчика, выполнив команду s. Перезагрузить плату.
7
III. Выполнение прикладных программ в среде ОС РВ Багет.
Отладка программ осуществляется на инструментальном. Отлаживаемые программы
могут загружаться на ЦЭВМ в составе образа ОС РВ или с использованием команды load
динамического загрузчика, входящего в состав средств отладки ОС РВ. Последний способ
предпочтителен в случае, когда загрузка образа ОС РВ по сети занимает много времени. В
этом случае целесообразно включить в образ ОС РВ файловую систему, смонтированную
по NFS на каталог файловой системы ИЭВМ, из которого предполагается загружать
объектные модули отлаживаемой программы. После однократной загрузки образа ОС РВ
отлаживаемые модули можно загружать и выгружать многократно в процессе их отладки.
Для сокращения времени загрузки операционной системы можно записать ее образ в
РПЗУ.
1. Перейти в каталог /home/distribs и скопировать в домашнюю директорию папку
lab2
2. Перейти в папку lab2/scripts и выполнить файл make.sh – произойдёт компляция
файлов примеров.
3. В окне C-Kermit с загруженной ОС РВ перейти в папку /nfs/ и, радостно выполнив
команду ls, обнаружить скомпилированные файлы примеров (c расширением *.o).
4. Далее следовать указаниям преподавателя (ход работы различается в зависимости
от конкретной задачи).
Содержимое файлов примеров:
Diff_prio.c – рекомендуемый пример : изучение работы с планировщиком выполнения
ОС РВ.
Part1.с – еще один пример выполнения потоков с различным приоритетом
Part2.c – работа с очередями сообщений.
8
Приложение 1. Протокол SLIP (Serial Line Internet Protocol)
SLIP (Serial Line Internet Protocol) — устаревший сетевой протокол канального
уровня эталонной сетевой модели ВОС для доступа к сетям стека TCP/IP через
низкоскоростные линии связи путем простой инкапсуляции IP-пакетов. Используются
коммутируемые соединения через последовательные порты для соединений клиентсервер типа точка-точка. В настоящее время вместо него используют более
совершенный протокол PPP.
История
SLIP был разработан в начале 80-ых компанией 3COM. Протокол начал быстро
распространяться после включения в ОС Berkeley Unix 4.2 Риком Адамсом(Rick
Adams) в 1984, так как благодаря ему стало возможным подключение к Интернет через
последовательный COM-порт, имевшийся на большинстве компьютеров. Ввиду своей
простоты сейчас используется в микроконтроллерах.
Принципы работы
Для установления связи необходимо заранее задать IP-адреса, так как в протоколе
SLIP нет системы обмена адресной информацией.
В принимаемом потоке бит SLIP позволяет определить признаки начала и конца
пакета IP. По этим признакам SLIP собирает полноценные пакеты IP и передает
верхнему уровню. При отправлении IP-пакетов происходит обратная операция — они
переформатируются и посимвольно отправляются получателю через
последовательную линию.
Для передачи необходимо использовать конкретную конфигурацию UART: 8 бит
данных (8 data bits), без паритета (no parity), аппаратное управление каналом передачи
(EIA hardware flow control) или трехпроводный нуль-модемный кабель (3-wire nullmodem — CLOCAL mode).
Структура кадров
Так как передача данных в последовательных асинхронных линиях связи байториентированная, сначала IP-пакет разбивается на байты (октеты). Границей SLIPкадра является уникальный флаг END (0xC0). Уникальность этого флага
поддерживается байт-стаффингом(byte stuffing) внутри кадра с ESCпоследовательностью 0xDB, причем байт END (0xС0) заменяется
последовательностью (0xDB, 0xDC), а байт ESC (0xDB) — последовательностью
(0xDB, 0xDD).
Недостатки
Нет возможности обмениваться адресной информацией — необходимость
предустановки IP-адресов.
Отсутствие индикации типа инкапсулируемого протокола — возможно использование
только IP.
9
Не предусмотрена коррекция ошибок — необходимо выполнять на верхних уровнях,
рекомендуется использовать протокол TCP.
Высокая избыточность — из-за использования стартовых и стоповых битов при
асинхронной передаче(+20 %), передачи в каждом SLIP-кадре полного IPзаголовка(+20 байт) и полных заголовков верхних уровней, байт-стаффинга.
В некоторых реализациях протокола максимальный размер кадра ограничен 1006
байтами для достижения обратной совместимости с реализацией в Berkeley Unix.
CSLIP
Сетевой протокол CSLIP (Compressed SLIP) — немного усовершенствованный Ван
Якобсоном (Van Jacobsen из Lawrence Berkeley Labs) протокол SLIP. Изменения
коснулись сжатия IP-заголовков и TCP-заголовков. 40 байт этих двух заголовков могут
сжиматься до 3-5 байт. CSLIP дает заметный выигрыш против SLIP только при
использовании небольших пакетов и хороших линий связи, так как при необходимости
повтора передачи в CSLIP заново переданы будут все пакеты, вплоть до последнего
переданного несжатого, против одного пакета в SLIP.
Download