1. Цель работы Целью работы является изучение основных принципов обработки программ сложной структуры, состоящих из нескольких программных модулей, а также приобретение практических навыков по использованию системы управления версиями cvs. Ход выполнения
![]()
|
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра ТПИ Лабораторная работа № 8 по дисциплине Операционные системы, среды и оболочки РАЗРАБОТКА ПРОГРАММ СЛОЖНОЙ СТРУКТУРЫ Ф АКУЛЬТЕТ : ПМИ ГРУППА ПМ63 СТУДЕНТЫ Москвичев А.А. Швецов Д.В. ПРЕПОДАВАТЕЛИ Кобылянский В.Г., Филиппова Е.В. Новосибирск 2019 1. Цель работы Целью работы является изучение основных принципов обработки программ сложной структуры, состоящих из нескольких программных модулей, а также приобретение практических навыков по использованию системы управления версиями CVS. 2. Ход выполнения 1. Создайте в домашнем каталоге подкаталоги cvsroot и workdir 2. В каталоге workdir создайте подкаталог project. 3. В каталоге cvsroot создайте репозиторий CVS. 4. В каталог project скопируйте файл abcd.c с устраненными синтаксическими ошибками (п задания к лабораторной работе № 7). 5. Передайте каталоги файл abcd.c в репозиторий. При выполнении команды commit с помощью редактора vi вводите комментарий, например Пользователь передал файл abcd.c под управление CVS”. 6. С помощью отладчика gdb выполните поиски устранение семантических ошибок в программе abcd (п задания к лабораторной работе № 7). Каждое исправление в программе должно сопровождаться записью в репозиторий новой версии с комментарием, поясняющим на русском языке сущность исправлений например, номер строки программы abcd.c и причина исправления. Занесите в отчет результаты тестирования программы. make abcd2 abcd.c gdb test2.out vim abcd.c cvs add abcd.c cvs commit –m Исправлена ошибка №……” abcd.c 7. После получения корректных результатов выполнения программы abcd с помощью редактора vi в начало отлаженной программы введите комментарий "Программа abcd отлажена с помощью отладчика gdb дд.мм.гг. бригадой группы ПМХХ в составе ФИО1, ФИО2..." vi abcd.c Программа abcd отлажена с помощью отладчика gdb 04.04.19 бригадой группы ПМ63в составе Швецова Дмитрия и Москвичева Артема */ 8. Выведите на монитор ив файл всю последовательность осуществленных модификаций содержимого файла abcd.c, занесите данные из файла в отчет. 9. Выполните разбиение программы на функции в соответствии с вариантом задания из таблицы 26. Обратите внимание на тип функции (внутренняя или внешняя, тип файла (.c, .h или .o) и тип модуля (исходный или объектный. 8 внутренний, исходный abcd2.c внешний, исходный printwords.c внешний, исходный getwords.h Исходный модуль – исходный код, написанный на алгоритмическом языке. Внешние функции printwords и getwords хранится в виде файла типа .c и .h, компилируется отдельно от основной программы и включается в исполняемый файл компоновщиком при сборке программы. abcd2.c printwords.c getwords.h 10. Выполните сборку программы в соответствии вариантом задания, используя неявный вызов компоновщика и задав имя исполняемого файла adcd2_1; проверьте корректность работы программы и занесите в отчет результаты ее тестирования. Компоновщик формирует из набора объектных модулей с относительной адресацией исполняемый (загрузочный) модуль, имеющий единую относительную адресацию перемещаемый При неявном вызове компоновщика используется стандартная библиотека libc.a 11. Выполните поиск во внешней памяти каталога obj, скопируйте его содержимое в Ваш рабочий каталоги определите назначение скопированных файлов. crt1.o – содержит код, инициализирующий среду исполнения языка C и вызывающий определенную пользователем функцию main; crti.o – содержит пролог функции _init, помещаемый в начало секции .init; crtn.o – содержит эпилог функции _init, помещаемый вконец секции .init; crtbegin.o, crtend.o – обрабатывают глобальные конструкторы и деструкторы языка C++. 12. Выполните сборку программы в соответствии вариантом задания, используя явный вызов компоновщика. Результатом сборки должны быть исполняемый файл abcd2_2 и карта памяти abcd2_map; проверьте корректность работы программы и занесите в отчет результаты ее тестирования. Map=имя – записывает в файл с указанным именем структуру исполняемого модуля, содержащую информацию об относительных адресах, именах и размерах всех объектных модулей, включенных в состав исполняемого модуля, а также диагностические сообщения, возникшие на этапе компоновки этот файл называется картой памяти. 13. Из карты памяти abcd2_map определите размеры машинного кода модулей abcd2.o, printwords.o и getwords.o, сравните их с размерами исходного и объектного кода этих модулей (файлы типа си о. Результат представьте в виде таблицы 27: Таблица Имя модуля Исходный, байт Объектный, байт Машинный код, байт printwords 963 1584 106 getwords 1318 abcd2 1011 2160 358 14. Добавьте в файл, разработанный при выполнении лабораторной работы № 7, два новых правила, реализующие пи задания. Проверьте корректность его работы. 3. Вывод Все команды, представленные в лабораторной работе, были изучены и проработаны. |