for_students:os

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
for_students:os [2022/01/25 17:26]
ejlka [Системы виртуализации.]
for_students:os [2022/01/27 11:24] (текущий)
ejlka
Строка 1: Строка 1:
 ===== Операционные системы ===== ===== Операционные системы =====
 +В данном разделе будут собраны теоретические материалы по дисциплине Операционные системы.
  
  
- 
-==== Архитектура ОС. ==== 
- 
-Операционная система - комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем. Их можно разделить на 2 большие группы - ОС семейства MS Windows и Unix-подобные ОС. \\ ОС состоит из следующих компонентов: 
- 
-  * Загрузчик - GRUB (GRand Unified Bootloader), Windows Boot Manager; 
-  * Ядро ОС 
-  * Сервисы (демоны) — программы, постоянно работающих и выполняющих задачи в фоновом режиме; 
-  * Утилиты - вспомогательные компьютерные программы в составе общего программного обеспечения для выполнения специализированных типовых задач, связанных с работой оборудования и операционной системы (ОС); 
-  * Оболочки - командные оболочки (shell, bash, powershell), файловые менеджеры (filezilla, mc), графические оболочки (KDE); 
-  * Среды разработки. 
- 
-=== Как происходит загрузка ОС? === 
- 
-После включения ПК сначала проходит POST (Power on self test) - проверка аппаратного обеспечения компьютера. Далее загружается BIOS/UEFI, в котором прописано, откуда будет происходить загрузка (boot device), после чего происходит загрузка с этого устройства. Для того, чтобы с данного устройства могла происходить загрузка, оно должно быть размечено специальным образом. Если это BIOS, то область MBR (master boot record), если UEFI - UEFI boot sector, после чего управление передается загрузчику ОС. \\ **Загрузчик ОС**  - специальная программа, которая расположена на первых секторах жесткого диска. Загрузчик нужен для того, чтобы можно было модифицировать загрузку ОС - например, если у вас установлено параллельно 2 ОС - Windows и Linux, или же вам надо загрузиться с какими-либо параметрами в режиме отладки. Загрузчик находит ОС и загружает 2 сущности - Kernel space и User space. \\ **Ядро ОС**  - часть ОС, постоянно находящаяся в оперативной памяти и управляющая всей ОС. Ядро контролирует доступ приложений к аппаратной части - к ОЗУ, к ЦПУ и т.д., то есть обработка прерываний. \\ Основные функции ядра ОС: 
- 
-  * обработка прерываний; 
-  * создание и уничтожение процессов; 
-  * переключение процессов из состояния в состояние; 
-  * организация взаимодействия между процессами; 
-  * поддержка распределения и перераспределения памяти; 
-  * поддержка операций ввода-вывода. 
- 
-Архитектура ядер: 
- 
-  * Монолитное ядро; 
-  * Модульное ядро; 
-  * Микроядро; 
-  * Экзоядро; 
-  * Наноядро; 
-  * Гибридное ядро. 
- 
-**Монолитное ядро**  - все драйверы выполняются в пространстве ядра. Примером такого ядра является Linux. Преимуществом такого ядра является скорость работы, однако же сбой в одном из компонентов нарушит работу всей системы. Для изменения такого ядра (добавления новых функций, драйверов и т.д.) необходима перекомпиляция ядра и при этом будет происходить увеличение кода ядра, что к повышению требований к оперативной памяти. Поэтому такие ядра не используются в системах, где есть жесткое ограничение по объему ОЗУ. \\ **Модульное ядро**  - это разновидность монолитного ядра, однако добавлять и убирать различные драйверы в пространства ядра в нем возможно без компиляции. Современные версии Linux работают на модульном ядре. С помощью команд ''insmod''  и ''modprobe''  можно загружать и выгружать модули ядра, ''lsmod''  покажет список загруженных модулей. \\ **Микроядро**  - предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием. Это позволяет решить проблему отказа системы при отказе работы одного драйвера. Преимуществами такого ядра является его высокая надежность, недостаток - дополнительные затраты на переключение контекста. \\ **Экзоядро**  - частный случай микроядра, когда ядро занимается только взаимодействием процессов. Все остальные функции - работа с памятью, сетью, другими устройствами - выносятся в пользовательские библиотеки. \\ **Наноядро**  - ядро, реализующее только обработку прерываний, т.е. по сути работа с аппаратным обеспечением. Такой тип ядра часто используется в виртуализации. Наноядро гостевой ОС может работать как процесс или модуль ядра другой ОС, позволяя запускать "неродные" приложения. \\ **Гибридное ядро**  - позволяет сгладить недостатки монолитного и микроядра. При этом часть критичных для производительности функций реализована внутри пространства ядра, а часть, как сервисы, в пользовательском пространстве. 
- 
----- 
- 
-<WRAP center round info 60%> MBR - master boot record </WRAP> MBR содержит исполняемый код, необходимый для передачи управления загрузчик и таблицу разделов (partition table). Эта запись занимает 512 байт в начале диска. В этой таблице можно создавать только 4 первичных (primary) разделов. Если необходимо обойти это ограничение, можно создать расширенный раздел (extended partition) вместо одного из первичных и уже внутри него создать несколько логических разделов (до 16). Стоит помнить, что ОС Windows можно устанавливать только на первичные разделы, у Linux таких ограничений нет. <WRAP center round info 60%> GPT — GUID Partition Table </WRAP> GPT - статический уникальный идентификатор, не содержит загружаемый код. Тем не менее блок MBR присутствует в начале для совместимости и защиты от повреждения утилитами, не умеющими работать с GPT, но понимающими MBR. В совместимом MBR указан один раздел, охватывающий весь диск. GPT не накладывает ограничений на разделы, поэтому такие понятия, как расширенные и первичные разделы, в работе с ним не используются. 
- 
----- 
- 
-==== Файловые системы. ==== 
- 
-Файл - это именованная часть данных на диске. Для работы с файлами на диске должна быть создана соответствующая структура. Файловая система - это порядок организации, хранения и именования данных. Сейчас существует множество файловых систем, но приложения не обязаны знать, как работать с каждой из них. Для приложений существует свой уровень абстракции - виртуальная файловая система, с помощью которой приложения пишут и читают с диска (справедливо только для Linux). \\ Минимальная единица, с которой работает файловая система - это блок (в ОС Linux) или кластер (в ОС Windows). Блок или кластер состоит из нескольких секторов и мы не можем занять в файловой системе место меньше, чем один блок или кластер. \\ Все файловые системы можно разделить на 2 группы - журналируемые и нежурналируемые, в зависимости от того, будет ли как-то контролироваться факт записи на диск или нет. Для записи на диск нужно выполнить следующие действия: 
- 
-  * зарезервировать место в файловой системе; 
-  * записать данные на диск; 
-  * записать информацию о местонахождении данных; 
-  * создать имя файла. 
- 
-=== Нежурналируемые ФС === 
- 
-Примером таких систем может быть ext2 и fat. Если в процессе записи на диск действие будет остановлено (например, отключится электричество), то в ФС возникнут ошибки, будут повреждены файлы и директории. У таких ФС есть одно преимущество - это скорость. Поэтому сейчас они используются в основном в качестве разделов для временных файлов. Кроме того, они используются на флеш-накопителях, т.к. меньше используют операции перезаписи из-за отсутствия журнала. 
- 
-=== Журналируемые ФС === 
- 
-Журналируемые файловые системы работают по транзакционному принципу. В структуре раздела есть журнал, в котором записываются действия перед тем, как будут произведены. И после их выполнения журнал очищается. Транзакция — это набор действий, выполняемых как одно целое, то есть оно или полностью завершено, или нет. Если транзакция будет прервана, то в соответствии с записью в журнале эти изменения откатятся, и транзакция будет считаться невыполненной. Такой подход делает работу удобнее и надежнее. Чтобы в нежурналируемой системе обнаружить незавершенные действия, требуется проверить целиком весь диск, всю файловую систему. Журналируемые ФС работают медленнее, чем если бы они были отформатированы в аналогичные нежурналируемые. Примером таких ФС могут быть - ext4, NTFS. 
- 
-=== Файловая система Windows - NTFS === 
- 
-NTFS - new technology file system, основная файловая система ОС Windows. \\ Основные особенности: 
- 
-  * повышенная надежность - NTFS использует файл журнала и сведения о контрольных точках для восстановления согласованности файловой системы при перезагрузке компьютера после сбоя системы; 
-  * повышенная безопасность - безопасность на основе списка управления доступом (ACL) для файлов и папок, а также поддержка шифрования диска BitLocker; 
-  * поддержка больших томов - NTFS может поддерживать тома размером до 8 ПБ в версии Windows Server 2019 и выше и Windows 10; 
-  * максимальная длина имени файла и пути к файлу - поддержка длинных имен файлов с обратной совместимостью, поддержка длины пути свыше 260 симоволов; 
-  * динамическое выделение емкости - применение дисковых квот для отслеживания и контроля использования дискового пространства в томах NTFS для отдельных пользователей, сжатие файловой системы, увеличение размера тома NTFS возможно путем добавления нераспределенного пространства с того же или с другого диска. 
- 
------- 
-==== Структура каталогов Linux ==== 
- 
-В ОС Linux есть единая иерархия директорий, которая не зависит от физических дисков. Все файлы и каталоги находятся в корне (он же root, он же /). [{{:for_students:106.jpg?}}] 
-Рассмотрим некоторые из этих директорий: 
-  * ''/bin'' - содержит непосредственно исполняемые файлы многих базовых команд оболочки. В основном программы представлены в двоичном формате; 
-  * ''/dev'' - содержит файлы устройств, есть некоторые особенности: 
-      * ''/dev/null'' - эту команду можно отправить, чтоб уничтожить содержимое файла 
-      * ''/dev/zero'' - содержит бесконечную последовательность нулей; 
-      * ''/dev/random'' - содержит бесконечную последовательность случайных значений; 
-  * ''/etc'' - содержит файлы конфигураций; 
-  * ''/usr'' - содержит пользовательские двоичные файлы и данные программы 
-      * ''/usr/bin'' - основные пользовательские команды; 
-      * ''/usr/sbin'' - дополнительные команды для администратора; 
-      * ''/usr/lib'' - системные библиотеки; 
-      * ''/usr/share'' - документация 
-  * ''/home'' - директория для домашних каталогов пользователей; 
-  * ''/lib'' - библиотеки 
-  * ''/sbin'' - системный двоичные файлы. Эти файлы запускаются только от имени пользователя root 
-  * ''/tmp'' - временные файлы, содержимое этой директории удаляется после перезагрузки; 
-  * ''/var'' - файлы переменных данных. Здесь хранятся логи. 
-  * ''/boot'' - загрузочные файлы 
-Физические диски при этом могут быть примонтированы к любой директории (с помощью команды ''mount''). Точка монтирования - это логическая связь между физическим диском и директорией в файловой структуре Linux. \\ 
-Рассмотрим ситуацию, когда вся система (/) находится на одном физическом диске, но место на этом диске стало заканчиваться. В ОС Linux возможно просто добавить новый диск и примонтировать его к какой-либо директории. Все пути останутся прежними.  
-------- 
-==== LVM - logical volume manager. ==== 
- 
-LVM - управление логическими томами в Linux. Необходим для того, чтобы можно было объединить несколько различных аппаратных дисков в один и далее разбить их так, как требуется. LVM позволяет этого делать "на лету", то есть без отмонтирования текущего диска и, соответственно, без остановки приложения. \\ Возможности LVM: 
- 
-  - замена диска без простоя системы; 
-  - перераспределение информации по физическим носителям; 
-  - увеличение раздела за счет выделения нового пространства на физическом носители или добавления нового. 
- 
-Некоторые понятия LVM: 
- 
-  * Физический том (physical volume, pv) - обычно это диск /dev/sda, /dev/sdb или же раздел на диске /dev/sda1 
-  * Группа томов (volume group, vg) - в эти группы объединяются физические тома и являются единым пространством, которое можно нарезать на логические диски. 
-  * Логические тома (logical volume, lv) - логический раздел в группе томов. Емкость такого раздела может быть больше, что емкость отдельного физического тома, что позволяет увеличить гибкость работы с разделами. 
-[{{:for_students:16-2.jpg?}}] 
- 
-==== Подключение по SSH. ==== 
- 
-SSH - secure shell (безопасная оболочка). Это сетевой протокол прикладного уровня , с помощью которого можно удаленно управлять операционными системами, а также передавать файлы. Безопасность осуществляется за счет шифрования трафика. По умолчанию этот протокол использует 22 порт. Для работы с ssh необходима серверная и клиентская часть программного обеспечения. Мы будем использовать в качестве серверной части - OpenSSH (ОС Linux) и в качестве клиентской - Windows Terminal (ОС Windows).\\ 
-Аутентификация возможна по паролю или же по ключу. При использовании ключей необходимо сгенерировать пару ключей - открытый (public) и закрытый (private). Закрытый ключ хранится на машине, с которой происходит подключение, на удаленной машине - открытый ключ. <WRAP center round alert 60%> 
-Закрытый ключ пользователя ни при каких обстоятельствах никому не передается! 
-</WRAP> 
-Пара из открытого и закрытого ключей аналогична запиранию двери. Замок общедоступен, любой человек с подходящим ключом может открыть дверь. Ключ является закрытым и предоставляется только доверенным людям, так как его можно использовать для открытия двери. При подключении к виртуальной машине Linux она проверяет SSH-клиент, чтобы убедиться, что у него есть правильный закрытый ключ. Если у клиента есть закрытый ключ, он получает доступ к виртуальной машине. \\ 
-Сгенерировать пару ключей можно с помощью Windows Terminal командой ''ssh-keygen'', после чего открытый ключ необходимо будет передать на удаленную машину. \\ 
-Для подключения по паролю вам необходимо знать следующее - адрес удаленной машины, имя и пароль пользователя. 
- 
-------- 
  
  
  • for_students/os.1643120761.txt.gz
  • Последнее изменение: 2022/01/25 17:26
  • ejlka