Операционная система - Краткое руководство

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

Некоторые популярные операционные системы включают операционную систему Linux, операционную систему Windows, VMS, OS / 400, AIX, z / OS и т. Д.

Определение

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

Ниже приведены некоторые из важных функций операционной системы.

  • Управление памятью
  • Управление процессором
  • Управление устройством
  • Управление файлами
  • Security
  • Контроль производительности системы
  • Бухгалтерский учет
  • Ошибка обнаружения вспомогательных средств
  • Координация между другим программным обеспечением и пользователями

Управление памятью

Управление памятью относится к управлению основной памятью или основной памятью. Основная память - это большой массив слов или байтов, где каждое слово или байт имеет свой собственный адрес.

Основная память обеспечивает быстрое хранилище, к которому может обращаться непосредственно ЦП. Чтобы программа могла быть выполнена, она должна находиться в основной памяти. Операционная система выполняет следующие действия для управления памятью:

  • Сохраняет информацию о первичной памяти, т. Е. О том, какая ее часть кем используется, какая часть не используется.

  • При мультипрограммировании ОС решает, какой процесс получит память, когда и сколько.

  • Выделяет память, когда процесс запрашивает это.

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

Управление процессором

В среде мультипрограммирования ОС решает, какой процесс получит процессор, когда и на сколько времени. Эта функция называетсяprocess scheduling. Операционная система выполняет следующие действия для управления процессором:

  • Следит за процессором и статусом процесса. Программа, отвечающая за эту задачу, известна какtraffic controller.

  • Выделяет процессор (ЦП) процессу.

  • Освобождает процессор, когда процесс больше не требуется.

Управление устройством

Операционная система управляет связью устройства через соответствующие драйверы. Он выполняет следующие действия для управления устройством -

  • Следит за всеми устройствами. Программа, отвечающая за эту задачу, известна какI/O controller.

  • Решает, какой процесс получит устройство, когда и на сколько времени.

  • Располагает устройство эффективным способом.

  • Распределяет устройства.

Управление файлами

Файловая система обычно организована в каталоги для облегчения навигации и использования. Эти каталоги могут содержать файлы и другие направления.

Операционная система выполняет следующие действия для управления файлами:

  • Отслеживает информацию, местонахождение, использование, статус и т. Д. Коллективные объекты часто называют file system.

  • Решает, кто получит ресурсы.

  • Распределяет ресурсы.

  • Освобождает ресурсы.

Другие важные мероприятия

Ниже приведены некоторые из важных действий, которые выполняет операционная система.

  • Security - С помощью пароля и других подобных методов предотвращается несанкционированный доступ к программам и данным.

  • Control over system performance - Запись задержек между запросом услуги и ответом от системы.

  • Job accounting - Отслеживание времени и ресурсов, используемых различными рабочими местами и пользователями.

  • Error detecting aids - Создание дампов, трассировок, сообщений об ошибках и других средств отладки и обнаружения ошибок.

  • Coordination between other softwares and users - Координация и передача компиляторов, интерпретаторов, ассемблеров и другого программного обеспечения различным пользователям компьютерных систем.

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

Пакетная операционная система

Пользователи пакетной операционной системы не взаимодействуют с компьютером напрямую. Каждый пользователь готовит свою работу на автономном устройстве, таком как перфокарты, и передает ее оператору компьютера. Чтобы ускорить обработку, задания с похожими потребностями объединяются и выполняются как группа. Программисты оставляют свои программы оператору, а затем оператор сортирует программы с похожими требованиями на партии.

Проблемы с пакетными системами заключаются в следующем:

  • Отсутствие взаимодействия между пользователем и работой.
  • ЦП часто простаивает, потому что скорость механических устройств ввода-вывода ниже скорости ЦП.
  • Трудно обеспечить желаемый приоритет.

Операционные системы с разделением времени

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

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

ЦП выполняет несколько заданий путем переключения между ними, но переключение происходит очень часто. Таким образом, пользователь может получить немедленный ответ. Например, при обработке транзакции процессор выполняет каждую пользовательскую программу в виде короткого пакета или кванта вычислений. То есть, еслиnприсутствуют пользователи, то каждый пользователь может получить квант времени. Когда пользователь отправляет команду, время ответа составляет не более нескольких секунд.

Операционная система использует планирование ЦП и мультипрограммирование, чтобы предоставить каждому пользователю небольшую часть времени. Компьютерные системы, которые изначально проектировались как пакетные, были преобразованы в системы с разделением времени.

Преимущества операционных систем с разделением времени заключаются в следующем:

  • Обеспечивает преимущество быстрого ответа.
  • Избегает дублирования программного обеспечения.
  • Уменьшает время простоя ЦП.

Недостатки операционных систем с разделением времени следующие:

  • Проблема надежности.
  • Вопрос безопасности и целостности пользовательских программ и данных.
  • Проблема передачи данных.

Распределенная операционная система

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

Процессоры связываются друг с другом через различные линии связи (например, высокоскоростные шины или телефонные линии). Они называютсяloosely coupled systemsили распределенные системы. Процессоры в распределенной системе могут различаться по размеру и функциям. Эти процессоры называются сайтами, узлами, компьютерами и так далее.

Преимущества распределенных систем следующие:

  • Благодаря возможности совместного использования ресурсов пользователь на одном сайте может использовать ресурсы, доступные на другом.
  • Ускорьте обмен данными друг с другом по электронной почте.
  • Если один сайт отказывает в распределенной системе, остальные сайты потенциально могут продолжить работу.
  • Лучшее обслуживание клиентов.
  • Снижение нагрузки на главный компьютер.
  • Сокращение задержек в обработке данных.

Сетевая операционная система

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

Примеры сетевых операционных систем включают Microsoft Windows Server 2003, Microsoft Windows Server 2008, UNIX, Linux, Mac OS X, Novell NetWare и BSD.

Преимущества сетевых операционных систем следующие:

  • Централизованные серверы очень стабильны.
  • Безопасность управляется сервером.
  • Обновления до новых технологий и оборудования могут быть легко интегрированы в систему.
  • Удаленный доступ к серверам возможен из разных мест и систем.

Недостатки сетевых операционных систем следующие:

  • Высокая стоимость покупки и эксплуатации сервера.
  • Зависимость от центрального местоположения для большинства операций.
  • Требуются регулярное обслуживание и обновления.

Операционная система реального времени

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

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

Есть два типа операционных систем реального времени.

Системы жесткого реального времени

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

Системы мягкого реального времени

Системы мягкого реального времени менее строгие. Критическая задача в реальном времени получает приоритет над другими задачами и сохраняет приоритет до своего завершения. Системы мягкого реального времени имеют ограниченную полезность, чем системы жесткого реального времени. Например, мультимедиа, виртуальная реальность, перспективные научные проекты, такие как подводные исследования и планетоходы и т. Д.

Операционная система предоставляет услуги как пользователям, так и программам.

  • Он предоставляет программам среду для выполнения.
  • Он предоставляет пользователям услуги для удобного выполнения программ.

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

  • Выполнение программы
  • Операции ввода / вывода
  • Манипуляции с файловой системой
  • Communication
  • Обнаружение ошибок
  • Распределение ресурсов
  • Protection

Выполнение программы

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

Процесс включает в себя полный контекст выполнения (код для выполнения, данные для управления, регистры, используемые ресурсы ОС). Ниже приведены основные действия операционной системы в отношении управления программами.

  • Загружает программу в память.
  • Выполняет программу.
  • Управляет выполнением программы.
  • Предоставляет механизм синхронизации процессов.
  • Предоставляет механизм для взаимодействия процессов.
  • Предоставляет механизм обработки тупиковых ситуаций.

