->? thread

3.4.2.2.4 Управление переменными окружения

К этой группе относятся следующие команды:

setenv

установка значения переменной окружения;

unsetenv

отмена определения переменной окружения;

printenv

вывод значений переменных окружения.

Для получения списка команд, входящих в эту группу, можно воспользоваться командой

->? env

3.4.2.3 Локальный отладчик

Локальный отладчик позволяет отлаживать прикладные программы непосредственно на целевой ЭВМ. Управление отладчиком производится с помощью команд, которые вводятся в командный интерпретатор. Отладка производится в терминах команд целевой ЭВМ (а не в терминах языка высокого уровня, на котором написана прикладная программа).

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

Когда поток достигает точки останова, то выводится соответствующее сообщение и поток приостанавливается. Другие потоки при этом продолжают выполняться. После остановки отлаживаемого потока управления (и даже параллельно с его выполнением) можно вводить команды, которые позволяют получать информацию о состоянии этого и других потоков управления, информацию о состоянии объектов операционной системы (семафоров, мьютексов и др.), значения переменных, и др.

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

Прикладную программу рекомендуется выполнять в контексте специально созданного для этой цели потока(ов) управления. Для создания потоков управления в операционной системе имеется функция pthread_create(), соответствующая стандарту POSIX. Хотя эту функцию можно непосредственно вызвать с помощью командного интерпретатора, для порождения потоков при отладке удобнее использовать команду tst.

Локальный отладчик выполняет следующие команды:

b

установка точки останова;

получение списка точек останова;

bd

удаление точки останова;

bdall

удаление всех точек останова;

c

продолжение выполнения потока управления;

ca

продолжение выполнение всех потоков приостановленных отладчиком

cret

продолжение выполнения потока до выхода из текущей функции;

dSB

управление режимом приостановки потоков управления

dSF

установка флагов, управляющих работой отладчика.

l

дезассемблирование;

s

пошаговое выполнение потока управления;

so

пошаговое выполнение текущей функции потока управления;

tb

разрешение приостанавливать поток управления

tfRegs

вывод содержимого плавающих регистров

tRegs

вывод содержимого регистров

tt

вывод содержимого стека потока управления;

tu

запрещение приостанавливать поток управления

Для получения списка команд, входящих в эту группу, можно воспользоваться командой

->? debug

Работа № 1. ОС РВ Ос-2000: среда разработки, средства конфигурирования, средства отладки, способы загрузки целевой ЭВМ

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

Содержание работы

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

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

- устанавливает на ИЭВМ ОС РВ и ППМ,

- подготавливает текст программы на языке Си помощью текстового редактора,

- конфигурирует и создает образ ОСРВ, включив в него отлаживаемую и демонстрационную программы,

- настраивает загрузчик процессорного модуля ЦЭВМ для взаимодействия с ИЭВМ по протоколу SLIP,

- записывает образ ОС РВ в РПЗУ процессорного модуля ЦЭВМ средствами загрузчика,

- запускает ОС РВ из РПЗУ с помощью загрузчика,

- выполняет программу в ОС РВ,

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

Во второй части работы студент должен запустить в ОС РВ демонстрационную программу и ознакомиться на ее примере с возможностями интерпретатора Shell в ОС РВ, а именно:

комадa ti (получение информации о потоках),

комадa tst (запуск программы в отдельном потоке),

комадa tsp (изменение приоритета потока).

Текст демонстрационной программы приведен в приложении 2 к настоящему документу.

НЕ нашли? Не то? Что вы ищете?

Содержание демонстрационной программы

Работают несколько потоков, выполняющих одну и ту же функцию. Единственный аргумент функции - "номер потока". Имеется разделяемый ресурс (кольцевой буфер). Разграничение конкурентного доступа к кольцевому буферу осуществляется с помощью семафора. Каждый поток в бесконечном цикле пишет в кольцевой буфер свой номер и ведет счетчик захватов семафора.

