Операционных систем – Полный список операционных систем — Современные операционные системы

Содержание

Разбираемся, как работают операционные системы

Linux, Windows, Mac OS? Зачем они нужны? Понимание того, как работают операционные системы, поможет создавать качественные приложения.

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

Если стремитесь построить карьеру программиста, стоит понять, как работают операционные системы. Например, можно изучить курс «Введение в операционные системы» от Georgia Tech. В нем рассказывается, как работают ОС: механизмы работы, параллельное программирование (потоки и синхронизация), взаимодействие между процессами, распределённые ОС.

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

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

Файловая система, планировщик и драйверы – всё это основные инструменты работы ОС.

Существует три ключевых элемента операционной системы:

  1. Абстракции (процессы, потоки, файлы, сокеты, память).
  2. Механизмы (создание, управление, открытие, запись, распределение).
  3. Реализации (алгоритмы LRU, EDF).

Кроме того, есть два основных принципа проектирования операционных систем:

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

Теперь подробнее разберём глобальные концепции, которые помогут сформировать понимание того, как работают операционные системы.

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

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

  • Stack: стек процесса содержит временные данные, такие как параметры метода, адрес возврата и локальные переменные.
  • Heap: это динамически распределяемая память процесса времени его выполнения.
  • Text: хранит состояние регистров, состояние программного счетчика, режим работы процессора, незавершенные операции ввода-вывода, информацию о выполненных системных вызовах.
  • Data: раздел содержит глобальные и статические переменные.

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

Общая картина выглядит так:

  • Start: начальное состояние при создании процесса.
  • Ready: процесс ожидает исполнения на процессоре. В течение работы процессор может переключаться между процессами, переводя одни в режим готовности, другие – в режим исполнения.
  • Running: выполнение инструкций.
  • Wait: процесс переходит в состояние ожидания. Например, ждёт ввода данных или получения доступа к файлу.
  • Terminated: как только процесс завершится, он перейдёт в это состояние и будет ожидать удаления.

Немного терпения: мы уже близки к пониманию того, как работают операционные системы 😉

Блок управления процессов (Process Control Block) – это структура данных, поддерживаемая операционной системой для каждого процесса. PCB имеет идентификатор PID. Именно PCB хранит всю информацию, необходимую для отслеживания процесса.

  • Process ID: идентификатор каждого из процессов в ОС.
  • State: текущее состояние процесса.
  • Privileges: разрешения доступа к системным ресурсам.
  • Pointer: указатель на родительский процесс.
  • Priority: приоритет процесса и другая информация, которая требуется для планирования процесса.
  • Program Counter: указатель на адрес следующей команды, которая должна быть выполнена.
  • CPU registers: регистры процессора, необходимые для состояния исполнения.
  • Accounting Information: уровень нагрузки на процессор, статистика и другие данные.
  • I/O Information: список ресурсов, использующих чтение и запись.

Поток (нить, thread) – это ход исполнения программы. Он также имеет свой program counter, переменные, стек.

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

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

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

Чем хороши потоки:

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

Потоки имеют два уровня реализации:

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

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

Во втором случае ядро выполняет создание потоков, а ещё планирование и управление в пространстве ядра. Заметим, что потоки ядра обычно медленнее, чем потоки пользователей.

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

ОС поддерживает все блоки управления процессом (PCB) в очередях планирования процесса:

  • Очередь задач (job queue) поддерживает все процессы в системе.
  • Очередь ожидания (ready queue) хранит информацию обо всех процессах, находящихся в основной памяти в состоянии ожидания. В эту очередь попадают и новые процессы.
  • Очереди из устройств (device queue) – это процессы, заблокированные из-за недоступности устройств ввода-вывода.

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

Модели состояния делятся на активные и неактивные:

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

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

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

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

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

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

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

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

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

Набор всех логических адресов, которые создала программа, называется логическим адресным пространством

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

Хотите разобраться подробнее в том, как работают операционные системы? Посмотрите соответствующие книги в нашем Телеграм-канале.

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

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

Межпроцессная коммуникация (IPC) – это механизм, который позволяет процессам взаимодействовать друг с другом и синхронизировать действия. Связь между этими процессами может рассматриваться как сотрудничество.

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

Метод использования общей памяти

Допустим, есть два процесса: исполнитель (производитель) и потребитель. Один производит некоторый товар, а второй его потребляет. Эти два процесса имеют общее пространство или ячейку памяти, известную как «буфер». Там хранится элемент, созданный исполнителем, оттуда же потребитель получает этот элемент.

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

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

Аналогично потребитель сначала проверит наличие товара, и если ни один элемент не будет доступен, придётся ждать его освобождения.

Метод анализа сообщений

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

  • Устанавливается связь (если её ещё не существует).
  • Начинается обмен сообщениями с помощью базовых примитивов. Нам нужно как минимум два примитива – отправить (сообщение, пункт назначения) или получить (сообщение).

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

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

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

  • Блочные: то есть устройства, с которыми драйверы связываются, отправляя целые блоки данных. Например, жесткие диски, USB-камеры, Disk-On-Key.
  • Символьные: те устройства, с которыми драйвер связывается, отправляя и получая одиночные символы (байты или октеты). Например, последовательные порты, параллельные порты, звуковые карты и так далее.

ЦПУ должен иметь способ передачи информации на устройство ввода-вывода и обратно. И есть три способа сделать это:

  1. Специальные инструкции

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

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

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

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

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

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

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

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

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

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

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

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