Операции ввода / вывода

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

Операционная система управляет обменом данными между пользователем и драйверами устройств.

  • Операция ввода-вывода означает операцию чтения или записи с любым файлом или любым конкретным устройством ввода-вывода.
  • Операционная система обеспечивает доступ к требуемому устройству ввода-вывода при необходимости.

Манипуляции с файловой системой

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

Файловая система обычно организована в каталоги для облегчения навигации и использования. Эти каталоги могут содержать файлы и другие направления. Ниже приведены основные действия операционной системы в отношении управления файлами.

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

Общение

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

ОС обрабатывает стратегии маршрутизации и соединения, а также проблемы конкуренции и безопасности. Ниже приведены основные действия операционной системы в отношении связи.

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

Обработка ошибок

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

  • ОС постоянно проверяет возможные ошибки.
  • ОС предпринимает соответствующие действия для обеспечения правильных и согласованных вычислений.

Управление ресурсами

В случае многопользовательской или многозадачной среды ресурсы, такие как основная память, циклы ЦП и хранилище файлов, должны выделяться каждому пользователю или каждому заданию. Ниже приведены основные действия операционной системы в отношении управления ресурсами.

  • ОС управляет всеми видами ресурсов с помощью планировщиков.
  • Алгоритмы планирования ЦП используются для лучшего использования ЦП.

Защита

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

Защита относится к механизму или способу управления доступом программ, процессов или пользователей к ресурсам, определенным компьютерной системой. Ниже приведены основные действия операционной системы в отношении защиты:

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

Пакетная обработка

Пакетная обработка - это метод, при котором операционная система собирает программы и данные вместе в пакет перед началом обработки. Операционная система выполняет следующие действия, связанные с пакетной обработкой:

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

  • ОС хранит ряд заданий в памяти и выполняет их без какой-либо ручной информации.

  • Задания обрабатываются в порядке отправки, т. Е. В порядке очереди.

  • Когда задание завершает свое выполнение, его память освобождается, и выходные данные для задания копируются в выходной буфер для последующей печати или обработки.

Преимущества

  • Пакетная обработка переносит большую часть работы оператора на компьютер.

  • Повышение производительности при запуске новой работы сразу после завершения предыдущей без какого-либо ручного вмешательства.

Недостатки

  • Сложно отлаживать программу.
  • Задание могло войти в бесконечный цикл.
  • Из-за отсутствия схемы защиты одно пакетное задание может повлиять на ожидающие задания.

Многозадачность

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

  • Пользователь дает инструкции операционной системе или программе напрямую и получает немедленный ответ.

  • ОС обрабатывает многозадачность таким образом, что может обрабатывать несколько операций / выполнять несколько программ одновременно.

  • Многозадачные операционные системы также известны как системы с разделением времени.

  • Эти операционные системы были разработаны для обеспечения интерактивного использования компьютерной системы по разумной цене.

  • Операционная система с разделением времени использует концепцию планирования ЦП и мультипрограммирования, чтобы предоставить каждому пользователю небольшую часть ЦП с разделением по времени.

  • У каждого пользователя в памяти есть как минимум одна отдельная программа.

  • Программа, которая загружается в память и выполняется, обычно называется process.

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

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

  • Операционная система позволяет пользователям использовать компьютер одновременно. Поскольку каждое действие или команда в системе с разделением времени имеет тенденцию быть короткими, каждому пользователю требуется лишь немного времени ЦП.

  • Поскольку система быстро переключает ЦП от одного пользователя / программы к другому, у каждого пользователя создается впечатление, что он / она имеет свой собственный ЦП, тогда как на самом деле один ЦП используется совместно многими пользователями.

Мультипрограммирование

Совместное использование процессора, когда две или более программы находятся в памяти одновременно, называется multiprogramming. Мультипрограммирование предполагает использование одного разделяемого процессора. Многопрограммирование увеличивает загрузку ЦП за счет организации заданий так, чтобы ЦП всегда имел одно для выполнения.

На следующем рисунке показана структура памяти для многопрограммной системы.

ОС выполняет следующие действия, связанные с мультипрограммированием.

  • Операционная система поддерживает в памяти несколько заданий одновременно.

  • Этот набор заданий является подмножеством заданий, хранящихся в пуле заданий.

  • Операционная система выбирает и начинает выполнять одно из заданий в памяти.

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

Преимущества

  • Высокая и эффективная загрузка ЦП.
  • Пользователь чувствует, что многим программам выделяется центральный процессор почти одновременно.

Недостатки

  • Требуется планирование CPU.
  • Чтобы разместить в памяти много заданий, требуется управление памятью.

Интерактивность

Интерактивность относится к способности пользователей взаимодействовать с компьютерной системой. Операционная система выполняет следующие действия, связанные с интерактивностью:

  • Предоставляет пользователю интерфейс для взаимодействия с системой.
  • Управляет устройствами ввода для получения входных данных от пользователя. Например, клавиатура.
  • Управляет устройствами вывода для отображения результатов пользователю. Например, Monitor.

Время отклика ОС должно быть коротким, поскольку пользователь отправляет и ожидает результата.

Система реального времени

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

  • В таких системах операционные системы обычно считывают данные датчиков и реагируют на них.
  • Операционная система должна гарантировать реакцию на события в течение фиксированных периодов времени для обеспечения правильной работы.

Распределенная среда

Распределенная среда относится к нескольким независимым ЦП или процессорам в компьютерной системе. Операционная система выполняет следующие действия, связанные с распределенной средой:

  • ОС распределяет логику вычислений между несколькими физическими процессорами.

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

  • ОС управляет связью между процессорами. Они общаются друг с другом посредством различных линий связи.

Намотка

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

Операционная система выполняет следующие действия, связанные с распределенной средой:

  • Обрабатывает буферизацию данных устройства ввода-вывода, поскольку устройства имеют разные скорости доступа к данным.

  • Поддерживает буфер буферизации, который обеспечивает станцию ​​ожидания, где данные могут находиться, пока более медленное устройство догоняет их.

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

Преимущества

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

Процесс

Процесс - это, по сути, выполняемая программа. Выполнение процесса должно выполняться последовательно.

Процесс определяется как объект, который представляет собой базовую единицу работы, которая должна быть реализована в системе.

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

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

SN Компонент и описание
1

Stack

Стек процессов содержит временные данные, такие как параметры метода / функции, адрес возврата и локальные переменные.

2

Heap

Это динамически выделяемая память процессу во время его выполнения.

3

Text

Сюда входит текущая активность, представленная значением Program Counter и содержимым регистров процессора.

4

Data

Этот раздел содержит глобальные и статические переменные.

Программа

Программа - это фрагмент кода, который может состоять из одной или миллионов строк. Компьютерная программа обычно пишется компьютерным программистом на языке программирования. Например, вот простая программа, написанная на языке программирования C -

#include <stdio.h>

int main() {
   printf("Hello, World! \n");
   return 0;
}

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

Часть компьютерной программы, которая выполняет четко определенную задачу, известна как algorithm. Коллекция компьютерных программ, библиотек и связанных с ними данных называетсяsoftware.

Жизненный цикл процесса

Когда процесс выполняется, он проходит через разные состояния. Эти этапы могут отличаться в разных операционных системах, и названия этих состояний также не стандартизированы.

Как правило, процесс может одновременно находиться в одном из следующих пяти состояний.

SN Состояние и описание
1

Start

Это начальное состояние при первом запуске / создании процесса.

2

Ready

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

3

Running

После того, как процесс был назначен процессору планировщиком ОС, состояние процесса устанавливается на «работает», и процессор выполняет свои инструкции.

4

Waiting

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

5

Terminated or Exit