Студент должен запустить с помощью команды tst несколько потоков. С помощью кoманды ti убедиться, что все они имеют одинаковый приоритет. Просмотреть содержимое кольцевого буфера и счетчиков (распределение записей, сделанных разными потоками, должно быть равномерным). С помощью команды tsp изменить приоритеты потоков: одному повысить, одному - понизить. Спустя некоторое время убедиться, что распределение записей в кольцевом буфере изменилось.

Изучить состояние глобальных ресурсов с помощью командного интерпретатора по индивидуальным заданиям, полученным от преподавателя.

Примеры заданий.

1. Запустить демонстрационную задачу командой startAllThreads.

Узнать адрес семафора semGeneral с помощью команды lkup.

С помощью команды sem определить номер и состояние семафора semGeneral: свободен или захвачен, есть ли потоки в очереди. При наличии потоков в очереди идентифицировать их с помощью команды ti.

2. С помощью команды lkup определить, какое из имен semGeneral, general является именем переменной, а какое – именем функции. Для функции определить тип аргумента и тип возвращаемого значения.

Выгрузить объектный модуль прикладной задачи. Для этого выполнить следующую команду:

unload “a. o”

С помощью команды lkup убедиться, что имена semGeneral, general удалены из таблицы имен.

ПОДГОТОВКА И ВЫПОЛНЕНИЕ РАБОТЫ

2  Изучить разделы …. настоящего документа.

Порядок выполнения первой части работы изложен ниже в пп. 3-9.

Порядок выполнения второй части работы изложен ниже в пп. .

3  Включить стенд в соответствии с разделом 2.2 настоящего документа (ЦЭВМ следует перевести в штатный режим функционирования).

4  Создать сетевое окружение через интерфейс RS-232 используя протокол slip.

1.1 Зайти на Linux-ИЭВМ под пользователем root.

1.2 Перейти в каталог настройки и запуска интерфейса slip. Для этого выполнить команду:

cd /home/osuser/distrib/bt83b/slattach

1.3 Создать P-t-P именованное сетевое окружение sl0 с IP-адресом 192.168.83.183, связанное с IP-адресом 192.168.83.1 на основе COM-порта ttyS1. Для этого выполнить команду:

sh sl0_ttyS1.sh

5  Создать прикладную задачу на языке программирования Си.

1.1 Создать каталог nfs. Для этого выполнить следующую команду:

mkdir -p ~/bt83b/nfs

1.2 Создать пустой исходный файл “a. c” в каталоге экспорта. Для этого выполнить следующую последовательность команд:

cd ~/bt83b/nfs

> a. c

1.3 В исходном файле описать прикладную задачу в формате языка программирования Си. Например:

#include <stdio. h>

int print()

{

return printf ("Hello NIISI RAS!\n");

}

1.4 Убедиться, что исходный файл подключен к образу ОС РВ в разделе конфигуратора Application, в соответствии с разделом 31.3iii данного документа.

1.5 Компилировать исходный файл средствами ОС РВ. Для этого выполнить следующую последовательность команд:

cd ~/bt83b

make

В результате, в каталоге ~/bt83b будет создан объектный модуль прикладной задачи (файл a. o).

1.6 Скопировать файл a. o в каталог экспорта. Для этого выполнить следующую команду:

cp a. o./nfs

6  Установить и собрать образ ОС РВ на Linux-ИЭВМ.

1.1 Установить ОС РВ на Linux-ИЭВМ.

  i.  Зайти на Linux-ИЭВМ под своим пользователем.

  ii.  Перейти в каталог установки. Для этого выполнить следующую команду:

cd /home/osuser/distrib/oc2.50.20

  iii.  Выполнить установку. Для этого выполнить следующую команду:

sh install ~/oc2000

  iv.  Установить документацию ОС РВ (в формате html) в каталог ~/oc2000/doc. Для этого выполнить последовательность команд:

cd ~/oc2000/doc

sh install ~/oc2000/doc

1.2 Установить ППМ для ОС РВ на Linux-ИЭВМ.

  i.  Зайти на Linux-ИЭВМ под своим пользователем.

  ii.  Перейти в каталог установки. Для этого выполнить следующую команду:

cd /home/osuser/distrib/bt83b/ppm

  iii.  Выполнить установку. Для этого выполнить следующую последовательность команд:

cp b*inst.sh ~/oc2000

