- •Тема 1. Задачи и интерфейсы Unix-подобных систем.
- •Тема 2: Структура ядра ос Linux.
- •Тема3,4,5: процессы и потоки ос Linux
- •Тема 7: Планирование в Linux
- •Тема 8: Загрузка linux
- •Тема 9: Управление памятью вlinux
- •Тема 14: Алгоритмы замещения страниц.
- •Тема 15: Реализация ввода-вывода в системе linux
- •Тема 16: Работа с сетью в linux.
- •Тема 17: файловая система unix
- •18.Файловая система в ос Linux. Файловая системаExt2.
- •19.Файловая система в ос Linux. Файловая системаExt3.
- •20.Файловая система в ос Linux. Файловая система nfs.
Тема 2: Структура ядра ос Linux.
Системный интерфейс | ||||
Компонент Ввода-вывода |
Компонент управления памятью |
Компонент управления процессами | ||
Виртуальная файловая система |
Виртуальная память |
Обработка сигналов | ||
Файловая система |
Сокеты |
Терминалы | ||
Обобщенный уровень блочных устройств |
Сетевые протоколы |
Дисциплины линий связи |
Механизм замещения страниц |
Создание и завершение процессов и потоков |
Диспетчер блочных устройств |
Драйверы сетевых устройств |
Драйверы символьных устройств |
Кэш страниц |
Планирование процессов |
Диспетчер прерываний | ||||
Аппаратура |
Нижний уровень ядра состоит из обработчиков прерываний, которые являются основным средством взаимодействия с устройствами и механизма диспетчеризации на низком уровне. Диспетчеризация производится при возникновении прерываний. При этом код низкого уровня останавливает выполнение работающего процесса, сохраняет его состояние в структуре процессов ядра и запускает соответствующий драйвер.
Ядро Linux можно разделить на 3 части:
Компонент ввода-вывода.
Компонент управления памятью
Компонент управления процессами
Компонент ввода-вывода:
Данный компонент содержит все части ядра, которые отвечают за взаимодействие с устройствами ввода-вывода, выполнение сетевых операций. На самом высоком уровне все операции интегрированы в уровень виртуальной файловой системы.Т.е. выполнение операций чтения из файла, будь он в памяти или на диске это то же самое, что и выполнение операции чтения символа с терминального ввода. На самом низком уровне все операции ввода-вывода проходят через соответствующий драйвер. Все драйверы в Linux классифицируются либо как символьные, либо блочные. Выше уровня драйверов устройств код ядра для каждого типа устройств свой. В зависимости от вида символьного устройства, информация обрабатывается согласно определенной дисциплине линий связи.
Уровень выше сетевых драйверов выполняет функции маршрутизации, обеспечивая отправку правильного пакета к правильному устройству или к блоку обработки протокола. Над сетью располагается интерфейс сокетов, позволяющий программам создавать сокет.
Над дисковыми драйверами располагается планировщик ввода-вывода, который отвечает за упорядочивание и выдачу запросов над дисковой операцией. ОС Lixux имеет несколько одновременно существующих файловых систем. Обобщенный уровень блоков призван скрыть различия реализаций файловой системы в зависимости от аппаратных устройств.
Компонент управления памятью:
В задачи управления памятью входят:
- Обслуживание отображения виртуальной памяти на физическую
- Поддержка кэша страниц, к которым недавно выполнялось обращение
- Поставка в память новых страниц с кодом и данными
Компонент управления процессами:
Основная задача этого компонента – создание и завершение процесса
Планировщик процессов решает каким процессам запускаться в данный момент, а каким приостанавливаться и завершаться. Компонент обработки сигналов обрабатывает поступающие процессам управляющие сигналы.
Все рассмотренные компоненты взаимосвязаны друг с другом. Файловые системы обращаются к файлам через блочные устройства, однако, если в данный момент в памяти отсутствует свободное место, то в данном случае необходимо задействовать компонент управления памятью для выгрузки и загрузки соответствующих страниц.
Интерфейс системных вызовов ядра – все системные вызовы поступают сюда и вызывают эмулированное прерывание, которое переключает исполнение из пользовательского режима в защищенный и передает управление одному из компонентов ядра.