Типы виртуализации

  1. Данные: позволяет компаниям обеспечивать вычислительные мощности для объединения данных из нескольких источников, размещения новых источников и преобразования данных в соответствии с потребностями пользователя.
  2. Рабочий стол: легко спутать с виртуализацией операционной системы. Виртуализация рабочего стола позволяет центральному администратору одновременно развёртывать смоделированные среды на сотнях физических машин. Виртуальные системы позволяют администраторам выполнять массовые конфигурации, обновления и проверки безопасности на всех устройствах сразу.
  3. Серверы: программная имитация с помощью специального ПО аппаратного обеспечения компьютера: процессор, память, жесткий диск, и т. д. На такой виртуальный компьютер можно установить операционную систему, и она будет на нем работать точно так же, как и на простом, «железном» компьютере. Самое интересное достоинство этой технологии – это возможность запуска нескольких виртуальных компьютеров внутри одного физического. При этом, все виртуальные компьютеры могут работать независимо друг от друга.
    Сервер – компьютер, спроектированный под выполнение большого объема специфических задач. Виртуализация сервера позволит ему выполнять больше этих специальных задач, а также разделить функционал на разные компоненты.
  4. ОС: это способ одновременного запуска Linux и Windows-сред. Преимущество в том, что это уменьшает затраты на оборудование, повышает безопасность и экономит время на обслуживании.
  5. Сетевые функции: разделяет ключевые функции сети (например, службы каталогов, общий доступ к файлам и IP-конфигурацию) для распределения между средами. Виртуальные сети сокращают количество физических компонентов: коммутаторов, маршрутизаторов, серверов, кабелей.

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

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

Сетевая файловая система Sun Microsystems (NFS), Novell NetWare, распределенная файловая система Microsoft и DFS от IBM являются примерами распределенных файловых систем.

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

Преимущества распределенной общей памяти:

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

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

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

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

Приложения на базе облачных вычислений могут работать эффективнее, дольше и стоить дешевле. Уже сейчас компании используют облачные приложения для множества приложений, таких как управление отношениями с клиентами (CRM), HR, учет и так далее.

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

Источник: Как работают операционные системы: 10 концептов, которые нужно знать разработчикам on Medium.

proglib.io

ОПЕРАЦИОННАЯ СИСТЕМА | Энциклопедия Кругосвет

Содержание статьи

ОПЕРАЦИОННАЯ СИСТЕМА – программа, управляющая аппаратными и программными средствами компьютера, которые предназначены для выполнения задач пользователя.

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

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

Запуск компьютера. BIOS.

Обычно компьютер запускается при включении питания на лицевой панели системного блока, хотя современные компьютеры имеют такие средства для экономного расходования электроэнергии, которые позволяют их не выключать. Запуск компьютера – самый ответственный момент работы компьютера – в этот момент в оперативной памяти нет ни данных, ни программ. Перенести их с жесткого диска в оперативную память без команд нельзя. Для этой цели у процессора есть специальная ножка, которая называется RESET (перезапуск). Если на нее поступает сигнал (а в момент включения именно так и происходит), процессор обращается к специально выделенной ячейке памяти. Необходимо, чтобы в этой ячейке всегда была определенная информация, причем даже тогда, когда компьютер выключен. Для этого предназначена специальная микросхема – ПЗУ (постоянное запоминающее устройство). Это тоже память, но постоянная. В отличие от оперативной памяти постоянная память не стирается при выключении. Программы микросхемы ПЗУ записываются на заводе. Этот комплекс программ называется BIOS – базовая система ввода/вывода. Эта система « встроена» в материнскую плату компьютера. Ее назначение состоит в выполнении элементарных действий, связанных с осуществлением операций ввода-вывода. BIOS содержит также тест функционирования компьютера, проверяющий работу памяти и устройств компьютера при включении электропитания. Работа программ, записанных в микросхеме BIOS, отображается на черном экране бегущими белыми строчками. В этот момент компьютер проверяет свои устройства: проверяется оперативная память (сколько ее и вся ли она в порядке), наличие жестких дисков, а также наличие клавиатуры. Если что-то не работает, программы, выполняющие проверку, сообщат о неисправности. Кроме того, базовая система ввода-вывода содержит программу вызова загрузчика операционной системы.

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

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

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

Назначение операционной системы.

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

Игровые программы для приставок (и данные к ним, такие как музыка и рисунки) записаны в микросхеме ПЗУ (она находится в игровом картридже) или на лазерном диске. Когда картридж (или лазерный диск) вставляется в приставку, программа автоматически запускается и никакого управления, кроме того, которое положено по сценарию игры, не предполагается, поэтому и никакая операционная система не нужна. На приставку можно посмотреть и с другой стороны. Загружая игру, попадают под управление как бы ее игровой « операционной системы» и можно делать только то, что в игре предусмотрено, например, «бегать», «прыгать» и «стрелять». Ограниченность и нестандартность не позволяют назвать видеоигру «операционной системой» без кавычек. Настоящая операционная система должна:

– быть общепризнанной и использоваться как стандартная система на многих компьютерах;

– работать с многочисленными аппаратными устройствами, выпущенными разными фирмами, в том числе и в прошлое время;

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

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

Интерфейс аппаратный и программный.

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

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

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

Интерфейс пользователя.

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

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

