Linux вывод операционной системы

Реализация ввода-вывода в системе Linux

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

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

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

Некоторые операции (выполняемые с различными символьными устройствами) показаны в табл. 10.7. Каждый ряд таблицы относится к одному устройству ввода-вывода (то есть к одному драйверу). Колонки соответствуют функциям, которые должны поддерживаться всеми символьными драйверами. Существуют также некоторые другие функции. Когда выполняется операция с символьным специальным файлом, то система делает поиск по индексу в хэш-таблице символьных устройств (выбирая соответствующую структуру), а затем вызывает соответствующую функцию (чтобы выполнить требуемое действие). Таким образом, каждая операция с файлом содержит указатель на функцию, содержащуюся в соответствующем драйвере.

Таблица 10.7. Некоторые из файловых операций, поддерживаемых для типичных символьных устройств

Каждый драйвер разделен на две части, причем обе они являются частью ядра Linux и работают в режиме ядра. Верхняя часть драйвера работает в контексте вызывающей стороны и служит интерфейсом к остальной системе Linux. Нижняя часть работает в контексте ядра и взаимодействует с устройством. Драйверам разрешается делать вызовы процедур ядра для выделения памяти, управления таймером, управления DMA и т. д. Набор функций ядра, которые они могут вызывать, определен в документе под названием «Интерфейс драйвер — ядро» (Driver-Kernel Interface). Создание драйверов для системы Linux подробно описано в работах Cooperstein (2009) и Corbet et al. (2009).

Система ввода-вывода разделена на два основных компонента: обработку блочных специальных файлов и обработку символьных специальных файлов. Сейчас мы рассмотрим эти компоненты по очереди.

Читайте также:  Reached target shutdown astra linux

Цель той части системы, которая занимается операциями ввода-вывода с блочными специальными файлами (например, дисками), заключается в минимизации количества операций передачи данных. Для достижения данной цели в Linux-системах между дисковыми драйверами и файловой системой имеется кэш (рис. 10.13). До версии ядра 2.2 система Linux поддерживала отдельные кэш страниц и буферный кэш, так что находящийся в дисковом блоке файл мог кэшироваться в обоих кэшах. Более новые версии Linux имеют единый кэш. Обобщенный уровень блоков связывает эти компоненты вместе и выполняет необходимые преобразования между дисковыми секторами, блоками, буферами и страницами данных.

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

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

Чтобы минимизировать латентность перемещений дисковых головок, Linux использует планировщик ввода-вывода (I/O scheduler). Цель планировщика — переупорядочить или собрать в пакеты запросы ввода-вывода к блочным устройствам. Есть много вариантов планировщика, оптимизированных для рабочих нагрузок различных типов. Базовый планировщик Linux основан на исходном планировщике Linus Elevator scheduler. Работу этого планировщика можно описать следующим образом: дисковые операции сортируются в дважды связанном списке, упорядоченном по адресам сектора дискового запроса. Новые запросы вставляются в этот сортированный список. Это позволяет избежать дорогих перемещений головок. Этот список запросов затем последовательно объединяется, чтобы смежные операции выполнялись за один запрос к диску. Базовый планировщик может вызвать голодание. Поэтому обновленная версия дискового планировщика содержит два дополнительных списка (с упорядоченными по срокам выполнения операциями чтения и записи). Срок по умолчанию равен 0,5 с для запросов чтения и 5 с для запросов записи. Если определенный системой срок для самой старой операции записи истекает, то этот запрос записи будет обслужен до любых других запросов из основного дважды связанного списка.

В дополнение к обычным дисковым файлам существуют также блочные специальные файлы (называемые также сырыми блочными файлами — raw block files). Эти файлы позволяют программам обращаться к диску при помощи абсолютных номеров блоков (помимо файловой системы). Чаще всего они используются для таких вещей, как подкачка и обслуживание системы.

Взаимодействие с символьными устройствами простое. Поскольку символьные устройства потребляют или производят потоки символов (или байтов данных), то поддержка произвольного доступа не имеет смысла. Исключение — использование дисциплины линии (line disciplines). Дисциплина линии связи может быть связана с терминальным устройством (представленным структурой tty_struct) и работает как интерпретатор для данных, обмен которыми происходит с терминальным устройством. Например, можно делать локальное строковое редактирование (удалять стертые пользователем символы и строки), символы возврата каретки можно заменять символами переноса строки, а также выполнять другие специальные операции обработки. Однако если процесс желает воспринимать каждый введенный пользователем символ, то он может перевести линию в необрабатываемый режим (минуя дисциплину линии связи). Не все устройства имеют дисциплину линии связи.

Читайте также:  Run linux with virtualbox

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

