5. Системное программирование. Лаборатория Tarantool. Файловая система | Технострим

YOUTUBE · 25.11.2025 05:20

Ключевые темы и таймкоды

Файловая система

0:05
  • Лекция о файловой системе, ее задачах и устройстве.
  • Файловая система обеспечивает пространство имен, формат хранения, интерфейс и защиту.
  • Файловая система - это программа, которая может быть запущена на разных типах накопителей.

Задачи файловой системы

9:25
  • Файловая система должна обеспечивать пространство имен, формат хранения, интерфейс и защиту.
  • Реализация файловой системы может быть зависима от архитектуры, но ядро должно использовать интерфейс.

Типы файловых систем

11:31
  • Файловые системы могут быть запущены поверх оперативной памяти, сети, SSD, HDD и даже числа Пи.
  • Процес-процес - это файловая система, которая хранит все данные в корневой папке процесса.

Файловая система

13:58
  • Файловая система - это интерфейс, который позволяет обращаться к данным на диске.
  • Файловая система может быть реализована в виде модуля ядра, который позволяет создавать свои собственные файловые системы.
  • Файловая система может быть смонтирована на удаленном сервере, что позволяет удаленно редактировать файлы.

Драйверы устройств

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

Жесткий диск

22:10
  • Жесткий диск состоит из трех частей: считывающих головок, контроллера и магнитных дисков.
  • Магнитные диски покрыты материалом, восприимчивым к магнитному излучению, и хранят биты в виде магнитных доменов.
  • Считывающая головка подъезжает к нужному магнитному домену и записывает или читает данные, используя электромагнитную индукцию.

Адресация жестких дисков

27:49
  • Жесткие диски делятся на цилиндры, головки и сектора.
  • Адресация по цилиндрам, головкам и секторам устарела и не используется в современных устройствах.
  • Вместо этого используется адресация логической блока (LBA), которая представляет устройство как сплошной массив байт.

Производительность жестких дисков

32:38
  • Производительность жестких дисков измеряется в RPM (оборотов в минуту).
  • Для повышения производительности можно использовать последовательные обращения к диску.
  • Жесткие диски подвержены механическим повреждениям, таким как падение или резкая встряска.

Твердотельные накопители (SSD)

37:15
  • SSD состоит из ячеек памяти, контроллера и кэша.
  • Ячейки памяти хранят биты информации, используя полевые транзисторы с плавающим затвором.
  • SSD имеют высокую производительность и надежность по сравнению с жесткими дисками.

Принцип работы SSD

41:50
  • В SSD используются плавающие затворы для хранения электронов, которые могут быть прочитаны или записаны.
  • Для чтения электронов используется туннельный эффект, который позволяет определить, есть ли электроны в ловушке.
  • Для записи электронов используется большой отрицательный заряд, который отталкивает электроны и позволяет им сбежать.

Чтение и запись в SSD

44:31
  • Чтение происходит путем подачи положительного заряда сверху и отрицательного заряда снизу, что позволяет определить, есть ли электроны в ловушке.
  • Запись происходит путем подачи большого отрицательного заряда сверху и положительного заряда снизу, что позволяет электронам сбежать из ловушки.

Обновление и очистка в SSD

51:05
  • Обновление в SSD происходит путем деления памяти на блоки и страницы, которые нельзя обновить на месте.
  • Очистка блоков происходит путем подачи высокого напряжения, которое может затронуть соседние ячейки.
  • Райли - это проблема, связанная с невозможностью обновления данных на месте, которая может привести к снижению производительности SSD.

Оптимизация работы SSD

56:26
  • Стирание блоков SSD происходит путем подачи большого напряжения, которое сгоняет все электроны.
  • Оптимизация позволяет изменять единички на нули на месте, что может быть полезно при обновлении страниц.

Задачи SSD

57:30
  • Сборка мусора, адресация, контроль нагрузки и распределение нагрузки.
  • SSD может предоставлять параллельный доступ и имеет скорость в тысячи раз быстрее, чем жесткий диск.
  • Чтение страницы занимает микросекунды, запись - миллисекунды.

Файловые системы и их устройство

1:00:10
  • Видео обсуждает различные устройства хранения данных, такие как HDD, SSD и другие, и их различные устройства.
  • Однако, несмотря на различия в устройстве, все устройства могут быть использованы с любой файловой системой.
  • В начале подключения устройства, операционная система через драйвер считывает информацию с особого блока, называемого мастер-бут-рекордом MBR.
  • Этот блок содержит информацию о разделах диска и их типах.
  • В видео обсуждаются различные типы разделов и их назначение.

Файловые системы и их реализация в ядре

