Программное обеспечение можно разделить на две группы: системное программное обеспечение СПО и прикладное программное обеспечение ППО

Обзор ПО

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

Программное обеспечение можно разделить на две группы: системное программное обеспечение (СПО) и прикладное программное обеспечение (ППО)

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

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

Системное программное обеспечение

1. Операционные системы. 2. Системы управления файлами. 3. Интерфейсные оболочки для взаимодействия пользователя с ОС и программ­ные среды.

Понятие операционной среды

Любая программа имеет дело с некоторыми исходными данными, которые она обрабатывает, и порождает в конечном итоге некоторые выходные данные,… Например, в далекие пятидесятые годы, на заре развития вычислительных сис­тем,… Следующий шаг в автоматизации создания готовых к выполнению машинных двоичных программ заключался в том, что…

Понятия вычислительного процесса и ресурса

Определение концепции процесса преследует цель выработать механизмы распре­деления и управления ресурсами. Понятие ресурса, так же как и понятие… является, пожалуй, основным при рассмотрении операционных систем. Термин… Ресурсы могут быть разделяемыми, когда несколько процессов могут их исполь­зовать одновременно (в один и тот же момент…

Диаграмма состояний процесса

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

Реализация понятия последовательного процесса в ОС

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

Процессы и треды

Когда говорят о процессах (process), то тем самым хотят отметить, что операци­онная система поддерживает их обособленность: у каждого процесса… Однако желательно иметь еще и возможность задействовать внутренний… Главное, что обеспечивает многопоточность, — это возможность параллельно вы­полнять несколько видов операций в одной…

Прерывания

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

Основные виды ресурсов

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

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

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

Планирование и диспетчеризация процессов и задач

Стратегии планирования

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

Дисциплины диспетчеризации

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

Вытесняющие и не вытесняющие алгоритмы диспетчеризации

Диспетчеризация с перераспределением процессорного времени между задача­ми, то есть вытесняющая многозадачность (preemptive multitasking) — это… сохраняет ее контекст в дескрипторе задачи, выбирает из очереди готовых задач… При не вытесняющей многозадачности механизм распределения процессорного времени распределен между системой и…

Диспетчеризация задач с использованием динамических приоритетов

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

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

отслеживание свободной и занятой памяти; выделение памяти процессам и освобождение памяти при завершении процессов; вытеснение процессов из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней…

Управление вводом/выводом

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

Основные понятия и концепции организации ввода/вывода в ОС

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

Поэтому самым главным является следующий принцип: любые операции по управлению вводом/выводом объявляются привилегированными и могут вы­полняться только кодом самой ОС. Для обеспечения этого принципа в большин­стве процессоров даже вводятся режимы пользователя и супервизора. Как пра­вило, в режиме супервизора выполнение команд ввода/вывода разрешено, а в пользовательском режиме — запрещено. Использование команд ввода/вывода в пользовательском режиме вызывает исключение и управление через механизм прерываний передается коду ОС. Хотя возможны и более сложные системы, в которых в ряде случаев пользовательским программам разрешено непосредст­венное выполнение команд ввода/вывода.

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

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

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

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

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

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

Режимы управления вводом/выводом

Пусть для простоты управление вводом/выводом осуществляет центральный… Режим обмена с прерываниями по своей сути является режимом асинхронного управления. Для того чтобы не потерять связь с…

Закрепление устройств, общие устройства ввода/вывода

Вообще говоря, понятие виртуального устройства шире, нежели использование этого термина для обозначения спулинга (SPOOLing — simultaneous peripheral…

Основные системные таблицы ввода/вывода

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

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

Простейшим вариантом асинхронного вывода является так называемый буфери­рованный вывод данных на внешнее устройство, при котором данные из… Можно организовать и асинхронный ввод данных. Однако для этого необходи­мо не… Обычно асинхронный ввод/вывод предоставляется в большинстве мультипро­граммных ОС, особенно если ОС поддерживает…

Кэширование операций ввода/вывода при работе с накопителями на магнитных дисках

Для того чтобы сгладить такое сильное несоответствие в производительности основных подсистем, используется буферирование и/или кэширование данных.… Если не вдаваться в подробности, то под кэшем можно понимать некий пул… Интервал времени, после которого данные будут фактически записываться, с од­ной стороны, желательно выбрать больше,…

Файловая система.

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

Имена файлов

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

Типы файлов

Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.   Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов,…

Логическая организация файла

Программист имеет дело с логической организацией файла, представляя файл в виде определенным образом организованных логических записей. Логическая…  

Физическая организация и адрес файла

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

Кэширование диска

В некоторых файловых системах запросы к внешним устройствам, в которых адресация осуществляется блоками (диски, ленты), перехватываются…  

Общая модель файловой системы

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

Отображаемые в память файлы

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

Современные архитектуры файловых систем

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

Принципы построения интерфейсов операционных систем

Управление процессами, которое включает в себя следующий набор основ­ных функций: запуск, приостанов и снятие задачи с выполнения; задание… Управление памятью: запрос на выделение блока памяти; освобождение… Управление вводом/выводом: запрос на управление виртуальными устройствами (напомним, что управ­ление…

Интерфейс прикладного программирования

Интерфейс прикладного программирования, как это и следует из названия, пред­назначен для использования прикладными программами системных ресурсов ОС… Итак, API представляет собой набор функций, предоставляемых системой… В принципе API используется не только прикладными, но и многими системны­ми программами как в составе ОС, так и в…

Реализация функций API на уровне ОС

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

Реализация функций API на уровне системы программирования

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

Реализация функций API с помощью внешних библиотек

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

Платформенно-независимый интерфейс POSIX

POSIX возник как попытка всемирно известной организации IEEE пропаганди­ровать переносимость приложений в UNIX-средах путем разработки… Этот стандарт подробно описывает VMS (virtual memory system, систему… Таким образом, программы, написанные с соблюдением данных стандартов, будут одинаково выполняться на всех…

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

Операционные системы имеют в своем составе различные средства синхрониза­ции. Знание этих средств и их правильное использование позволяет создавать… В настоящем разделе рассматриваются основные понятия и проблемы, характер­ные…

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

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

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

Использование блокировки памяти при синхронизации параллельных процессов

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

Алгоритм Деккера

  Листинг 6.4. Алгоритм Деккера label 1, 2;

Семафорные примитивы Дейкстры

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

Мьютексы

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

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

Задача «поставщик — потребитель» Решение задачи «поставщик — потребитель» является характерным примером… Использование семафоров для решения данной задачи приведено в листинге 6.11.

Мониторы Хоара

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