cp ppm*.tgz ~/oc2000

cd ~/oc2000

sh ./b*inst. sh ppm*.tgz

  iv.  Установить документацию ОС РВ (в формате html) в каталог ~/oc2000/doc. Для этого выполнить последовательность команд:

cd ~/oc2000/doc

sh install ~/oc2000/doc

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

  v.  Увеличить размер шрифта, устанавливаемого в конфигураторе ОС РВ по умолчанию. Для этого нужно в файле

~/oc2000/osconfigR3000.tcl

заменить строку

option add *font {courier 8}

на

option add *font {courier 12}

1.3 Создать образ ОС РВ.

  i.  Скопировать в домашний каталог пользователя целевой каталог ОС РВ. Для этого выполнить следующую команду:

cp –r ~/oc2000/target/bt83b ~

  ii.  Перейти в целевой каталог ОС РВ. Для этого выполнить следующую команду:

cd ~/bt83b

  iii.  Конфигурировать образ ОС РВ. Для этого выполнить следующую команду:

make xconfig

С помощью конфигуратора настроить образ ОС РВ в соответствии со следующей таблицей:

Раздел

Поле

Значение

Scaling

Include FTP

Включить

Include NFS

Включить

Standard C Libraries

Все

Включить

Network

Include RPC

Отключить

Network Addresses

Network Addresses

Включить

Default gateway

192.168.83.183

Interface name de0

Отключить

Interface name sl0

Включить и настроить его поля

IP address

192.168.83.1

Netmask

255.255.255.255

Partner address

192.168.83.183

Host table

Host address

192.168.83.183

Gateway table

Gateway table

Отключить

Slip protocol

Slip protocol

Включить

/dev/aux0

Отключить

/dev/aux1

Включить

Mount NFS

User ID

Идентификатор пользователя (можно определить с помощью команды Linux id), например: 203

Group ID

Идентификатор пользователя (можно определить с помощью команды Linux id), например: 203

NFS_NAME

имя файловой системы NFS на целевой машине (имя устройства), по умолчанию: nfs:

Export name

/home/<имя пользователя>/bt83b/nfs,
например:
/home/osuser/bt83b/nfs

Mount FTP

Mount FTP

Включить

Parameters

<имя пользователя>:<пароль пользователя>@host
например:
osuser:ospasswd@host

Miscellaneous

Language

LANG_ID_STRING_RU

Application

Source files

Пути к файлам прикладной программы. Пути к файлам разделяются пробелами, например:
./nfs/a. c./nfs/b. c

Board support package configuration

BT83-402

Отключить

Раздел

Поле

Значение

  iv.  Если в разделе Application указаны прикладные программы, то необходимо создать соответствующие файлы в формате языка программирования Си (подробнее см. раздел 2).

  v.  Настроить размещение образа ОС РВ на собственный каталог. Для этого в файле env.sh из изменить переменную TARGET_FILE_DIR, указав после знака равенства путь к собственному каталогу. Например:

TARGET_FILE_DIR=/home/osuser

  vi.  Собрать образ ОС РВ в формате для записи во flash-память. Для этого выполнить следующую команду:

mb_bin. sh

  vii.  Создать каталог для экспорта файлов. Для этого выполнить следующую команду:

mkdir nfs

7  Записать образ ОС РВ с помощью системного загрузчика во flash-память по адресу 0xb8400000.

1.1 Включить прибор.

1.2 После вывода сообщения «Press ‘Enter’ to stop auto-boot …» остановить системный загрузчик нажатием клавиши «Enter».

1.3 Установить параметры системного загрузчика. Для этого выполнить следующую команду:

-> c

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

Параметр

Значение

boot device

sl=1,

processor number

0

host name

bt183

file name

bt83b/oc2000

inet on ethernet

192.168.83.1

inet on backplane

host inet

192.168.83.183

gateway inet

192.168.83.183

user

Имя пользователя, например:
osuser

ftp passwd

Пароль пользователя, например: ospasswd

flags

0x0

target name

bt83b

startup script

other

1.4 Сохранить параметры системного загрузчика. Для этого выполнить следующую команду:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4