Как только процесс завершает свое выполнение или завершается операционной системой, он переводится в состояние завершения, где ожидает удаления из основной памяти.

Блок управления процессом (PCB)

Блок управления процессом - это структура данных, поддерживаемая операционной системой для каждого процесса. Печатная плата идентифицируется целочисленным идентификатором процесса (PID). Печатная плата хранит всю информацию, необходимую для отслеживания процесса, как указано ниже в таблице:

SN Информация и описание
1

Process State

Текущее состояние процесса, т.е. готов ли он, работает, ожидает или что-то еще.

2

Process privileges

Это необходимо для разрешения / запрета доступа к системным ресурсам.

3

Process ID

Уникальный идентификатор для каждого процесса в операционной системе.

4

Pointer

Указатель на родительский процесс.

5

Program Counter

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

6

CPU registers

Различные регистры ЦП, в которых необходимо сохранить процесс для выполнения в рабочем состоянии.

7

CPU Scheduling Information

Приоритет процесса и другая информация о планировании, необходимая для планирования процесса.

8

Memory management information

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

9

Accounting information

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

10

IO status information

Сюда входит список устройств ввода-вывода, назначенных процессу.

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

Плата поддерживается для процесса на протяжении всего его жизненного цикла и удаляется после завершения процесса.

Определение

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

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

Очереди планирования процессов

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

Операционная система поддерживает следующие важные очереди планирования процессов:

  • Job queue - В этой очереди хранятся все процессы в системе.

  • Ready queue- Эта очередь хранит набор всех процессов, находящихся в основной памяти, готовых и ожидающих выполнения. В эту очередь всегда помещается новый процесс.

  • Device queues - В эту очередь входят процессы, которые заблокированы из-за недоступности устройства ввода-вывода.

ОС может использовать разные политики для управления каждой очередью (FIFO, Round Robin, Priority и т. Д.). Планировщик ОС определяет, как перемещать процессы между очередями готовности и выполнения, которые могут иметь только одну запись на каждое ядро ​​процессора в системе; на приведенной выше диаграмме он был объединен с ЦП.

Модель процесса с двумя состояниями

Модель процесса с двумя состояниями относится к работающим и неработающим состояниям, которые описаны ниже:

SN Состояние и описание
1

Running

Когда создается новый процесс, он входит в систему как в рабочем состоянии.

2

Not Running

Не запущенные процессы хранятся в очереди, ожидая своей очереди для выполнения. Каждая запись в очереди - это указатель на определенный процесс. Очередь реализована с использованием связанного списка. Использование диспетчера заключается в следующем. Когда процесс прерывается, этот процесс передается в очередь ожидания. Если процесс завершен или прерван, процесс отменяется. В любом случае диспетчер затем выбирает процесс из очереди для выполнения.

Планировщики

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

  • Долгосрочный планировщик
  • Краткосрочный планировщик
  • Среднесрочный планировщик

Долгосрочный планировщик

Его также называют job scheduler. Долгосрочный планировщик определяет, какие программы допускаются в систему для обработки. Он выбирает процессы из очереди и загружает их в память для выполнения. Процесс загружается в память для планирования ЦП.

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

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

Краткосрочный планировщик

Его также называют CPU scheduler. Его основная цель - повысить производительность системы в соответствии с выбранным набором критериев. Это изменение состояния готовности на состояние выполнения процесса. Планировщик ЦП выбирает процесс среди готовых к выполнению процессов и выделяет ЦП одному из них.

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

Среднесрочный планировщик

Среднесрочное планирование является частью swapping. Удаляет процессы из памяти. Это снижает степень мультипрограммирования. Среднесрочный планировщик отвечает за обработку выгруженных процессов.

Запущенный процесс может быть приостановлен, если он сделает запрос ввода-вывода. Приостановленные процессы не могут продвигаться к завершению. В этом состоянии, чтобы удалить процесс из памяти и освободить место для других процессов, приостановленный процесс перемещается во вторичное хранилище. Этот процесс называетсяswapping, и говорят, что процесс заменен или развернут. Замена может быть необходима для улучшения технологической смеси.

Сравнение между планировщиком

SN Долгосрочный планировщик Краткосрочный планировщик Среднесрочный планировщик
1 Это планировщик работы Это планировщик ЦП Это планировщик подкачки процессов.
2 Скорость меньше, чем у краткосрочного планировщика Скорость самая высокая среди двух других Скорость находится между краткосрочным и долгосрочным планировщиком.
3 Он контролирует степень мультипрограммирования Это обеспечивает меньший контроль над степенью мультипрограммирования Это снижает степень мультипрограммирования.
4 Практически отсутствует или минимален в системе разделения времени. Также минимален в системе разделения времени Это часть систем разделения времени.
5 Он выбирает процессы из пула и загружает их в память для выполнения Он выбирает те процессы, которые готовы к выполнению Он может повторно ввести процесс в память, и выполнение может быть продолжено.

Переключение контекста

Переключение контекста - это механизм для сохранения и восстановления состояния или контекста ЦП в блоке управления процессом, чтобы выполнение процесса можно было возобновить с той же точки в более позднее время. Используя этот метод, переключатель контекста позволяет нескольким процессам совместно использовать один процессор. Переключение контекста является неотъемлемой частью функций многозадачной операционной системы.

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

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

  • Счетчик команд
  • Информация о расписании
  • Базовое и предельное значение регистра
  • Текущий регистр
  • Измененное состояние
  • Информация о состоянии ввода / вывода
  • Бухгалтерская информация

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

  • Планирование в порядке очереди (FCFS)
  • Планирование кратчайшего следующего задания (SJN)
  • Приоритетное планирование
  • Наименьшее оставшееся время
  • Планирование с циклическим перебором (RR)
  • Планирование многоуровневых очередей

Эти алгоритмы либо non-preemptive or preemptive. Алгоритмы без вытеснения разработаны таким образом, что, как только процесс переходит в рабочее состояние, он не может быть вытеснен, пока не завершит отведенное время, тогда как упреждающее планирование основано на приоритете, когда планировщик может вытеснить запущенный процесс с низким приоритетом в любое время, когда высокий приоритет процесс переходит в состояние готовности.

Первое прибытие - первое обслуживание (FCFS)

  • Работы выполняются в порядке очереди.
  • Это упреждающий алгоритм планирования.
  • Легко понять и реализовать.
  • Его реализация основана на очереди FIFO.
  • Низкая производительность, так как среднее время ожидания велико.

Wait time каждого процесса выглядит следующим образом -

Процесс Время ожидания: время обслуживания - время прибытия
P0 0 - 0 = 0
P1 5 - 1 = 4
P2 8 - 2 = 6
P3 16 - 3 = 13

Среднее время ожидания: (0 + 4 + 6 + 13) / 4 = 5,75

Кратчайшее задание следующее (SJN)

  • Это также известно как shortest job first, или SJF

  • Это упреждающий алгоритм планирования.

  • Лучший способ минимизировать время ожидания.

  • Легко реализовать в пакетных системах, где необходимое процессорное время известно заранее.

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

  • Обработчик должен заранее знать, сколько времени займет процесс.

Дано: Таблица процессов, их время прибытия, время выполнения.

Процесс Время прибытия Время исполнения Время обслуживания
P0 0 5 0
P1 1 3 5
P2 2 8 14
P3 3 6 8

Waiting time каждого процесса выглядит следующим образом -

Процесс Время ожидания
P0 0 - 0 = 0
P1 5 - 1 = 4
P2 14 - 2 = 12
P3 8 - 3 = 5

