Программа дисциплины \"Операционные системы\" icon

Программа дисциплины "Операционные системы"



Смотрите также:




Национальный исследовательский университет «Высшая школа экономики»
Программа дисциплины "Операционные системы" для направления 230100.01 "Информатика и вычислительная техника" подготовки бакалавра


Правительство Российской Федерации


Федеральное государственное автономное образовательное учреждение высшего профессионального образования
"Национальный исследовательский университет
"Высшая школа экономики"



Факультет Информационных технологий и вычислительной техники


Программа дисциплины "Операционные системы"


для направления 230100.68 "Информатика и вычислительная техника" подготовки бакалавра


Автор программы:

Карпов В.Э., к.т.н, доцент

vkarpov@hse.ru


Одобрена на заседании кафедры "Вычислительные системы и сети" «___»____________ 2012 г.

Зав. кафедрой Вишнеков А.В. ____________________


Рекомендована Комиссией по учебной

и учебно-методической деятельности МИЭМ НИУ ВШЭ «___»_________________ 20 г

Председатель Тумковский С.Р. _________________________


Утверждена УС МИЭМ НИУ ВШЭ «___»_____________20 г.

Ученый секретарь Симонов В.П. ________________________


Москва, 2012

Настоящая программа не может быть использована другими подразделениями университета и другими вузами без разрешения кафедры-разработчика программы.
^

1Область применения и нормативные ссылки


Настоящая программа учебной дисциплины устанавливает минимальные требования к знаниям и умениям студента и определяет содержание и виды учебных занятий и отчетности.

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

Программа разработана в соответствии с:

  • Федеральным государственным образовательным стандартом высшего профессионального образования по направлению 230100.68 "Информатика и вычислительная техника" (квалификация "специалист");

  • Образовательной программой по направлению 230100.68 "Информатика и вычислительная техника" для подготовки специалистов по специализации "Вычислительные машины, комплексы, системы и сети";

  • Рабочим учебным планом университета по направлению 230100.68 "Информатика и вычислительная техника" подготовки специалистов по специализации "Вычислительные машины, комплексы, системы и сети", утвержденным в 2012 г.
^

2Цели освоения дисциплины


Целью освоения данной дисциплины является изучение основ построения операционных систем (ОС) и общих принципов организации основных компонент системного программного обеспечения.

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

^

3Компетенции обучающегося, формируемые в результате освоения дисциплины


В результате освоения дисциплины студент должен:

  • Знать:

  • мировые тенденции развития вычислительной техники и информационных технологий (ПК 1);

  • тенденции развития функций и архитектур программных систем и комплексов;

  • методы, способы и средства разработки программ (ПК 5);

  • методы организации работы в коллективах разработчиков ПО, направления развития методов и программных средств коллективной разработки ПО (ПК 7);

  • принципы организации и архитектуру базовых компонент системного программного обеспечения;

  • основные подходы к проектированию ОС;

  • основы организации ОС UNIX.



  • Уметь:

  • находить, анализировать и обрабатывать научно-техническую информацию, полученную в результате проектирования и реализации ПО (ОК 2);

  • работать в команде разработчиков ПО, применять знания, полученные в результате изучения дисциплины, на практике (ОК 4);

  • грамотно использовать терминологию, принятую в данной области;

  • извлекать полезную научно-техническую информацию из электронных библиотек, реферативных журналов, сети Интернет (ОК 6);

  • программировать на командном языке;

  • работать в ОС UNIX и создавать системные утилиты для этой ОС.

  • Иметь навыки:

  • совершенствования и развития своего интеллектуального и общекультурного уровня (ОК 1);

  • самостоятельного обучения новым методам исследования (ОК 2);

  • применения перспективных методов исследования и решения профессиональных задач на основе знания мировых тенденций развития вычислительной техники и информационных технологий (ПК 1);

  • использования основных методов, способов и средств получения, хранения, переработки информации, навыки работы с компьютером как средством управления информацией;

  • использования современных операционных систем, операционных и сетевых оболочек, сервисных программ;

  • выбора архитектуры современных компьютеров, систем, комплексов и сетей;

  • выбора, проектирования, реализации, оценки качества и анализа эффективности программного обеспечения для решения задач в различных предметных областях;

  • использования методов проектирования системного программного обеспечения;

  • организации локального и сетевого обмена данными между процессами.



^

4Место дисциплины в структуре образовательной программы


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

Перед изучением дисциплины студент должен знать основы информатики и программирования, архитектуры вычислительных систем, основы математической логики, теории алгоритмов и дискретной математики. Дисциплина является предшествующей для дисциплин "Базы данных", "Информационные системы", "Организация высокопроизводительных систем" и "Управление прикладными информационными системами".
^

5Тематический план учебной дисциплины




Название раздела

Всего часов

Аудиторные часы

Самостоятельная работа

Лекции

Лаб. работы



Введение. Основные понятия и определения

10

4




6



Работа в ОС UNIX. Пользовательский аспект

22

6

10

6



Файловая система ОС UNIX

16

6

10






Процессы ОС UNIX

28

6

22






Взаимодействие процессов

36

6

30






Краткая характеристика TCP/IP

10

2




8



Сетевые ОС

12

2




10



Многопотоковое программирование

10

4




6




Итого:

144

36

72

36



^

6Формы контроля знаний студентов


Тип контроля

Форма контроля

1 год

2 год

Параметры **

1

2

3

4

Промежуточный

Зачет




*







Устный зачет; на подготовку отводится 40 минут.

Итоговый

Экзамен










*

Устный экзамен, на подготовку отводится 60 минут.
^

6.1Критерии оценки знаний, навыков


