Skip to content

cram0s/machine_learning_KRU

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

machine_learning

Программа экзамена

по дисциплине “Операционные системы семейства UNIX и сетевые технологии”

Билет на экзамене по дисциплине «Операционные системы семейства UNIX и сетевые технологии» состоит из двух теоретических и одного практического вопроса. Экзамен проводится письменно. Каждое из трех заданий экзамена оценивается в двадцать баллов.

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

При решении практических заданий студент должен представить текст скрипта на языке программирования Python либо скриптового языка программирования bash, пояснения алгоритма работы, а также описание всех параметров, которые принимает скрипт (если таковые присутствуют) и описание формата вывода скрипта (если таковой присутствует). В связи с письменным проведением экзамена, при проверке правильности решения практического задания, в первую очередь будет оцениваться грамотность алгоритма, знание команд Linux и Bash, некритичные опечатки, приводящие к неработоспособности скрипта допускаются.

Теоретические вопросы к экзамену

  1. Понятие операционной системы, выполняемые ей функции.

  2. Порядок загрузки компьютера и операционной системы.

  3. История развития ОС.

  4. Семейство операционных систем UNIX. Философия UNIX.

  5. Сравнительная характеристика Linux и Windows.

  6. Понятие системного вызова операционной системы.

  7. Понятие виртуализации. Виртуальные машины.

  8. Основные компоненты операционной системы. Разделение функций.

  9. Понятие файловой системы. Функции, виды, характеристики.

  10. Физические и логические диски. Разбиение жесткого диска для установки Linux.

  11. Стандартная иерархия каталогов Linux.

  12. Понятие ядра операционной системы. Пространство ядра и пользовательское пространство.

  13. Командный интерпретатор операционной системы.

  14. Управление оперативной памятью в современных ОС. Виртуальная память.

  15. Работа ОС с внешними устройствами. Понятие драйвера устройства.

  16. Многозадачность современных операционных систем.

  17. Графический и текстовый интерфейс взаимодействия с ОС.

  18. Источники установки программных приложений. Программные репозитории.

  19. Способы установки программ  в Linux.

  20. Процессы в Linux. Функции, организация, управление.

  21. Жизненный цикл процесса операционной системы.

  22. Основные команды Linux для управления файлами.

  23. Основные команды Linux для управления каталогами.

  24. Основные команды Linux для управления файловыми системами.

  25. Понятие пакета в Linux. Менеджеры пакетов.

  26. Основные команды Linux для управления пакетами.

  27. Основные команды Linux для управления процессами.

  28. Типы файлов в Linux. Ссылки.

  29. Основные команды для управления текстовыми потоками.

  30. Основные команды для просмотра и редактирования текстовых файлов.

  31. Регулярные выражения.

  32. Встроенные и внешние команды bash.

  33. Основные конфигурационные файлы Linux.

  34. Командный интерпретатор bash. Структура команды.

  35. Bash. Переменные и типы.

  36. Bash. Условия.

  37. Bash. Циклы.

  38. Bash. Функции.

  39. Переменные окружения в bash.

  40. Основные команды Linux для управления пользователями и группами.

  41. Суперпользователь root. Характеристика, особенности, функции, опасность.

  42. Система прав доступа Linux. Структура и смысл прав доступа.

  43. Организация хранения паролей пользователей в Linux.

  44. Основные команды Linux для управления правами доступа.

  45. Понятие компьютерных сетей. Общие принципы, организация.

  46. Понятие сетевого ресурса. Классификация.

  47. Семейство сетевых протоколов TCP/IP.

  48. Адресация компьютеров в сети. IP, MAC адреса.

  49. Удаленный доступ к командной строке. Протокол SSH.

  50. SSH-ключи. Назначение, использование, генерация.

  51. Понятие виртуальной сети. Виды виртуальных сетевых компонентов.

  52. Трансляция сетевых адресов. Виды NAT.

  53. Использование Linux для разработки. Стандартные программные средства.

  54. Интерпретатор Python. Использование, версии. Понятие виртуального окружения, настройка, использование.

  55. Структура проекта на Python. Организация модулей. Файл зависимостей.

  56. Системы контроля версий. Примеры, назначение, общие понятия.

  57. Общий алгоритм работы с СКВ Git. Инициализация репозитория, добавление файлов, коммиты.

  58. Работа с ветвлением в Git. Назначение веток. Создание, переключение, объединение веток. Разрешение конфликтов слияния.

  59. Работа с удаленными репозиториями. Клонирование и форк репозиториев. Отправка и получение изменений в удаленный репозиторий.

  60. Современные методологии работы с Git в командном проекте. GitFlow.

  61. Понятие сетевого сокета. Применение, виды, схема взаимодействия.

  62. Блокирующие операции при обмене через сокеты. Возможные ошибки. Таймауты.

  63. Транспортные протоколы TCP и UDP. Принципы работы, сравнение.

  64. Клиент-серверное взаимодействие.

  65. Реализация сокетов в языке Python. Модуль socket.

  66. Понятие программного потока. Процессы и потоки.

  67. Асинхронное программирование. Основные понятия. Параллелизм и конкуррентность.

  68. Блокирующие и неблокирующие операции.

  69. Алгоритмы, ограниченные процессором и вводом-выводом. Основные характеристики, особенности выполнения и распараллеливания.

  70. Особенности реализации многопоточности в Python. Модуль threading.

  71. Особенности организации многопроцессорной программы в Python. Модуль multiprocessing.

  72. Асинхронное программирование в Python. Использование asyncio.

  73. Параллельное программирование. Достоинства и недостатки.

  74. Понятие потокобезопасности. Причины, проблематика, способы обеспечения.

  75. Алгоритм выполнения многопоточной программы. Блокировка потоков.

  76. Доступ к общим ресурсам в многопоточной программе. Механизмы блокировки ресурсов модуля threading.

  77. Работа с файловой системой в Python. Основные операции.

  78. Понятие веб-технологий. Основные характеристики, история, назначение.

  79. Программное обеспечение, используемое для веб-технологий. Виды, назначение, примеры.

  80. Понятие URL: назначение, применение, состав.

  81. Понятие веб-сервера. Цели, принцип работы.

  82. Протокол HTTP. Принцип работы, назначение, основные понятия.

  83. Настройка веб-сервера. Основные конфигурационные файлы, понятия.

  84. Виртуальные хосты. Применение, настройка.

  85. Понятие прокси-сервера. Настройка сервера nginx.

  86. Основные принципы криптографии. Шифры. Исторические шифры.

  87. Симметричное шифрование. Примеры алгоритмов, общая схема, виды.

  88. Асимметричное шифрование. Примеры алгоритмов, общая схема, преимущества и недостатки.

  89. Алгоритмы хэширования. Примеры, назначение.

  90. Протокол TLS/SSL. Общая схема взаимодействия, назначение.

  91. Понятие SSL-сертификата. Назначение. Самоподписанные сертификаты. Центры сертификации.

  92. FTP-сервер. Назначение, общая схема работы. Обеспечение безопасности.

  93. Настройка FTP-сервера в Linux. Основные понятия, конфигурационные файлы.

  94. Email-сервер. Назначение, общая схема работы. Обеспечение безопасности.

  95. Настройка Email-сервера в Linux. Основные понятия, конфигурационные файлы.

  96. Основные принципы мониторинга сетевых служб. Мониторинг четырех золотых сигналов.

  97. Прикладные интерфейсы программирования. Назначение, виды, реализация.

  98. Развертывание приложений на удаленном сервере. Основные процессы. Понятие тестового и рабочего программных окружений.

  99. Управление конфигурациями. Основные понятия, назначение. Примеры систем.

  100. Контейнеризация программных приложений. Основные понятия, использование.