Среднее время ожидания: (0 + 4 + 12 + 5) / 4 = 21/4 = 5,25

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

  • Приоритетное планирование - это алгоритм без вытеснения и один из наиболее распространенных алгоритмов планирования в пакетных системах.

  • Каждому процессу назначается приоритет. Сначала выполняется процесс с наивысшим приоритетом и так далее.

  • Процессы с одинаковым приоритетом выполняются в порядке очереди.

  • Приоритет может быть определен на основе требований к памяти, времени или любых других требований к ресурсам.

Дано: таблица процессов, их время прибытия, время выполнения и приоритет. Здесь мы считаем, что 1 - это самый низкий приоритет.

Процесс Время прибытия Время исполнения Приоритет Время обслуживания
P0 0 5 1 0
P1 1 3 2 11
P2 2 8 1 14
P3 3 6 3 5

Waiting time каждого процесса выглядит следующим образом -

Процесс Время ожидания
P0 0 - 0 = 0
P1 11 - 1 = 10
P2 14 - 2 = 12
P3 5–3 = 2

Среднее время ожидания: (0 + 10 + 12 + 2) / 4 = 24/4 = 6

Наименьшее оставшееся время

  • Кратчайшее оставшееся время (SRT) - это превентивная версия алгоритма SJN.

  • Процессор назначается заданию, которое ближе всего к завершению, но оно может быть вытеснено более новым готовым заданием с меньшим временем до завершения.

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

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

Планирование циклического перебора

  • Round Robin - это алгоритм планирования процесса с вытеснением.

  • Каждому процессу предоставляется фиксированное время для выполнения, это называется quantum.

  • Как только процесс выполняется в течение заданного периода времени, он прерывается, и другой процесс выполняется в течение заданного периода времени.

  • Переключение контекста используется для сохранения состояний вытесненных процессов.

Wait time каждого процесса выглядит следующим образом -

Процесс Время ожидания: время обслуживания - время прибытия
P0 (0-0) + (12-3) = 9
P1 (3 - 1) = 2
P2 (6-2) + (14-9) + (20-17) = 12
P3 (9–3) + (17–12) = 11

Среднее время ожидания: (9 + 2 + 12 + 11) / 4 = 8,5

Планирование многоуровневых очередей

Многоуровневые очереди не являются независимым алгоритмом планирования. Они используют другие существующие алгоритмы для группировки и планирования заданий с общими характеристиками.

  • Для процессов с общими характеристиками поддерживается несколько очередей.
  • Каждая очередь может иметь свои собственные алгоритмы планирования.
  • Каждой очереди присваиваются приоритеты.

Например, задания с привязкой к ЦП могут быть запланированы в одной очереди, а все задания с привязкой к вводу-выводу - в другой очереди. Планировщик процессов поочередно выбирает задания из каждой очереди и назначает их ЦП на основе алгоритма, назначенного очереди.

Что такое поток?

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

Поток разделяет со своими одноранговыми потоками небольшую информацию, такую ​​как сегмент кода, сегмент данных и открытые файлы. Когда один поток изменяет элемент памяти сегмента кода, все другие потоки видят это.

Нить также называется lightweight process. Потоки позволяют повысить производительность приложений за счет параллелизма. Потоки представляют собой программный подход к повышению производительности операционной системы за счет уменьшения накладных расходов, эквивалентных классическому процессу.

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

Разница между процессом и потоком

SN Процесс Нить
1 Процесс тяжелый или ресурсоемкий. Поток имеет меньший вес и требует меньше ресурсов, чем процесс.
2 Переключение процессов требует взаимодействия с операционной системой. Переключение потоков не требует взаимодействия с операционной системой.
3 В нескольких средах обработки каждый процесс выполняет один и тот же код, но имеет свою собственную память и файловые ресурсы. Все потоки могут использовать один и тот же набор открытых файлов, дочерних процессов.
4 Если один процесс заблокирован, то никакой другой процесс не может выполняться, пока не будет разблокирован первый процесс. Пока один поток заблокирован и ожидает, второй поток в той же задаче может работать.
5 Несколько процессов без использования потоков используют больше ресурсов. Многопоточные процессы используют меньше ресурсов.
6 В нескольких процессах каждый процесс работает независимо от других. Один поток может читать, записывать или изменять данные другого потока.

Преимущества потока

  • Потоки минимизируют время переключения контекста.
  • Использование потоков обеспечивает параллелизм внутри процесса.
  • Эффективное общение.
  • Более экономично создавать потоки переключения контекста.
  • Потоки позволяют использовать многопроцессорные архитектуры с большим масштабом и эффективностью.

Типы резьбы

Потоки реализуются двумя способами:

  • User Level Threads - Потоки, управляемые пользователем.

  • Kernel Level Threads - Управляемые потоки операционной системы, действующие на ядро, ядро ​​операционной системы.

Потоки уровня пользователя

В этом случае ядро ​​управления потоками не знает о существовании потоков. Библиотека потоков содержит код для создания и уничтожения потоков, для передачи сообщений и данных между потоками, для планирования выполнения потоков и для сохранения и восстановления контекстов потоков. Приложение запускается с одного потока.

Преимущества

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

Недостатки

  • В типичной операционной системе большинство системных вызовов блокируются.
  • Многопоточное приложение не может использовать преимущества многопроцессорности.

Потоки уровня ядра

В этом случае управление потоками осуществляется ядром. В области приложения нет кода управления потоками. Потоки ядра поддерживаются непосредственно операционной системой. Любое приложение можно запрограммировать на многопоточность. Все потоки в приложении поддерживаются в одном процессе.

Ядро хранит контекстную информацию для процесса в целом и для отдельных потоков внутри процесса. Планирование ядром выполняется на основе потоков. Ядро выполняет создание, планирование и управление потоками в пространстве ядра. Потоки ядра обычно создаются и управляются медленнее, чем потоки пользователя.

Преимущества

  • Ядро может одновременно планировать несколько потоков одного и того же процесса для нескольких процессов.
  • Если один поток в процессе заблокирован, ядро ​​может запланировать другой поток того же процесса.
  • Сами процедуры ядра могут быть многопоточными.

Недостатки

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

Многопоточные модели

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

  • Отношения многие ко многим.
  • Отношения многие к одному.
  • Отношения один на один.

Модель от многих ко многим

Модель «многие ко многим» мультиплексирует любое количество пользовательских потоков на равное или меньшее количество потоков ядра.

На следующей диаграмме показана модель потоков "многие ко многим", в которой 6 потоков пользовательского уровня мультиплексируются с 6 потоками уровня ядра. В этой модели разработчики могут создавать столько пользовательских потоков, сколько необходимо, и соответствующие потоки ядра могут выполняться параллельно на многопроцессорной машине. Эта модель обеспечивает наилучшую точность параллелизма, и когда поток выполняет системный вызов блокировки, ядро ​​может запланировать выполнение другого потока.

Многие к одной модели

Модель «многие к одному» сопоставляет множество потоков пользовательского уровня с одним потоком уровня ядра. Управление потоками осуществляется в пользовательском пространстве библиотекой потоков. Когда поток выполняет системный вызов блокировки, весь процесс будет заблокирован. Только один поток может получить доступ к ядру одновременно, поэтому несколько потоков не могут работать параллельно на многопроцессорных системах.

Если библиотеки потоков пользовательского уровня реализованы в операционной системе таким образом, что система их не поддерживает, то потоки ядра используют режимы отношений «многие к одному».

Один в один модель

Существует однозначное отношение потока уровня пользователя к потоку уровня ядра. Эта модель обеспечивает больше параллелизма, чем модель «многие к одному». Это также позволяет запускать другой поток, когда поток выполняет блокирующий системный вызов. Он поддерживает параллельное выполнение нескольких потоков на микропроцессорах.