На промежуточном контроле в ходе зачета студент должен продемонстрировать:

  • знание профессиональной терминологии (ИК-Б2.1_2.2._2.4.1);

  • использование полученной информации при решении профессиональных задач (СК-Б6);

  • знание принципов организации файловой системы ОС UNIX;

  • знание особенностей программирования на командном языке операционной системы UNIX;

  • знание принципов управления процессами в операционной системе UNIX.

На итоговом контроле в ходе экзамена студент должен продемонстрировать:

  • знание профессиональной терминологии (ИК-Б2.1_2.2._2.4.1);

  • использование полученной информации при решении профессиональных задач (СК-Б6);

  • знание принципов организации разделения ресурсов в операционной системе UNIX;

  • знание принципов организации управления обменом данными в операционной системе UNIX;

  • способность оценивать полученные решения, обосновывать их рациональность (ИК-Б1.1).


^

6.2Порядок формирования оценок по дисциплине


Преподаватель оценивает работу студентов на лабораторных занятиях (выполнение лабораторных работ). Без выполненных лабораторных работ студент не допускается в сдаче зачета (во 2-м модуле) и экзамена (в 4-м модуле).

Промежуточная оценка за 2-й этап выставляется по результатам зачета.

Итоговая оценка за 4-й этап выставляется по результатам экзамена. На экзамене студент может получить дополнительный вопрос, ответ на который оценивается в 1 балл.

Все оценки выставляются по 10-ти балльной шкале. В диплом выставляет результирующая оценка, которая равна итоговой оценке за 4-й этап.
^

7Содержание дисциплины


1. Основные понятия

Общий обзор особенностей системы. История. Структура системы. UNIX с точки зрения пользователя. Архитектура операционной системы UNIX. Основные понятия системы. Структуры данных ядра. Управление системой. Архитектуры ядер. Монолитное ядро, экзоядро. Кольца защиты. Режимы супервизора и системного управления. Модель взаимодействия между ЦП и уровнями абстракции ОС.

Литература:

  1. Донован Дж. Системное программирование. /Пер. с англ. – М.: Мир, 1975.

  2. Керниган Б.В., Пайк Р. UNIX – универсальная среда программирования. Пер. с англ. Березко, Иващенко под ред. М.И.Белякова. – М.: "Финансы и статистика", 1992. – 304 с.

  3. Соловьев Г.Н., Никитин В.Д. Операционные системы ЭВМ. – М.: «Высшая школа», 1989. – 255 с.


^ 2. Работа в ОС UNIX. Пользовательский аспект

Многопользовательский режим. Сервер и терминалы. Программа telnet (PutTy). Регистрация в системе. Программа login. Файловая система. Пользователи системы и владельцы файлов. Типы файлов. Многозадачность. Командный язык системы UNIX. Интерпретатор Shell. Компиляция программ. Основные справочные команды. Команды работы с каталогами и файлами. Перенаправление потоков и программные каналы.

Литература:

  1. Донован Дж. Системное программирование. /Пер. с англ. – М.: Мир, 1975.

  2. Керниган Б.В., Пайк Р. UNIX – универсальная среда программирования. Пер. с англ. Березко, Иващенко под ред. М.И.Белякова. – М.: "Финансы и статистика", 1992. – 304 с.

  3. Таненбаум Э., Вудхалл А. Операционные системы. Разработка и реализация. Классика CS. – 3-е изд. – СПб.: Питер, 2007. – 704 с.


^ 3. Файловая система ОС UNIX.

Типы файлов. Базовая файловая система UNIX System V. Загрузочный блок. Суперблок. Индексные дескрипторы. Каталоги s5fs. Достоинства и недостатки файловой системы System V. Файловая система BSD UNIX FFS. Каталог FFS. Виртуальная файловая система. Управление файлами. Доступ к файловой системе.

Программирование операций ввода-вывода. Файловые таблицы. Системные вызовы для работы с каталогами. Работа со специальными файлами устройств и каналами. Работа с файловыми дескрипторами. Монтирование и демонтирование файловых систем.

Литература:

  1. Керниган Б.В., Пайк Р. UNIX – универсальная среда программирования. Пер. с англ. Березко, Иващенко под ред. М.И.Белякова. – М.: "Финансы и статистика", 1992. – 304 с.

  2. Робачевский А.М. Операционная система UNIX. – СПб.: BHV – Санкт-Петербург, 1997. – 528 с.


^ 4. Процессы ОС UNIX.

Состояния процесса. Контекст процесса. Управление процессом. Выполнение процесса. Создание процесса. Сигналы. Завершение выполнения процесса. Ожидание завершения выполнения процесса. Вызов других программ. Загрузка системы и начальный процесс. Идентификатор процесса и таблица процессов. Таблица процессов LINUX. Команды работы с процессами. Системные вызовы для работы с процессами. Зомби и сироты. Группы процессов.

Диспетчеризация процессов и ее временные характеристики. Планирование выполнения процессов. Системные операции, связанные со временем. Таймер.

Литература:

  1. Керниган Б.В., Пайк Р. UNIX – универсальная среда программирования. Пер. с англ. Березко, Иващенко под ред. М.И.Белякова. – М.: "Финансы и статистика", 1992. – 304 с.

  2. Робачевский А.М. Операционная система UNIX. – СПб.: BHV – Санкт-Петербург, 1997. – 528 с.


^ 5.Взаимодействие процессов

КАНАЛЫ. Неименованные и именованные каналы. Создание каналов. Особенности операций чтения/записи при работе с каналами.

СИГНАЛЫ. Прерывания и особые ситуации. Уровни прерывания процессора. Сигналы как средство взаимодействия процессов. Причины возникновения сигналов. Обработка сигналов. Получение и обработка сигналов. Системные вызовы для работы с сигналами.