ОПЕРАЦИОННАЯ СИСТЕМА DOS

DOS – первая операционная система для персональных компьютеров, которая получила широкое распространение и была основной для компьютеров IBM PC с 1981 по 1995. Со временем она была практически вытеснена новыми, современными операционными системами Windows и Linux, но в ряде случаев DOS остается удобной и единственно возможной для работы на компьютере (например, в тех случаях, когда пользователь работает с устаревшей техникой или давно написанным программным обеспечением и т.п.)

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

Оболочка – это программа, которая запускается под управлением операционной системы и помогает пользователю работать с операционной системой. Программа – оболочка наглядно показывает всю файловую структуру компьютера: диски, каталоги, файлы. Файлы можно разыскивать, копировать, перемещать, удалять, сортировать, изменять и запускать, пользуясь всего лишь несколькими клавишами. Просто, наглядно, удобно. Одна из самых известных и распространенных во все мире программ-оболочек называется Norton Commander (NC). Оболочка NC скрывает от пользователя множество неудобств, возникающих при работе с файловой системой MS DOS, например, такие, как необходимость набирать команды из командной строки. Простота и удобство в использовании– вот что делает оболочки типа NC популярными и в наше время (к ним можно отнести QDos, PathMinder, XTree, Dos Navigator, Volkov Commander и др.). Принципиально отличаются от них графические оболочки Windows 3.1 и Windows 3.11. В них применяется концепция так называемых «окон», которые можно открывать, перемещать по экрану и закрывать. Эти окна «принадлежат» различным программам и отражают их работу.

В DOS используется файловая система FAT. Одним из ее недостатков являются жесткие ограничения на имена файлов и каталогов. Имя может состоять не более чем из восьми символов. Расширение указывается после точки и состоит не более чем из трех символов. Расширение в имени файла не является обязательным, оно добавляется для удобства, так как расширение позволяет узнать, какая программа создала его и тип содержимого файла. DOS не делает различий между одноименными строчными и прописными буквами. Кроме букв и цифр имя и расширение файла могут состоять из следующих символов: -, _, $, #, &, @, !, %, (,), {, }, ‘, ^. Примеры имен файлов в MS DOS: doom.exe, referat.doc.

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

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

Некоторые компоненты операционной системы DOS: дисковые файлы IO.SYS и MSDOS.SYS (они могут называться и по-другому, например IBMBIO.COM и IBMDOS.COM для PC DOS) помещаются в оперативную память при загрузке и остаются в ней постоянно. Файл IO.SYS представляет собой дополнение к базовой системе ввода-вывода, а MSDOS.SYS реализует основные высокоуровневые услуги операционной системы.

Командный процессор DOS обрабатывает команды, вводимые пользователем. Командный процессор находится в дисковом файле COMMAND.COM на диске, с которого загружается операционная система. Некоторые команды пользователя, например type, dir или copy, командный процессор выполняет сам. Такие команды называются внутренними или встроенными. Для выполнения остальных (внешних) команд пользователя командный процессор ищет на дисках программу с соответствующим именем и, если находит ее, загружает в память и передает ей управление. По окончании работы программы командный процессор удаляет программу из памяти и выводит сообщение о готовности к выполнению команд (приглашение DOS).

Внешние команды DOS – это программы, поставляемые вместе с операционной системой в виде отдельных файлов. Эти программы выполняют действия обслуживающего характера, например форматирование дискет (format.com), проверку состояния дисков (scandisk.exe) и т. д.

Драйверы устройств – это специальные программы, которые дополняют систему ввода-вывода DOS и обеспечивают обслуживание новых или нестандартное использование имеющихся устройств. Например, с помощью драйвера DOS ramdrive.sys возможна работа с « электронным диском», т.е. частью памяти компьютера, с которой можно работать так же, как с диском. Драйверы помещаются в память компьютера при загрузке операционной системы, их имена указываются в специальном файле CONFIG.SYS. Такая схема облегчает добавление новых устройств и позволяет делать это, не затрагивая системные файлы DOS.

MICROSOFT WINDOWS

Графические оболочки Widows 1.0, Widows 2.0, Widows 3.0, Widows 3.1 и Widows 3.11 запускались под управлением MS DOS, то есть не были самостоятельными операционными системами. Но поскольку с появлением Windows открылись новые возможности, Windows называют не оболочкой, а средой. Среда Windows характеризуется следующими особенностями, отличающими ее от других программ-оболочек:

– Многозадачность. Есть возможность одновременно запускать несколько программ.

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

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

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

– Единый аппаратно-программный интерфейс. Среда Windows обеспечивала совместимость разнообразного оборудования и программ. Изготовители оборудования не заботились о том, как « угадать», к какими программами их устройствам предстоит работать, они добивались только работы с Windows, а дальше Windows обеспечивала работу устройств. Точно также изготовители программ могли более не беспокоиться о работе с неизвестным им оборудованием. Их задача свелась к тому, чтобы обеспечить взаимодействие с Windows.

На смену операционной системе DOS с ее графическими оболочками Windows 3.1 и Windows 3.11 пришли полноценные операционные системы семейства MS Windows (сначала Windows 95, затем Windows 98, Windows 2000, Windows XP). В отличие от Windows 3.1 и Windows 3.11, они запускаются автоматически после включения компьютера (в том случае, если установлена только одна эта система).