Недостатком этой модели является то, что для создания пользовательского потока требуется соответствующий поток ядра. OS / 2, Windows NT и Windows 2000 используют модель отношений один к одному.

Разница между потоком на уровне пользователя и на уровне ядра

SN Потоки уровня пользователя Поток уровня ядра
1 Потоки пользовательского уровня быстрее создавать и управлять ими. Потоки уровня ядра медленнее создаются и управляются.
2 Реализация осуществляется библиотекой потоков на уровне пользователя. Операционная система поддерживает создание потоков ядра.
3 Поток пользовательского уровня является универсальным и может работать в любой операционной системе. Поток уровня ядра зависит от операционной системы.
4 Многопоточные приложения не могут использовать преимущества многопроцессорности. Сами процедуры ядра могут быть многопоточными.

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

Это руководство научит вас основным понятиям, связанным с управлением памятью.

Адресное пространство процесса

Адресное пространство процесса - это набор логических адресов, на которые процесс ссылается в своем коде. Например, когда используется 32-битная адресация, адреса могут находиться в диапазоне от 0 до 0x7fffffff; то есть 2 ^ 31 возможных чисел для общего теоретического размера 2 гигабайта.

Операционная система заботится о сопоставлении логических адресов с физическими адресами во время выделения памяти программе. В программе используются три типа адресов до и после выделения памяти:

SN Адреса памяти и описание
1

Symbolic addresses

Адреса, используемые в исходном коде. Имена переменных, константы и метки инструкций являются основными элементами символьного адресного пространства.

2

Relative addresses

Во время компиляции компилятор преобразует символьные адреса в относительные.

3

Physical addresses

Загрузчик генерирует эти адреса в то время, когда программа загружается в основную память.

Виртуальные и физические адреса одинаковы в схемах привязки адресов во время компиляции и во время загрузки. Виртуальные и физические адреса различаются схемой привязки адресов во время выполнения.

Набор всех логических адресов, генерируемых программой, называется logical address space. Набор всех физических адресов, соответствующих этим логическим адресам, называетсяphysical address space.

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

  • Значение в базовом регистре добавляется к каждому адресу, созданному пользовательским процессом, который рассматривается как смещение во время его отправки в память. Например, если значение базового регистра равно 10000, то попытка пользователя использовать ячейку адреса 100 будет динамически перераспределена в ячейку 10100.

  • Программа пользователя работает с виртуальными адресами; он никогда не видит настоящих физических адресов.

Статическая и динамическая загрузка

Выбор между статической или динамической загрузкой должен быть сделан во время разработки компьютерной программы. Если вам необходимо загрузить свою программу статически, то во время компиляции полные программы будут скомпилированы и связаны, не оставляя никаких внешних программ или зависимостей модуля. Компоновщик объединяет объектную программу с другими необходимыми объектными модулями в абсолютную программу, которая также включает логические адреса.

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

Во время загрузки с static loading, абсолютная программа (и данные) загружаются в память для начала выполнения.

Если вы используете dynamic loading, динамические подпрограммы библиотеки хранятся на диске в перемещаемой форме и загружаются в память только тогда, когда они необходимы программе.

Статическое и динамическое связывание

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

Когда используется динамическое связывание, не требуется связывать фактический модуль или библиотеку с программой, скорее, ссылка на динамический модуль предоставляется во время компиляции и связывания. Библиотеки динамической компоновки (DLL) в Windows и общие объекты в Unix являются хорошими примерами динамических библиотек.

Обмен

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

Хотя на производительность обычно влияет процесс подкачки, он помогает запускать несколько больших процессов параллельно, и это причина Swapping is also known as a technique for memory compaction.

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

Предположим, что размер пользовательского процесса составляет 2048 КБ, а скорость передачи данных на стандартном жестком диске, на котором будет выполняться свопинг, составляет около 1 МБ в секунду. Фактическая передача процесса 1000K в память или из памяти займет

2048KB / 1024KB per second
= 2 seconds
= 2000 milliseconds

Теперь, учитывая время входа и выхода, потребуется полных 4000 миллисекунд плюс другие накладные расходы, когда процесс конкурирует за восстановление основной памяти.

Выделение памяти

Основная память обычно имеет два раздела -

  • Low Memory - Операционная система находится в этой памяти.

  • High Memory - Пользовательские процессы хранятся в верхней памяти.

Операционная система использует следующий механизм распределения памяти.

SN Распределение памяти и описание
1

Single-partition allocation

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

2

Multiple-partition allocation

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

Фрагментация

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

Фрагментация бывает двух типов -

SN Фрагментация и описание
1

External fragmentation

Общего объема памяти достаточно для удовлетворения запроса или для размещения в нем процесса, но он не является непрерывным, поэтому его нельзя использовать.

2

Internal fragmentation

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

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

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

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

Пейджинг

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

Пейджинг - это метод управления памятью, при котором адресное пространство процесса разбивается на блоки одинакового размера, называемые pages(размер равен степени 2, от 512 до 8192 байтов). Размер процесса измеряется количеством страниц.

Точно так же основная память делится на небольшие блоки (физической) памяти фиксированного размера, называемые frames а размер кадра остается таким же, как и у страницы, чтобы оптимально использовать основную память и избежать внешней фрагментации.

Перевод адресов

Адрес страницы называется logical address и представлен page number и offset.

Logical Address = Page number + page offset

Адрес кадра называется physical address и представлен frame number и offset.

Physical Address = Frame number + page offset

Структура данных называется page map table используется для отслеживания отношения между страницей процесса и кадром в физической памяти.

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

Когда процесс должен быть выполнен, соответствующие ему страницы загружаются в любые доступные фреймы памяти. Предположим, у вас есть программа размером 8 Кбайт, но ваша память может вместить только 5 Кбайт в данный момент времени, тогда концепция разбиения на страницы станет очевидной. Когда на компьютере заканчивается ОЗУ, операционная система (ОС) перемещает неиспользуемые или нежелательные страницы памяти во вторичную память, чтобы освободить ОЗУ для других процессов, и возвращает их, когда это необходимо программе.

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

Преимущества и недостатки пейджинга

Вот список преимуществ и недостатков пейджинга -

  • Пейджинг снижает внешнюю фрагментацию, но все же страдает внутренней фрагментацией.

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

  • Благодаря одинаковому размеру страниц и фреймов, замена становится очень простой.

  • Таблица страниц требует дополнительного места в памяти, поэтому может не подойти для системы с небольшой оперативной памятью.

Сегментация

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

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

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

Сегмент программы содержит основную функцию программы, служебные функции, структуры данных и т. Д. Операционная система поддерживаетsegment map tableдля каждого процесса и список свободных блоков памяти вместе с номерами сегментов, их размером и соответствующими ячейками памяти в основной памяти. Для каждого сегмента в таблице хранится начальный адрес сегмента и длина сегмента. Ссылка на ячейку памяти включает значение, которое идентифицирует сегмент и смещение.

Компьютер может адресовать больше памяти, чем физически установлен в системе. Эта дополнительная память на самом деле называетсяvirtual memory и это часть жесткого диска, настроенная для имитации оперативной памяти компьютера.

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

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

  • Написанные пользователем подпрограммы обработки ошибок используются только в случае возникновения ошибки в данных или вычислении.

  • Некоторые опции и функции программы могут использоваться редко.

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

  • Возможность выполнять программу, которая находится в памяти лишь частично, противоречит многим преимуществам.

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

  • Программа больше не будет ограничена объемом доступной физической памяти.

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

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

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

Пейджинг по запросу

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

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

Преимущества

Ниже приведены преимущества пейджинга по запросу:

  • Большая виртуальная память.
  • Более эффективное использование памяти.
  • Нет ограничений по степени мультипрограммирования.

Недостатки

  • Количество таблиц и количество накладных расходов процессора для обработки прерываний страниц больше, чем в случае простых методов постраничного управления.

Алгоритм замены страницы

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

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

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

Ссылочная строка

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

  • Для заданного размера страницы нам нужно учитывать только номер страницы, а не весь адрес.

  • Если у нас есть ссылка на страницу p, затем любые следующие сразу же ссылки на страницу pникогда не вызовет ошибку страницы. Страница p будет в памяти после первой ссылки; следующие сразу же ссылки не приведут к ошибке.

  • Например, рассмотрим следующую последовательность адресов - 123,215,600,1234,76,96

  • Если размер страницы 100, то ссылочная строка будет 1,2,6,12,0,0

Алгоритм в порядке очереди (FIFO)

  • Самая старая страница в основной памяти - это та, которая будет выбрана для замены.

  • Легко реализовать, вести список, заменять страницы из хвоста и добавлять новые страницы в голове.

Оптимальный алгоритм страницы

  • Оптимальный алгоритм замены страниц имеет самую низкую частоту отказов страниц из всех алгоритмов. Существует оптимальный алгоритм замены страниц, который получил название OPT или MIN.

  • Замените страницу, которая не будет использоваться в течение длительного периода времени. Используйте время, когда страница должна использоваться.

Алгоритм наименее недавно использованного (LRU)

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

  • Легко реализовать, вести список, заменять страницы, глядя в прошлое.

Алгоритм буферизации страницы

  • Чтобы процесс начался быстро, держите пул свободных кадров.
  • В случае ошибки страницы выберите страницу для замены.
  • Напишите новую страницу в рамке свободного пула, отметьте таблицу страниц и перезапустите процесс.
  • Теперь запишите грязную страницу с диска и поместите фрейм, содержащий замененную страницу, в свободный пул.

Наименее часто используемый (LFU) алгоритм

  • Страница с наименьшим счетчиком будет выбрана для замены.

  • Этот алгоритм страдает от ситуации, когда страница интенсивно используется на начальном этапе процесса, но затем больше не используется.

Наиболее часто используемый алгоритм (MFU)

  • Этот алгоритм основан на аргументе, что страница с наименьшим счетчиком, вероятно, была только что введена и еще не использовалась.

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

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

  • Block devices- Блочное устройство - это устройство, с которым драйвер обменивается данными, отправляя целые блоки данных. Например, жесткие диски, USB-камеры, Disk-On-Key и т. Д.

  • Character devices- Символьное устройство - это устройство, с которым драйвер обменивается данными, отправляя и получая отдельные символы (байты, октеты). Например, последовательные порты, параллельные порты, звуковые карты и т. Д.

Контроллеры устройств

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

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

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

Любое устройство, подключенное к компьютеру, подключается с помощью вилки и розетки, а розетка подключается к контроллеру устройства. Ниже приводится модель подключения ЦП, памяти, контроллеров и устройств ввода-вывода, в которой ЦП и контроллеры устройств используют общую шину для связи.

Синхронный и асинхронный ввод-вывод

  • Synchronous I/O - В этой схеме выполнение ЦП ожидает, пока продолжается ввод-вывод

  • Asynchronous I/O - Ввод-вывод выполняется одновременно с выполнением ЦП

Связь с устройствами ввода / вывода

ЦП должен иметь возможность передавать информацию на устройство ввода-вывода и от него. Доступны три подхода для связи с ЦП и устройством.

  • Специальные инструкции ввода / вывода
  • Ввод-вывод с отображением памяти
  • Прямой доступ к памяти (DMA)

Специальные инструкции ввода / вывода

При этом используются инструкции ЦП, специально созданные для управления устройствами ввода-вывода. Эти инструкции обычно позволяют отправлять данные на устройство ввода-вывода или читать с устройства ввода-вывода.

Ввод-вывод с отображением памяти

При использовании ввода-вывода с отображением в память одно и то же адресное пространство совместно используется памятью и устройствами ввода-вывода. Устройство подключается непосредственно к определенным ячейкам основной памяти, так что устройство ввода-вывода может передавать блок данных в / из памяти без прохождения через ЦП.

При использовании ввода-вывода с отображением памяти ОС выделяет буфер в памяти и сообщает устройству ввода-вывода использовать этот буфер для отправки данных в ЦП. Устройство ввода-вывода работает асинхронно с ЦП, по завершении прерывает ЦП.

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

Прямой доступ к памяти (DMA)

Медленные устройства, такие как клавиатуры, будут генерировать прерывание для основного ЦП после передачи каждого байта. Если бы быстрое устройство, такое как диск, генерировало прерывание для каждого байта, операционная система тратила большую часть своего времени на обработку этих прерываний. Таким образом, типичный компьютер использует оборудование с прямым доступом к памяти (DMA), чтобы уменьшить эти накладные расходы.

Прямой доступ к памяти (DMA) означает, что ЦП предоставляет модулю ввода-вывода полномочия на чтение или запись в память без участия. Сам модуль DMA контролирует обмен данными между основной памятью и устройством ввода-вывода. ЦП задействован только в начале и в конце передачи и прерывается только после передачи всего блока.

Для прямого доступа к памяти требуется специальное оборудование, называемое контроллером DMA (DMAC), которое управляет передачей данных и регулирует доступ к системной шине. Контроллеры запрограммированы указателями источника и назначения (где читать / записывать данные), счетчиками для отслеживания количества переданных байтов и настройками, которые включают типы ввода-вывода и памяти, прерывания и состояния циклов ЦП.

Операционная система использует оборудование DMA следующим образом -

Шаг Описание
1 Драйвер устройства получает указание передать данные с диска на адрес буфера X.
2 Затем драйвер устройства дает команду контроллеру диска передать данные в буфер.
3 Контроллер диска начинает передачу DMA.
4 Контроллер диска отправляет каждый байт контроллеру DMA.
5 Контроллер DMA передает байты в буфер, увеличивает адрес памяти, уменьшает счетчик C, пока C не станет равным нулю.
6 Когда C становится равным нулю, DMA прерывает CPU, чтобы сигнализировать о завершении передачи.

Опрос против прерываний ввода-вывода

Компьютер должен иметь возможность обнаруживать поступление любого типа ввода. Это может произойти двумя способами, известными какpolling и interrupts. Оба эти метода позволяют процессору иметь дело с событиями, которые могут произойти в любое время и не связаны с процессом, который он выполняет в данный момент.

Опрос ввода / вывода

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

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

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

Прерывания ввода / вывода

Альтернативной схемой работы с вводом-выводом является метод управления прерываниями. Прерывание - это сигнал микропроцессору от устройства, требующего внимания.

Контроллер устройства отправляет сигнал прерывания на шину, когда он требует внимания ЦП, когда ЦП получает прерывание. Он сохраняет свое текущее состояние и вызывает соответствующий обработчик прерывания, используя вектор прерывания (адреса подпрограмм ОС для обработки различных событий). Когда с прерывающим устройством разобрались, ЦП продолжает свою первоначальную задачу, как если бы она никогда не прерывалась.

Программное обеспечение ввода-вывода часто организовано на следующих уровнях:

  • User Level Libraries- Это обеспечивает простой интерфейс для пользовательской программы для выполнения ввода и вывода. Например,stdio это библиотека, предоставляемая языками программирования C и C ++.

  • Kernel Level Modules - Это обеспечивает драйвер устройства для взаимодействия с контроллером устройства и независимыми от устройства модулями ввода-вывода, используемыми драйверами устройств.

  • Hardware - Этот уровень включает реальное оборудование и аппаратный контроллер, который взаимодействует с драйверами устройств и оживляет оборудование.

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

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

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

