Введение в системное программирование. 12978_Системное_ПО_2014. Программа дисциплины 12978 по специальности 230100. 62 Информатика и вычислительная техника
Скачать 124 Kb.
|
1 Федеральное агентство по образованию Владивостокский государственный университет экономики и сервиса _________________________________________________________ СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Учебная программа дисциплины 12978 по специальности 230100.62 «Информатика и вычислительная техника» Владивосток Издательство ВГУЭС 2014 2 ББК 32.973 Учебная программа по дисциплине «Системное программное обес- печение» составлена в соответствии с требованиями ГОС ВПО. Предназначена студентам по специальности 230100.62 «Инофрма- тика и вычислительная техника». Составитель: Б.К. Васильев, доцент, кафедра информационных сис- тем и компьютерных технологий . Утверждена на заседании кафедры информационных и технических систем от 22.04.2014 г., протокол № 10. Рекомендована к изданию учебно -методической комиссией инсти- тута информатики, инноваций и бизнес -систем ВГУЭС. © Издательство Владивостокский государственный университет экономики и сервиса, 2014 3 ВВЕДЕНИЕ Дисциплина «Системное программное обеспечение» относится к фе- деральному компоненту цикла общепрофессиональных дисциплин спе- циальности 230100.62 «Информатика и вычислительная техника» и введена в учебный план в соответствии с требованиями Государ- ственного образовательного стандарта указанной специальности. Дисциплина базируется в основном на знаниях архитектуры вы- числительных машин, процессоров современных ЭВМ а также таких дисциплинах, как «Основы алгоритмизации» , «Технология программи- рования», «Операционные системы, среды и оболочки» . Знания, полученные при изучении дисциплины «Системное про- граммное обеспечение» используются в последующих дисциплинах, связанных с разработкой информационных систем и в практической деятельности инженера. Данная программа составлена в соответствии с требованиями Го- сударственного образовательного стандарта высшего профессионально- го образования специальности 230100.62 «Информатика и вычислительная техника». 4 1. ОРГАНИЗАЦИОННО -МЕТОДИЧЕСКИЕ УКАЗАНИЯ 1.1. Цели и задачи изучения дисциплины Целью изучения дисциплины «Системное программное обеспече- ние» является теоретическая и практическая подготовка студентов в области разработки программного обеспечения для высокопроизводи- тельных параллельных вычислительных систем (ПВС), конфигурации и администрирования таких систем. Знания, полученные в результате ос- воения дисциплины, помогут при разработке системных программных компонентов современных информационных и расчетных программ, в проектировании и реализации системных компонентов операционных систем в такой степени, чтобы студенты могли самостоятельно выби- рать средства реализации, находить необходимые программные и тех- нологические решения для практически важных системных задач. Основные задачи изучения дисциплины: - приобретение студентами знаний о способах работы пользова- тельского приложения с ядром системы; - ознакомление с технологиями разработки параллельного про- граммного обеспечения (ППО) с использованием различных библиотек, языков и сред; - приобретение практических навыков по использованию средств синхронизации, блокировок, барьеров при создании многопоточных про- грамм, исследованию и устранению тупиковых ситуаций ( deadlocks) в параллельных ветвях программы. Приобретение теоретические и практические знания по обработке текстовой информации в операционных системах (ОС). Работа с регу- лярными выражениями. 1.2. Перечень компетенций, приобретаемых при изучении дисциплины В результате теоретического изучения дисциплины студент должен приобрести следующие компетенции: владение основными системными средствами для низкоуровневой работы с файлами, каталогами и дру- гими объектами ОС, владение способами создания параллельных алго- ритмов и программ и языками параллельного программирования для написания многонитиевых (многопоточных) программ, ориентирование в современных технологиях разработки распределенного программного обеспечения и прикладных программ, обработка конфигурационных и протокольных текстовых файлов на скрипт -языке (perl). В результате практического освоения дисциплины студент должен уметь: правильно формулировать требования к системным программам 5 и задачам в соответствии с платформой, аппаратными ресурсами, про- изводить декомпозицию задачи и реализовывать решение на адекватно выбранном языке программирования. 1.3. Основные виды занятий и особенности их проведения Дисциплина «Системное программное обеспечение» изучается сту- дентами очной формы обучения в седьмом семестре Общее количество часов, которое отводится для изучения дисциплины – 184. Количество аудиторных часов – 64, из них: лекций – 32 час, лабо- раторных работ – 32 часов. На самостоятельную работу отводится 120 ча- сов, из них: 20 часов на подготовку к экзамену, 50 часов на оформление отчетов и подготовку к защите лабораторных и курсовой работ, 50 ча- сов на самостоятельное изучение материала и консультации. 1.3.1. Лекционные занятия При проведении лекций учитывается, что значительная часть мате- риала постоянно обновляется, описана только в периодической литера- туре, чаще всего на английском языке, и не может выноситься на само- стоятельную работу. На лекциях рассматриваются не только теоретиче- ские вопросы, множество системных вызовов и приемов работы с ними, но и примеры разработки параллельных программ с использованием различных языков и библиотек подпрограмм, а также тенденции в раз- витии аппаратных и программных средств для эффективного выполне- ния кода на многоядерных платформах. 1.3.2. Лабораторные работы Лабораторные работы все – компьютерные, проводятся с исполь- зованием программных средств gcc, make, configure, MICO, PVM, FLTK, Samba, Kdevelop, QTDesigner . Программными средами являются операционные системы Linux с надстройками pvm, LAM/MPI. 1.4.3. Курсовая работа Выполняется по одному из выбранных направлений и представляет самостоятельную работу студента под руководством преподавателя. Тематика курсовых работ, требования и структура пояснительной за- писки подробно описаны в методических указаниях [7]. Основной зада- чей курсовой работы является приобретение навыков системного анали- за проблемы и тщательности отладки ПО. 6 1.4. Взаимосвязь аудиторной и самостоятельной работы студентов при изучении дисциплины В ходе изучения дисциплины студент слушает лекции по теорети- ческому материалу, ряд вопросов выносится на самостоятельное изуче- ние. Для помощи студенту в освоении теоретического материала лекци- онных занятий и при написании курсовой работы предусматриваются консультации ведущего преподавателя. Помимо посещения лекций и лабораторных занятий для освоения теоретического материала и приобретения практических навыков, пре- дусматривается в рамках самостоятельной работы студента ознакомле- ние с исходными текстами приложений «open source», написанных с использованием MPI, библиотеки pthreads, perl. Для подготовки к экзамену студенту отводится 20 часов самостоя- тельной работы и консультация ведущего преподавателя перед экзаме- ном. Для выполнения отчетов по лабораторным работам и для отладки программ предусматривается выделение времени в компьютерном клас- се кафедры и консультации ведущего преподавателя. 1.5. Виды контроля знаний студентов и их отчетности В ходе изучения дисциплины предусматриваются следующие виды контроля знаний студентов: текущая и промежуточная аттестация. Текущая аттестация предназначена для контроля знаний студен- тов в середине семестра и включает: - защиту отчетов по выполняемым лабораторным работам; - оценку знаний и умений студентов при проведении консультаций по лекционным и лабораторным занятиям; - оценку степени завершенности курсовой работы. Текущая аттестация проводится в форме защит лабораторных, курсовых работ и является фактическим допуском к экзамену в соответ- ствии с Положением о рейтинговой системе оценки успеваемости сту- дентов во Владивостокском государственном университете экономики и сервиса. Аттестация может быть проведена (в виде исключения) в фор- ме письменного опроса по разделам дисциплины, изученных студентом в семестре, при этом для выставления оценки учитывается количество выполненных и защищенных лабораторных работ за отчетный период, активность студентов на консультациях. Тестирование допускается толь- ко для обнаружения пробелов в теоретических знаниях и с предоставле- нием полного доступа к результатам тестирования (с указанием невер- ных ответов) преподавателю и студентам. 7 Результаты текущей и промежуточной аттестаций заносятся в ве- домость установленной формы (возможно в цифровой форме). Промежуточная аттестация – экзамен в седьмом семестре. Усло- вием допуска студента к экзамену является успешное прохождение двух текущих аттестаций в соответствии с требованиями Положения о рей- тинговой системе оценки успеваемости студентов во ВГУЭС. Кроме того, студент должен выполнить и защитить не менее 80% всех лабора- торных работ. Итоговая оценка формируется на основе результатов те- кущих и промежуточной аттестаций. 1.6. Техническое и программное обеспечение дисциплины При проведении лекционных занятий особого оборудования в силу традиционности дисциплины, и слабого усваивания студентами знаний, представляемых только визуально, мультимедийных презентаций не тре- буется. Для проведения лабораторных работ используются программные средства редактирования и компиляции программ в ОС Linux (UNIX), стандартные для дисциплин данного направления во ВГУЭС gcc, Kde- velop, QtDesigner, FLTK . Программными средами являются операцион- ные системы Linux и дополнительное программное обеспечение ( LAM- MPI, perl, MICO). 8 2. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ 2.1. Введение При проведении лекций учитывается, что материал, излагаемый по дисциплине, относится преимущественно к базовой для данной дисцип- лины ОС Linux. Поэтому большинство примеров рассматривается с ис- пользованием диалектов языков программирования C и C++, реализо- ванных именно для этой ОС. В ходе освоения материала происходит знакомство с основными понятиями разработки программного обеспе- чения системного уровня, использования параллельного и распределен- ного программирования, управления потоками вычислений с помощью скриптов. 2.2. Перечень тем для лекционных занятий и самостоятельного изучения дисциплины Тема 1. Задачи дисциплины. Понятие системы, системного анализа, системного подхода к разработке программного обеспечения и систем- ного программирования. Уровни системного программирования (ядро ОС, пользовательская программа, управляющая программа). Проблемы использования современных высокопроизводительных компьютеров. Тема 2. Системные вызовы. Понятие системных вызовов и спосо- бов их реализации в ОС Linux, UNIX, DOS и Windows. Выполнение программных прерываний, уровень ядра ОС. Тема 3. Системные вызовы для работы с файлами, каталогами, специальными файлами. Изменение прав собственности и прав доступа к ресурсам. Функции для блокировки доступа к файлу. Связь функций низкого уровня с библиотечными функциями языка С. Понятие обер- точной функции (wrapper). Тема 4. Системные вызовы для осуществления межпроцессного обмена. Сигнально-семафорный механизм. Маскирование сигналов. Об- работчики сигналов. Функции signal и sigaction. Разделяемая память, сообщения. Системные вызовы для работы с ними. Тема 5. Потоки выполнения кода (нити). Posix -совместимые API потоков. Создание, синхронизация, завершение потоков. Использование взаимоисключающих блокировок, барьеров и условных переменных. API потоков выполнения фирмы Sun и определения POSIX. Синхрони- зация потоков выполнения: взаимоисключающие блокировки, условные переменные, барьеры, блокировки чтения-записи. Тема 6. Способы доступа к внутрисистемной информации. Вирту- альная файловая система «/proc». Создание графических оболочек (frontend) 9 для консольных приложений и механизмов преобразования информа- ции (backend). Тема 7. Параллельные алгоритмы. Отличия параллельных алго- ритмов от последовательных алгоритмов. Постановка задачи распарал- леливания существующих сериальных алгоритмов. Пример суммирова- ния массива. Реализация параллельных алгоритмов с использованием процессов. Виды межпроцессной коммуникации (сигналы, семафоры, разделяемая память, каналы, сообщения). Оценка эффективности алго- ритма с учетом времени доставки кода и данных вычислительному узлу. Законы Амдала. Целесообразность распараллеливания. Как анализиро- вать зависимость данных и кода в последовательной программе? Поря- док вычислений, граф зависимости. Модель «грубой силы». Примеры решений для PRAM, BSP, LogP . Преобразования параллелизации цик- лов. Доставка данных, отображение массива данных на распределенную систему, избыточность. Влияние аппаратной реализации PRAM и про- блемы когерентности данных. Модели конкурентной и исключительной примитивных операций с памятью (EREW, CRCW, CREW, QRQW). Тема 8. Средства разработки параллельных вычислений с исполь- зованием потоков (нитей) кода. Процессы и потоки (нити) управления. Понятие процесса. Процессы с поддержкой многопоточности. Диспет- черизация процессов. Динамическая и статистическая связь между про- цессором и очередью. Ведущие и разделяемые планировщики процес- сов. Взаимодействие планировщика со структурами системных данных и примитивов ядра ОС. Состав и функции диспетчера и системных управляющих программ – программы инициализации, программы тай- мирования, программы управления восстановлениями. Краткосрочное планирование процессов и потоков в многопроцессорной системе. Со- ставляющие ядра и пользователя в процессах в UNIX. Сигналы как про- стейшие средства коммуникации. Коммуникация и синхронизация про- цессов в централизованных архитектурах Основные понятия и опреде- ления. Задача передачи данных между процессами "читатель -писатель. Тупики. Модели для анализа свойств асинхронных процессов. Алго- ритм Дийкстры для задачи об обедающих философах. Понятие тупико- вой ситуации и способы борьбы с ней. Тема 9. Средства разработки распределенных вычислений с ис- пользованием параллельной виртуальной машины PVM. Использование функций библиотеки Pvmlib. Состав функций. Компиляция и запуск программ в среде PVM. Тема 10. Протокол и библиотеки MPI. Состав функций, типы дан- ных, организация обмена данными. Пример использования библиотеки MPI. Среда выполнения LAM. Установка, использование (компиляция и запуск программ, конфигурация вычислительной системы). 10 Тема 11. Удаленные вызовы процедур. Высокоуровневый и низко- уровневый интерфейс программирования. XDR-преобразования, аутен- тификация, широковещательный режим. Использование технологий DCOM и CORBA для создания распределенных приложений. Язык опи- сания интерфейсов IDL. Тема 12. Язык Perl как средство обработки текстовой информации. Синтаксис языка Perl. Переменные, операции, операторы. Регулярные выражения. Массивы, хэши, списки. Ссылки, функции и подпрограммы. Тема 13. Сложные типы языка Perl: список списков, список хэшей, хэш списков, хэш хэшей, структуры высших порядков. Методы работы со сложными типами, ввод и вывод, обращения к элементам структур. Объектные свойства языка Perl 5 -й версии и выше. Внутреннее пред- ставление информации в языке Perl. Дерево классов, описывающее ти- пы хранимой информации (perl guts). 2.3. Перечень тем лабораторных занятий Тема 1. Блокировка файлов, работа с файлами большого размера. Создание битовой карты занятости секторов раздела жесткого диска. Тема 2. Применение семафоров в классическая задача Дийкстры об обедающих с задаваемым количеством разделяемых ресурсов (вилок) и потребителей (философов). Тема 3. Параллельное вычисление кратного интеграла численным методом с использованием механизма потоков на многоядерном про- цессоре. Измерение времени выполнения. Тема 4. Использование языка Perl для синхронизации файлов с па- ролями (passwd, shadow) в компьютерном классе. Тема 5. Знакомство с компилятором с языка OCCAM, – kroc, про- грамма вычисления числовых последовательностей конвейерным спо- собом. Программирование отдельных звеньев конвейера. Тема 6. Программа вычисления интеграла типа свертки на ОККАМе, реализация конвейерным способом на основе прототипа умножения мат- рицы на вектор. Тема 7. Разработка распределенных приложений с использованием PVM, MPI или CORBA (модель обслуживания клиентов банка через банкомат). Тема 8. Написание модуля администрирования паролей (на языке Perl) с помощью webmin. 11 3. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ 3.1. Перечень и тематика самостоятельных работ студентов В рамках общего объема часов, отведенных для изучения дисцип- лины, предусматривается выполнение следующих видов самостоятель- ных работ студентов (СРС): изучение теоретического материала при подготовке к защите лабораторных работ, итоговое повторение теоре- тического материала. Для самостоятельного изучения дисциплины выносится часть ма- териала по темам 4, 6 -8 дисциплины с возможностью консультации у ведущего преподавателя общим объемом 50 часов СРС. Для закрепле- ния материала и приобретения навыков расчета рекомендуется выпол- нение следующих задач: 1. Удаленная работа на многоядерном сервере, для чего студенты получают регистрационное имя и пароль у преподавателя; 2. Изучение системных вызовов и приобретение навыков при рабо- те с ними на языке С, обработка ошибок (при отрицательном коде воз- врата). 3. Установка и настройка LAM-MPI,. Задания и методические указания по их выполнению, вместе с не- обходимыми программными средствами для выполнения работ, разме- щаются перед выполнением соответствующих работ на сервере кафед- ры ИТС [4]. Для выполнения лабораторных работ в соответствии с разделом 2.2 настоящей учебной программы студент должен предварительно са- мостоятельно освоить теоретический материал соответствующих тем. Для защиты работы он должен знать теоретический материал и продемонстрировать знание путем написания программ. Объем СРС, отводимый на эту работу составляет 50 часов. На подготовку к экзамену отводится 20 часов СРС. 3.2. Состав технических средств и рекомендации по работе с ними Для проведения лабораторных работ и самостоятельного изучения дисциплины используются компиляторы языков программирования C и C++ и утилиты, связанные с их использованием в ОС UNIX (make, auto- config, distcc, Kdevelop etc. ). При выполнении лабораторных работ, свя- занных с использованием специфических программных средств ( Perl, 12 MICO, LAM/MPI, etc.) студенты устанавливают эти продукты самостоя- тельно, загружая их с сервера [4]. Для выполнения работ на языке ОККАМ рекомендуется использовать мобильный компилятор kroc. 3.3. Обзор рекомендованной литературы Дисциплина «Системное программное обеспечение» относится к бурно развивающейся области программирования, в которой совершен- ствование аппаратной части опережает развитие практических средств разработки программ, а теоретические исследования почти отсутству- ют. По тематике курса выпущено большое количество печатных изда- ний, в качестве основы можно рекомендовать книги [1 -3]. При выпол- нении лабораторных работ, связанных с разработкой MPI, рекоменду- ются книги из [4]. Для ознакомления с методами администрирования м способами решения задач управления потоком кода можно использо- вать [2]. Для изучения места курса в составе программистских дисцип- лин можно рекомендовать издание [3]. Для выполнения лабораторных работ во ВГУЭС материалы в дос- таточном количестве изданы и размещены на сервере « bkv» [4]. По языку ОККАМ, пожалуй существует единственный русскоя- зычный источник [6]. Эти материалы соответствуют перечню лабора- торных работ раздела 2.2. 13 4. СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ 4.1. Основная литература Терренс Чан. Системное программирование на С++ для UNIX. – СПб.: Вhv, 2007. Торчинский Ф. UNIX. Практическое пособие администратора. – 2-е изд. – СПб.; М.: Символ, 2008. Одинцов И. Профессиональное программирование: системный под- ход. – 3-е изд. – СПб.: Вhv, 2009. 4.2. Дополнительная литература ftp://bkv.vvsu.ru/SPO – особенно полезная информация в папке BOOKS. Здесь же материалы к лабораторным. Робачевский. А.и др. Операционная система UNIX. – СПб.: Bhv, 2010. Джоунз Г. Программирование на языке Оккам: пер. с англ. – М.: Мир,1989. – 208 с. Васильев Б.К. Системное программное обеспечение. Методические указания по курсовыми работам. – Владивосток: Изд-во ВГУЭС, 2002. 14 СОДЕРЖАНИЕ ВВЕДЕНИЕ ....................................................................................................1 1. ОРГАНИЗАЦИОННО -МЕТОДИЧЕСКИЕ УКАЗАНИЯ .......................4 2. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ ............................................................8 3. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ ........................................................ 11 4. СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ .................................. 13 |