В MS Windows для хранения файлов используется модификация файловой системы FAT – VFAT. В ней длина имен файлов и каталогов может достигать 256 символов.

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

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

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

Существенным нововведением в Windows 95 стала Панель задач (Taskbar). Несмотря на небольшие функциональные возможности, она делает наглядным механизм многозадачности и намного ускоряет процесс переключения между приложениями по сравнению с предыдущими версиями Windows. Внешне панель задач представляет полосу, обычно располагающуюся в нижней части экрана, на которой размещены кнопки приложений и кнопка Пуск (Start). В правой ее части обычно присутствуют часы и небольшие пиктограммы программ, активных в данный момент.

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

ОПЕРАЦИОННАЯ СИСТЕМА LINUX

Linux – это операционная система для IBM-совместимых персональных компьютеров и рабочих станций. Это многопользовательская операционная система с сетевой оконной графической системой X Window System. Операционная система Linux поддерживает стандарты открытых систем и протоколы сети Интернет и совместима с системами Unix, DOS, MS Windows. Все компоненты системы, включая исходные тексты, распространяются с лицензией на свободное копирование и установку для неограниченного числа пользователей.

Разработал эту операционную систему в начале 1990-х студент университета Хельсинки (Финляндия) Линус Торвальд при участии пользователей сети Интернет, сотрудников исследовательских центров, различных фондов и университетов.

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

С экономической точки зрения Linux обладает еще одним весьма существенным достоинством – это бесплатная система. Linux распространяется по генеральной открытой лицензии GNU в рамках фонда свободного программного обеспечения (Free Software Foundation), что делает эту операционную систему доступной для всех желающих. Linux защищена авторским правом и не находится в общедоступном пользовании, однако универсальная общественная лицензия GNU – это почти то же самое, что и передача в общедоступное пользование. Она составлена так, что Linux остается бесплатной и в то же время стандартизированной системой. Существует лишь один официальный вариант ядра Linux.

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

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

Современный Linux предоставляет возможность использовать несколько разновидностей графического интерфейса: KDE (K Desktop Environment), GNOME (GNU Network Model Environment) и другие. В каждой из этих оболочек пользователю предоставляется возможность работы сразу с несколькими рабочими столами (в то время как в MS Windows всегда один рабочий стол, который приходится загромождать окнами).

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

Шацукова Л.З. Информатика. Интернет-учебник.http://www.kbsu.ru/~book

Анна Чугайнова

www.krugosvet.ru

