Skip to content

Instantly share code, notes, and snippets.

@sampletext32
Last active January 15, 2022 20:20
Show Gist options
  • Save sampletext32/bfdd1c8883a3aa51b8bd87f75a79d654 to your computer and use it in GitHub Desktop.
Save sampletext32/bfdd1c8883a3aa51b8bd87f75a79d654 to your computer and use it in GitHub Desktop.

Оглавление

33. NTFS


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

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

  • Каждая аппаратная часть компьютера может быть разной
    • Разные ЦПУ
  • Pentium, PowerPC, ColdFire, ARM, MIPS
    • Разное количество и типов памяти…
    • Разные типы устройств
  • Мышь, Клавиатура, Сенсоры, Камеры, touch screen
    • Разное сетевое окружение
  • Локальная сеть, Беспроводная сеть, Firewalls,…
  • Вопросы:
    • Должен ли программист писать одну программу решающую множество независимых задач?
    • Должна ли программа быть изменена или адаптирована для каждого вида аппаратных частей?
    • Должен ли сбой в программе вести к глобальному сбою всей системы?
    • Должны ли программы иметь доступ ко всем аппаратным частям?

02. Виртуальная машина как абстракция

  • Эмуляция аппаратной машины для ПО делает:
    • Возможным для аппаратной части иметь функции, каких хотите Вы
    • Возможным перенос ПО на другой компьютер
  • Упрощение программирования
    • Каждый процесс думает, что он имеет доступ ко всей памяти и всему процессорному времени
    • Каждый процесс думает, что он имеет доступ ко всем устройствам
    • Разные устройства имеют схожий интерфейс
    • Интерфейс устройства имеет больше возможностей нежели представлено аппаратно
  • Изоляция ошибок
    • Процессы не могут непосредственно влиять на другие процессы
    • Ошибка не может привести к сбою всей машины
    • Java предоставляет безопасный и надежный межплатформенный интерфейс

03. Основные функции операционных систем

  • Самое важное ПО
    • Без ОС компьютер не может полноценно функционировать
  • Выступает в качестве посредника, виртуальной машины
    • Между аппаратным и прикладным ПО
    • Между прикладным ПО и пользователем
  • Управляет и распределяет ресурсы системы (память, время процессора, устройств)
  • Оптимизирует работу компьютера
  • Выполнение приложений
    • Управляет системным и прикладным ПО
    • Загружает приложения и данные, связанные с ними, в память
  • Операции ввода-вывода
    • Управляет связью между пользователем и компьютером
    • Управляет устройствами ввода-вывода и предоставляет ресурсы приложениям по требованию
  • Управление файловой системой
    • Файл - организованная информация, предназначенная для использования в ОС
    • Файловая система - системное ПО, которое управляет хранением файлов и работой с ними
  • Связь
    • Позволяет общаться между отдельными приложениями
    • Управление общими ресурсами
  • Обработка ошибок
    • Принимает необходимые меры для обеспечения правильной работы компьютера при ошибке
  • Управление ресурсами
    • Распределяет и управляет ресурсами между отдельными приложениями и пользователями
  • Защита
    • Позволяет только авторизованный доступ к ресурсам (приложениям, файлам, устройствам)

04. Выполнение процесса на процессоре

image

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

  • Юнипрограммирование: один поток за раз
    • MS/DOS, ранние Macintosh, пакетная обработка
    • Простой подход для разработки ОС
    • Отсутствие параллелизма (один поток имеет доступ к ресурсам)
    • Если ли смысл такого подхода?
  • Мультипрограммирование: более чем 1 поток за раз
    • Multics, UNIX/Linux, OS/2, Windows NT – 7, Mac OS X
    • Часто называемые “многозадачные
  • Многоядерность -> Мультипрограммирование?

06. Базовые проблемы параллелизма. Примеры реализации многопроцессорности.

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

  • Приложения конкурируют друг с другом за ресурсы

    • Необходимо управлять доступом к общим ресурсам
    • Необходима защита одного приложения от другого
  • Приложениям часто требуется взаимодействие между собой

  • Основная проблема параллелизма

    • Hardware: один CPU, одна DRAM, одни I/O devices
    • API для мультипрограммирования: процесс думает, что он имеет эксклюзивный доступ к разделяемым ресурсам
  • ОС должна координировать всю деятельность

    • Множество процессов, I/O прерывания
    • Каким образом это координировать
  • Базовая идея: абстракция виртуальной машины

    • Простая абстракция компьютера для процессов
    • Мультиплексирование виртуальных машин
  • Дейкстра реализовал в “THE system”

    • 2 тыс. строк кода vs 1 млн. строк в OS 360 (1 тыс. багов)

07. Потоки. Безопасность.

  • Защита памяти
    • Каждый поток не должен иметь доступ ко всей памяти
  • Защита I/O устройств
    • Каждый поток не должен иметь доступ к каждому I/O устройству
  • Защита доступа к процессору: преимущественное переключение из потока в поток
    • Использование таймера
    • Невозможно отключить таймер из usercode