Синхронизация. СЕМАФОРЫ И РАЗДЕЛЯЕМАЯ ПАМЯТЬ.

Общие понятия и определения. Синхронизация процессов. Семафоры. Семафоры и разделяемая память стандарта POSIX. Некоторые полностью и частично POSIX-совместимые системы. Разделяемая память стандарта POSIX. Системные вызовы для работы с разделяемой памятью. Ввод-вывод с отображением в память . Семафоры стандарта POSIX. Системные вызовы для работы с семафорами. Примеры использования семафоров и разделяемой памяти. Взаимодействие процессов.

Использование разделяемой памяти. Системные вызовы для работы с разделяемой памятью. Реализация семафоров. Системные вызовы для работы с семафорами. Структуры восстановления.

^ ЗАКЛЮЧИТЕЛЬНЫЕ ЗАМЕЧАНИЯ О МЕХАНИЗМАХ IPC

Задача о кольцевом буфере. Связь механизмов IPC.

Литература:

  1. Бах Морис Дж. Архитектура операционной системы UNIX. //THE DESIGN OF THE UNIX OPERATING SYSTEM by Maurice J. Bach// Пер. с англ. к.т.н. Крюкова А.В. Copyright 1986 Корпорация Bell Telephone Laboratoties. Издано корпорацией Prentice-Hall. Отделение Simon & Schuster Энглвуд Клиффс, Нью-Джерси 07632. Серия книг по программному обеспечению издательства Prentice-Hall. Консультант Брайан В. Керниган.

  2. Робачевский А.М. Операционная система UNIX. – СПб.: BHV – Санкт-Петербург, 1997. – 528 с.

^ 6. Краткая характеристика TCP/IP

Взаимодействие в сети. Протоколы. Семейство протоколов TCP/IP. Протокол TCP. Установка связи между двумя процессами протокола TCP.

ГНЕЗДА. Системные вызовы для работы с сокетами. Некоторые функции и утилиты. Примеры приложений "клиент-сервер". RPC. Удаленные вызовы процедур.

Литература:

  1. Робачевский А.М. Операционная система UNIX. – СПб.: BHV – Санкт-Петербург, 1997. – 528 с.

7. Сетевые ОС.

Распределенные системы. Периферийные процессоры. "Прозрачные" распределенные файловые системы. Распределенная модель без передаточных процессов.

Литература:

  1. Соловьев Г.Н., Никитин В.Д. Операционные системы ЭВМ. – М.: «Высшая школа», 1989. – 255 с.

^ 8. Многопотоковое программирование

Обзор современного системного программного обеспечения. Их основные характеристики и особенности.

Сохранность и защита программных систем. Программные и аппаратные средства защиты. Надежность программно-аппаратных комплексов. Интерфейсы и основные стандарты в области системного программного обеспечения.

Литература:

  1. Хэвиленд К., Грей Д., Салама Б. Системное программирование в UNIX. Руководство программиста по разработке ПО. Пер. с англ. – М.: ДМК Пресс, 2000. – 368 с.

  2. Т.Чан Системное программирование на C++ для UNIX. / Пер. с англ. – К.: Издательская группа BHV, 1997. – 592 с.


Разделы дисциплин и виды занятий

№ п/п

Наименование раздела дисциплины

Лекции

Лаб. раб.

СРС



Введение. Основные понятия и определения

+

+






Работа в ОС UNIX. Пользовательский аспект

+

+

+



Файловая система ОС UNIX

+

+

+



Процессы ОС UNIX

+

+

+



Взаимодействие процессов

+

+

+



Краткая характеристика TCP/IP

+




+



Сетевые ОС

+




+



Многопотоковое программирование

+




+


^

8Образовательные технологии


В рамках учебного процесса по дисциплине будут реализованы традиционные (лекции, лабораторные работы, демонстрации, объяснения) и активные методы обучения:

 дискуссионные (групповое обсуждение проблемы, анализ практических ситуаций),

 индивидуальные (самостоятельное обучение, поисковая работа).
^

8.1Методические рекомендации преподавателю


Выдавать задания на лабораторные работы заранее и предлагать студентам приходить на занятия с подготовленным вариантом решения задания. Занятия на лабораторных работах ведутся в дисплейном классе.
^

8.2Методические указания студентам


Вести рабочую тетрадь с проработкой и заметками по изучаемым вопросам.

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

Для лучшего усвоения материала перед каждой лекцией знакомиться с лекционным материалом, который доступен в электронном виде на сайте rema44.ru. А после лекции самостоятельно изучать указанные материалы учебников и по всем возникающим вопросам консультироваться лично у преподавателя в часы занятий, консультаций или по электронной почте.
^

9Оценочные средства для текущего контроля и аттестации студента

9.1Тематика заданий текущего контроля


Текущий контроль не предусмотрен.

9.2Тематика лабораторного практикума


На практических занятиях изучаются основы использования командного языка shell, работе с файловой системой UNIX, программному управлению процессами и работе с разделяемыми ресурсами.

Лабораторные занятия, их наименование и объем в часах

№ п/п

Номер раздела курса

Содержание

Часы

1

1, 2

Тема: Знакомство с системой UNIX.

1.1. Основные команды

1.2. Командные интерпретаторы

1.3. Компилятор gcc

10

2

3

Тема: Файловая система ОС UNIX.

2.1. Системные вызовы для работы с файлами

2.2. Работа с каталогами

2.3. Каналы и специальные файлы устройств

10

3

4

Тема: Управление процессами.

3.1. Управление процессами. fork, exit, exec

10

4

4

Тема: Управление процессами.

3.2. Сигналы