Взаимодействие с сетевыми устройствами (network devices) несколько отличается от рассмотренного. Сетевые устройства также производят и потребляют потоки символов, однако асинхронная природа делает их не очень подходящими для интеграции в один интерфейс с другими символьными устройствами.

Драйвер сетевого устройства производит пакеты, состоящие из большого количества байтов (они имеют также сетевые заголовки). Эти пакеты затем маршрутизируются через несколько драйверов сетевых протоколов и в конечном итоге передаются в пользовательское приложение. Ключевой структурой данных здесь является структура буфера сокета skbuff, которая используется для представления областей памяти, заполненных данными пакетов. Данные в буфере skbuff не всегда начинаются с начала буфера. При их обработке различными протоколами сетевого стека могут как добавляться, так и удаляться заголовки протоколов. Пользовательские процессы взаимодействуют с сетевыми устройствами через вызов sockets, который в Linux поддерживает исходный интерфейс прикладного программирования BSD. Драйверы протоколов можно обойти и получить прямой доступ к сетевому устройству (при помощи raw_sockets). Такие «необработанные» сокеты может создавать только суперпользователь.

Источник

Проектная работа по информатике «Linux против Windows. Плюсы и минусы. Отличия и преимущества»

Нажмите, чтобы узнать подробности

Актуальностью проекта является то, что в современном информационном мире используется множество разных ОС. Перед многими пользователями ПК возникает вопрос: а какая же операционная система лучше? В работе рассмотрены две наиболее популярные ОС. Материвл можно использовать в качестве дополнительного при изучении предмета.

Просмотр содержимого документа
«Проектная работа по информатике «Linux против Windows. Плюсы и минусы. Отличия и преимущества»»

Районный конкурс учебных проектов школьников

Читайте также:  Установить линукс поверх windows 10

Тема проекта: «Linux против Windows. Плюсы и минусы. Отличия и преимущества»

Выполнена учащимся 9б класса муниципального бюджетного общеобразовательного учреждения «Березниковсеая средняя школа» Чепурновым Евгением Дмитриевичем.

Научный руководитель проекта: учитель информатики муниципального бюджетного общеобразовательного учреждения «Березниковская средняя школа»

Азарная Татьяна Николаевна.

  1. Введение
  2. Основная часть
  • Понятие и назначение операционной системы
  • История операционных систем
  • Сравнение ОС Windows и Linux
  1. Заключение
  2. Список литературы

Введение. Среди всех системных программ, с которыми приходится иметь дело пользователям компьютеров, особое место занимают операционные системы. Операционная система управляет компьютером, запускает программы, обеспечивает защиту данных, выполняет различные сервисные функции по запросам пользователя и программ. Каждая программа пользуется услугами операционной системы, а потому может работать только под управлением той операционной системы, которая обеспечивает для неё эти услуги. Цель проекта: Узнать больше об операционных системах Windows и Linux. Выявить плюсы и минусы данных ОС, их отличия и преимущества. Проблема проекта: Меня интересует, какая из этих двух операционных систем лучше, удобнее в пользовании, дешевле и надёжнее. Какой из них отдают большее предпочтение пользователи ПК. А сведений в школьном учебнике недостаточно. Продукт: Письменная работа и презентация. Актуальностью проекта является то, что в современном информационном мире используется множество разных ОС. Перед многими пользователями ПК возникает вопрос: а какая же операционная система лучше? Я рассмотрел две наиболее популярные ОС, чтобы больше узнать самому и рассказать другим. Поэтому, решил работать над этим проектом. Методы работы: 1)анализ литературы по вопросу; 2) поиск информации в книгах и сети Интернет; 3) опрос пользователей ПК; 3) сравнительный анализ.

  • Windows – платная ОС, Linux – бесплатная.
  • Практически каждое приложение и устройство для ПК имеет драйвера для запуска под Windows, у Linux с этим могут возникнуть проблемы.
  • Под Windows написано огромное количество вредоносных программ — вирусов, троян и т.д. Для Linux их в разы меньше.
  • С некоторыми проблемами Windows может справиться даже начинающий пользователь, а чтобы устранить сбои в работе Linux, нужно хорошо знать настройки этой системы.
  • Windows удобнее в администрировании (управлении), зато Linux стабильнее и безопаснее.
  • Windows достаточно прожорлива в плане ресурсов, Linux же гораздо менее требовательна к ресурсам вашего ПК.
  • Под Windows запускается практически любая игра, для запуска некоторых игр под Linux могут потребоваться профессиональные знания либо использование дополнительных программ.
  • Для работы в Windows от пользователя не требуется каких-либо специальных знаний, поскольку она уже «готова к использованию», в Linux же нужно покопаться в настройках, но зато ее можно настроить под ваши конкретные запросы

Источник

Оцените статью
Adblock
detector