08. Мультиплексирование процессов

  • Текущее состояние процесса хранится в process control block (PCB):
    • Это образ среды выполнения и защиты процесса
    • Одновременно может быть только один PCB
  • Предоставление времени другому процессу (Планирование)
    • Одновременно запускается один процесс
    • Предоставление большего времени важным процессам
  • Предоставление ресурсов другим процессам (Защита)
    • Контроль доступа к не процессорным ресурсам
  • Переключение с одного процесса на другой
    • Часто называется «переключение контекста»
    • Накладные расходы

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

image

10. Многопроцессная обработка задачи

image

  • Нужен механизм взаимодействия

    • Процессы изолированными
    • Shared-Memory Mapping
    • Передача сообщений
      • send() и receive()
      • Работает через сеть
  • Коммуникация через разделяемую память

    • Не трудоёмко - низкие накладные расходы
    • Сложная синхронизация
  • Inter-process Communication (IPC)

    • Операции
      • send(message)
      • receive(message)
    • Если P и Q хотят взаимодействовать
      • Установить соединение
      • send/receive

11. Этапы развития операционных систем

  • 1 этап (40е года) – диспетчеры файлов
    • Процессор был связан с оперативной памятью и вводом/выводом. Напрямую ввод/вывод с оперативной памятью не взаимодействовали. Программы-диспетчеры появились для автоматизации загрузки и линковки данных, которые писались под конкретную машину. Когда осознали, что многие части кода повторяются, решили отвести специально место в оперативной памяти для библиотек, отсюда возникли задачи:
      • автоматизировать линковку (связь приложений с ячейками памяти),
      • оптимизировать взаимодействия с устройствами ввода/вывода.
      • Прерывание - специальный сигнал, который останавливает центральный процесс и заставляет переключиться с одной задачи на другую.
  • 2 этап (60-70е года) –мультипрограммные ОС
    • В это время появляется сам термин ОС. Операционная система - базовое системное программное обеспечение, управляющее работой компьютера и являющееся интерфейсом между аппаратурой, прикладным программным обеспечением и пользователем.
    • Задачи, решавшиеся на данном этапе:
      • Разделение времени между программы привело к созданию таймера и смене контекста, выполнения нескольких программ.
      • Виртуализация памяти: только ОС имеет право писать физические адреса памяти, ПО может работать только с выделенной памятью.
      • Системные вызовы - обращение программного обеспечения к операционной системе с просьбой предоставить какие-либо возможности.
      • Мульти планирование времени
      • Синхронизация и коммуникация между программами
      • Разделение доступа к внешней информации, файлам
  • 3 этап – сетевые и распределенные ОС
    • удаленный ввод/вывод данных, появляется распределенный ввод/вывод и хранение.
  • 4 этап – открытые ОС (мобильные)
    • Появление Unix (1969) - Томсон, Кенргин, Рич (создатели языка Си) - за основу взяли систему Балтикс, написанную на языке Би.
  • 5 этап – персональные ОС
    • Linux/MacOS/Windows

12. Монолитное ядро. Особенности, преимущества и недостатки.

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

13. Слоеные системы. Особенности, преимущества и недостатки.

  • Продолжая структуризацию, можно разбить всю вычислительную систему на ряд более мелких уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты из уровня N - 1. Нижним уровнем в таких системах обычно является hardware, верхним уровнем интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой и его студентами в 1968 г.
  • Слоеные системы хорошо реализуются. При использовании операций нижнего слоя не нужно знать, как они реализованы, нужно знать лишь, что они делают.
  • Слоеные системы хорошо тестируются. Отладка начинается с нижнего слоя и проводится послойно. При возникновении ошибки мы можем быть уверены, что она находится в тестируемом слое.
  • Слоеные системы хорошо модифицируются. При необходимости можно заменить лишь один слой, не трогая остальные. Но слоеные системы сложны для разработки: тяжело правильно определить порядок слоев, и что, к какому слою относится.
  • Слоеные системы менее эффективны, чем монолитные. Так, например, для выполнения операций ввода-вывода программе пользователя придется последовательно проходить все слои - от верхнего до нижнего.

14. Микроядро. Особенности, преимущества и недостатки.

  • Современная тенденция в разработке операционных систем это перенесение значительной части системного кода на уровень пользователя и одновременной минимизации ядра. Речь идет о подходе к построению ядра, называемом микроядерной архитектурой (microkernel architecture) операционной системы, когда большинство ее составляющих являются самостоятельными программами.

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

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

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

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

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

15. Смешанные системы. Особенности, преимущества и недостатки.

  • Все рассмотренные подходы к построению операционных систем имеют свои преимущества и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов.
  • Примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Так устроены 4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром. Данный подход возник в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра.
  • Наиболее тесно элементы микроядерной архитектуры и элементы монолитного ядра переплетены в ядре Windows NT. Хотя Windows NT часто называют микроядерной операционной системой, это не совсем так. Микроядро NT слишком сложно и велико (более 1 Мб), чтобы носить приставку микро. Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как и положено в микроядерных операционных системах. В тоже время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. Кроме того, в Windows NT существует разделение между режимом ядра и режимом пользователя еще одна черта монолитного ядра. Причина всего этого проста. По мнению Microsoft, причина проста: чисто микроядерный дизайн коммерчески непрактичен, так как слишком неэффективен.
  • Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой.

