Главная страница
Навигация по странице:

  • Linux

  • Virtual File System

  • Network Interface

  • ОС_4_Колпаков_205. Работа со структурой и элементами ядра


    Скачать 6.23 Mb.
    НазваниеРабота со структурой и элементами ядра
    АнкорPR4_Alt_linux
    Дата07.11.2022
    Размер6.23 Mb.
    Формат файлаdoc
    Имя файлаОС_4_Колпаков_205.doc
    ТипПрактическая работа
    #773916

    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

    ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ «ВЫСШАЯ ШКОЛА ЭКОНОМИКИ»

    Московский институт электроники и математики им. Тихонова

    Практическая работа №4 по дисциплине «Операционные системы» на тему «Работа со структурой и элементами ядра»

    Выполнил:

    Колпаков Максим, студент группы БИВ205

    Дата сдачи отчета: 22.10.2022 г.

    Преподаватель:

    Г.А.Некрасов

    И.О. Фамилия

    Москва 2022 г.



    Цель




    Научиться в ОС Linux на базе платформы Альт Образование 10.0 работать со структурой и элементами ядра.


    Теоретическое введение




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

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

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

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

    Ядро Unix являлось первой практической реализацией новых идей и открытий 6070-х годов XX века в области создания операционных систем.

    Unix имеет простое монолитное ядро, в котором почти все представляется в виде файлов. Настройки хранятся в текстовых файлах, оборудование также имеет файловый интерфейс. Unix была написана на языке C, и это сделало ее переносимой с одной аппаратной платформы на другую. В Unix были впервые реализованы так называемые многозадачность и многопоточность, виртуальная память и многое другое.

    С технической точки зрения, Linux – это ядро, а не операционная система. Linux + программы из проекта GNU рождают операционную систему GNU/Linux. Однако ее тоже не существует в чистом виде. Разработчики дистрибутивов дорабатывают на свой лад GNU/Linux, после чего получаются различные операционные системыдистрибутивы. У каждого дистрибутива есть собственное имя. Однако в основе всех этих систем лежит ядро Linux, поэтому все они принадлежат одному семейству Linux-систем.

    Ядро Linux начал разрабатывать в 1991 году Линус Торвальдс. В дальнейшем оно развивалось и совершенствовалось многими людьми. Ядро Linux выпускается под лицензией GNU GPL.

    Ядро Linux Unix-подобно, так как заимствовало идеи, заложенные в Unix, соответствует стандартам POSIX, а также по большей части написано на языке С. Ядро выпускается в виде стабильных и разрабатываемых версий. В стабильных обычно исправлены ошибки, добавлены новые драйверы устройств.

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

    apt-get update

    apt-cache show kernel-image-std-def

    В завершении можно поставить ядро командой:

    update-kernel -t std-def -r <Наименование ядра> -f

    Для обновления ядра следует использовать утилиту update-kernel с правами суперпользователя, находящуюся в одноимённом пакете, который следует установить и запустить посредством указанных команд:

    apt-get update apt-get install update-kernel update-kernel

    Если необходимо обновить/установить другой тип ядра (например un-def):

    update-kernel -t un-def

    Здесь ключ -t и тип ядра (std-def, un-def и т.п.) надо указывать только если вы решили обновить ядро другого типа, т.к. по умолчанию обновляется текущий тип ядра. Для удаления старых версий необходимо использовать команду remove-old-kernels. Для тестирования ядра в Сизифе имеется ряд пакетов, которые представлены в таблице Д1.

    Таблица Д1 – Утилиты для тестирования ядра

    Вид тестирования

    Утилита

    Пример запуска

    Функциональное тестирование

    Linux Test Project (LTP)

    runltp -f syscalls

    Linux Kernel Selftests

    (kselftests)

    /usr/lib/kselftests/run_kselftest.sh

    Нагрузочное тестирование

    stress-ng

    stress-ng -a 1 -t 1m



    Время реакции на

    события (latency)

    cyclictest

    cyclictest -a -m -Sp99

    jitterdebugger

    jitterdebugger -v


    Обновление до последней 9 версии.


    Работа с утилитами была продемонстрирована на практической сдаче. Но именно после неё моя сборка Linux сломалась и перестала грузиться. При установке утилит нужно было доставить питон3, он устанавливался с ошибками. Поэтому здесь на скринах — ошибки установки.

    На сайте AltLinux приведена инструкция по обновлению с p9 на p10. Её можно разделить на несколько частей:

    1) Обновление пакетов до новейшей 9 версии

    2) Обновление до пакетов до 10 версии (с указанием нового источника обновлений)

    3) Обновления ядра

    В соответствии с этим буду использовать следующие команды:

    1) apt-repo set p9

    apt-get update

    apt-get upgrade

    2) apt-repo set p10

    apt-get update

    apt-get upgrade

    3) update-kernel -t un-def



    - Обновление ядра до последней 9 и установка нужного списка пакетов



    - upgrade, для обновления и удовлетворения некоторых зависимостей





    - Завершение обновления



    - Удаление старых версий ядра




    Обновление до 10 версии


    - Обновление пакетов до 10 версии.



    - Более мощная команда upgrade, устанавливающая пакеты для удовлетворения некоторых зависимостей











    - Удаление старых версий ядра.



    - Попытка установить утилиты для тестов.

    - Рабочий экран 10 версии.




    Аналитические вопросы




    1. Опишите возможную структуру ядра, функционал и возможную динамику изменений на примере ядра Linux ОС.

    Из интернета.

    Ядро Linux представляет собой своего рода виртуальную машину для процессов. Процессы работают без всякой информации про оборудование компьютера – ядро абстрагирует весь уровень оборудования в единый совместимый виртуальный интерфейс. Также ядро реализует многозадачность прозрачно для всех процессов – каждый процесс “думает”, что он является единственным процессом в системе, и имеет полные и эксклюзивные права на память и другие ресурсы оборудования компьютера. Если кратко описать задачи ядра, то оно управляет ресурсами компьютера и предоставляет к ним доступ в виде абстракций вроде виртуальной памяти и потоков.

    Ядро Linux состоит из пяти основных подсистем:

    1. Process Schedulerпланировщик процессов, отвечающий за контроль над доступом процессов к CPU.

    2. Memory Managerменеджер памяти, обеспечивающий безопасный доступ к основной памяти системы. Кроме того, MM обеспечивает работу виртуальной памяти, которая позволяет процессам использовать больше памяти, чем реально доступно в системе.

    3. Virtual File Systemвиртуальная файловая система, создающая абстрактный слой, скрывая детали оборудования, предоставляя общий файловый интерфейс для всех устройств.

    4. Network Interfaceсетевые интерфейсы, обеспечивающие работу с различными сетевыми стандартами и сетевым оборудованием.

    5. Inter-Process Communicationмежпроцессная подсистема, поддерживающая несколько механизмов для process-to-process связей в единой Linux-системе.



    Ядро Linux содержит в себе достаточный функционал для нормального функционирования системы без прочих дополнений/расширений, иными словами, является монолитным. Кроме того, поддерживает загружаемые модули ядра (LKM — Linux Kernel Modules или Loadable Kernel Modules), выполняющиеся в 0-м кольце защиты, с полным доступом к оборудованию, причем загрузка/выгрузка таких модулей может осуществляться во время работы системы (ядра ОС) без перезагрузки.

    Как известно, APT в дистрибутиве ALT Linux автоматически не обновляет ядра совместно с обновлением системы, поскольку обновление такого критичного компонента системы может привести к нежелательным последствиям. В связи с этим существует альтернативный вариант: в системе могут быть поставлены пакеты нескольких ядер и модулей к разным ядрам одновременно. Есть возможность в LiLo или Grub настроить так, что простая перезагрузка (в том числе по reset) будет возвращать старое ядро.



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

    Очевидно, что для любого современного IT специалиста пригодится навык работы с ВМ. В частности для тестирования разных версий программ на разных версиях Linux. Для полноты владения ситуацией нужно уметь обновлять и ядро, работать с терминалом.



    1. Опишите известные Вам утилиты для тестирования ядра, сложности, которые возникли в ходе выполнения задания.

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

    В качестве известной утилиты приведу Phoronix Test Suite, её отличительные качества.

    - Простота в использовании

    Phoronix Test Suite делает процесс проведения автоматических тестов невероятно простым. Phoronix Test Suite позаботится обо всем процессе тестирования от управления зависимостями до загрузки / установки, выполнения и агрегирования результатов тестирования.

    - Расширяемая архитектура

    Phoronix Test Suite имеет доступ к более чем 450 профилям тестирования и более 100 наборам тестов через OpenBenchmarking.org . Если есть тест, который в настоящее время не охвачен Phoronix Test Suite, новые тесты могут быть быстро добавлены с помощью его расширяемой архитектуры, при этом каждый профиль состоит только из XML-файлов и нескольких простых bash-скриптов.

    - Поддержка и разработка на заказ

    Для Phoronix Test Suite доступны всесторонние варианты поддержки. Доступны индивидуальные инженерные услуги, а также профессиональная поддержка разработки новых тестов, поддержка развертывания Phoronix Test Suite и Phoromatic в организациях, мониторинг производительности / управление как услуга и множество других пользовательских услуг.

    - Запись результатов

    Помимо простой записи фактического значения теста, Phoronix Test Suite архивирует системные журналы, журналы тестирования и установки. Результаты из Phoronix Test Suite отображаются в веб-средстве просмотра результатов с дополнительной поддержкой для их загрузки в OpenBenchmarking.org . Также предлагается множество других вариантов, от экспорта результатов в PDF до параллельного сравнения производительности.



    1. Опишите различия, информацию о которых Вам удалось найти по ОС версии 9.2 и 10 Альт Образование.

    Приведу changelog с вики альта:

    - изменена схема расположения папок (Музыка, Изображения и т.п.) - теперь они находятся в самой домашней папке, а не как подпапки в Документы

    - добавлено приложение appinstall для установки популярных приложений (Google Chrome, Zoom, Skype) с официальных сайтов (с помощью epm play)

    - серверные компоненты разворачиваются с помощью платформы deploy

    - в базовый комплект включен PascalABC.NET (версия под Линукс идёт только в виде компилятора)

    - по умолчанию в Центре приложений добавлена поддержка репозитория Flathub для установки сторонних приложений в формате Flatpak

    - вместе с Moodle устанавливается плагин qtype_coderunner для выполнения тестов в виде реальной компиляции и выполнения программного кода в изолированной среде

    - исключены пакеты puppetserver, puppetdb и childsplay

    - scilab перенесён в профили для ВУЗов и СУЗов

    - Обновление компонентов системы

    1. Опишите различия, которые возникают при формировании обновлённой, более совершенной версии ядра.



    Вот описание с пресс релиза новой версии ядра Linux.

    • В ядре Linux 5.19 принято 16 401 исправлений от 2 190 разработчиков.

    • Размер патча составляет 90 МБ.

    • Фактически изменения в ядре затронули 13 847 файлов, было добавлено 1 149 456 строк кода и удалено 349 177 строк кода.

    • Около 39% всех представленных в 5.19 изменений связаны с драйверами устройств, 21% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 11% обновлений связано с сетевым стеком, 4% внесено в обновления файловых систем, а 3% обновлений связаны с внутренними подсистемами ядра.

    Опираясь на вышеизложенные факты, версия ядра Linux 5.19 содержит огромное количество изменений, обновлений и доработок:



    • поддержка процессорной архитектуры LoongArch;

    • интеграцию патчей BIG TCP, позволяющих увеличить максимальный размер пакета TCP-пакета до 4ГБ для оптимизации работы высокоскоростных внутренних сетей дата-центров;

    • режим «on-demand» в fscache;

    • удаление кода для поддержки формата a.out;

    • возможность применения ZSTD для сжатия прошивок;

    • интерфейс для управления вытеснением памяти из пространства пользователя;

    • повышение надёжности и производительности генератора псевдослучайных чисел;

    • при сборке при помощи Clang 15 реализована поддержка механизма рандомизации структур ядра;

    • добавлен драйвер для контроллера NVMe, используемого в компьютерах Apple на базе чипа M1;

    • значительно обновлён код, связанный с драйвером amdgpu;

    • поддержку расширений Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) и ARM SME (Scalable Matrix Extension).



    написать администратору сайта