3.3. Синхронизация с помощью каналов

12

5

5

Тема: Разделяемые ресурсы. Синхронизация.

4.1. Семафоры UNIX

10

6

5

Тема: Разделяемые ресурсы. Синхронизация.

4.2. Разделяемая память

10

7

5

Тема: Разделяемые ресурсы. Синхронизация.

4.3. Клиент-серверные приложения

10


Варианты заданий на л.р. №1:

  1. Посчитать количество пользователей в системе.

  2. Отсортировать список файлов текущей директории в обратном порядке и записать его в файл.

  3. Посчитать количество файлов текущего каталога, содержащих подстроку "include".

  4. Посчитать, сколько раз пользователь X вошел в систему.

  5. Отсортировать список текстовых файлов текущей директории в алфавитном порядке и записать его в файл.

  6. Удалить из текущего каталога все файлы, содержащие подстроку "text".

  7. Объединить все файлы с расширением ".txt" в один файл.

  8. Посчитать, сколько процессов запущено с данного терминала.

  9. Вывести на экран отсортированный в алфавитном порядке список файлов, содержащих подстроку "include".


Варианты заданий на л.р. №2:

  1. Написать программу, считывающую из входного файла байты с 10-го по 20-й и с 30-го по 32 и записывающую эти байты в выходной файл. Имена файлов вводятся в командной строке.

  2. Написать программу, меняющую в файле местами группы байт с 21-го по 28-й и с 33-го по 40-й. Имя файла вводится в командной строке.

  3. Написать программу, переписывающую из входного файла каждый n-ый байт в выходной файл (n = 10,20,...). Имена входного и выходного файлов вводятся в командной строке.

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

  5. Написать программу, осуществляющую поиск заданного шаблона (последовательности символов) в файле. При обнаружении шаблона заменить его на последовательность символов с кодом 0 такой же длины, что и длина шаблона. Имя файла и шаблон вводятся в командной строке.

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

  7. Написать программу кодировки входного файла на основании кодового слова с возможностью декодирования (алгоритм сложения по модулю два). Имя входного файла и кодовое слово вводятся в командной строке.

  8. Написать программу, осуществляющую подсчет количества строк в текстовом файле и запись полученного числа в начало этого файла первой строкой. Имя файла вводится в командной строке.

  9. Написать программу, которая осуществляет подсчет количества слов в текстовом файле и записывает полученное число в начало этого файла первой строкой. Имя файла вводится в командной строке.

  10. Написать программу, осуществляющую замену в файле всех символов с кодами 0-31 на пробелы. Имя файла вводится в командной строке.

  11. Написать программу, разбивающую текстовый файл на страницы по N строк, то есть добавляющую в файл после каждых N строк символ перевода страницы (код 12). Имя файла и число N вводятся в командной строке.

  12. Написать программу, переводящую текстовый файл из формата UNIX в формат DOS и обратно, т.е. добавляющую (или удаляющую) после символа перевода строки (код 10) символ возврата каретки (код 13). Имя файла и код перевода вводится в командной строке.

  13. Написать программу, выводящую в файл протокола список файлов указанной директории. Директория и имя файла протокола вводятся в командной строке; если имя файла не указано, список выводится на экран.

  14. Написать программу, определяющую количество файлов в поддереве каталогов, начиная с указанной директории. Имя директории вводится в командной строке.

  15. Написать программу, устанавливающую биты разрешения доступа по исполнению каждому файлу в указанной директории, если для этого файла разрешено исполнение хотя бы для одной группы пользователей. Имя директории вводится в командной строке.

  16. Написать программу, выводящую в файл протокола список файлов указанного каталога, созданных или модифицированных в текущий день. Имена протокола и каталога вводятся в командной строке.

  17. Написать программу, выводящую в файл список имен владельцев файлов в указанном каталоге. Имена файла и каталога вводятся в командной строке.

  18. Написать программу, выводящую в файл протокола список файлов из указанного каталога, имеющих n и более ссылок. Количество ссылок n, а также имена файла протокола и каталога вводятся в командной строке.

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

  20. Написать программу, вводящую N байт из стандартного входного потока или из входного файла, если он указан, и запрашивающую количество байт N с клавиатуры (с использованием дублирования потоков (dup)). Имя входного файла вводится в командной строке.

  21. Написать программу, выводящую содержимое входного файла на экран и дублирующую протокол (stderr) на экран с использованием дублирования потоков (dup). Имя входного файла вводится в командной строке.

  22. Написать программу, создающую файл, занимающий на диске N блоков. Количество блоков вводится в командной строке.