16. Классификация ОС

Существует несколько схем классификации операционных систем. Ниже приведена классификация по некоторым признакам с точки зрения пользователя:

  • Реализация многозадачности
    • Поддержка многопользовательского режима.
      • Многопроцессорная обработка
      • Системы реального времени
      • Реализация многозадачности
  • По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:
    • многозадачные (Unix, OS/2, Windows).
    • однозадачные (например, MS-DOS).
  • По числу одновременно работающих пользователей ОС можно разделить на:
    • однопользовательские (MS-DOS, Windows3.x);
    • многопользовательские (WindowsNT, Unix).

17. Системы реального времени. Особенности.

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

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

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

  • Приведенная классификация ОС не является исчерпывающей

18. Наивная реализация блокировок

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

      • Внутреннее прерывание: Решение потока
      • Внешнее прерывание: Недобровольное прерывание
    • В однопроцессорном случае, можно избежать переключений:

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

      • LockAcquire{ disableInts; }
      • LockRelease{ enableInts; }
    • Проблемы с данным подходом:

      • Не позволяйте пользователю делать это! Рассмотрим код:
        LockAcquire();
        While(TRUE) {;}
        
    • Системы реального времени—мы не можем гарантировать время!

      • Критические секции могут быть сколько угодно длинными
    • Что же случится с I/O или другими важными событиями?

      • “Критическая ошибка и разрушение реактора. Бегать умеете?”

19. Концепция test/set

Простое решение:

intvalue = 0; // Free
Acquire() {
    // while busy
    while (test&set(value)); 
}
Release() {
    value = 0;
}

Пояснение:

  • Если нет блокировки, test&set считает 0 и установит value = 1, соответственно блокирует. Возвращает 0, когда выходит.
  • Если заблокировано, test&set считывает 1 и устанавливает value = 1 (не изменяет). Возвращает 1,так что цикл продолжается
  • Когда мы устанавливаем value = 0, кто-либо может захватить и блокировать (поток)

20. Семафор

  • Семафоры являются своего рода шлагбаумом (или светафором)
    • Впервые представлены Дейкстрой в конце 60-тых
    • Основной примитив синхронизации в UNIX
  • Пояснение: У Семафора есть положительная переменная и он поддерживает две операции:
    • P(): атомарная операция которая ждет сигнала семафора (>0), затем декрементит значение семафора на 1
      • Думайте об этом как о операции wait()
    • V(): атомарная операция которая инкрементит семафор на 1, будя ожидающие P, если есть
      • Думайте об этом как о release()
    • Отметим что P() означает “proberen” (to test - проверить) и V() означает “verhogen” (инкремент) на голландском языке

Семафор как целое число

  • Семафор как целое число, но
    • Только положительное значение
    • Доступны только операции P и V
    • Операции атомарные
  • Аналогия из железной дороги image

Использование Семафора

  • (Взаимная блокировка) Mutual Exclusion (initial value = 1)
    • Также называется “Бинарный Семафор”.
    semaphore.P();
    // Критическая секция
    semaphore.V();
    
  • Планирование (initial value = 0)
    Initial value of semaphore = 0
    ThreadJoin {
        semaphore.P();
    }
    ThreadFinish {
        semaphore.V();
    }
    

21. Планирование в ОС

Рассматривая эволюцию компьютерных систем, говорят о существовании двух видов планирования в вычислительных системах:

  • планировании заданий
  • планировании использования процессора.

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

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

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

Планирование заданий

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

Планирование использования процессора

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

Критерии планирования и требования к алгоритмам

  • Для каждого уровня планирования процессов можно предложить много различных алгоритмов. Выбор конкретного алгоритма определяется классом задач, решаемых вычислительной системой, и целями, которых мы хотим достичь, используя планирование. К числу таких целей можно отнести:
    • Справедливость
    • Эффективность
    • Сокращение полного времени выполнения
    • Сокращение времени ожидания
    • Сокращение времени отклика
  • Независимо от поставленных целей планирования желательно также, чтобы алгоритмы обладали следующими свойствами:
    • Были предсказуемыми
    • Имели минимальные накладные расходы, связанные с их работой
    • Равномерно загружали ресурсы вычислительной системы
    • Обладали масштабируемостью

Параметры планирования

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

Параметры планирования (статические)

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

Параметры планирования (динамические)

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

    Для среднесрочного планирования в качестве таких характеристик может выступать следующая информация:

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

22. Вытесняющее и невытесняющее планирование

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

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

  • В случаях 1 и 2 процесс, находившийся в состоянии исполнение, не может дальше исполняться, и для выполнения всегда необходимо выбрать новый процесс.
  • В случаях 3 и 4 планирование может не проводиться, процесс, который исполнялся до прерывания, может продолжать свое выполнение после обработки прерывания.
  • Если планирование осуществляется только в случаях 1 и 2, говорят, что имеет место невытесняющее (nonpreemptive) планирование. В противном случае говорят о вытесняющем (preemptive) планировании.
  • Операционная система устанавливает специальный таймер для генерации сигнала прерывания по истечении некоторого интервала времени - кванта. После прерывания процессор передается в распоряжение следующего процесса.

