Компьютерные науки

Основы операционных систем. Практикум

Практическая программа по системному программированию в среде UNIX. Разбираются механизмы взаимодействия процессов, работа с разделяемой памятью, файловой системой и сетевыми сокетами.
Студентов 10376 Выпускников 1835 Для специалистов
690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.
Темы:
Операционные системы
Объем

36 час.
Длительность

30 дней
Нагрузка в неделю

9 час.
Формат обучения

Дистанционно (самостоятельно)
Описание Учебная программа посвящена прикладному освоению системного программирования в UNIX. В учебной программе изучается организация процессов и способы их взаимодействия, включая неименованные каналы, очереди сообщений и средства синхронизации на базе семафоров. На практике рассматривается устройство файловой системы, использование memory mapped файлов, организация ввода-вывода, аппарат прерываний и обработка сигналов. Завершает обучение блок по сетевому программированию с использованием сокетов и TCP/IP. Материал формирует практические навыки написания и отладки системного программного обеспечения.
Цели
  • Сформировать практические навыки работы с системными вызовами операционной системы UNIX.
  • Познакомить с механизмами межпроцессного взаимодействия и синхронизации.
  • Дать базовые представления об устройстве файлового ввода-вывода и сетевого программирования.
Чему я научусь?
  • Управлять процессами и нитями исполнения, настраивать их взаимодействие через каналы и очереди сообщений.
  • Использовать семафоры и разделяемую память для синхронизации доступа к ресурсам.
  • Разрабатывать клиент-серверные приложения с использованием сетевых сокетов и протоколов TCP/IP.

Авторы

Карпов Владимир Ефимович
Карпов Владимир Ефимович
Кандидат физико-математических наук, доцент кафедры информатики Московского физико-технического института.
Коньков Константин Алексеевич
Коньков Константин Алексеевич
Кандидат физико-математических наук, старший научный сотрудник Института Автоматизации проектирования РАН, доцент кафедры математических и информационных технологий Московского физико-технического института. Директор по научной работе ООО «Физтех-софт».
Чему я научусь?
  • Управлять процессами и нитями исполнения, настраивать их взаимодействие через каналы и очереди сообщений.
  • Использовать семафоры и разделяемую память для синхронизации доступа к ресурсам.
  • Разрабатывать клиент-серверные приложения с использованием сетевых сокетов и протоколов TCP/IP.

Учебный план

Занятия
Экзамен экстерном Внимание! Экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите подтвердить свои знания по данному курсу без его изучения или поверить свои знания по нему. Экзамен экстерном можно сдать только один раз. 90 мин
1 Введение в курс практических занятий. Знакомство с операционной системой UNIX Введение в курс практических занятий. Краткая история операционной системы UNIX, ее структура. Системные вызовы и библиотека... Введение в курс практических занятий. Краткая история операционной системы UNIX, ее структура. Системные вызовы и библиотека libc. Понятия login и password. Упрощенное понятие об устройстве файловой системы в UNIX. Полные имена файлов. Понятие о текущей директории. Команда pwd. Относительные имена файлов. Домашняя директория пользователя и ее определение. Команда man – универсальный справочник. Команды cd – смены текущей директории и ls – просмотра состава директории. Команда cat и создание файла. Перенаправление ввода и вывода. Простейшие команды для работы с файлами – cp, rm, mkdir, mv. История редактирования файлов – ed, vi. Система Midnight Commander – mc. Встроенный mc редактор и редактор joe. Пользователь и группа. Команды chown и chgrp. Права доступа к файлу. Команда ls с опциями -al. Использование команд chmod и umask. Системные вызовы getuid и getgid. Компиляция программ на языке C в UNIX и запуск их на счет. ещё
Введение в курс практических занятий. Знакомство с операционной системой UNIX тест для курса Основы операционных систем. Практикум 15 мин
2 Процессы в операционной системе UNIX Понятие процесса в UNIX, его контекст. Идентификация процесса. Состояния процесса. Краткая диаграмма состояний. Иерархия процессов. Системные... Понятие процесса в UNIX, его контекст. Идентификация процесса. Состояния процесса. Краткая диаграмма состояний. Иерархия процессов. Системные вызовы getpid(), getppid(). Создание процесса в UNIX. Системный вызов fork(). Завершение процесса. Функция exit(). Параметры функции main() в языке С. Переменные среды и аргументы командной строки. Изменение пользовательского контекста процесса. Семейство функций для системного вызова exec(). ещё
Процессы в операционной системе UNIX тест для курса Основы операционных систем. Практикум 15 мин
3 Организация взаимодействия процессов через pipe и FIFO в UNIX Понятие потока ввода-вывода. Представление о работе с файлами через системные вызовы и стандартную библиотеку ввода-вывода. Понятие... Понятие потока ввода-вывода. Представление о работе с файлами через системные вызовы и стандартную библиотеку ввода-вывода. Понятие файлового дескриптора. Открытие файла. Системный вызов open(). Системные вызовы close(), read(), write(). Понятие pipe. Системный вызов pipe(). Организация связи через pipe между процессом-родителем и процессом-потомком. Наследование файловых дескрипторов при вызовах fork() и exec(). Особенности поведения вызовов read() и write() для pip’а. Понятие FIFO. Использование системного вызова mknod() для создания FIFO. Функция mkfifo(). Особенности поведения вызова open() при открытии FIFO. ещё
Организация взаимодействия процессов через pipe и FIFO в UNIX тест для курса Основы операционных систем. Практикум 15 мин
4 Средства System V IPC. Организация работы с разделяемой памятью в UNIX. Понятие нитей исполнения (thread) Преимущества и недостатки потокового обмена данными. Понятие System V IPC. Пространство имен. Адресация в System V... Преимущества и недостатки потокового обмена данными. Понятие System V IPC. Пространство имен. Адресация в System V IPC. Функция ftok(). Дескрипторы System V IPC. Разделяемая память в UNIX. Системные вызовы shmget(), shmat(), shmdt(). Команды ipc и ipcrm. Использование системного вызова shmctl() для освобождения ресурса. Разделяемая память и системные вызовы fork(), exec() и функция exit(). Понятие о нити исполнения (thread) в UNIX. Идентификатор нити исполнения. Функция pthread_self(). Создание и завершение thread'а. Функции pthread_create(), pthread_exit(), pthread_join(). Необходимость синхронизации процессов и нитей исполнения, использующих общую память. ещё
Средства System V IPC. Организация работы с разделяемой памятью в UNIX. Понятие нитей исполнения (thread) тест для курса Основы операционных систем. Практикум 15 мин
5 Семафоры в UNIX как средство синхронизации процессов Семафоры в UNIX. Отличие операций над UNIX-семафорами от классических операций. Создание массива семафоров или доступ к... Семафоры в UNIX. Отличие операций над UNIX-семафорами от классических операций. Создание массива семафоров или доступ к уже существующему массиву. Системный вызов semget(). Выполнение операций над семафорами. Системный вызов semop(). Удаление набора семафоров из системы с помощью команды ipcrm или системного вызова semctl(). Понятие о POSIX-семафорах. ещё
Семафоры в UNIX как средство синхронизации процессов тест для курса Основы операционных систем. Практикум 15 мин
6 Очереди сообщений в UNIX Сообщения как средства связи и средства синхронизации процессов. Очереди сообщений в UNIX как составная часть System... Сообщения как средства связи и средства синхронизации процессов. Очереди сообщений в UNIX как составная часть System V IPC. Создание очереди сообщений или доступ к уже существующей. Системный вызов msgget(). Реализация примитивов send и receive. Системные вызовы msgsnd() и msgrcv(). Удаление очереди сообщений из системы с помощью команды ipcrm или системного вызова msgctl(). Понятие мультиплексирования. Мультиплексирование сообщений. Модель взаимодействия процессов клиент-сервер. Неравноправность клиента и сервера. Использование очередей сообщений для синхронизации работы процессов. ещё
Очереди сообщений в UNIX тест для курса Основы операционных систем. Практикум 15 мин
7 Контрольная работа
8 Организация файловой системы в UNIX. Работа с файлами и директориями. Понятие о memory mapped файлах Разделы носителя информации (partitions) в UNIX. Логическая структура файловой системы и типы файлов в UNIX. Организация... Разделы носителя информации (partitions) в UNIX. Логическая структура файловой системы и типы файлов в UNIX. Организация файла на диске в UNIX на примере файловой системы s5fs. Понятие индексного узла (inode). Организация директорий (каталогов) в UNIX. Понятие суперблока. Операции над файлами и директориями. Системные вызовы и команды для выполнения операций над файлами и директориями. Системный вызов open(). Системный вызов close(). Операция создания файла. Системный вызов creat(). Операция чтения атрибутов файла. Системные вызовы stat(), fstat() и lstat(). Операции изменения атрибутов файла. Операции чтения из файла и записи в файл. Операция изменения указателя текущей позиции. Системный вызов lseek(). Операция добавления информации в файл. Флаг O_APPEND. Операции создания связей. Команда ln, системные вызовы link() и symlink(). Операция удаления связей и файлов. Системный вызов unlink(). Специальные функции для работы с содержимым директорий. Понятие о файлах, отображаемых в память (memory mapped файлах). Системные вызовы mmap(), munmap(). ещё
Организация файловой системы в UNIX. Работа с файлами и директориями. Понятие о memory mapped файлах тест для курса Основы операционных систем. Практикум 15 мин
9 Организация ввода-вывода в UNIX. Файлы устройств. Аппарат прерываний. Сигналы в UNIX Понятие виртуальной файловой системы. Операции над файловыми системами. Монтирование файловых систем. Блочные, символьные устройства. Понятие драйвера.... Понятие виртуальной файловой системы. Операции над файловыми системами. Монтирование файловых систем. Блочные, символьные устройства. Понятие драйвера. Блочные, символьные драйверы, драйверы низкого уровня. Файловый интерфейс. Аппаратные прерывания (interrupt), исключения (exception), программные прерывания (trap, software interrupt). Их обработка. Понятие сигнала. Способы возникновения сигналов и виды их обработки. Понятия группы процессов, сеанса, лидера группы, лидера сеанса, управляющего терминала сеанса. Системные вызовы getpgrp(), setpgrp(), getpgid(), setpgid(), getsid(), setsid() Системный вызов kill и команда kill(). Системный вызов signal(). Установка собственного обработчика сигнала. Восстановление предыдущей реакции на сигнал. Сигналы SIGUSR1 и SIGUSR2. Использование сигналов для синхронизации процессов. Завершение порожденного процесса. Системный вызов waitpid(). Сигнал SIGCHLD. Возникновение сигнала SIGPIPE при попытке записи в pipe или FIFO, который никто не собирается читать. Понятие о надежности сигналов. POSIX-функции для работы с сигналами. ещё
Организация ввода-вывода в UNIX. Файлы устройств. Аппарат прерываний. Сигналы в UNIX тест для курса Основы операционных систем. Практикум 15 мин
10 Семейство протоколов TCP/IP. Сокеты (sockets) в UNIX и основы работы с ними "Краткая история семейства протоколов TCP/IP. Общие сведения об архитектуре семейства протоколов TCP/IP. Уровень сетевого интерфейса. Уровень... "Краткая история семейства протоколов TCP/IP. Общие сведения об архитектуре семейства протоколов TCP/IP. Уровень сетевого интерфейса. Уровень Internet. Протоколы IP, ICMP, ARP, RARP. Internet-адреса. Транспортный уровень. Протоколы TCP и UDP. UDP и TCP сокеты (sockets). Адресные пространства портов. Понятие encapsulation. Уровень приложений/программ. Использование модели клиент-сервер при изучении сетевого программирования. Организация связи между удаленными процессами с помощью датаграмм. Сетевой порядок байт. Функции htons(), htonl(), ntohs(), ntohl(). Функции преобразования IP-адресов inet_ntoa(), inet_aton(). Функция bzero(). Системные вызовы socket(), bind(), sendto(), recvfrom(). Организация связи между процессами с помощью установки логического соединения. Системные вызовы connect(), listen(), accept(). Использование интерфейса сокетов для других семейств протоколов. Файлы типа ""сокет""." ещё
Семейство протоколов TCP/IP. Сокеты (sockets) в UNIX и основы работы с ними тест для курса Основы операционных систем. Практикум 15 мин
Тренировочный экзамен Внимание! Тренировочный экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите проверить свои знания курса перед сдачей экзамена. Тренировочный экзамен можно сдавать сколько угодно один раз. 90 мин
Экзамен 60 мин

Какой документ я получу?

Сертификат

Выдаётся автоматически после успешного завершения программы.

Удостоверение о повышении квалификации

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

Стоимость программы

690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.