Варианты заданий на л.р. №3:

  1. Процесс 1 порождает потомка 2, который в свою очередь порождает потомка 3. Добиться того, чтобы эти процессы гарантированно заканчивались в порядке 3, 2, 1.

  2. Процесс 1 порождает потомка 2. Оба процесса после этого открывают один и тот же файл и пишут в него N байт (в цикле по одному байту). Объяснить полученный результат.

  3. Процесс 1 открывает файл и после этого порождает потомка 2. Процесс 1 пишет в файл (N байт), процесс 2 читает из файла и выводит прочитанное на экран. Объяснить полученный результат.

  4. Процесс 1 открывает файл и после этого порождает потомка 2. Процесс 1 пишет в файл, процесс 2 читает из файла и выводит прочитанное на экран. Организовать чтение после записи без использования сигналов.

  5. Процесс 1 открывает файл и порождает потомков 2 и 3. Потомки пишут в файл по N байт и завершают работу. После этого процесс 1 считывает данные из файла и выводит на экран. Объяснить полученный результат.

  6. Процесс 1 открывает файл и порождает потомка 2. Оба процесса после этого пишут в этот файл в цикле по N байт M раз. Объяснить полученный результат.

  7. Процесс 1 открывает файл и порождает потомка 2, после этого пишет в файл N байт, закрывает его и завершается. Потом процесс 2 пишет N байт в файл, закрывает файл и завершается. Для определения очередности записи использовать функцию fstat.

  8. Процесс 1 порождает потомка 2. Оба процесса открывают один и тот же файл и пишут в него по N байт. Организовать запись так, чтобы процессы не перекрывали друг друга.

  9. Процесс 1 открывает файл и порождает потомка 2, который в свою очередь порождает потомка 3. Процессы 2 и 3 пишут в общий файл, причем процесс 3 не может начать писать раньше, чем процесс 2. Организовать очередность без использования сигналов.

  10. Процесс 1 порождает процесс-потомок, ждет его завершения, после этого порождает еще один процесс-потомок и так N раз. Каждый процесс выдает на экран сообщения о начале и завершении работы.

  11. Процесс 1 открывает существующий файл и порождает потомков 2 и 3. Все процессы читают из файла данные по одному байту и выводят их на экран с пометками, какой именно процесс выводит данные. Объяснить полученный результат.

  12. Процесс 1 открывает файл и порождает потомка 2. Процесс 2 пишет N байт в файл по одному байту, процесс 1, не дожидаясь окончания процесса-потомка, начинает читать из файла по одному байту и выводит их на экран. Процесс 1 завершается, когда достигнут конец файла. Объяснить полученный результат.

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

а) 1 2 3

б) 1 3 2

в) 1 2 1 3 1

г) 1 2 3 1

д) 3 1 2

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

а) 1 2 3 2 1

б) 1 3 2 3 1

в) 3 2 1 2 3

г) 2 1 3 2 1

д) 3 1 2 1 3


Варианты заданий на л.р. №4:

  1. Процесс 1 порождает потомка 2, который в свою очередь порождает потомка 3. С помощью сигналов добиться того, чтобы эти процессы заканчивались в порядке 1, 2, 3.

  2. Процесс 1 открывает файл и после этого порождает потомка 2. Процесс 2 начинает запись в файл после получения сигнала SIG1 от процесса 1 и прекращает ее после получения от процесса 1 сигнала SIG2, который посылается через N секунд после SIG1. Затем процесс 1 читает данные из файла и выводит их на экран. (Задержку в N секунд организовать с помощью вызова alarm).

  3. Процесс 1 открывает файл и после этого порождает потомка 2, который в свою очередь порождает потомка 3. Процесс 2 пишет N байт в общий файл, потом процесс 3 тоже пишет N байт в файл, потом процесс 1 считывает данные из файла и выводит их на экран. Организовать очередность работы с использованием сигналов.

  4. Процесс 1 порождает потомка 2. Оба процесса после этого открывают один и тот же файл и пишут в него по очереди по N байт. Организовать M циклов записи с помощью сигналов.

  5. Процесс 1 открывает файл и после этого порождает потомка 2. Один процесс пишет в файл 1байт, посылает другому процессу сигнал, другой читает из файла 1байт, выводит его на экран и посылает сигнал первому процессу. Организовать N циклов запись/чтение.

  6. Процесс 1 открывает файл и порождает потомков 2 и 3. Потомки после сигнала от предка пишут в файл по N байт, посылают сигналы процессу 1 и завершают работу. После этого процесс 1 считывает данные из файла и выводит на экран.

  7. Процесс 1 открывает файл и порождает потомка 2, после этого пишет в файл N байт и посылает сигнал процессу 2. Процесс 2 пишет N байт в файл и посылает сигнал процессу 1. Процесс 1 по сигналу считывает данные из файла и выводит их на экран.

  8. Процесс 1 открывает файл и порождает потомков 2 и 3. Потомки пишут в файл по очереди по N байт (M циклов записи, организовать с помощью сигналов). Последний из них посылает сигнал процессу 1, который выводит данные из файла на экран.

  9. Процесс 1 открывает файл, порождает потомка 2, пишет в файл N байт и посылает сигнал SIG1 процессу 2. Процесс 2 читает данные и выводит их на экран. Если сигнал от процесса 1 не поступит через M секунд, процесс 2 считывает данные по сигналу SIGALRM.

  10. Процесс 1 открывает файл и порождает потомка 2, который в свою очередь порождает потомка 3. Процессы 2 и 3 пишут в общий файл, причем процесс 3 должен начать писать после процесса 2. Организовать очередность с помощью сигналов. Когда размер файла превысит N байт, процесс 1 посылает потомкам сигнал SIG2 о завершении работы и выводит данные из файла на экран.

  11. Процесс 1 открывает файл и порождает потомка 2. Процесс 1 с интервалом в 1 секунду (через alarm) посылает M сигналов SIG1 процессу 2, который по каждому сигналу пишет в общий файл по N чисел. Потом процесс 1 посылает процессу 2 сигнал завершения SIG2, и выводит данные из файла на экран.

  12. Процесс 1 открывает файл и порождает потомков 2 и 3. Процесс 1 с интервалом в 1 секунду (через alarm) по очереди посылает N сигналов SIG1 процессам 2 и 3, которые по каждому сигналу пишут в общий файл по M чисел. Потом процесс 1 посылает потомкам сигнал SIG2, процессы 2 и 3 завершаются. Процесс 1 считывает данные из файла и выводит их на экран.

  13. Процесс 1 открывает два файла и порождает потомков 2 и 3. Процессы 2 и 3 с интервалом в 1 секунду (через alarm) посылают по N сигналов процессу 1, который по каждому сигналу пишет в соответствующий файл по M чисел. Потом процессы 2 и 3 считывают данные из файлов, выводят их на экран и завершаются. Процесс 1 завершается последним.

  14. Процесс 1 открывает два файла и порождает потомков 2 и 3. Процессы 2 и 3 посылают по одному сигналу процессу 1, который по каждому сигналу пишет в соответствующий файл M чисел. Процессы 2 и 3 считывают данные из файлов и выводят на экран. С помощью сигналов организовать непересекающийся вывод данных.

  15. Процесс 1 открывает файл и порождает потомка 2. Процесс 2 по сигналу SIG1 от процесса 1 начинает писать в файл, по сигналу SIG2 прекращает запись, а потом по сигналу SIG1 завершается. Сигнал SIG1 поступает через 1 секунду после первого сигнала SIG2.

  16. Процесс 1 открывает файл и порождает потомка 2. Процессы по сигналам обмениваются данными через файл (по N байт). Процесс 1 читает данные, процесс 2 – записывает, причем всегда пишет в начало файла. Организовать M циклов записи/чтения. Прочитанные данные выводятся на экран.

  17. Процесс 1 открывает существующий файл и порождает потомка 2. Процессы по очереди (по сигналу SIG1) считывают по N байт из файла и выводят их на экран. Если одному из процессов встретился конец файла, то он посылает сигнал SIG2, и они оба завершаются.

  18. Процесс 1 порождает потомка 2. Процесс 1 пишет в общий файл число 1, процесс 2 – число 2. Используя сигналы, обеспечить следующее содержимое файла:

