====== Операционные системы (ОС) ====== Данная страница предназначена для организации курса "Операционные системы (ОС) 22ХХ ИГУ". Лабы сдавать в свою телеграм-группу в виде ссылки на **единый** проект всех лабораторных работ на github или ему подобный сервис. Лабы можно делать в любом порядке, можно в виде единого проекта (**по согласованию с преподавателем**). ===== Лабораторная работа 1 ===== - Исследование компилятора gcc, язык ассемблера. Связь процесса и операционной системы. Makefile, git. * Нужно написать программу на С, С++, PASCAL/FPC и др. компилируемом языке, странслировать его в Assembler с разными опциями оптимизации gcc -S -o <>.s <>.c [-O[0123s]] [-g[123]] * Разобраться с одним из вариантов [оптимизации] ассемблерной программой (**добавить комментарии в сгенерированный ассемблерный код**) - найти циклы, переменные и т.п. * Преобразовать программу в модульную, разработать Makefile. - Программу усовершенствовать: добавить параллельный процесс средствами Linux/Windows. Синхронизация доступа к общему ресурсу (файл, канал, pipe, очередь, mmap, smmem). Язык С или другой, но на С проще, есть куча примеров. ==== Варианты лабораторных работ (реализуемая функция) ==== - вычисление - факториала, чисел Фибоначчи, функции Аккермана, ... - определенного интеграла численным методом, - сходящегося ряда для известных функций (sin, cos, exp, ....); - реализация численного метода - дифференцирования, - решения трансцендентного уравнения (методы Ньютона, Рыбакова, деления отрезка пополам, золотого сечения, простых итераций, ...), - решения задачи Коши; - реализация алгоритма - Бразенхема (рисование прямой, окружности, общего вида). ==== Лабораторная 2 - Установка Linux (развертка, bootstraping) ==== ... из командной строки: - Создать виртуальную Linux x86_64-машину (не забываем включить в BIOS в CPU аппаратную поддержку виртуальных машин) с винчестером и CD, сетевая карта - bridge. - Загрузить дистрибутив [[https://www.system-rescue.org/Download/|System Rescue CD **64!**]], подсоединяем к **виртуальной** машине, грузим CD; на некоторых машинах может не запускаться, попробуйте версию 4.X.X. - Устанавливаем Linux-ы: изучаем бутстраппинг (bootstrapping) операционной системы: - ("начальный уровень") Debian/Ubuntu при помощи [[https://wiki.debian.org/ru/Debootstrap|debootstrap]]; - ("средний уровень") ставим [[https://wiki.archlinux.org/title/Install_Arch_Linux_from_existing_Linux|Arch Linux]] (my favorite distribution) русский [[https://wiki.archlinux.org/title/Install_Arch_Linux_from_existing_Linux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)|перевод]] (**может быть неактуальным!**) ; - ("продвинутый уровень") [[https://wiki.gentoo.org/wiki/Handbook:Parts/Full/Installation/ru|Gentoo]]/[[https://www.funtoo.org/Install/Introduction|Funtoo]]; - ("продвинутый уровень") Установка глобального доступа в сеть IPv6 [[https://tunnelbroker.net|Tunnel brocker]]; - ("уровень 'guru'") [[https://barracuda72.github.io/LFS-BOOK.pdf|LHS]]; - ("уровень 'dao'") Arch загрузкой по [[https://wiki.archlinux.org/title/diskless_system|сети]] DHCP/TFTP/NFS, можно и другие дистрибутивы использовать. - Установить сервер sshd. - Сделать пользователя user с паролем 123456 (как у Хиллари Клинтон на корпоративной почте ;-)); пробросьте порт маршрутизатора 7022 на порт 22 вашей виртуальной машины; попробую зайти, посмотреть все ли готово. - Отчет - запишите ролик (VirtualBox, например, может это) как все было (тут надо продумать вариант записи консоли). ==== Лабораторная 3a. Реализация скрипта bash ==== ... в вашей установленной виртуальной машине реализовать задачу из методички, опубликованной здесь: [[https://github.com/eugeneai/bash-essentials-ru-handbok/raw/master/bash-ru.pdf|ЗДЕСЬ]]. ==== Лабораторная 3b. Реализация скрипта на Windows PowerShell ==== Задание то же, что и в Лабораторной 3a, но надо сделать в Powershell. - Изучаем по [[https://leanpub.com/powershell101|книге]] (покупаем за $0), [[https://docplayer.com/73181880-Lekciya-14-scenarii-windows-powershell.html|презентация]]; - Делаем задачу из лабы с bash, но средствами Windows (Imagemagick для Windows существует тоже, например); - Как вариант можно по согласованию поставить самостоятельно задачку. ==== Лабораторная 4. Разработка сетевой инфраструктуры для распределенных вычислений ==== .... для организации распределенной обработки информации. Совместный проект 2-5 человек. Потребуются ваши виртуальные машины или контейнеры в виртуальной сети. - Изучить [[https://www.rabbitmq.com|RabbitMQ]]. - Придумать задачу, например потоковая обработка документов (считывание изображений сканированных документов, распознавание, разметка, сохранение в БД, поиск в БД); Крутой проект, конечно, но можно модель построить. - Реализовать виртуальную сеть (zerotier, OpenVPN, wireguard) и инфраструктуру RabbitMQ. - Реализовать на инфраструктуре - каждый берет себе этап обработки, пишет на любом языке, поддерживаемом RebbitMQ. Как продвинутый вариант - можно зарегистрироваться у Microsoft на Asure и там зажигать год бесплатно на новой учетной записи. ==== Темы проектов ==== Темы находятся [[sys:prj|здесь]] Оценка = количество сданных лаб + 1. 😉 Кому трудно - делайте вдвоем. === Доступ к Виртуальной машине === Из командной строки (powershell) Windows 8.0-11.0 ssh stud@imp.isclan.ru Пароль здесь не публикую по понятным причинам.