23. Алгоритмы планирования. FCFS.

  • Простейшим алгоритмом планирования является алгоритм, который принято обозначать аббревиатурой FCFS по первым буквам его английского названия - First Come, First Served (первым пришел, первым обслужен).
  • Представим себе, что процессы, находящиеся в состоянии готовность, организованы в очередь. Когда процесс переходит в состояние готовность, он, а точнее ссылка на его PCB, помещается в конец этой очереди. Выбор нового процесса для исполнения осуществляется из начала очереди с удалением оттуда ссылки на его PCB. Очередь подобного типа имеет в программировании специальное наименование FIFO - сокращение от First In, First Out (первым вошел, первым вышел).
  • Такой алгоритм выбора процесса осуществляет невытесняющее планирование. Процесс, получивший в свое распоряжение процессор, занимает его до истечения своего текущего CPU burst. После этого для выполнения выбирается новый процесс из начала очереди.
  • Преимуществом алгоритма FCFS является легкость его реализации, в то же время он имеет и много недостатков.

24. Алгоритмы планирования. RR.

  • Модификацией алгоритма FCFS является алгоритм, получивший название Round Robin (Round Robin - это вид детской карусели в США) или сокращенно RR. По сути дела это тот же самый алгоритм, только реализованный в режиме вытесняющего планирования.
  • Можно представить себе все множество готовых процессов организованным циклически - процессы сидят на карусели. Карусель вращается так, что каждый процесс находится около процессора небольшой фиксированный квант времени, обычно 10 - 100 миллисекунд. Пока процесс находится рядом с процессором, он получает процессор в свое распоряжение и может исполняться.
  • Реализуется такой алгоритм так же, как и предыдущий, с помощью организации процессов, находящихся в состоянии готовность, в очередь FIFO. Планировщик выбирает для очередного исполнения процесс, расположенный в начале очереди, и устанавливает таймер для генерации прерывания по истечении определенного кванта времени. image

25. Алгоритмы планирования. SJF.

Shortest-Job-First (SJF)

  • При рассмотрении алгоритмов FCFS и RR видно, насколько существенным для них является порядок расположения процессов в очереди процессов готовых к исполнению. Если короткие задачи расположены в очереди ближе к ее началу, то общая производительность этих алгоритмов значительно возрастает. Если бы мы знали время следующих CPU burst для процессов, находящихся в состоянии готовность, то могли бы выбрать для исполнения не процесс из начала очереди, а процесс с минимальной длительностью CPU burst. Если же таких процессов два или больше, то для выбора одного из них можно использовать уже известный нам алгоритм FCFS. Квантование времени при этом не применяется. Описанный алгоритм получил название "кратчайшая работа первой" или Shortest Job First (SJF).

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

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

26. Прерывания

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

В зависимости от источника прерывания делятся на 3 класса:

  • внешние (аппаратные);
  • внутренние (исключения);
  • программные.

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

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

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

  • Прерывания обычно обрабатываются модулями операционной системы, так как действия, выполняемые по прерыванию, относятся к управлению ресурсами операционной системы – принтером, дисками, памятью, процессором и.п. Процедуры, вызываемые по прерываниям, обычно называют обработчиками прерываний, или процедурами обслуживания прерываний (Interrupt Service Routine, ISR). Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств, исключения – специальными модулями ядра, программные прерывания – процедурами ОС, обслуживающими системные вызовы.
  • Существуют два основных способа, с помощью которых шины выполняют прерывания: векторный (vectored) и опрашиваемый (polled).

27. Маскирование

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

28. Взаимоблокировка и условия взаимоблокировки.

  • Предположим, что имеется два процесса A и B. Процесс A имеет в исключительном доступе ресурс R1, процесс B – ресурс R2. Если при этом процессу A для продолжения работы потребуется ресурс R2, то его запрос на получение ресурса будет отклонен до тех пор, пока ресурс не будет освобожден процессом B. Если же при этом процессу B для продолжения работы окажется необходимым иметь в исключительном доступе ресурс R1, то и процесс B окажется, как и процесс A, заблокированным. Такая ситуация называется тупиком, тупиковой ситуацией или взаимоблокировкой.

Простыми словами:

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

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

29. Алгоритмы планирования файловой системы

  • Диск выполняет только 1 запрос image
  • Алгоритмы планирования:
    • First In First Out (FIFO)
    • Shortest Seek Time First
    • SCAN
    • C-SCAN

FIFO: First In First Out

  • Очередь
  • Пример:
    • Запросы: 2, 1, 3, 6, 2, 5
    • Планирование: 2, 1, 3, 6, 2, 5
  • +:
    • Прозрачность
  • -:
    • Хаотичность позиционирования
  • image

SSTF: Shortest Seek Time First

  • Берем запрос ближайший к головке
  • Пример:
    • Запрос: 2, 1, 3, 6, 2, 5
    • Планирование: 5, 6, 3, 2, 2, 1
  • +:
    • сокращаем совокупное время доступа
  • -:
    • может привести к голоду
    • Это значит, что если будет много запросов, которые ближе к считывающей головке, и допустим 1 который находится далеко от нее, считывающая головка может не дойти до него.
  • image