а) 1 2 1 2 1 2 1 2

б) 1 1 2 2 1 1 2 2

в) 1 1 2 1 1 2 1 1 2

г) 2 1 1 2 1 1 2 1 1

д) 1 2 2 1 2 2 1 2 2


Варианты заданий на л.р. №5:

  1. Процесс 1 порождает потомка 2. Процессы обмениваются данными через общую разделяемую память (один процесс пишет, другой читает). Организовать чтение после записи с помощью сигналов.

  2. Процесс 1 порождает потомка 2. Один процесс пишет в область разделяемой памяти размером N байт, другой читает из нее и выводит на экран: в первом варианте процесс-предок читает, процесс-потомок пишет; во втором – процесс-потомок читает, процесс-предок пишет. Объяснить полученные результаты.

  3. Процесс 1 порождает потомков 2 и 3. Процессы 2 и 3 по очереди пишут в область разделяемой памяти (размером N байт), с помощью сигнала сообщая процессу 1 об окончании записи (по одному разу каждый). Процесс 1 считывает эти данные и выводит их на экран.

  4. Процесс 1 порождает потомка 2. Один процесс пишет данные в область разделяемой памяти размером N байт, отсоединяет разделяемую память и завершает работу. Потом другой процесс присоединяет эту же область разделяемой памяти и считывает данные из нее. Убедиться, что данные сохранятся в памяти.

  5. Процесс 1 порождает потомков 2 и 3. Потомки присоединяют к себе разделяемую память и пишут в нее данные по N байт каждый так, чтобы данные в памяти не пересекались. После этого процесс 1 считывает все данные из нее и выводит их на экран.

  6. Процесс 1 порождает потомка 2. Оба процесса присоединяют к себе область разделяемой памяти. Один процесс пишет в эту область, потом удаляет ее. После этого другой процесс считывает записанные данные и выводит их на экран. Убедиться, что удаление области разделяемой памяти не повлечет за собой потерю данных.

  7. Процесс 1 порождает потомка 2. Процессы присоединяют к себе разделяемую память и обмениваются через нее данными. Организовать с помощью сигналов M циклов запись/чтение.

  8. Процесс 1 порождает потомка 2, они присоединяют к себе область разделяемой памяти размером N байт. Один процесс пишет в память, другой читает. Организовать с помощью сигналов M циклов запись/чтение, причем запись вести каждый раз в начало области.

  9. Процесс 1 порождает потомков 2 и 3. Все процессы присоединяют к себе область разделяемой памяти размером N байт. Процесс 2 пишет в нее M байт и посылает сигнал процессу 3. Процесс 3 также пишет M байт и посылает сигнал процессу 1, который считывает эти данные и выводит их на экран.

  10. Процесс 1 порождает потомков 2 и 3. Все процессы присоединяют к себе область разделяемой памяти размером N байт. Потом они читают из памяти данные по одному байту, считают количество считанных данных и выводят эту статистику на экран с пометками, какой именно процесс выводит данные. Объяснить полученный результат.

  11. Процесс 1 порождает потомков 2 и 3. Процесс 2 пишет в область разделяемой памяти N байт, посылает сигнал процессу 3, который увеличивает значения чисел, записанных процессом 2 на 1 и посылает сигнал процессу 1, который считывает эти данные и выводит на экран.

  12. Процесс 1 порождает потомков 2 и 3, потом пишет в область разделяемой памяти по N байт по очереди для процессов 2 и 3. Реализовать М циклов записи/чтения с помощью сигналов по схеме: процесс 1 пишет – процесс 2 читает – процесс 1 пишет – процесс 3 читает.

  13. Процесс 1 порождает потомков 2 и 3. Процессы 2 и 3 пишут по очереди по одному байту в область разделяемой памяти (по N байт каждый), после этого процесс 1 считывает эти данные и выводит их на экран. Организовать чередование данных в памяти без помощи сигналов.

  14. Процесс 1 порождает потомков 2 и 3. Все процессы присоединяют к себе область разделяемой памяти размером N байт. Процесс 2 пишет в нее M байт и посылает сигнал процессу 1. Процесс 1 также пишет M байт и посылает сигнал процессу 3, который считывает эти данные и выводит их на экран.

  15. Процесс 1 порождает потомков 2 и 3. Все процессы присоединяют к себе область разделяемой памяти размером N*2 байт. Организовать М циклов обмена данными через разделяемую память по схеме: каждый из потомков записывает в память N байт, посылает сигнал процессу-предку и засыпает на k секунд. Процесс-предок считывает данные из соответствующей области памяти и выводит их на экран с пометкой, от какого процесса он их получил.

  16. Процесс 1 порождает потомков 2 и 3, все они присоединяют к себе разделяемую память объемом (N*sizeof(int)). Процесс 1 пишет в эту память число 1, процесс 2 – число 2, а процесс 3 считывает эти числа и записывает их в файл. Используя сигналы, обеспечить следующее содержимое файла:

а) 1 2 1 2 1 2 1 2, N = 2

б) 1 1 2 2 1 1 2 2, N = 2

в) 1 1 2 1 1 2 1 1 2, N = 3

г) 2 1 1 2 1 1 2 1 1, N = 3

д) 1 2 2 1 2 2 1 2 2, N = 3

е) 2 1 1 2 2 1 1 2, N = 2

ж) 2 1 1 2 2 1 1 2, N = 4


^ Варианты заданий на л.р. №6:

  1. Процесс 1 порождает потомков 2 и 3, все они присоединяют к себе разделяемую память объемом (2*sizeof(int)). Процесс 1 пишет в эту память число 1, процесс 2 – число 2, а процесс 3 считывает эти числа и записывает их в файл. Используя семафоры, обеспечить следующее содержимое файла:

а) 1 2 1 2 1 2 1 2

б) 1 1 2 2 1 1 2 2

в) 1 1 2 1 1 2 1 1 2

г) 2 1 1 2 1 1 2 1 1

д) 1 2 2 1 2 2 1 2 2

е) 2 1 1 2 2 1 1 2

  1. Процесс 1 порождает потомков 2 и 3, каждый из которых записывает в общий файл число, равное своему номеру. Используя семафоры, обеспечить следующее содержимое файла:

а) 1 2 3 1 2 3 1 2 3

б) 1 1 2 2 3 3 1 1 2 2 3 3

в) 1 2 1 3 1 2 1 3

г) 2 1 1 3 2 1 1 3 2 1 1 3

д) 3 1 2 3 1 2 3 1 2

е) 3 1 1 2 1 1 3 1 1 2 1 1

  1. Процесс 1 порождает потомков 2 и 3, все они присоединяют к себе две области разделяемой памяти M1 и M2 объемом (Nj*sizeof(int)). Процесс 1 пишет в M1 число, которое после каждой записи увеличивается на 1; процесс 2 переписывает k2 чисел из M1 в M2, а процесс 3 переписывает k3 чисел из M2 в файл. После каждого этапа работы процесс 1 засыпает на t1 секунд, процесс 2 – на t2 секунд, а процесс 3 – на t3 секунд. Процесс 1 не может записывать в занятую область M1; процесс 2 может переписать данные, если была произведена запись в M1 и M2 свободна; процесс 3 может переписывать данные из M2, если в M2 была осуществлена запись. Используя семафоры, обеспечить синхронизацию работы процессов в соответствии с заданными условиями и при следующих данных:

а) N1=1, N2=2, t1=1, t2=3, t3=5, k2=1, k3=1

б) N1=2, N2=2, t1=1, t2=1, t3=1, k2=1, k3=1

в) N1=3, N2=2, t1=1, t2=1, t3=1, k2=2, k3=2

г) N1=2, N2=1, t1=1, t2=2, t3=3, k2=2, k3=1

д) N1=1, N2=1, t1=5, t2=3, t3=1, k2=1, k3=1

  1. Процесс 1 порождает потомка 2, они присоединяют к себе разделяемую память объемом (N*sizeof(int)). Процесс 1 пишет в нее k1 чисел сразу, процесс 2 переписывает k2 чисел из памяти в файл. Процесс 1 может производить запись, только если в памяти достаточно места, а процесс 2 переписывать, только если имеется не меньше, чем k2 чисел. После каждой записи (чтения) процессы засыпают на ti секунд. После каждой записи процесс 1 увеличивает значение записываемых чисел на 1. Используя семафоры, обеспечить синхронизацию работы процессов в соответствии с заданными условиями и при следующих данных:

а) N=1, t1=1, t2=3, t3=5, k2=1, k3=1

б) N=2, t1=1, t2=1, t3=1, k2=1, k3=1

в) N=3, t1=1, t2=1, t3=1, k2=2, k3=2

г) N=2, t1=1, t2=2, t3=3, k2=2, k3=1

д) N=1, t1=5, t2=3, t3=1, k2=1, k3=1


^ Варианты заданий на л.р. №7:

  1. Организовать обмен данными с помощью сокетов датаграмм между клиентом и сервером, запущенными на одном компьютере. Клиент N раз посылает сообщения серверу через некоторый промежуток времени, сервер принимает сообщения и отправляет их обратно клиенту, который выводит их на экран.

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

  3. Организовать обмен данными с помощью сокетов потока между клиентом и сервером, запущенными на разных компьютерах. Клиент N раз посылает сообщение серверу, сервер принимает сообщения и отправляет их обратно клиенту, который выводит полученные отклики на экран.

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

  5. С помощью сокетов организовать следующий режим работы сервера с клиентами (все программы запускаются с одного компьютера): сервер принимает сообщения от N клиентов (N не менее 2), интерпретирует их как команды и запускает на выполнение системным вызовом exec.

  6. С помощью сокетов организовать следующий режим работы сервера с клиентами: сервер по сети принимает сообщения от N клиентов (N не менее 2), интерпретирует их как команды и запускает на выполнение системным вызовом exec.

  7. С помощью сокетов организовать следующий режим работы сервера с клиентами: сервер принимает от N клиентов (N не менее 2) сообщения следующего вида:

N K 1 m2 ... mk >

где N – номер обработчика, K – количество чисел, {mi} – сами числа. Сервер записывает эти числа в файл, системным вызовом exec (execv, execl или др.) запускает на выполнение соответствующую программу (обработчик), которая считывает данные из файла и выводит их на экран. (Каждый обработчик работает со своим файлом, соответствие номера обработчика конкретной программе задается программистом). Обработчики воспринимают имена файлов, с которыми работают, в командной строке.

  1. С помощью сокетов организовать следующий режим работы сервера с N клиентами (N не менее двух): сервер интерпретирует сообщение от клиента как имя файла, открывает этот файл, считывает оттуда построчно команды и запускает их на выполнение системным вызовом exec. (Не менее двух сообщений от каждого клиента, не менее двух команд в каждом файле).



^

9.3Примерная тематика курсовых проектов


Курсовой проект не предусмотрен.

10Учебно-методическое и информационное обеспечение дисциплины

10.1Базовый учебник


Робачевский А.М. Операционная система UNIX. – СПб.: BHV – Санкт-Петербург, 1997. – 528 с.

10.2Основная литература


  1. Донован Дж. Системное программирование. /Пер. с англ. – М.: Мир, 1975.

  2. Керниган Б.В., Пайк Р. UNIX – универсальная среда программирования. Пер. с англ. Березко, Иващенко под ред. М.И.Белякова. – М.: "Финансы и статистика", 1992. – 304 с.

  3. Т.Чан Системное программирование на C++ для UNIX. / Пер. с англ. – К.: Издательская группа BHV, 1997. – 592 с.

  4. Бах Морис Дж. Архитектура операционной системы UNIX. //THE DESIGN OF THE UNIX OPERATING SYSTEM by Maurice J. Bach// Пер. с англ. к.т.н. Крюкова А.В. Copyright 1986 Корпорация Bell Telephone Laboratoties. Издано корпорацией Prentice-Hall. Отделение Simon & Schuster Энглвуд Клиффс, Нью-Джерси 07632. Серия книг по программному обеспечению издательства Prentice-Hall. Консультант Брайан В. Керниган.

  5. Командный интерпретатор UNIX. Файловая система UNIX: Метод. указания к лабораторным работам №1,2 по курсу "Системное программное обеспечение" / Моск. гос. ин-т электроники и математики; Сост.: В.Э. Карпов, И.П. Карпова. М., 2002. – 32 с.

  6. Процессы и сигналы ОС UNIX: Метод. указания к лабораторной работе №3 по курсу "Системное программное обеспечение" / Моск. гос. ин-т электроники и математики; Сост.: В.Э. Карпов, И.П. Карпова. М., 2002. – 27 с.

  7. Использование разделяемой памяти и семафоров: Метод. указания к лабораторным работам № 5,6 по курсу "Операционные системы" / Моск. гос. ин-т электроники и математики; Сост.: Е.А. Саксонов, И.П. Карпова. М., 1999. – 28 с.

  8. Взаимодействие процессов с использованием сокетов: Метод. указания к лабораторной работе № 7 по курсу "Операционные системы" / Моск. гос. ин-т электроники и математики; Сост.: Е.А. Саксонов, И.П. Карпова. М., 1999. – 19 с.
^

10.3Дополнительная литература


  1. Соловьев Г.Н., Никитин В.Д. Операционные системы ЭВМ. – М.: «Высшая школа», 1989. – 255 с.

  2. Хэвиленд К., Грей Д., Салама Б. Системное программирование в UNIX. Руководство программиста по разработке ПО. Пер. с англ. – М.: ДМК Пресс, 2000. –368 с.

  3. Таненбаум Э., Вудхалл А. Операционные системы. Разработка и реализация. Классика CS. – 3-е изд. – СПб.: Питер, 2007. – 704 с.

  4. Файловая система ОС UNIX: Метод. указания к лабораторным работам №1,2 по курсу "Операционные системы" / Моск. гос. ин-т электроники и математики; Сост.: Е.А. Саксонов, И.П. Карпова. М., 1999. – 24 с.

  5. Процессы и сигналы ОС UNIX: Метод. указания к лабораторным работам №3,4 по курсу "Операционные системы" / Моск. гос. ин-т электроники и математики; Сост.: Е.А. Саксонов, И.П. Карпова. М., 1999. – 29 с.

  6. Материалы сайта citforum.ru.
^

10.4Справочники, словари, энциклопедии


  1. Электронная энциклопедия Википедия (wikipedia.org).

  2. http://rema44.ru

10.5Программные средства


Для успешного освоения дисциплины студент использует операционные системы FREE BSD, LINUX, SOLARIS и др. ОС семейства UNIX.

10.6Дистанционная поддержка дисциплины


Дополнительные учебно-методические материалы по дисциплине расположены по адресу http://rema44.ru/resurs/students/karpov в свободном доступе.

11Материально-техническое обеспечение дисциплины


  1. Компьютерный класс, оборудованный для проведения практических и лабораторных работ персональными компьютерами, объединенными в сеть с выходом в Интернет.

  2. Установленное лицензионное программное обеспечение.






Скачать 319,07 Kb.
Дата конвертации17.11.2013
Размер319,07 Kb.
ТипПрограмма дисциплины
Разместите кнопку на своём сайте или блоге:
rud.exdat.com


База данных защищена авторским правом ©exdat 2000-2012
При копировании материала укажите ссылку
обратиться к администрации
Документы