5.3. Умножение матрицы произвольного порядка на вектор:
5.3.1. Написать программу, умножающую строку произвольной длины на столбец;
5.3.2. разработать программу, реализующую произведение матрицы произвольного порядка на вектор. Умножение каждой строки производить в отдельном процессе, вызывая написанную подпрограмму умножения строки на столбец;
5.3.3. для разработки многопоточного приложения подпрограмму умножения одной строки представить отдельной функцией, которую в последствии можно будет вызывать в созданном функцией CreateThread() потоке для каждой строки.
5.4. Свертка сигнала с импульсной характеристикой фильтра (
). N – число отсчетов импульсной характеристики необходимо разбить на несколько диапазонов:5.4.1. написать программу, реализующую свертку сигнала с некоторым диапазоном отсчетов импульсной характеристики;
5.4.2. написать программу, разбивающую заданное количество отсчетов импульсной характеристики на несколько диапазонов и вызывающую для каждого диапазона подпрограмму свертки сигнала в отдельном процессе;
5.4.3. реализовать программу вычисления свертки, в которой бы в главной подпрограмме количество отсчетов импульсной характеристики разбивалось на несколько диапазонов и для свертки каждого диапазона вызывалась функция в отдельном потоке.
5.4.4. В качестве импульсной характеристики можно использовать характеристику идеального НЧ – фильтра:
где - частота среза (0< <0.5) .5.5. Warcraft. Заданное количество юнитов добывают золото равными порциями из одной шахты, задерживаясь в пути на случайное время, до ее истощения:
5.5.1. написать программу работы одного юнита;
5.5.2. написать программу с произвольным количеством юнитов, работа каждого должна осуществляться в отдельном процессе. В качестве порожденного процесса применять написанную программу работы одного юнита, запуская ее из функции CreateProcess();
5.5.3. работу одного юнита представить в отдельной функции и вызывать ее в отдельном потоке для каждого юнита функцией CreateThread().
5.6. Винни-Пух и пчелы. Заданное количество пчел добывают мед равными порциями, задерживаясь в пути на случайное время. Винни-Пух потребляет мед порциями заданной величины за заданное время и столько же времени может прожить без питания.
5.6.1. реализовать программу работы одной пчелы;
5.6.2. разработать программу, в которой осуществляется работа Винни-Пуха и для заданного количества пчел вызывается отдельный процесс работы одной пчелы;
5.6.3. написать функцию работы пчелы и вызывать ее из главной для каждой пчелы в отдельном потоке.
5.7. Net Send. Отправка заданного сообщения по указанному диапазону IP-адресов сети класса «С» (254 адреса, маска 255.255.255.0) разделенному на несколько поддиапазонов:
5.7.1. разработать программу отправки сообщения по диапазону IP-адресов;
5.7.2. написать программу, разбивающую заданный диапазон IP-адресов на поддиапазоны и для каждого поддиапазона в порожденном процессе запускать программу, осуществляющую отправку сообщения;
5.7.3. выделить функцию отправки сообщения по диапазону адресов и вызывать ее из главной подпрограммы в отдельном потоке для каждого поддиапазона.
5.7.4. Для лабораторных работ 3, 4 вместо Net Send использовать команду ping.
5.8. Шарики. Координаты заданного количества шариков изменяются на случайную величину по вертикали и горизонтали, при выпадении шарика за нижнюю границу допустимой области шарик исчезает:
5.8.1. написать программу изменения координат одного шарика;
5.8.2. написать программу, создающую для каждого из заданного количества шариков порожденный процесс изменения их координат;
5.8.3. написать программу изменения координат заданного количества шариков, где изменение координат каждого шарика осуществляется функцией в отдельном потоке.
5.9. Противостояние двух команд – каждая команда увеличивается на случайное количество бойцов и убивает случайное количество бойцов участника.
5.9.1. написать программу, которая бы осуществляла уменьшение числа бойцов в противостоящей команде и увеличение в своей на случайную величину;
5.9.2. написать программу, в которой бы в родительском процессе запускались порожденные, реализующие деятельность одной команды (программа, написанная в предыдущем пункте);
5.9.3. разработать программу, вызывающую из главной функции в отдельном потоке для каждой команды функцию, изменяющую число бойцов.
6. Содержание отчета.
6.1. Цель работы.
6.2. Вариант задания.
6.3. Листинги программ.
7. Контрольные вопросы.
7.1. Что такое API? Какие они бывают?
7.2. Задачи, решаемые API ОС.
7.3. Варианты реализации API. Чем они отличаются?
7.4. Реализация функций API на уровне ОС. Особенности.
7.5. Реализация функций API на уровне системы программирования. Особенности.
7.6. Реализация функций API с помощью внешних библиотек. Особенности.
7.7. Платформенно-независимый интерфейс POSIX.
7.8. Создание процессов средствами WinAPI.
7.9. Создание потоков средствами WinAPI.
7.10. Чем отличаются процессы и потоки?
7.11. Средства синхронизации потоков в WinAPI.
7.12. Средства получения информации о процессах и потоках.
ЛАБОРАТОРНАЯ РАБОТА №2
ОЗНАКОМЛЕНИЕ С ОС LINUX
1. Цель работы: Ознакомление с операционной системой и основными командами работы с файлами и каталогами ОС Unix/Linux.
2. Краткие теоретические сведения.
Лабораторная работа выполняется в среде Red Hat Linux, доступ к которой осуществляется с рабочего места, функционирующего в среде ОС Windows 2000 через защищенный протокол ssh, обеспечиваемый программой putty. При выполнении лабораторной работы Вы становитесь клиентом сервера Linux и используете окно программы putty как терминал сервера. Работа выполняется в текстовом режиме, мышь не поддерживается.
По умолчанию приглашением в Unix/Linux является символ '#', в ответ не которое Вы можете вводить команды. Левее него в квадратных скобках указана Ваша учетная запись и имя сервера, а также текущий каталог.
В сеансе работы с Linux Вашим текущим (домашним) каталогом является каталог: /home/имя, где имя - Ваше сетевое имя. К этому каталогу Вы имеете права чтения, записи, выполнения. Вы не имеете права записи к каталогам, не являющимся подкаталогами вашего домашнего каталога, если их владельцы (или системный администратор) не дали Вам соответствующих прав. Не забывайте, что в Unix/Linux символ "слэш" - разделитель имен каталогов наклонен вправо: '/'!
Для получения справки по командам и программам служат инструкции man и info. Некоторые разделы справки даны на английском языке. Краткое описание применяемых в лабораторной работе команд и программ на русском языке доступно на сайте автора методических указаний: http://ait.cs.nstu.ru/~gun/ssw
Для окончания сеанса работы с Linux введите exit.
3. Методические указания.
3.1. Вводите команды ОС только при наличии приглашения оболочки (символ #).
3.2. В используемой оболочке имеется буфер команд, перемещение по которому производится стрелками управления курсором (вверх и вниз). Для редактирования команды из буфера используются клавиши <- и ->, <BackSpace> и <Delete>.
3.3. Для окончания работы инструкций man и info используйте символ q.
3.4. Для протоколирования результатов выполнения команд используйте команду script, которая позволяет создать протокол работы пользователя на терминале. Рекомендуется вводить команду script перед выполнением окончательной версии команды и заканчивать запись командой exit или сочетанием клавиш <Ctrl>-D, чтобы не загромождать файл протокола отладочными вариантами с ошибками. Для того, чтобы результаты работы накапливались в файле протокола, используйте команду script с опцией -a.
3.5. Возможно открыть новый терминал в пределах той же сессии, используя клавиши <Alt><F2> - <F6>.
3.6. При работе в файловом менеджере Midnight Commander для вызова команд можно применять сочетания клавиш <Ctrl> символ или <Alt> символ, обозначаемые в его описании как С - символ или М - символ соответственно. Если указано сочетание трех клавиш, то первые две нажимаются одновременно, третья - отдельно. Если символ после служебной клавиши расположен в верхнем регистре, то одновременно нажимаются все три клавиши, включая <Shift>.
3.7. Для доступа к файлам, созданным на сервере Linux, применяйте протокол ftp, клиентская программа которого имеется в Windows 2000 и встроена в файловый менеджер FAR. При этом учетная запись и пароль те же, что и при подключении по протоколу ssh.
4. Порядок выполнения работы.
4.1. Ознакомиться с процедурами входа в систему, выполнения основных команд, получения подсказки, создания и редактирования текстовых файлов.
4.2. Создать структуру каталогов, ссылки и символические ссылки, соответствующие варианту индивидуального задания.
4.3. Выполнить указанные в задании действия над каталогами, файлами, ссылками.
4.4. Изучить команды изменения прав доступа и владения chmod и chown.
4.5. Провести изменения прав доступа к файлам и каталогам.
4.6. Изучить работу и ключи команды ps - получения сведений о процессах в операционной системе.
4.7. Освоить работу с файловым менеджером Midnight Commander. Изучить сочетания клавиш для выполнения часто применяемых команд.
5. Варианты заданий.
5.1. Для всех вариантов выполнить следующие действия:
5.1.1. Запустить программу putty, ввести адрес сервера для подключения (Host name) 217.71.139.65, выбрать протокол подключения SSH (порт 22), в категории Window/Appearance изменить (Change) шрифт на Courier Bold 16-pixel, вернуться в категорию Session, ввести имя сохраняемых настроек Saved Session, сохранить настройки (Save), открыть соединение (Open).