Операционные системы — это… Что такое Операционные системы?

  • Операционные системы БК-0010/11 — Операционные системы, разработанные для БК 0010, БК 0010 01, БК 0011 и БК 0011М: ANDOS MK DOS CSI DOS NORD ОС БК 11 (вариант RT 11) AO DOS BASIS DOSB10 PascalDOS MicroDOS DX DOS HC DOS RT 11 (во внешнем ПЗУ) NORTON БК РАМОН KMON Turbo DOS BKUNIX… …   Википедия

  • Операционные системы реального времени — Операционная система реального времени, ОСРВ (англ. Real Time Operating System) тип операционной системы. Есть много определений термина, по сути похожих друг на друга. Самые распространённые из них: Операционная система, в которой успешность… …   Википедия

  • Операционные системы на основе свободного ПО — Свободные ядра, библиотеки, среды рабочего стола и другие компоненты используются как в свободных операционных системах, так и во включающих несвободное ПО, или состоящих из него почти полностью. Содержание 1 GNU 2 Linux и GNU/Linux 3 BSD …   Википедия

  • Операционные системы на основе свободного программного обеспечения — Свободные ядра, библиотеки, среды рабочего стола и другие компоненты используются как в свободных операционных системах, так и во включающих несвободное ПО, или состоящих из него почти полностью. Содержание 1 GNU 2 Linux и GNU/Linux 3 BSD …   Википедия

  • Операционные системы или устройства взаимодействия (ОС/УВ) — 3.1.44 Операционные системы или устройства взаимодействия (ОС/УВ) автономный физический логический объект (элемент СУЭ), который поддерживает функцию ОСФ/УВФ, но не поддерживает функцию СЭФ. Операционные системы или устройства взаимодействия… …   Словарь-справочник терминов нормативно-технической документации

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

  • UNIX‐подобные операционные системы — Генеалогическое дерево Unix подобных ОС Unix подобная (иногда сокр. *nix) операционная система  это система, которая образовалась под влиянием Unix. Термин включает свободные / открытые операционные системы, образованные от Unix компании Bell… …   Википедия

  • Unix-подобные операционные системы — Генеалогическое дерево Unix подобных ОС Unix подобная (иногда сокр. *nix) операционная система  это система, которая образовалась под влиянием Unix. Термин включает свободные / открытые операционные системы, образованные от Unix компании Bell… …   Википедия

  • Диспетчер (операционные системы) — У этого термина существуют и другие значения, см. Диспетчер (значения). Диспетчер для операционной системы системное программное обеспечение, промежуточный слой между ОС РВ и функциональными задачами, обеспечивающий заданную временную диаграмму.… …   Википедия

  • Свободные Unix-подобные операционные системы — Свободные ядра, библиотеки, среды рабочего стола и другие компоненты используются как в свободных операционных системах, так и во включающих несвободное ПО, или состоящих из него почти полностью. Содержание 1 GNU 2 Linux и GNU/Linux 3 BSD 3.1… …   Википедия

  • dik.academic.ru

    переосмысление операционных систем для десктопа / Habr

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

    «Современные» десктопные ОС раздуты


    Возьмём Raspberry Pi. За 35 долларов я могу купить отличный компьютер с четырьмя процессорными ядрами, каждое на частоте более гигагерца. У него также есть 3D-ускоритель, гагабайт оперативки, встроенные WiFi с Bluetooth и Ethernet. За 35 баксов! И всё-таки для многих задач, которые я хочу на нём запустить, Raspberry Pi ничем не лучше компьютера на 66 мегагерц, который был у меня в колледже.



    На самом деле, в некоторых случаях он справляется даже хуже. Требовались огромные усилия, чтобы запустить Doom с 3D-ускорением в X Windows в середине 2000-х, тривиальная задача для середины 1990-х в Microsoft Windows.

    Ниже показан скриншот среды Processing, впервые запущенной на Raspberry Pi с аппаратным ускорением, всего пару лет назад. И это стало возможным только благодаря совершенно особому видеодрайверу X Windows. Этот драйвер по прежнему остаётся экспериментальным и официально не выпущен, спустя пять лет после выхода Raspberry Pi.

    Несмотря на проблемы с X Windows, у Raspberry Pi на удивление мощный GPU, который способен выдавать результат как на скриншоте внизу, но только если убрать с пути X Windows (реальный скриншот внизу сделан в OS X, но тот же код работает в Pi 3 на 60 fps).

    Или другой пример. Сегодня Atom — один из самых популярных редакторов. Разработчики любят его за кучу плагинов, но давайте посмотрим, как он написан. Atom использует Electron, то есть по сути целый веб-браузер со средой выполнения NodeJS. Это два движка Javascript, встроенных в одно приложение. Приложения Electron используют графические API браузера, которые обращаются к нативным API, которые затем обращаются к GPU (если повезёт) для реального вывода изображения на экран. Столько слоёв.

    Долгое время Atom не мог открыть файл больше двух мегабайт, потому что прокрутка слишком тормозила. Проблему решили, написав реализацию буфера на C++, по сути удалив один лишний слой.

    Даже самые простые приложения в наше время очень сложные. Почтовый клиент вроде такого, как на скриншоте вверху, концептуально прост. Там должгно быть несколько запросов к БД, текстовый редактор и модуль для коммуникации с серверами IMAP и SMTP. Но создание нового почтового клиента — сложная задача, и он занимает много мегабайт на диске, так что немногие берутся за это. И если вы хотите модифицировать свой почтовый клиент или хотя бы тот, что на скриншоте (Mail.app, клиент по умолчанию для Mac), то не существует ясного способа, как расширить его функциональность. Нет плагинов. Нет расширений API. Это результат многослойного хлама и раздувания.

    Нет инноваций


    Инновации в десктопных операционных системах по существу остановились. Можно сказать, что они закончились где-то в середине 90-х или даже в 80-е с выходом Mac, но весь прогресс точно остановился после революции смартфонов.

    Mac OS


    Когда-то Mac OS X блистала фейерверком новых функций, в каждой новой версии наблюдался значительный прогресс и изобретения. Quartz 2D! Expose! Системная синхронизация устройств! Виджеты! Но сейчас Apple вкладывает минимум усилий в десктопную ОС, разве что меняет темы оформления и усиливает привязку к мобильным устройствам.

    Последняя версия Mac OS X (сейчас она переименована в macOS в честь системы, которая была двадцать лет назад) называется High Sierra. Какие основные нововведения мы с нетерпением ожидаем этой осенью? Новую файловую систему и новый формат кодирования видео. Действительно, это всё? О, и ещё добавили функцию редактирования в Photos, которая уже была в iPhotos, но её удалили после апгрейда, а ещё они будут теперь блокировать автоматическое произведение видео в Safari.

    Apple — самая дорогая компания в мире, и это самое лучшее, что она может придумать? Просто десктопный UX не является для них приоритетом.

    Microsoft Windows


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

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

    Терминальную программу CMD.exe, которая по сути позволяет вам запускать DOS-приложения, заменили только в 2016 году. А самая значительное нововведение в последней версии Windows 10? Они добавили подсистему Linux. Наложили сверху ещё больше слоёв.

    X Windows


    Улучшений в X Windows было даже меньше, чем в двух других десктопных ОС. На самом деле, эта модель олицетворяет собой отсутствие изменений. Люди жаловались на это ещё в начале 90-х. Я рад, что можно поменять скин в GUI, но что насчёт сквозного системного буфера, в который помещается больше одного элемента за раз? Это не изменилось с 80-х годов!

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

    Wayland должен был всё исправить, но спустя десять лет разработки он по-прежнему ещё не готов. Действительно трудно обеспечить совместимость со старым кодом. Думаю, что Apple приняла правильное решение, когда перенесла старую macOS в эмулятор под названием Classic, изолировав его от нового кода.

    Рабочие станции?


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

    Я не могу винить за это Apple и Microsoft (а сейчас и Google). Три миллиарда смартфонов, которые заменяются каждые два года — гораздо более крупный рынок, чем несколько сотен миллионов настольных компьютеров и ноутбуков, которые заменяются каждые пять лет.

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

    Чего у нас нет в 2017 году


    Сейчас 2017 год. Давайте посмотрим, что должно существовать к настоящему времени, но по какой-то причине не существует.

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

    Почему я не могу иметь файл в двух местах одновременно в своей файловой системе? Почему она фундаментально иерархическая? Почему я не могу сортировать файлы по тегам и метаданным? Файловые системы с базой данных существуют десятилетия. Microsoft пыталась внедрить эту функцию в WinFS, но из-за внутренних конфликтов удалила её из системы Vista ещё до её выхода. В BeOS такое сделали двадцать лет назад. Почему этой функции нет в современных ОС?

    Любое веб-приложение можно зуммировать. Я просто нажимаю command + — и текст становится больше. Все элементы в окне автоматически масштабируются. Почему мои нативные приложения так не умеют? Почему я не могу сделать одно окно с увеличенным текстом, а другое с маленьким? Или даже масштабировать их автоматически по мере переключения между окнами? Всё это тривиальные вещи для оконного менеджера с компоновкой, тривиальной технологии уже более десяти лет.

    Ограниченное взаимодействие


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

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

    Почему мой Macbook Pro не может по Bluetooth связаться с нужными HID-устройствами вместо синхронизации через Apple Watch. Погодите, а ведь Mac не может синхронизироваться с Apple Watch. Это ещё один пункт, где он уступает моему телефону.

    Почему мой компьютер не может использовать ничего кроме дисплея для вывода информации? В новом ноутбуке Razor цветная подсветка под каждой клавишей, но она используется только для переливания цветными волнами. Что насчёт применения светодиодов для какой-нибудь полезной задачи! (идея Бьорна Шталя, я думаю).

    Бункеры приложений


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

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

    Создано для 1984 года


    Так почему наши компьютеры такие неуклюжие? Суть в том, что они созданы для 1984 года. Десктопный GUI был изобретён, когда большинство пользователей создавали документ с нуля, сохраняли его и печатали. Если вам повезёт, вы могли сохранить документ в общей файловой системе или отправить кому-нибудь по почте. Это всё. GUI создавался для работы с задачами, которые раньше выполнялись на бумаге.

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

    Я создаю контент VR. Обрабатываю изображения. Я отправляю сообщения в десятки социальных сетей. Мой идеальный плейлист составляется выбирается из 30 000 песен. Я обрабатываю на порядки больше данных из большего количества источников, чем это было всего 20 лет назад, а тем более 40 лет назад, когда эти концепции изобрели. Метафора рабочего стола просто не масштабируется на современные задачи. Мне нужен компьютер, который помогает выполнять современную работу.

    Нам нужна современная рабочая станция


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

    Для начала нужно избавиться от всего, что не справляется со своими задачами.

    • Традиционные файловые системы иерархические, с медленным поиском и не хранят по умолчанию все необходимые нам метаданные.
    • Все межпроцессные взаимодействия. Существует слишком много способов коммуникации между программами. Каналы, сокеты, общая память, RPC, вызовы ядра, drag-and-drop, копипаст.
    • Интерфейсы командной строки не соответствуют современному использованию приложений. Мы просто не можем всё делать в чистом тексте. Я бы хотел перенаправить свой видеозвонок по Skype в сервис видеоанализа во время разговора, но я реально не могу запустить видеопоток через awk или sed.
    • Оконные менеджеры на традиционных десктопах не следят за контекстом или контентом и не контролируются другими программами.
    • Нативные приложения слишком тяжеловесны, их долго разрабатывать и они живут в бункерах.

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

    База данных документов


    Начнём с общей для системы базы данных документов. Не будет ли проще создать новый почтовый клиент, если база данных уже готова? UI будет состоять всего из нескольких строчек кода. В реальности, многие обычные приложения — это всего лишь текстовые редакторы в сочетании с запросами данных. Возьмите iTunes, адресную книгу, календарь, уведомления, сообщения, Evernote, список дел, закладки, историю браузера, базу паролей и менеджер фотографий. Каждая из этих программ оснащена собственным уникальным хранилищем данных. Столько впустую потраченных усилий и помех для взаимодействия!

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

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

    К примеру, возьмём iTunes. Он хранит mp3-файлы на диске, но все метаданные находятся в закрытой базе данных. Наличие двух «источников правды» создаёт массу проблем. Если вы добавляете на диск новую песню, то нужно вручную указать iTunes заново просканировать её. Если хотите разработать программу, которая работает с базой данных песен, то придётся осуществить реверс-инжиниринг формата iTunes DB и молиться, чтобы Apple не изменила его. Все эти проблемы исчезают при наличии единой системной базы данных.

    Шина сообщений


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

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

    Компоновщик


    Теперь мы можем добавить компоновщик — оконный менеджер, который по-настоящему работает с 3D-поверхностями, преобразует координаты и контролируется через сообщения по шине. Большую часть того, что делает типичный менеджер, вроде размещения окон, наложения уведомлений и определения, какое окно активно, на самом деле могут делать другие программы, которые просто присылают сообщения в компоновщик, а он уже выполняет реальную работу.

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

    Приложения выводят графику на экран, запрашивая поверхность у компоновщика. Завершив вывод графики и при необходимости обновления они просто отправляют сообщения: пожалуйста, перерисуй меня. На практике у нас, вероятно, будет несколько типов поверхностей для 2D- и 3D-графики, а может и для необработанного видеобуфера. Важно то, что в конечном счёте именно компоновщик контролирует всё, что появляется на экране, и когда. Если одно приложение сходит с ума, компоновщик может подавить его вывод на экран и гарантировать, что вся остальная система нормально работает.

    Приложения становятся модулями


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

    Если хотите воспроизвести mp3-файл, то отправляете сообщение play в сервис mp3. Вывод графики на экран через компоновщик. Такое разделение обеспечивает безопасность системы. В терминологии Linux, каждое приложение станет полностью изолировано через разрешения пользователя и chroot, возможно, вплоть до контейнеров Docker или виртуальных машин. Здесь нужно проработать много деталей, но всё решаемо уже сегодня.

    Модульные приложения будет гораздо легче разрабатывать. Если база данных — это единственный источник правды, то не нужно делать много работы по копированию данных в память и обратно. В примере с аудиоплеером поле поиска не будет загружать данные и проводить фильтрацию для отображения списка, оно просто определяет запрос. Список затем привязан к этому запросу, а данные появляются автоматически. Если другое приложение добавляет в базу данных песню, которая соответствует поисковому запросу, то UI плеера автоматически обновляется. Это всё делается без каких-либо дополнительных усилий со стороны разработчика. «Живые» запросы с автообновлением сильно облегчают жизнь и они более надёжны.

    Переделка приложений


    На такой базе мы можем создать всё, что нам нужно. Однако это также означает, что нам придётся переделывать всё с нуля. Высокоуровневые конструкции поверх БД сильно упростят этот процесс. Посмотрим на несколько примеров.

    Электронная почта. Если разделить стандартный почтовый клиент на GUI и сетевые модули, которые общаются исключительно через сообщения по шине, то разработка программы станет намного проще. GUI не должен ничего знать о почте Gmail или Yahoo, или как обрабатывать сообщения об ошибках SMTP. Он просто ищет в БД документы с указанным типом «email». Когда GUI хочет отправить сообщение, то назначает ему свойство outgoing=true. Простой модуль составит список всех исходящих почтовых сообщений и отправит их по STMP.

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

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

    Когда всё превращается в запросы к БД, то вся система становится более гибкой и настраиваемой.

    Командная строка


    Знаю, я раньше говорил, что мы избавимся от командной строки. Беру свои слова обратно. Мне действительно иногда нравится командная строка как интерфейс, меня беспокоит только её чисто текстовая природа. Вместо выстраивания цепочек CLI-приложений с текстовыми потоками нужно нечто более функциональное, вроде сериализованных потоков объектов (как JSON, но более эффективных). Вот тогда у нас появится настоящая сила.

    Рассмотрим следующие задачи:

    • Я хочу использовать ноутбук как усиленный микрофон. Я говорю в него, а голос звучит из колонок Bluetooth в другом конце комнаты.
    • Как только я публикую твит с хештегом #mom, его копия должна отправляться по электронной почте моей маме.
    • Я хочу использовать iPhone в качестве микроскопа, закреплённого на стойке из конструктора «Лего». Он транслирует картинку на ноутбук, где у меня управление — кнопки для записи, паузы, приближения и ретрансляции прямого эфира на YouTube.
    • Я хочу сделать простой байесовский фильтр, который реагирует на почтовые сообщения от «Энергосбыта», добавляет тег «коммунальные услуги», делает запись на веб-сайте, извлекает из письма сумму и дату платежа и добавляет запись в мой календарь.

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

    Мы можем осуществлять и более сложные операции, вроде «Найти все фотографии, сделанные за последние четыре года в радиусе 80 км от Йосемитского национального парка с рейтингом 3 звезды или выше, изменить их размер на 1000px по длинной стороне, закачать в альбом Flickr под названием «Лучшее из Йосемите» и поставить ссылку на альбом на Facebook. Это можно будет сделать встроенными инструментами, без дополнительного программирования, просто соединив несколько примитивов.

    Вообще-то Apple создала подобную систему. Она называется Automator. Вы можете в графическом интерфейсе создавать мощные рабочие процессы. Система никогда не рекламировалась, а сейчас убирают привязку к Applescript, на которой всё работает. Недавно всех сотрудников группы Automator перевели в другие команды. Эх…

    Семантические сочетания клавиш по всей системе


    Теперь, после переделки мира, чем займёмся?

    Сервисы доступны во всей системе. Это означает, что мы можем запустить единый сервис, где пользователь может назначать сочетания клавиш (keybindings). Это также означает, что у сочетаний клавиш появится более глубокий смысл. Вместо указания на функцию конкретной программы они указывают на сообщение о команде. Во всех приложениях, которые работают с документами, могут быть команды «Создать новый документ» или «Сохранить». Сервис сочетаний клавиш будет отвечать за превращение control-S в команду «Сохранить». Я называю это семантическими сочетаниями клавиш (semantic keybindings).

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

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

    Окна


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

    В старой MacOS 8 была разновидность окон-вкладок, по крайней мере, в приложении Finder, которые можно было пристыковать к нижнему краю экрана для быстрого доступа. Ещё одна классная вещь, которую выбросили при переходе на Mac OS X.

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

    Это был пример из научной статьи «Ametista: мини-набор для изучения новых способов управления окнами», автор Николас Руссель.

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

    Умный копипаст


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

    Но зачем ограничивать себя этим. Сделаем буфер обмена, который вмещает больше одного элемента. У нас гигабайты памяти. Давайте использовать её. Когда я копирую что-то, почему я должен помнить, что конкретно я копировал перед тем, как вставить это в другом окне? Буфер обмена нигде не видим. Исправим это.

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

    Модуль просмотра буфера обмена позволяет прокручивать всю историю буфера. Я могу искать в ней и фильтровать по тегам. Могу «прикрепить» любимые экземпляры для последующего использования.

    В классической macOS на самом деле был отличный встроенный инструмент под названием [name], но от него отказались при переходе на OS X. Десятилетия назад у нас было будущее! Вернём его обратно.

    Рабочие наборы


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

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

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

    Исследователи из Технологического института Джорджии в реальности описали такую систему в своей научной работе «Giornata: пересмотр метафоры десктопа для содействия высококвалифицированной работе».

    Теперь сделаем ещё один шаг. Если всё версионируется, даже настройки GUI и расположение окон (поскольку всё хранится в БД), я могу сохранить состояние экрана. Он будет хранить текущее состояние всех параметров, даже мои сочетания клавиш. Я могу продолжить работу, но всегда будет возможность вернуться к этому состоянию. Или я могу посмотреть старое состояние — и восстановить его на новом экране. Я по сути создал «шаблон», который можно использовать снова и снова, как только я начинаю новый проект. Этот шаблон содержит всё необходимое: настройки почтового клиента, историю чатов, списки дел, код, окна для описания багов или даже соответствующие страницы Github.

    Теперь всё состояние компьютера в сущности рассматривается как репозиторий Github, с возможностью форкнуть состояние целой системы. Думаю, это будет просто волшебно. Люди станут обмениваться полезными рабочими пространствами в онлайне, как образами Docker. Можно настраивать свои рабочие процессы, добавлять полезные скрипты к рабочему пространству. Возможности здесь поистине восхитительные.

    Ничего из этого не ново


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

    Хочу подчеркнуть, что абсолютно ничего из того, о чём я рассказывал, не является новым. Я ничего не придумал. Всем этим идеям годы или десятилетия. Файловые базы данных впервые появились в BeOS. Единый механизм межпроцессных взаимодействий появился в Plan 9. Настройка окружения из редактируемого документа реализована в Oberon. И конечно ещё огромное множество научных статей с результатами исследований.

    Почему у нас этого нет?


    Здесь ничего нового. И у нас до сих пор этого нет? Почему так?

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

    Можем ли мы в реальности создать Идеальную ОС? Подозреваю, что нет. Никто не сделал это до сих пор, потому что, если честно, здесь не заработаешь деньги. А без денег просто не найдёшь ресурсы для разработки.

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

    Так что мой вопрос к вам: как вы думаете, идея стоит усилий на её реализацию, хотя бы для создания рабочего прототипа? Вы бы поучаствовали в таком проекте? Какая часть функциональности должна работать, чтобы вы согласились взять систему для тестирования? И конечно, как нам её назвать?

    Если вам интересно обсуждение будущего десктопного UX, подписывайтесь на нашу новую группу Ideal OS Design.

    habr.com

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

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

    Операционная система (ОС) – это комплекс взаимосвязанных системных программ для организации взаимодействия пользователя с компьютером и выполнения всех других программ. ОС относятся к составу системного программного обеспечения и являются основной его частью. Операционные системы: MS DOS 7.0, Windows Vista Business, Windows 2008 Server, OS/2, UNIX, Linux.

    Основные функции ОС:

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

    Дополнительные функции:

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

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

    В общем случае в состав ОС входят следующие модули:

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

    Драйвер устройства (device driver) – специальная программа, обеспечивающая управление работой устройств и согласование информационного обмена с другими устройствами.

    Командный процессор (command processor) – специальная программа, которая запрашивает у пользователя команды и выполняет их (интерпретатор программ).

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

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

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

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

    Примечание

    Состав модулей ОС, а также их количество зависит от семейства и вида ОС. Так, например, в ОС MS DOS отсутствует модуль, обеспечивающий графический пользовательский интерфейс.

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

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

    Модули ядра выполняют следующие базовые функции ОС: Управление процессами, Управление системой прерываний, Управление памятью, управление устройствами ввода-вывода, Функции, решающие внутрисистемные задачи организации вычислительного процесса: переключение контекстов, загрузка/вы­грузка страниц, обработка прерываний. Эти функции недоступны для приложе­ний. Функции, служащие для поддержки приложений, создавая для них так называемую прикладную программную среду.

    Приложения могут обращаться к ядру с запросами – системными вызовами – для выполнения тех или иных действий: для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т.д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования – API (Application programming interface).

    Пример. 
    Базовый код API Win32 содержится в трех библиотеках динамической загрузки (Dynamic Link Library, DLL): USER32, GDI32 и KERNEL32.

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

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

    Примеры вспомогательных модулей:

    • Программа архивирования данных.
    • Программа дефрагментации диска.
    • Текстовый редактор.

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

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

    системные обрабатывающие программы – текстовые или графические редакторы, компиляторы, компоновщики, отладчики.

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

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

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

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

    Примечание

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

    Объектами ядра ОС являются:

    • Процессы (рассмотрено в теме 2.3).
    • Файлы.
    • События.
    • Потоки (рассмотрено в теме 2.3).
    • Семафоры – объекты, позволяющие войти в заданный участок кода не более чем n потокам.
    • Мьютексы – одноместные семафоры, служащие в программировании для синхронизации одновременно выполняющихся потоков.
    • Файлы, проецируемые в память.

    more-it.ru

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *