====== Операционные системы (ОС) ======
Данная страница предназначена для организации курса "Операционные системы (ОС) 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
Пароль здесь не публикую по понятным причинам.