SCAN

  • Алгоритм лифта, берем ближайший запрос к нашему направлению
  • Пример:
    • Запрос: 2, 1, 3, 6, 2, 5
    • Головка движется в центр
    • Планирование: 5, 3, 2, 2, 1, 6
  • +:
    • Нет голода
    • Снижение время доступа
  • -:
    • предпочтение у средних треков
  • image

C-SCAN

  • Как SCAN только в одном направление
  • Пример:
    • Запрос: 2, 1, 3, 6, 2, 5
    • Головка планирует те запросы, считывание которых стремится к краю диска
    • Планирование: 5, 6, 1, 2, 2, 3
  • +:
    • Справедливее SCAN
  • -:
    • увеличенное время доступа на пути назад
  • image

30. Особенности HDD и SSD для планирования

Solid State Disk (Drive) (SSDs): Твердотельный накопитель

  • 1995 – Замена магнитных накопителей энергозависимой памятью (DRAM с резервным питанием от аккумулятора)
  • 2009 – Использование NAND Multi-Level Cell (2-bit/cell) флеш памяти
  • Нет движущихся частей
  • Время доступа (0.1-0.2ms)
  • Характеризуется небольшими размерами и низким энергопотреблением

  • Чтение похоже на чтение с RAM, но скорость доступа – 25нс
  • Отличие от жестких дисков – отсутствие движущихся элементов
  • Пропускная способность огранивается контроллером и интерфейсом – SATA, PCI, m2
  • Чтение случайное и последовательное идентично
  • image

  • Запись - сложна! (~200μs – 1.7ms )
  • Может записывать только в пустые блоки
  • Очищение блока ~1.5ms
  • Контроллер имеет пул пустых блоков
  • image

Hard Disk Drive (HDD): Жёсткий диск

Теряет много времени на доступ к ресурсам, что оптимизируется предыдущим вопросом

  • Время поиска
    • Время поиска представляет собой время, необходимое для перемещения головки к нужной дорожке; к сожалению, очень трудно установить этот параметр количественно. Время поиска состоит из двух ключевых компонентов: времени начального запуска и времени, необходимого на пересечение дорожек в процессе поиска. К сожалению, время пересечения дорожек не является линейной функцией от их количества, но при этом включает время начальной установки и принятия решения для каждой пересекаемой дорожки (время, прошедшее после установления головки над искомой дорожкой до идентификации последней).
    • Значительно улучшает характеристики диска уменьшение и облегчение его компонентов. Не так давно типичный диск имел в диаметре 14 дюймов (36 см), в то время как сегодня самый распространенный размер составляет 3.5 дюйма (8.9 см), что существенно уменьшает расстояния перемещения головок. Типичное среднее время поиска в современных дисках составляет от 5 до 10 ms.
  • Задержка из-за вращения
    • Жесткие магнитные диски, в отличие от гибких, имеют скорость вращения в диапазоне от 5400 до 10000 об/мин (последнее значение соответствует одному обороту за 6ms). Поэтому при скорости вращения 10000 об/мин средняя задержка из-за вращения составляет 3 ms. Гибкие диски обычно имеют скорость вращения в пределах 300-600 об/мин, что соответствует средней задержке от 100 до 200 ms.
  • Время передачи данных
    • Время передачи данных на диск или считывания с него зависит от скорости вращения диска следующим образом: image
    • где
      • Т — время передачи данных;
      • b — количество передаваемых байтов;
      • N — количество байтов в дорожке;
      • r — скорость вращения (об/с).

31. Основные проблемы, возникающие в ОС при использовании хранилищ данных

А что если диск заполнен?

Частая ситуация (неприятная для ОС)

  • EECS сообщает: 10-ки ТВ - средний поток данных у пользователей
  • Что делать?
    • Предупреждать, что место мало и просить чтобы удалили файлы?
  • В реальности не работает: Пользователи чаще сохраняют файлы, нежели удаляют.
  • Эффект паники.
    • Решение:
      • Не давать возможности заполнить диск: резервируем часть
      • Свободное количество блоков= # блоков в bitmap (битовой карте)
      • Схема: Не размещать данные, если кол-во < резерв
    • Сколько нужно резервировать?
      • На практике, 10% выглядят достаточным
      • Компромисс: купите больший диск

Проблема с задержкой вращения

  • Проблема: Пропуск блоков во время задержки при вращении

    • Суть: Считали один блок, обрабатываем, и считываем следующий блок. В это время, диск продолжает крутиться: пропустили следующий блок! image
  • Решение 1: Пропуск сектора (“чередование”)

    • Разместите блоки из одного файла на другом блоке трека: учитывая обработку, мы перекрываем вращение
  • Решение 2: Считывание наперед: считываем следующий блок, даже если приложение не просит этого

    • Можно реализовать на уровне ОС
    • Через сам диск (буфер дорожки).
      • Кеш память диска используется для буферизации данных
    • Современные диски и контроллеры делают много важных вещей за сценой
      • Буферы дорожек, алгоритмы лифта, фильтрация плохих блоков