Драйвер устройства выполняет следующие работы -

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

Драйвер устройства обрабатывает запрос следующим образом. Предположим, что поступает запрос на чтение блока N. Если драйвер бездействует в момент поступления запроса, он немедленно начинает выполнение запроса. В противном случае, если драйвер уже занят каким-либо другим запросом, он помещает новый запрос в очередь ожидающих запросов.

Обработчики прерываний

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

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

Механизм прерывания принимает адрес ─ число, которое выбирает конкретную процедуру / функцию обработки прерывания из небольшого набора. В большинстве архитектур этот адрес представляет собой смещение, хранящееся в таблице, называемой таблицей векторов прерываний. Этот вектор содержит адреса памяти специализированных обработчиков прерываний.

Программное обеспечение ввода-вывода, не зависящее от устройства

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

  • Единый интерфейс для драйверов устройств
  • Именование устройств - мнемонические имена, сопоставленные с основным и второстепенным номерами устройств.
  • Защита устройства
  • Обеспечение независимого от устройства размера блока
  • Буферизация, поскольку данные, поступающие с устройства, не могут быть сохранены в конечном месте назначения.
  • Распределение памяти на блочных устройствах
  • Выделение и выпуск выделенных устройств
  • Отчет об ошибках

Программное обеспечение ввода-вывода в пространстве пользователя

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

Библиотеки ввода-вывода (например, stdio) находятся в пользовательском пространстве для обеспечения интерфейса для резидентного ОС, независимого от устройства SW ввода-вывода. Например, putchar (), getchar (), printf () и scanf () являются примерами библиотеки ввода-вывода пользовательского уровня stdio, доступной в программировании на C.

Подсистема ввода-вывода ядра

Подсистема ввода-вывода ядра отвечает за предоставление множества услуг, связанных с вводом-выводом. Ниже приведены некоторые из предоставляемых услуг.

  • Scheduling- Ядро планирует набор запросов ввода-вывода, чтобы определить правильный порядок их выполнения. Когда приложение выдает системный вызов блокирующего ввода-вывода, запрос помещается в очередь для этого устройства. Планировщик ввода-вывода ядра изменяет порядок очереди, чтобы улучшить общую эффективность системы и среднее время отклика приложений.

  • Buffering - Подсистема ввода-вывода ядра поддерживает область памяти, известную как bufferкоторый хранит данные во время их передачи между двумя устройствами или между устройством с операцией приложения. Буферизация выполняется, чтобы справиться с несоответствием скорости между производителем и потребителем потока данных или для адаптации между устройствами, которые имеют разные размеры передачи данных.

  • Caching- Ядро поддерживает кэш-память, которая является областью быстрой памяти, в которой хранятся копии данных. Доступ к кэшированной копии более эффективен, чем доступ к оригиналу.

  • Spooling and Device Reservation- Спул - это буфер, в котором хранится вывод для устройства, такого как принтер, которое не может принимать чередующиеся потоки данных. Система буферизации копирует файлы очереди очереди на принтер по одному. В некоторых операционных системах буферизацией управляет процесс системного демона. В других операционных системах это обрабатывается потоком ядра.

  • Error Handling - Операционная система, использующая защищенную память, может защитить от многих видов ошибок оборудования и приложений.

файл

Файл - это именованный набор связанной информации, который записывается на вторичном хранилище, таком как магнитные диски, магнитные ленты и оптические диски. Как правило, файл представляет собой последовательность битов, байтов, строк или записей, значение которых определяется создателем файла и пользователем.

Файловая структура

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

  • Файл имеет определенную структуру в соответствии с его типом.

  • Текстовый файл - это последовательность символов, организованная в строки.

  • Исходный файл - это последовательность процедур и функций.

  • Объектный файл - это последовательность байтов, организованная в блоки, понятные машине.

  • Когда операционная система определяет различные файловые структуры, она также содержит код для поддержки этой файловой структуры. Unix, MS-DOS поддерживают минимальное количество файловой структуры.

Тип файла

Тип файла относится к способности операционной системы различать различные типы файлов, такие как исходные текстовые файлы и двоичные файлы и т. Д. Многие операционные системы поддерживают множество типов файлов. Операционная система, такая как MS-DOS и UNIX, имеет следующие типы файлов:

Обычные файлы

  • Это файлы, содержащие информацию о пользователе.
  • Они могут содержать текст, базы данных или исполняемую программу.
  • Пользователь может применять к таким файлам различные операции, такие как добавление, изменение, удаление или даже удаление всего файла.

Файлы каталога

  • Эти файлы содержат список имен файлов и другую информацию, относящуюся к этим файлам.

Специальные файлы

  • Эти файлы также известны как файлы устройств.
  • Эти файлы представляют собой физические устройства, такие как диски, терминалы, принтеры, сети, ленточный накопитель и т. Д.

Эти файлы бывают двух типов -

  • Character special files - данные обрабатываются посимвольно, как в случае терминалов или принтеров.

  • Block special files - данные обрабатываются блоками, как в случае дисков и лент.

Механизмы доступа к файлам

Механизм доступа к файлу относится к способу доступа к записям файла. Есть несколько способов получить доступ к файлам -

  • Последовательный доступ
  • Прямой / произвольный доступ
  • Индексированный последовательный доступ

Последовательный доступ

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

Прямой / произвольный доступ

  • Файловая организация произвольного доступа обеспечивает прямой доступ к записям.

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

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

Индексированный последовательный доступ

  • Этот механизм построен на основе последовательного доступа.
  • Для каждого файла создается индекс, содержащий указатели на различные блоки.
  • Поиск по индексу выполняется последовательно, и его указатель используется для прямого доступа к файлу.

Распределение пространства

Файлы распределяются на диске операционной системой. Операционные системы развертываются следующими тремя основными способами распределения дискового пространства для файлов.

  • Непрерывное размещение
  • Связанное размещение
  • Индексированное размещение

Непрерывное размещение

  • Каждый файл занимает непрерывное адресное пространство на диске.
  • Адрес диска назначен в линейном порядке.
  • Легко реализовать.
  • Внешняя фрагментация является серьезной проблемой для этого типа техники распределения.

Связанное размещение

  • Каждый файл содержит список ссылок на блоки диска.
  • Каталог содержит ссылку / указатель на первый блок файла.
  • Без внешней фрагментации
  • Эффективно используется в файлах с последовательным доступом.
  • Неэффективен в случае прямого доступа к файлу.

Индексированное размещение

  • Предлагает решения проблем непрерывного и связанного размещения.
  • Индексный блок создается со всеми указателями на файлы.
  • Каждый файл имеет собственный индексный блок, в котором хранятся адреса дискового пространства, занимаемого файлом.
  • Каталог содержит адреса индексных блоков файлов.

Безопасность относится к обеспечению системы защиты системных ресурсов компьютера, таких как ЦП, память, диск, программное обеспечение и, что наиболее важно, данные / информация, хранящиеся в компьютерной системе. Если компьютерная программа запускается неавторизованным пользователем, он / она может нанести серьезный ущерб компьютеру или данным, хранящимся на нем. Таким образом, компьютерная система должна быть защищена от несанкционированного доступа, злонамеренного доступа к системной памяти, вирусов, червей и т. Д. Мы собираемся обсудить следующие темы в этой главе.

  • Authentication
  • Одноразовые пароли
  • Программные угрозы
  • Системные угрозы
  • Классификация компьютерной безопасности

Аутентификация

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

  • Username / Password - Пользователь должен ввести зарегистрированное имя пользователя и пароль в операционной системе для входа в систему.

  • User card/key - Пользователю необходимо вставить перфокарту в слот для карты или ввести ключ, сгенерированный генератором ключей, в опции, предоставляемой операционной системой, для входа в систему.

  • User attribute - fingerprint/ eye retina pattern/ signature - Пользователь должен передать свой атрибут через назначенное устройство ввода, используемое операционной системой для входа в систему.

