- •Введение
- •1 Тема 7. Подсистема управления вводом-выводом
- •1.1 Язык С как стандарт взаимодействия с ОС
- •1.2 Системные операции для работы с файловой системой
- •1.2.1 Системные вызовы open() и close()
- •1.2.2 Системные вызовы read() и write()
- •1.2.3 Системный вызов lseek()
- •1.3 Создание специальных файлов
- •1.4 Запрос информации о статусе файлов
- •1.5 Каналы
- •1.5.1 Полудуплексные каналы UNIX
- •1.5.2 Именованные каналы FIFO
- •1.6 Дублирование дескрипторов файлов
- •1.7 Монтирование и демонтирование ФС
- •1.8 Ссылки на имена файлов
- •1.9 Лабораторная работа по теме №7
- •1.9.1 Интегрированная среда разработки Eclipse
- •1.9.2 Список заданий выполняемых работ
- •1.9.3 Проблема типов в языке С
- •1.9.4 Анализ структуры MBR блочных устройств
- •1.9.5 Запрос информации о статусе файлов
- •1.9.6 Неименованные каналы ядра ОС
- •1.9.7 Именованные каналы FIFO
- •1.9.8 Монтирование flashUSB
- •1.9.9 Работа с именами файлов
- •2 Тема 8. Подсистема управления памятью
- •2.1 Классификация способов управления ОЗУ
- •2.2 Программный и аппаратный способы адресации памяти
- •2.3 Страничная и сегментная адресации памяти
- •2.4 Комбинированный способ адресации памяти
- •2.5 Лабораторная работа по теме №8
- •2.5.1 Структура поцесса
- •2.5.2 Определяемые сегменты процесса
- •2.5.3 Создание и удаление процессов из памяти
- •2.5.4 Динамическое выделение и освобождение памяти процесса
- •3 Тема 9. Базовое взаимодействие процессов
- •3.1 Подсистема управления процессами
- •3.2 Синхронизация процессов
- •3.3 Стандарты POSIX
- •3.4 Системные вызовы ОС по управлению процессами
- •3.5 Системный вызов fork() и каналы процесса
- •1.5.1 Пример использования каналов процессов
- •1.5.2 Имитация конвейеров языка shell
- •3.6 Нити (Threads)
- •3.7 Сигналы POSIX
- •3.8 Лабораторная работа по теме №9
- •3.8.1 Системные вызовы общей группы
- •3.8.2 Управление потоками процессов
- •3.8.3 Обработка сигналов ОС
- •4 Тема 10. Асинхронное взаиодействие процессов
- •4.1 Проблемы распределения ресурсов ОС
- •4.2 Системный пакет IPC
- •4.3 Утилиты управления средствами пакета IPC
- •Утилита ipcmk
- •Утилита ipcs
- •Утлита ipcrm
- •4.4 Семафоры
- •4.5 Задача об обедающих философах
- •4.5.1 Описание задачи
- •4.5.2 Выбор стратегии решения
- •4.5.3 Модель философа
- •4.5.4 Программа-монитор
- •4.6 Лабораторная работа по теме №10
- •4.6.1 Синхронизация двух процессов
- •4.6.2 Задача «Обедающие философы»
- •5 Тема 11. Эффективное взаиодействие процессов
- •5.1 Прикладные средства пакета IPC
- •5.2 Разделяемые сегменты памяти
- •5.3 Задача о читателях и писателях
- •5.4 Передача сообщений
- •5.5 Лабораторная работа по теме №11
- •5.5.1 Задачи с разделяемыми сегментами памяти
- •5.5.2 Программы передачи сообщений
- •6 Тема 12. Системная шина D-Bus
- •6.1 Графические среды ОС
- •6.2 Рабочий стол пользователя
- •6.3 Различия графических сред ОС
- •6.4 X-сервер UNIX
- •6.5 Архитектура шины D-Bus
- •6.5.2 Бибиотека libdbus
- •6.5.3 Проекции ПО D-Bus на языки программирования
- •6.6 Лабораторная работа по теме №12
- •6.6.1 Утилита qdbus
- •6.6.2 Взаимодействие через шину с приложением evince
- •Заключение
- •Список использованных источников
54
1.9 Лабораторная работа по теме №7
Для выполнения лабораторных работ №7 - №12 по дисциплине «Операционные системы. Часть 2» используется таже среда ОС УПК АСУ, что и при выполнении лабораторных работ №1 - №6, описанных в [4].
Отличительными особенностями является следующее:
•используется новый архив темы os2, поэтому отчет по первой части лабораторных работ №1 - №6 следует сохранить отдельно на flashUSB студента;
•для выполнения лабораторных работ №7 - №12 используется инструмен-
тальная среда разработки на языке С — IDE Eclipse CDT.
Поэтому, для начала выполнения работ, студент должен сделать следующее:
•запустить ОС УПК АСУ, как это делалось при изучении первой части дисциплины, не подключая темы (только до уровня пользователя asu);
•обратиться к преподавателю и скопировать на личный flashUSB файл архива os2-home.ext4fs;
•подключить тему os2, выйти из сесии asu и зайти пользователем upk.
Врезультате указанных действий, студент войдет в рабочую среду обучения, а заставка рабочего стола ОС будет иметь вид, как показанно на рисунке 1.16.
Рисунок 1.16 - Вид рабочего стола системы после загрузки темы os2
55
Замечание
Если заставка рабочего стола осталась как у пользователя asu, то студент должен самостоятельно уметь установить ее из файла /home/upk/Изображения/os2-img.png.
Рабочий стол имеет теже ярлыки, что и в первой части изучаенной дисциплины. Дополнительно добавлены:
•os2_selfworks.pdf — методическое пособие по шести темам самостоятельной
работы студента, для второй части изуемой дисциплины, в котором отражены все вопросы теоретической части и лабораторных работ;
•Отчет2.doc — шаблон отчета, который студент должен оформлять в процессе выполнения лабораторных работ;
•EclipseC — значек запуска среды разработки Eclipse.
Учебники и методические пособия по изучаемой дисциплине находятся в директории /home/upk/Документы, где:
•каталог Темы — содержит файлы пособий по первым шести темам;
•каталог Темы2 — содержит файлы пособий по темам №7 - №12.
•учебное пособие по данной изучаемой теме находится в файле Тема7_os.pdf.
1.9.1 Интегрированная среда разработки Eclipse
Интегрированная среда разработки Eclipse (Eclipse IDE), первоначально была разработана корпорацией IBM для собственных внутренних нужд. Со временем, поддержка и совершенствование такой системы стало проблематичной, поэтому дальнейшее сопровождение и развитие системы было передано некомерческой общественной организации Eclipse Foudation.
Eclipse IDE является свободным кроссплатформенным ПО, лицензия коорой соответствует Eclipse Public License. Эта среда писана на языке Java и, первоначально предназначалась для разработки программ на языке Java. Но, со временем, к ней стали добавляться модули, могут поддерживать многие языки программирования, включая C/C++, Perl, Ruby, Python, PHP и другие.
Позитивные качества этой системы:
•свободно распространяемое ПО с высокой степенью переносимости;
•простая форма установки, требующая только наличие исполнительной среды Java и отдельной директории для размещения дистрибутива.
Замечание
В среде ОС УПК АСУ установлен 64-битная версия Eclipse CDT (C/C++ Development Tools):
•дистрибутива Eclipse CDT; установлек как стандартный пакет Arch Linux;
•директория разработки /home/upk/workspaceC.
56
Задание 1.1
Провести проверку наличия ПО для работы IDE Eclipse, согласно указанного выше замечания.
Запустить среду разработки, следуя текста примера действий, изложенных ниже. Убедиться в готовности среды разработки IDE Eclipse, запустив тестовый пример, указанный по ходу изложения учебного материала.
Отразить полученные результаты в личном отчете.
Замечание
При выполнении задания 1.1, все проблемы с отсутствием необходимого ПО или с запуском приложений решаются с участием преподавателя.
В дальнейшем, студент сам должен устранять возникающие проблемы.
Для запуска IDE Eclipse, следует воспользоваться значком «EclipseC», который находится на рабочем столе ОС УПК АСУ. Появится стилизованная заставка, указывающая, что идет процесс загрузки среды разработки. Затем, появится окно с заставкой Workbench, показанное на рисунке 1.17.
Рисунок 1.17 — Окно среды Eclipse при первом запуске среды разработки
57
«Выделив мышкой» в правом верхнем углу окна, на значке Workbench, перейдем к рабочему окну среды разработки, показанному на рисунке 1.18. Это окно будет сразу появляется, при повторных запусках среды Eclipse.
Рисунок 1.18 — Рабочее окно Eclipse без созданных еще проектов
Освоившись с видом рабочего окна и содержимым меню среды разработки, следует продолжить выполнение задания 1.1 по следующей схеме:
•создать тестовый проект, выбрав его тип из набора имеющихся шаблонов среды разработки;
•откомпилировать и запустить созданный проект на выполнение;
•в процессе отладки, странить возникающие проблемы запуска и убедиться в
готовности среды разработки, для последующих заданий. Выполним указанную последовательность действий.
Новый проект разработки создается посредством выбора в меню системы Eclipse:
File/New/C Project
Врезультате, появится окно, показанное на рисунке 1.19. В этом окне, следует:
•указать имя проекта lab7;
58
•выбрать тип проекта Hello Wolrd ANSI C Project;
•указать инструмент разработки Linux GCC и «кликнуть» кнопку «Finish».
Рисунок 1.19 — Окно задания имени, типа и средств разработки проекта lab7
Замечание
Вместо имени проекта lab7 можно было бы указать любое имя, но желательно придерживаться имен рекомендуемых данным методическим пособием. Тогда преподавателю будет легче контролировать процесс обучения студента.
В результате указанных действий, среда разработки Eclipse создаст проект с именем lab7 и, в экран редактора, выведет исходный текст встроенного шаблона с именем lib7.c, показанного на рисунке 1.20.
Чтобы ативизировать выполнение данного проекта, необходимо:
• провести компиляцию текста проекта, например нажатием клавишь Ctrl-B,
59
при выделенном окне исходного текста lab7.c;
•запустить проект, активировав значек Run или, из главного меню системы разработки, выбрав Run->Run.
Рисунок 1.20 — Созданный шаблон проекта lab7
Замечание
При первом запуске проекта может появиться окно, показанное на рисунке 1.21.
Рисунок 1.21 — Окно, появляющееся при первом напуске нового проекта
60
Результат выполнения программы по тестовому шаблону проекта lab7, показан на рисунке 1.22.
Рисунок 1.22 — Результат выполнения программы проекта lab7
Замечание
Вывод программы, показанный на рисунке 1.22, говорит о том, что среда разработки настроена правильно и готова для выполнения последующих заданий.
Далее следует:
•оформить в отчете результаты выпоненного задания;
•перейти к выполнению заданий пункта 1.9.2.
Замечание
После выполнения каждого задания, следует оформлять его результаты в индививидуальном отчете студента, согласно разделам предоставленного шаблона в файле
Отчет2.doc.
Практика показывает, что если студент оформляет отчет после нескольких выполненных заданий, - это снижает эффективность обучения!