32. Файлы и директории

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

Типы файлов

  • Обычные файлы
  • Каталоги
  • Специальные файлы

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

Атрибуты файла

  • тип файла (обычный файл, каталог, специальный файл и т.п.);
  • владелец файла;
  • создатель файла;
  • пароль для доступа к файлу;
  • информация о разрешенных операциях доступа к файлу;
  • время создания, последнего доступа и последнего изменения;
  • текущий размер файла;
  • максимальный размер файла;
  • признак «только для чтения»;
  • признак «скрытый файл»;
  • признак «системный файл»;
  • признак «архивный файл»;
  • признак «двоичный/символьный»;
  • признак «временный»;
  • признак блокировки;
  • длина записи в файле;
  • указатель на ключевое поле в записи;
  • длина ключа.

33. NTFS

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

  • Восстанавливаемость. NTFS обеспечивает восстановление файловой системы на основе концепции атомарной транзакции (atomic transaction).
  • Защита. Файлы и каталоги в NTFS защищены от доступа пользователей, не имеющих соответствующих прав.
  • Избыточность данных и отказоустойчивость. Избыточность данных для пользовательских файлов реализуется через многоуровневую модель драйверов, которая поддерживает отказоустойчивые диски.
  • Множественные потоки данных.
  • Динамическое переназначение плохих кластеров
  • Сжатие и разреженные файлы
  • Протоколирование изменений
  • Шифрование

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

  • Linux поддерживает большое количество типов файловых систем. Наиболее важные из них приведены ниже.
    • Minix — старейшая файловая система, ограниченная в своих возможностях (у файлов отсутствуют некоторые временные параметры, длина имени файла ограничена 30-ю символами) и доступных объемах (максимум 64 Мбайт на одну файловую систему);
    • Xia — модифицированная версия системы minix, в которой увеличена максимальная длина имени файла и размер файловой системы;
    • Ext — предыдущая версия системы Ext2. В настоящее время практически не используется;
    • Ext2 — наиболее богатая функциональными возможностями файловая система Linux.
      • На данный момент является самой популярной системой. Разработана с учетом совместимости с последующими версиями;
    • Ext3 — модернизация файловой системы Ext2. Помимо некоторых функциональных расширений является журналируемой. Пока широкого распространения не получила. Конкурирующая журналируемая файловая система—ReiserFS;
    • VFS — виртуальная файловая система. По сути—эмулятор-прослойка между реальной файловой системой (MS-DOS, Ext2,xiaи т. д.) и ядром операционной системы Linux;
    • Proc — псевдо-файловая система, в которой посредством обычных файловых операций предоставляется доступ к некоторым параметрам и функциям ядра операционной системы;
    • ReiserFS — журналируемая файловая система. Наиболее используемая среди журналируемых файловых систем для Linux;

35. Windows. Многозадачность и многопоточность

  • Многозадачность - способность параллельно выполнять несколько программ. На самом деле процессор может выполнять инструкции только одной программы. ОС настолько оперативно реагирует на потребности той или иной программы, что создается впечатление одновременности их работы.
    • Многозадачность может быть кооперативной и вытесняющей.
      • При кооперативной многозадачности (cooperative multitasking) операционная система не занимается решением проблемы распределения процессорного времени. Распределяют его сами программы.
      • При вытесняющей многозадачности распределением процессорного времени между программами занимается операционная система. Она выделяет каждой задаче фиксированный квант времени процессора. По истечении кванта времени система вновь получает управление, чтобы выбрать другую задачу для ее активизации.
  • Многопоточность операционной системы означает, что работающие программы (процессы) могут разделяться на несколько частей, самостоятельно претендующих на процессорное время. Это обеспечивает одновременное выполнение программой нескольких не связанных друг с другом операций. Например, в текстовом процессоре могут одновременно выполняться автоматическая проверка орфографии и редактирование документа

36. Windows. Plug and Play

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

37. Windows. Виртуальная память и файл подкачки

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

38. Windows. Архитектура и подсистемы.

  • Системная виртуальная машина представляет собой операционную среду, поддерживающую работу всех приложений Windows и подсистема, обеспечивающих интерфейс прикладного программирования.
  • Подсистема системного сервиса уровня API (Application Program Interface) - интерфейса прикладного программирования - обеспечивает совместимость с API с ОС Windows младших версий, а также поддержку 32-разрядного интерфейса прикладного программирования.
  • Kernel - модуль Windows, который поддерживает низкоуровневые функции по работе с файлами и управлению памятью и процессами. Этот модуль обеспечивает сервис для 16/32/64-разрядных приложений.
  • GDI (Graphics Device Interface) - модуль Windows, обеспечивающий реализацию графических функций по работе с цветом, шрифтами и графическими примитивами для монитора и принтеров.
  • User - модуль Windows, который является диспетчером окон и занимается созданием и управлением отображаемыми на экране окнами, диалоговыми окнами, кнопками и другими элементами пользовательского интерфейса.