Одноразовые пароли

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

  • Random numbers- Пользователям предоставляются карточки с напечатанными номерами и соответствующими алфавитами. Система запрашивает числа, соответствующие нескольким случайно выбранным алфавитам.

  • Secret key- Пользователю предоставляется аппаратное устройство, которое может создать секретный идентификатор, сопоставленный с идентификатором пользователя. Система запрашивает такой секретный идентификатор, который должен генерироваться каждый раз перед входом в систему.

  • Network password - Некоторые коммерческие приложения отправляют одноразовые пароли пользователю на зарегистрированный мобильный телефон / электронную почту, которые необходимо ввести перед входом в систему.

Программные угрозы

Процессы операционной системы и ядро ​​выполняют назначенную задачу в соответствии с инструкциями. Если пользовательская программа заставила этот процесс выполнять вредоносные задачи, то он известен какProgram Threats. Одним из распространенных примеров программной угрозы является программа, установленная на компьютере, которая может хранить и отправлять учетные данные пользователя через сеть какому-либо хакеру. Ниже приводится список некоторых известных программных угроз.

  • Trojan Horse - Такая программа перехватывает учетные данные пользователя и сохраняет их для отправки злоумышленнику, который позже может войти в систему на компьютер и получить доступ к системным ресурсам.

  • Trap Door - Если программа, которая предназначена для работы, как требуется, имеет дыру в безопасности в своем коде и выполняет незаконные действия без ведома пользователя, то она вызывается, чтобы открыть люк.

  • Logic Bomb- Логическая бомба - это ситуация, когда программа плохо себя ведет только при соблюдении определенных условий, иначе она работает как настоящая программа. Обнаружить труднее.

  • Virus- Вирус, как следует из названия, может воспроизводиться в компьютерной системе. Они очень опасны и могут изменять / удалять пользовательские файлы, вызывать сбой в работе систем. Вирус - это обычно небольшой код, встроенный в программу. Когда пользователь обращается к программе, вирус начинает внедряться в другие файлы / программы и может сделать систему непригодной для использования пользователем.

Системные угрозы

Под системными угрозами понимается неправильное использование системных служб и сетевых подключений с целью создания проблем для пользователя. Системные угрозы могут использоваться для запуска программных угроз во всей сети, называемой программной атакой. Системные угрозы создают такую ​​среду, в которой ресурсы операционной системы / пользовательские файлы используются не по назначению. Ниже приводится список некоторых хорошо известных системных угроз.

  • Worm- Червь - это процесс, который может снизить производительность системы из-за чрезмерного использования системных ресурсов. Процесс-червь генерирует несколько своих копий, каждая из которых использует системные ресурсы, не позволяя другим процессам получить необходимые ресурсы. Процессы-черви могут даже отключить всю сеть.

  • Port Scanning - Сканирование портов - это механизм или средство, с помощью которого хакер может обнаруживать уязвимости системы для атаки на систему.

  • Denial of Service- Атаки типа «отказ в обслуживании» обычно не позволяют пользователю законно использовать систему. Например, пользователь может не иметь возможности использовать Интернет, если отказ в обслуживании атакует настройки содержимого браузера.

Классификация компьютерной безопасности

Согласно критериям оценки доверенных компьютерных систем Министерства обороны США существует четыре классификации безопасности компьютерных систем: A, B, C и D. Это широко используемые спецификации для определения и моделирования безопасности систем и решений безопасности. Ниже приводится краткое описание каждой классификации.

SN Тип и описание классификации
1

Type A

Высший уровень. Использует формальные проектные спецификации и методы проверки. Обеспечивает высокую степень гарантии безопасности процесса.

2

Type B

Обеспечивает обязательную систему защиты. Обладают всеми свойствами системы класса C2. Прикрепляет метку чувствительности к каждому объекту. Он бывает трех видов.

  • B1- Поддерживает метку безопасности каждого объекта в системе. Метка используется для принятия решений по управлению доступом.

  • B2 - Распространяет метки конфиденциальности на каждый системный ресурс, например, объекты хранения, поддерживает скрытые каналы и аудит событий.

  • B3 - Позволяет создавать списки или группы пользователей для управления доступом для предоставления или отмены доступа к заданному именованному объекту.

3

Type C

Обеспечивает защиту и подотчетность пользователей с помощью возможностей аудита. Он бывает двух типов.

  • C1- Включает элементы управления, чтобы пользователи могли защитить свою личную информацию и уберечь других пользователей от случайного чтения / удаления их данных. Версии UNIX в основном относятся к классу Cl.

  • C2 - Добавляет контроль доступа на индивидуальном уровне к возможностям системы уровня Cl.

4

Type D

Самый низкий уровень. Минимальная защита. MS-DOS, Window 3.1 попадают в эту категорию.

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

Компоненты системы Linux

Операционная система Linux состоит в основном из трех компонентов

  • Kernel- Ядро - это основная часть Linux. Он отвечает за все основные действия этой операционной системы. Он состоит из различных модулей и напрямую взаимодействует с базовым оборудованием. Ядро предоставляет необходимую абстракцию, чтобы скрыть детали оборудования низкого уровня для системы или прикладных программ.

  • System Library- Системные библиотеки - это специальные функции или программы, с помощью которых прикладные программы или системные утилиты получают доступ к функциям ядра. Эти библиотеки реализуют большинство функций операционной системы и не требуют прав доступа к коду модуля ядра.

  • System Utility - Системные служебные программы отвечают за выполнение специализированных задач индивидуального уровня.

Режим ядра и режим пользователя

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

Код поддержки, который не требуется для работы в режиме ядра, находится в системной библиотеке. Пользовательские программы и другие системные программы работают вUser Modeу которого нет доступа к системному оборудованию и коду ядра. Пользовательские программы / утилиты используют системные библиотеки для доступа к функциям ядра и выполнения системных задач низкого уровня.

Основные характеристики

Ниже приведены некоторые из важных функций операционной системы Linux.

  • Portable- Переносимость означает, что программное обеспечение может одинаково работать на разных типах оборудования. Ядро Linux и прикладные программы поддерживают их установку на любой аппаратной платформе.

  • Open Source- Исходный код Linux находится в свободном доступе, и это проект разработки сообщества. Несколько команд работают в сотрудничестве над расширением возможностей операционной системы Linux, и она постоянно развивается.

  • Multi-User - Linux является многопользовательской системой, что означает, что несколько пользователей могут одновременно получать доступ к системным ресурсам, таким как память / оперативная память / прикладные программы.

  • Multiprogramming - Linux - это многопрограммная система, что означает одновременное выполнение нескольких приложений.

  • Hierarchical File System - Linux предоставляет стандартную файловую структуру, в которой расположены системные файлы / пользовательские файлы.

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

  • Security - Linux обеспечивает безопасность пользователей с помощью функций аутентификации, таких как защита паролем / контролируемый доступ к определенным файлам / шифрование данных.

Архитектура

На следующем рисунке показана архитектура системы Linux -

Архитектура системы Linux состоит из следующих уровней:

  • Hardware layer - Оборудование состоит из всех периферийных устройств (RAM / HDD / CPU и т. Д.).

  • Kernel - Это основной компонент операционной системы, он напрямую взаимодействует с оборудованием, предоставляет низкоуровневые службы компонентам верхнего уровня.

  • Shell- Интерфейс к ядру, скрывающий от пользователей сложность функций ядра. Оболочка принимает команды от пользователя и выполняет функции ядра.

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