1:07:45
  • Видео обсуждает различные файловые системы, такие как FAT, EXT и другие, и их реализацию в ядре.
  • FAT - самая простая файловая система, которая представляет хранилище как кучу блоков и файлы как списки блоков.
  • EXT - более сложная файловая система, которая учитывает фрагментацию и старается размещать блоки одного и того же файла ближе друг к другу.
  • EXT также имеет свои собственные логи, которые позволяют ему работать лучше на флеш-памяти.

И ноды и файловые системы

1:14:52
  • Видео начинается с объяснения понятия "и ноды", которые описывают один конкретный файл или директорию в файловой системе.
  • И ноды содержат мета-данные о файле, включая права, время и список из 12 номеров блоков, где лежат данные.
  • Если файл больше, чем 12 блоков, используются три уровня косвенности для доступа к данным.

Виртуальная файловая система

1:22:21
  • Ядро использует виртуальную файловую систему для работы с множеством различных файловых систем.
  • Каждая файловая система заполняет виртуальные функции указателями на свои реализации, когда инициализируется.
  • Это позволяет ядру обрабатывать все многообразие файловых систем, не беспокоясь о конкретных реализациях.

Примеры использования и нод

1:25:31
  • В примере с использованием и нод в Ю-Спейсе, можно получить некоторые атрибуты и ноды, такие как имя, номер и ноды, тип файла и т.д.
  • Второй пример использует больше инодовских штук, включая сканирование папок и получение информации о файлах и директориях.

Работа с файлами и планировщики

1:27:00
  • Функция stat возвращает информацию о файле, включая его атрибуты и права доступа.
  • Исполняемый файл программы занимает 24 блока по 8 КБ.
  • Файловая система скрывает факт того, что папка является файлом, и говорит, что количество блоков равно нулю.

Планировщики операций

1:30:38
  • Планировщики оптимизируют последовательность и количество обращений к физическому устройству.
  • Планировщик elevator сортирует запросы и объединяет их в одну операцию.
  • Планировщик elevator не гарантирует задержку выполнения запросов.

Проблема голодающих записей

1:36:43
  • В ядре Linux есть проблема, когда чтения блокируют выполнение других операций, что приводит к голоданию записей.
  • Планировщик дедлайн и вашей дули решает эту проблему, разделяя очереди для рит-запросов и райт-запросов.
  • Дедлайн рит-запросов в десять раз меньше, чем у райт-запросов, что позволяет более эффективно выполнять чтения.

Решение проблемы голодающих записей

1:40:37
  • Планировщик дедлайн и вашей дули решает проблему голодающих записей, но не полностью.
  • В некоторых случаях рит-запросы могут выполняться чаще, что приводит к голоданию райт-запросов.
  • Решение проблемы - общая актуальная запись, которая гарантирует, что запись будет выполнена после двух последовательных чтений.

Планировщик антисепейтере

1:43:16
  • Планировщик антисепейтере, наследуемый от дедлайн и вашей дули, решает проблему голодающих записей еще лучше.
  • Если он выполнил запрос на чтение, он не берет новые запросы из общей очереди в течение нескольких миллисекунд.
  • Это позволяет более эффективно выполнять чтения и избегать голода райт-запросов.

Планировщики и их работа

1:44:49
  • В ядре Linux есть планировщики, которые обрабатывают запросы на доступ к устройствам.
  • Один из планировщиков, "комплект фейлер-процессов", пытается справедливо распределять ресурс устройства между процессами.
  • Другой планировщик, "комплект ли фейр кью", также пытается справедливо распределять ресурс устройства, но использует понятие "тайм-слайс".

Баджет фейр кьюинг

1:51:37
  • "Баджет фейр кьюинг" - это еще более справедливый планировщик, который работает подобно "сейфс процессному" планировщику.
  • Он использует понятие "тайм-слайс" и "взвешенный тайм-слайс", чтобы выделять разным процессам разное время работы с устройством.

Планировщики в ядре Linux

1:52:12
  • В ядре Linux есть планировщики, которые могут быть выбраны для использования.
  • Один из них, Сифку, используется по умолчанию, но он может быть заменен на более простой планировщик, который просто выполняет мержи.
  • Другой планировщик, Бфку, является новым и не используется по умолчанию.

Кэш в ядре Linux

1:55:49
  • В ядре Linux есть свой кэш, который может ускорить доступ к носителю.
  • Кэш страничный, он кэширует по единицам данных устройства, а не по кэшам устройства.
  • Кэш может быть небольшим, но он все равно дает огромный выигрыш в производительности.

Работа с кэшем в ядре Linux

1:58:24
  • Кэш может быть вытеснен, если он занимает слишком много памяти.
  • Ядро может пожертвовать страницами кэша, если ему не хватает памяти для других задач.
  • Кэш эластичный и может расширяться или сжиматься в зависимости от потребностей ядра.