Примерные практические задания к экзамену

  1. Напишите программу, которая создает нить. Родительская и вновь созданная нити должны распечатать десять строк текста.
  2. Напишите простой эхо-сервер, использующий неблокирующие сокеты и клиент к нему.
  3. Напишите простой многопоточный загрузчик URL. Список URL скрипт принимает как аргументы командной строки.
  4. Реализуйте простой HTTP-клиент. Он принимает один параметр командной строки - URL. Клиент делает запрос по указанному URL и выдает тело ответа на терминал как текст.
  5. Напишите программу, которая вычисляет число Пи при помощи ряда Эйлера. Количество потоков программы должно определяться параметром командной строки.
  6. Дана функция calculate(x, y). Напишите программу, которая создает пул из 5 процессов и распределяет в этом пуле вычисление функции на промежутке х от 0 до 1 с шагом 0,1. у равняется 2 всегда.
  7. Напишите программу, которая проверяет все числа от 0 на простоту и выводит простые числа на экран по мере нахождения. Числа должны проверяться в различных потоках (или процессах, по выбору студента) Программа должна работать до тех пор, пока ее не остановит пользователь.
  8. Напишите программу, которая обходит все файлы в директории, переданной ей как параметр и выводит на экран имена тех, чей размер задан как второй параметр. Реализовать рекурсивный обход поддиректорий.
  9. Напишите программу, которая выводит на экран список номеров открытых портов на данной машине. Использовать команду netstat.
  10. Напишите программу, которая копирует файл с удаленного хоста в текущую папку по SSH. Имя файла и адрес хоста принимать как параметры.
  11. Сценарий должен вывести (на stdout) все числа, делящиеся на 12, в диапазоне от первого параметра до последнего. Если параметры заданы некорректно, скрипт должен вывести сообщение.
  12. Сценарий должен имитировать работу лототрона -- извлекать 5 случайных неповторяющихся чисел в диапазоне 1 - 50. Сценарий должен предусматривать как вывод на stdout, так и запись чисел в файл, кроме того, вместе с числами должны выводиться дата и время генерации данного набора.
  13. Напишите сценарий, который находил бы корни "квадратного " уравнения, вида: Ax^2 + Bx + C = 0. Сценарий должен получать коэффициенты уравнения A, B и C, как аргументы командной строки, и выводить корни. Если корней нет, вывод должен быть пустым.
  14. Написать скрипт, который выведет всех потомков процесса по его PID.
  15. Напишите скрипт, который и считает кол-во измененных в течении последних 3 дней файлов из каталога, переданного как параметр и выводит на экран.
  16. Написать скрипт, который выведет информацию о топ10 процессов по потреблению оперативной памяти.
  17. Написать скрипт, который выведет все файлы в домашней директории пользователя, измененные за последнюю неделю.
  18. Напишите сценарий, который принимает как аргументы список программ и устанавливает их в текущую систему. Сделайте возможность передать список программ через текстовый файл.
  19. Напишите скрипт, выводящий сообщение в случае, если в файле /etc/hosts есть записи относящиеся к адресам отличным от 127.0.0.1.
  20. Разработать сценарий, который ведёт в файле /tmp/run.log журнал запусков. При каждом запуске сценария в конец журнала должна добавляться строка с датой и временем запуска сценария, в стандартный вывод - фраза "Hello", в stderr - количество предыдущих запусков программы. Убедиться в правильности работы программы и выводе различных сообщений в различные потоки вывода.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 98.9%
  • Python 1.1%