Подсистемы:

  • Подсистема управления файлами способна поддерживать различные файловые системы, доступ к которым может осуществлять одновременно.
  • Сетевая подсистема представляет собой средство поддержки сети. Система осуществляет доступ к удаленным файлам при помощи файловой подсистемы Windows.
  • Сервис операционной системы включает в свой состав подсистему поддержки самонастраивающейся аппаратуры Plug and Play
  • Подсистема управления виртуальной машины реализует все действия по управлению задачами, управлению памятью, загрузкой и завершением программ, а также обслуживанием виртуальных драйверов устройств.
  • Драйверы устройств могут быть самыми разнообразными, в том числе драйверами реального режима или виртуальными драйверами внешних устройств.

39. Эволюция Windows

  • Windows98/Windows3+
    • Windows98 – объектно-ориентированная ОС (реализуется через модель «рабочего стола»)
    • Windows98, в отличие от Windows3+, является "настоящей" операционной системой (а не операционной оболочкой, выполняемой под управлением MSDOS).
    • Подход к аппаратному обеспечению также кардинальным образом изменился. Теперь система использует стандарт Plug & Play.
    • Windows98 является 32-разрядной операционной системой, которая работает только в защищенном режиме процессора.
    • Windows98 поддерживает многопоточность.
    • Средства удаленного доступа Windows98 с самого начала создавались для работы в сети, благодаря чему возможность совместного использования файлов и устройств полностью интегрирована в интерфейс пользователя Windows98.
    • Для работы с аудио- и видеофайлами различных форматов в составе Windows98 имеется набор кодеков.
    • При установке компакт-диска в устройство считывания система пытается распознать его формат и запустить соответствующее приложение для его воспроизведения.
  • Windows NT/2000
    • Операционные системы Windows NT/2000 разработаны на платформе NT-технологий.
    • Возросшие возможности обработки больших объёмов данных.
    • Архитектура создавалась с нуля с учётом предъявляемых к современной операционной системе требований.
    • Стремясь обеспечить совместимость (compatible) новой операционной системы, разработчики Windows NT сохранили привычный интерфеис Windows и реализовали поддержку существующих файловых систем (таких как FAT) и различных приложений (написанных для MS - Dos ,OS/2 1.x ,Windows 3.x и POSIX ). Разработчики также включили в состав Windows NT средства работы с различными сетевыми средствами
    • Достигнута переносимость (portability) системы, которая может теперь работать как на CISC, так и на RISC – процессорах.
    • Масштабируемость (scalability) означает, что Windows NT не привязана к однопроцессорной архитектуре компьютеров, а способна полностью использовать возможности, предоставляемые симметричными мультипроцессорными системами.
    • Windows NT имеет однородную систему безопасности (security) удовлетворяющую спецификациям правительства США и соответствующую стандарту безопастности В2.
    • Распределённая обработка (distributed processing) означает, что Windows NT имеет встроенные в систему сетевые возможности.
    • Надёжность и отказоустойчивость (reliability and robustness) обеспечивают архитектурными особенностями, которые защищают прикладные программы от повреждения друг другом и операционной системой.
    • Возможности локализации (allocation) представляют средства для работы во многих странах мира на национальных языках ,что достигается применением стандарта ISO Unicode (разработан международной организацией по стандартизации)
  • Windows XP
    • Операционная система Windows XP изобилует новыми возможностями, усовершенствованными программами и инструментальными средствами, а также средствами связи.
  • Windows Vista
    • Microsoft добавила к Vista несколько уровней защиты, включая улучшенный встроенный центр безопасности и брандмауэр, а также утилиту для запрета выполнения нежелательных программ.
    • "Сердцем“ Vista является интерфейс Windows Aero - полностью переработанный пользовательский интерфейс с полупрозрачными окнами в стиле "молочного стекла".
    • Интерфейс с большим количеством подсказок и в целом более дружелюбный к неопытному пользователю.
    • Операционная система Windows Vista выпущена в пяти версиях:
      • Windows Vista Home Basic;
      • Windows Vista Home Premium;
      • Windows Vista Business;
      • Windows Vista Ultimate;
      • Windows Vista Enterprise (может быть приобретена только по Microsoft Software Assurance Enterprise License)
  • Windows 7
    • Главными преимуществами Windows 7 являются улучшенная стабильность и пользовательский интерфейс.
    • Основной упор при разработке был направлен на улучшение стабильности и совместимости ОС с различным оборудованием.
    • Также стоит отметить развитие средств восстановления системы, ее обслуживания, динамического и автоматического обновления.
  • Windows 8
    • Главными особенностями Windows 8 являются интерфейс «Metro» и встроенный магазин приложений.
    • Основной упор при разработке был направлен на создание интерфейса под сенсорные экраны.
    • Также стоит отметить развитие диспетчера задач - добавлены новые графики производительности, оптимизировано управление выполняющимися приложениями, фоновыми процессами и службами на единой вкладке «Производительность». Также в диспетчер задач было перенесено управление автозагрузками из «Конфигурации системы».
  • Windows 10
    • Главными особенностями Windows 10 являются эволюция интерфейса, развития центра сообщений, внедрение голосового помощника и реализации эмуляции Linux.
    • Основной упор при разработке был направлен на улучшение пользовательского опыта, упрощения работы с ОС.

