Тема 1.3. Файлы. Файловая система в UNIX

advertisement
Правительство Российской Федерации
Нижегородский филиал
Федерального государственного автономного образовательного
учреждения высшего профессионального образования
"Национальный исследовательский университет
"Высшая школа экономики"
Факультет бизнес-информатики и прикладной математики
Программа дисциплины
Операционная система UNIX
для направления 010400.62 – Прикладная математика и информатика
подготовки бакалавра
Автор: Кряжев С.В.
e-mail: sergey.kryazhev@yandex.ru
Одобрена на заседании кафедры «Базовая кафедра МЕРА» «___»_____________2012 г.
Зав. кафедрой Н.И. Кащеев
Рекомендована секцией УМС
Председатель А.Н. Визгунов
«___»____________ 2012г.
Утверждена УМС НИУ ВШЭ – Нижний Новгород
Председатель Н.С. Петрухин
«___»____________2012 г.
Н.Новгород 2012 г.
1. Область применения и нормативные ссылки
Настоящая программа учебной дисциплины устанавливает минимальные требования к
знаниям и умениям студента и определяет содержание и виды учебных занятий и отчетности.
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных
ассистентов и студентов направления подготовки для специальности 010400.62 «Прикладная
математика и информатика» подготовки бакалавров, изучающих дисциплину "Операционная
система UNIX".
Программа разработана в соответствии с:
 Рабочим учебным планом университета по направлению подготовки 010400.62
«Прикладная математика и информатика», утвержденным в 2012 г.
 ОрОС НИУ ВШЭ по направлению подготовки 010400.62 «Прикладная математика и
информатика».
Дисциплина «Операционная система UNIX» является одним из базовых курсов для
профессиональной подготовки специалистов в области проектирования и разработки ПО в силу
широкого применения различных диалектов UNIX во многих проблемных областях. Программа
дисциплины рассчитана на три модуля и ориентирована на использование операционной
системы Linux в учебном процессе, как пример наиболее распространенной UNIX системы.
Помимо изучения архитектуры «классического» UNIX'а, также рассматриваются современные
и актуальные технологии.
2. Цели освоения дисциплины
В результате изучения дисциплины студент должен:



ознакомится с архитектурой и спецификой UNIX системы
получить необходимые знания для работы в UNIX системе в качестве пользователя
получить базовые знания по проектированию и созданию переносимого программного
обеспечение в среде UNIX
3. Компетенции обучающегося, формируемые в результате освоения
дисциплины
В результате освоения дисциплины студент должен:
 Знать:
- основные теоретические и практические аспекты применения UNIX;
- основные информационные ресурсы, необходимые при использования
UNIX;
- методы конфигурирования пользовательской среды;
- возможности применения UNIX для решения прикладных задач;
 Уметь:
- использовать и настраивать пользовательскую среду;
- уметь работать с прикладным программным обеспечением;
- уметь выбирать необходимые технические средства и информационные
ресурсы для решения конкретных задач и проблем.
 Получить навыки (приобрести опыт):
- работы UNIX в качестве пользователя;
- конфигурирования окружения UNIX;
- разработки прикладного программного обеспечения
В результате освоения дисциплины студент осваивает следующие компетенции:
Компетенция
Код по
НИУ
Дескрипторы - основные
признаки освоения
(показатели достижения
результата)
Формы и методы
обучения,
способствующие
формированию и
развитию
компетенции
Умение работать на компьютере,
навыки использования основных
классов прикладного программного
обеспечения, работы в
компьютерных сетях, составления
баз данных
ИК-2
В UNIX конфигурирует
пользовательскую среду
для использования
необходимого ПО, может
практически работах в
сетях
Лекции, семинары,
практические
занятия и
самостоятельная
работа
Способность аналитически работать
с информацией из различных
источников, включая глобальных
компьютерных сетях
ИК-4
Производит поиск и анализ
информации из
библиографических
источников и из
глобальной компьютерной
сети
Лекции, семинары,
практические
занятия и
самостоятельная
работа
Способность понимать и применять
в исследовательской и прикладной
деятельности современный
математический аппарат
ПК-2
Программирует и решает
аналитические и
исследовательские задачи
в UNIX
Лекции, семинары,
практические
занятия и
самостоятельная
работа
Способность решать задачи
производственной и
технологической деятельности на
профессиональном уровне, включая
разработку математических
моделей, алгоритмических и
программных решений
ПК-8
Разрабатывет модели,
алгоритмы и реализует их
программно в UNIX
Лекции, семинары,
практические
занятия и
самостоятельная
работа
4. Место дисциплины в структуре образовательной программы
Настоящая дисциплина относится к факультативам и к блоку дисциплин, обеспечивающих
подготовку бакалавра.
Для освоения дисциплины студент должен владеть современными методами и средствами
информационных технологий. Обладать базовыми знаниями по теме «Операционные системы».
Основные положения дисциплины должны быть использованы в дальнейшем при изучении
следующих дисциплин:
 Моделирование бизнес-процессов
 Разработка данных
 Промышленное программировании и управление жизненным циклом ПО
 Численные методы
 Оптимизация и математические методы принятия решений
5.
Тематический план учебной дисциплины
Наименование тем
Всего
часов
Аудиторные часы
Самостоятельна
я работа
Лекции Практические
занятия
Раздел 1. Архитектура ОС UNIX
1,1
1,2
1,3
1,4
1,5
1,6
Философия UNIX. Структура
системы
Основы интерфейса командной
строки. Командный интерпретатор.
Файлы. Файловая система UNIX
Процессы
Пользователи. Права доступа к
объектам.
Обработка текстовых данных.
Взаимодействия с устройствами.
Управление разделами.
1,8 Загрузка и инициализация
1,9 Поддержка сети в UNIX
Раздел 2. Программирование в среде UNIX
1,7
4
2
2
0
23
4
4
15
10
10
16
2
2
3
2
2
3
6
6
10
12
2
2
8
10
2
2
6
7
4
3
1
2
1
2
2
2,1
Программирование на shell.
22
4
4
14
2,2
Программный интерфейс UNIX.
POSIX
Инструменты разработки
программного обеспечения.
Межпроцессное взаимодействие.
22
4
4
14
15
2
3
10
16
4
2
10
Разработка многопоточных
программ.
Отладка программного
обеспечения.
14
2
2
10
11
2
2
7
4
4
1
1
1
1
2
2
3,3
Основные сервисы в ОС UNIX
Дистрибуция UNIX.
Распространение ПО
Безопасность UNIX систем.
4
1
1
2
3,5
Управление устройствами в Linux
4
1
1
2
4
1
1
2
216
44
42
130
2,3
2,4
2,5
2,6
Раздел 3. Поддержка системы
3,1
3,2
Графическая подсистема
Window
Итого:
3,6
X-
6. Формы контроля знаний студентов
Тип
контроля
Текущий
(неделя)
Форма
контроля
Контрольн
ая работа
Контрольн
ая работа
Контрольн
ая работа
Итоговый Экзамен
1 год
Параметры
1 2 3
4
Письменная работа, 45 минут
4
Письменная работа, 90 минут
5 Письменная работа, 90 минут
* Устный экзамен: 3 вопроса в билете
6.1. КРИТЕРИИ ОЦЕНКИ ЗНАНИЙ, НАВЫКОВ
Текущий контроль осуществляется в трех контрольных работ и оценки работы студентов на
практических занятиях (Оаудитор.работа). Для выяснения уровня усвоения теоретического
материала после каждого пройденного раздела проводится тестирование. Итоговый контроль:
экзамен на последней неделе 3 модуля. Учитываются результаты контрольных работ. Оценка
определяется в соответствии с п. 6.2.
6.2. Порядок формирования оценок по дисциплине
Контроль знаний студентов включает формы текущего и итогового контроля. Текущий
контроль осуществляется в течение трех модулей. В рамках учебного курса предусмотрены
различные формы текущего контроля знаний и работы студентов на практических занятиях.
Каждая форма текущего контроля оценивается по 10-балльной шкале, оценка выставляется в
рабочую ведомость преподавателя.
Предусмотрено три контрольных работы и экзамен.
Отекущий = 0,5*Ок/р1 + 0,3*Ок/р2 + 0,2*Ок/р3
Онакопленная = 0,7*Отекущий + 0,3*Оаудит.работа
Оитоговая = 0,3*Онакопл. + 0,7*Оэкз.
Способ округления оценок – арифметический. В диплом выставляется итоговая оценка по
дисциплине.
7. Содержание программы учебной дисциплины
РАЗДЕЛ 1. Архитектура ОС UNIX
ТЕМА 1.1. Философия UNIX. Структура системы
Разнообразие UNIX систем. Философия. Основные сферы применения. История создания.
Linux. Линус Торнвальдс и Ричард Столлман. Роль форума Free Software Foundation и проекта
GNU в создании Linux. Лицензии. Структура типичной UNIX системы. Процесс и файл как два
основных объекта ОС. Требования к аппаратному обеспечению. Типы ядер.
ТЕМА 1.2. Основы интерфейса командной строки. Командный интерпретатор.
Понятие интерфейса. Типы интерфейсов. Интерфейс командной строки: преимущества и
недостатки. Понятие терминала. Виртуальный терминал. Псевдотерминалы. Управляющие
символы. Командный интерпретатор:понятие, применение и роль. Переменные окружения.
ТЕМА 1.3. Файлы. Файловая система в UNIX
Файловая система. Иерархия каталогов и их назначение. Понятие inode. Жёсткие ссылки.
Типы файлов. Виртуальная файловая система. Монтирование. Основные файловые системы в
ОС UNIX.
ТЕМА 1.4. Процессы в UNIX
Понятие процесса. Управление памятью . Управление процессами. Понятие контекста.
Атрибуты процесса. Планирование процессов. Создание процессов. Иерархия. Сигналы как
средство межпроцессного взаимодействия. Демоны и Зомби.
ТЕМА 1.5. Пользователи. Права доступа к объектам.
UNIX - многопользовательская ОС. Разделение прав доступа. Понятие пользователя,
суперпользователя. Идентификатор пользователя - UID. База данных пользователей. Понятие
группы. Идентификатор группы — GID. Права доступа к файлам. Предоставление доступа.
Права доступа к каталогам. Дополнительные права доступа SUID,SGID,Sticky bit.
Добавление/Удаление/Модификация пров доступа. Работа под аккаунтом суперпользователя.
ТЕМА 1.6. Обработка текстовых данных
Важность обработки текста. Понятие Plain text. Кодировки: ASCII, Unicode. Текстовые
элементы. Регулярные выражения. Команда grep. Приёмы обработки текста. Потоковый
текстовый редактор. (Макропроцессоры) Препроцессоры. Экранный редактор VI(VIM).
ТЕМА 1.7. Взаимодействия с устройствами. УПРАВЛЕНИЕ РАЗДЕЛАМИ.
Организация работы с устройствами в UNIX. Понятие файла устройства. Каталог /dev.
Типы файлов устройств. Именование файлов устройств. Создание файлов устройств. Понятие
драйвера. Типы драйверов. Проблемы статического каталога /dev. devfs -применение в UNIX.
Udev.Понятие раздела. Таблица разделов. Утилиты для разбиение на разделы(fdisk,
parted).Создание файловой системы. Петлевое устройство и его применение. Команда dd.
Восстановление данных.
ТЕМА 1.8. ЗАГРУЗКА И ИНИЦИАЛИЗАЦИЯ
BIOS. Типы загрузки. Загрузчики: Назначение ,Основные загрузчики. Загрузчик GRUB:
Архитектура, Принцип работы. Загрузчик Lilo. Загрузчик isolinux. Инициализация. System V &
BSD стили инициализации. Понятие уровня выполнения. Инициализация System V. Понятие
сервиса. Преимущества и недостатки. Альтернативные системы инициализации.
ТЕМА 1.9. Поддержка сети в UNIX.
Организация поддержки сети в UNIX системах. Понятие сетевого интерфейса. Команды
настройки сети в Linux: ifconfig, route. Тестирование сети: ping, traceroute, netstat.
РАЗДЕЛ 2. Программирование в среде UNIX
ТЕМА 2.1. Программние на shell
Командный интерпретатор - bash. Последовательное и Параллельное выполнение команд.
Условное выполнение. Подсистема управления заданиями. Переменные. Конвейер. Сценарии.
Профайл. Операторы , циклы и функции.
ТЕМА 2.2. Программный интерфейс UNIX. POSIX
Использование языка Си. Обработка ошибок. Препроцессорная обработка. Компиляция.
Линковка. Библиотеки: Статические ,Динамические. Форматы исполняемых файлов:ELF.
Запуск и завершение Си программ. Доступ к переменным окружения. API низкоуровнего
ввода/вывода. Стандартная библиотека ввода/вывода. Буферизация. Файлы отображаемые в
память. Владение файлами. Права доступа. Перемещение по файловой системе. Работа с
метаданными. Модификация атрибутов процесса. Linux capabilities. Выделение памяти.
Понятие кучи и стека. API работы с памятью. Порождение процессов. Запуск завершение
программ. API работы с сигналами. Группы и сеансы процессов. Написание демонов.
Синхронизация . Системный вызов - ioctl(). Расширенные операции ввода/вывода.
Неблокирующий ввод/вывод. Блокировки. Асинхронный ввод/вывод. Мультиплексирование
ввода/вывода.
ТЕМА 2.3. Инструменты разработки программного обеспечения.
Понятие IDE. GNU toolchain — инструмент разработчика. Компилятор GCC, идеология и
архитектура. Применение GCC для сборки проектов. Препроцессорная обработка. Компиляция.
Ключи компиляции. Оптимизация средствами GCC. Пакет binutils. Создание статических
библиотек. Создание динамических библиотек. Загрузка динамических библиотек.
Динамические библиотеки времени выполнения. Автоматизация процесса сборки. Утилита
make. GNU autotools.
ТЕМА 2.4. Межпроцессное взаимодействие .
Понятие IPC. Именнованные и неименованные каналы. POSIX and System V IPC. POSIX
очереди сообщений. POSIX семафоры. POSIX разделяемая память. API сокетов. Сравнение
способов межпроцессного взаимодействия.
ТЕМА 2.5. РАЗРАБОТКА МНОГОПОТОЧНЫХ ПРОГРАММ.
Понятие потока. Применение потоков: преимущества и недостатки. Библиотека потоков POSIX threads. Программирование API. Синхронизация. Критическая секция. Мьютексы.
Условные переменные. Удалённый вызов процедур. Sun RPC. CORBA. SOAP. DBUS.
ТЕМА 2.6. ОТЛАДКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
Понятие отладки. Отладчик - GDB. Трассировка. Профилирование. Отладка с
использованием средств Операционной системы. Статический анализ кода. Динамический
анализ кода. Типичные ошибки.
РАЗДЕЛ 3. Поддержка системы
ТЕМА 3.1. Основные сервисы в ОС UNIX.
Сервис ведения логов — syslog. Выполнение заданий по расписанию — cron. Выполнения
команд в конкретное время — atd. Суперсервер — xinetd. Сетевая файловая система NFS.
Средства удалённого доступа: rlogin, telnet , ssh. Сервис передачи файлов - FTP. Сервер печати
— CUPS. Expect — утилита для автоматизации заданий. Средства для скачивания файлов по
сети: wget,curl.
ТЕМА 3.2. Дистрибуция UNIX. Распространение ПО
Задачи системы управлением ПО. Формы распространения ПО. Понятие пакета. Конфликт
пакетов. Зависимость. Дистрибутивы. Управление пакетами. Менеджер пакетов RPM .
Менеджер пакетов DEB. Репозитарии пакетов.
ТЕМА 3.3 Безопасность UNIX систем.
Концепция безопасности UNIX системы. SUID программы. Пользователь root. Списки
контроля доступа. Расширенные атрибуты доступа к файлам. SELinux
ТЕМА 3.4 Графическая подсистема X-Window
Классическая графическая система X-Window. Протокол X11. Понятие сервер и клиента.
Туннелирование Х11 протокола. Авторизация. X — терминал. Графическая подсистема Mac OS
X.
8. Образовательные технологии
Лекции с использованием мультимедийных технологий, разбор практических задач и кейсов,
выполнение на персональных компьютерах практических заданий и контрольных работ
8.1.Методические рекомендации преподавателю
Темы индивидуальных заданий для проведения практических занятий, вопросов для
тестирования теоретических знаний и экзаменационных вопросов и задач должны являться
уникальными для каждого нового учебного года.
8.2.Методические рекомендации студентам
Для более глубокого усвоения курса предполагается использование студентами дополнительной
литературы, работа в библиотеке, поиск информации в сети Интернет.
9. Оценочные средства для текущего контроля и аттестации студента
9.1. ТЕМАТИКА ЗАДАНИЙ ТЕКУЩЕГО КОНТРОЛЯ
Примеры тем контрольных работ:
1. Создать файл и установить на него права таким образом, чтобы владелец (пользователь
vasya) мог запускать,читать и записывать в файл, пользователь petya и sergio , могли
только читать файл, все другие пользователи никаких прав не имели. На файл установлен
SGUID и Sticky биты. Пользователей в системе создать.
2. Написать утилиту по переименованию всех фалов в каталоге на bash.
3. Написать работающий UNIX демон обрабатывающий сигналы и выполняющий
внешнюю программу и записывающий её результат в лог.
9.2. ВОПРОСЫ ДЛЯ ОЦЕНКИ КАЧЕСТВА ОСВОЕНИЯ ДИСЦИПЛИНЫ
Примерный перечень вопросов к экзамену по всему курсу:
1. Что такое UNIX. Отличительные признаки. Применение UNIX. FSF. Проект GNU. Что
такое Linux. Философия UNIX.
2. Архитектура UNIX/Linux. Ядро. Структура Системы.
3. Основные объекты ОС UNIX. Ресурсы. Типы ресурсов. Виртуальное адресное
пространство.UNIX. Требования к аппаратной среде.
4. Терминал. Консоль. Управляющие символы. Типы терминалов.
5. Виртуальный терминал. Псевдотерминалы. Shell.
6. Встроенные и внешние команды. Алиасы. Команда. Ключи. Параметры. Формат
ключей. Разделитель.
7. Шаблоны. Перенаправление ввода/вывода. Понятие дескриптора.
8. Переменные окружения. Доступ. Наследование. Установка. Системные переменные
окружения.
9. Подсистемы помощи в UNIX.
10. Последовательное и паралельное выполнение комманд. Условное выполнение.
11. Конвеер. Понятие. Применение.
12. Подстановка значений переменной. Экспансия. Экранирование. Специальные
переменные BASH.
13. Команда test. Условные выражения.Скрипт. Способы запуска скрипта.
14. Управляющие операторы. Функции.Профайл. Встроенные функции BASH.
15. Подсистема управления заданиями.
16. ФС UNIX Понятие файловой системы. Применение. Задачи. Иерархия каталогов.
Структура . Назначение.
17. Понятие inode. жёсткие ссылки.
18. Типы файлов.
19. Виртуальная Файловая Система. Концепция.
20. Монтирование. Понятние. Команды
21. Классификация ФС. Основные файловые системы.
22. Процесс. Понятие. Управление памятью.
23. Процесс. Управление процессами. Контекст процесса. Системный контекст.
24. Состояния процесса. Планирование процессов. Планировщик.Иерархия процессов.
25. Типы процессов. Демонология.
26. Межпроцессное взаимодействие . Сигналы. Отсылка. Обработка сигнала. Маска.
27. Понятие пользователя, группы. Суперпользователь.
28. База данных пользователей.Управления пользователями. Ограничения.
29. Права доступа. Типы прав. Объект доступа. Владельцы файлов.
30. Права доступа. Маска прав доступа. Проверка прав. Права доступа на каталог.
Дополнительные идентификаторы (SUID,SGID,Sticky).
31. Cмена прав доступа. Смена владельцев. Команды.
32. Повышение привилегий. Команды.
33. Команда find.
34. Регулярные выражения. Типы. Синтаксис. Команда grep.
35. Файлы устройств. Назначение . Типы.Создание файлов устройств. major,minor.
36. Каталог /dev. Назначение . Основные файлы устройств. Именование.
37. Загрузка ОС UNIX. Основные этапы.
38. Инициализация UNIX. Основные этапы. init System V & BSD style.
39. Понятие сетевого интерфейса. Основные команды для настройки и тестирование сети в
ОС Linux.
40. Программные интерфейс UNIX. Стандарт POSIX. Системный и библиотечный вызов.
41. Применение языка Си. Файлы заголовков.Этапы создания приложения. Библиотеки.
Типы библиотек.
42. Формат исполняемых файлов. Структура в памяти и на диске.
43. Запуск и завершение Си программы. Обработка ошибок.
44. Буферизованный файловый ввод/вывод (API).
45. Небуферизованный файловый ввод/вывод (API).
46. Способы выделения памяти. Понятие стека, кучи.
47. Библиотечные и системные вызовы для выделения памяти в UNIX.
48. Управление процессами. Основные принципы . API
49. Сигналы. Отсылка , обработка. API
50. Сервис syslog. Назначение . API.
51. IPC. каналы.
52. IPC. POSIX & System V IPC.
53. IPC. POSIX Очереди сообщений.
54. IPC. POSIX семафоры
55. IPC. POSIX Разделяемая память.
56. IPC. Интерфейс сокетов.
57. Потоки. Понятия. Отличие от процессов. Классификация.Потоки. преимущества и
недостатки.
58. Потоки. Средства синхронизации. Семафоры. Мьютексы.
10.
Учебно-методическое
дисциплины
и
информационное
обеспечение
Список используемой литературы:
Основная литература:
1. А. Робачевский «Операционная система UNIX» 2-е издание. 2010 г.
2. У.Стивенс, С.Раго. «UNIX. Профессиональное программирование» 2-е издание (2007)
Дополнительная литература:
1. Эрик C. Реймонд. Искусство программирования для Unix.2005 г.
2. Эви Немет, Гарт Снайдер, Скотт Сибасс, Трент Р. Хейн «UNIX. Руководство системного
администратора. Для профессионалов»
3. Арнольд Роббинс «Unix. Справочник» .2007 г.
4. Торвальдс Л., Даймонд Д. Ради удовольствия: рассказ нечаянного революционера.— М.:
ЭКСМО-Пресс, 2002.
Интернет-ресурсы:
1.
2.
3.
4.
5.
А. Федосеев «UNIX: учебный курс» http://fedoseev.net/materials/courses/admin/index.html
www.intuit.ru
www.wikipedia.org
www.opennet.ru
www.google.com
11. Материально-техническое обеспечение дисциплины
Компьютерное и мультимедийное оборудование для проведения лекций и практических
занятий.
Преподаватель
Кряжев С.В.
Download