40. Unix и Linux – история.

  • UNIX
    • Операционная система UNIX была разработана группой сотрудников Bell Labs под руководством Дениса Ричи, Кена Томпсона и Брайана Кернигана в 1969 году. Говоря об операционной системе UNIX, чаще всего имеют в виду не конкретную ОС, а скорее целое семейство UNIX-подобных операционных систем. Cамо же слово UNIX (заглавными буквами) стало регистрироваться торговой маркой корпорации AT&T.
    • В конце 70-х годов прошлого века сотрудники Калифорнийского университета в Беркли внесли ряд усовершенствований в исходные коды UNIX, включая работу с протоколами семейства TCP/IP. Их разработка стала известна под именем BSD ("Berkley Systems Distribution").
    • Она распространялась под лицензией, которая позволяла дорабатывать и усовершенствовать продукт, и передавать результат третьим лицам (с исходными кодами или без них) при условии, что буде указано, какая часть кода разработана в Беркли. Операционные системы типа UNIX, в том числе и BSD, изначально разрабатывались для работы на больших многопользовательских компьютерах.
  • Linux
    • В начале 90-х годов студент Хельсинского университета Линус Торвальдс приступил к разработке UNIX-подобной операционной системы для IBM-совместных персональных компьютеров.
    • Файлы первого варианта Lunix (версия 0.01) были опубликованы в Интернете 17 сентября 1991 года.

41. Особенности Linux.

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

42. Семейство UNIX

  • Группа операционных систем, имеющих общего предка и традиционно носящих название UNIX.
  • Благодаря стандарту POSIX практически любое приложение можно перенести из одного представителя семейства UNIX в другой. Благодаря этому для UNIX имеется огромное количество как бесплатных, так и коммерческих программ.
  • На сегодняшний день UNIX той или иной фирмы-производителя установлен практически на каждом сервере уровня предприятия, больших кластерах и мультипроцессорных системах, а также на многих рабочих и графических станциях.
  • macOS

    • Производитель — Apple. Операционная система для Macintosh и его пользователей, многозадачная, однопользовательская, графическая. Первая версия была выпущена более 15 лет назад. Великолепная система для пользователя по эргономичности, дружественности и простоте освоения. За свою историю накопила достаточно большое количество устаревших концепций, оставленных для совместимости.
    • UNIX-подобная, POSIX-совместимая, многозадачная операционная система с графическим интерфейсом. Способна выступать как в качестве сервера, так и в качестве клиентской операционной системы. Платная, закрытый исходный код.
  • Novell NetWare

    • NetWare — это сетевая операционная система и набор сетевых протоколов, которые используются в этой системе для взаимодействия с компьютерами-клиентами, подключёнными к сети.
    • NetWare является закрытой операционной системой, использующей совместную многозадачность для выполнения различных служб на компьютерах с архитектурой Intel x86.
    • В основу NetWare была положена очень простая идея: один или несколько выделенных серверов подключаются к сети и предоставляют для совместного использование своё дисковое пространство в виде «томов».
    • Пользователи могут также подключаться к совместно используемым принтерам на выделенном сервере и выполнять печать на сетевых принтерах так же, как и на локальных.

43. Подсистема ввода-вывода

  • Одной из основных задач ОС является обеспечение обмена данными между приложениями и периферийными устройствами. В современной ОС функции обмена данными с периферийными устройствами выполняет подсистема ввода-вывода (Input-Output Subsystem).
  • Основными компонентами этой подсистемы ввода-вывода являются драйверы, управляющие внешними устройствами, и файловая система.
  • Подсистема ввода-вывода при обмене данными с внешними устройствами компьютера должна решать ряд задач, из которых наиболее важными являются:
    • организация параллельной работы устройства ввода-вывода и процессора;
    • согласование скоростей обмена и кэширование данных;
    • разделение устройств и данных между процессами;
    • обеспечение удобного логического интерфейса между устройствами и остальной частью системы;
    • поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера;
    • динамическая загрузка и выгрузка драйверов;
    • поддержка нескольких файловых систем;
    • поддержка синхронных и асинхронных операций ввода-вывода.

44. Драйвер. Классы драйверов

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

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

    • Устройства, с которыми работают байт-ориентированные драйверы, не адресуемы и не позволяют производить операцию поиска данных, они генерируют или потребляют последовательности байт. Примерами таких устройств служат терминалы, сетевые адаптеры.
    • Блок- и байт-ориентированность является характеристикой как самого устройства, так и драйвера. Для байт-ориентированного устройства невозможно разработать блок-ориентированный драйвер. Однако блок-ориентированным устройством можно управлять с помощью байт-ориентированного драйвера.
    • Деление драйверов на блок- и байт-ориентированные оказывается полезным для структурирования подсистемы управления вводом и выводом. Тем не менее необходимо учитывать, что эта схема является упрощенной – имеются внешние устройства, драйверы которых не относятся ни к одному классу. В качестве примера можно привести таймер, который, с одной стороны, не содержит адресуемой информации, а с другой стороны, не порождает потока байт.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment