Программное обеспечение можно разделить на две группы: системное программное обеспечение СПО и прикладное программное обеспечение ППО - раздел Информатика, Обзор По
Программное Обеспечение - Это Общий Термин Для Обозначения ...
Обзор ПО
Программное обеспечение - это общий термин для обозначения "неосязаемых" в отличие от физических, составных частей компьютерной системы. Термин охватывает как программы в символической записи, так и исполняемые формы этих программ.
Программное обеспечение можно разделить на две группы: системное программное обеспечение (СПО) и прикладное программное обеспечение (ППО)
СПО управляет ресурсами компьютерной системы и позволяет пользователям программировать в более выразительных языках, чем машинных язык компьютера. Состав СПО мало зависит от характера решаемых задач пользователя.
ППО помогает конечным пользователям в выполнении различных функций. Специализированные комплексы программ называют пакетами прикладных программ.
1. Операционные системы.
2. Системы управления файлами.
3. Интерфейсные оболочки для взаимодействия пользователя с ОС и программные среды.
Любая программа имеет дело с некоторыми исходными данными, которые она обрабатывает, и порождает в конечном итоге некоторые выходные данные,… Например, в далекие пятидесятые годы, на заре развития вычислительных систем,… Следующий шаг в автоматизации создания готовых к выполнению машинных двоичных программ заключался в том, что…
Определение концепции процесса преследует цель выработать механизмы распределения и управления ресурсами. Понятие ресурса, так же как и понятие… является, пожалуй, основным при рассмотрении операционных систем. Термин… Ресурсы могут быть разделяемыми, когда несколько процессов могут их использовать одновременно (в один и тот же момент…
Если обобщать и рассматривать не только обычные ОС общего назначения, но и, например, ОС реального времени, то можно сказать, что процесс может… В большинстве операционных систем последнее состояние, в свою очередь,… В обычных ОС, как правило, процесс появляется при запуске какой-нибудь программы. ОС организует (порождает или…
На протяжении существования процесса его выполнение может быть многократно прервано и продолжено. Для того, чтобы возобновить выполнение процесса,… Для того чтобы операционная система могла управлять процессами, она должна…
Когда говорят о процессах (process), то тем самым хотят отметить, что операционная система поддерживает их обособленность: у каждого процесса… Однако желательно иметь еще и возможность задействовать внутренний… Главное, что обеспечивает многопоточность, — это возможность параллельно выполнять несколько видов операций в одной…
Идея прерываний была предложена в середине 50-х годов и можно без преувеличения сказать, что она внесла наиболее весомый вклад в развитие… Механизм прерываний реализуется аппаратно-программными средствами. Структуры… Механизм обработки прерываний независимо от архитектуры вычислительной системы включает следующие элементы:
Вторым видом ресурсов вычислительной системы можно считать память. Оперативная память может быть разделена и одновременным способом (то есть в… Когда говорят о внешней памяти (например, память на магнитных дисках), то… Если говорить о внешних устройствах, то они, как правило, могут разделяться параллельно, если используются механизмы…
Оперативная память — это важнейший ресурс любой вычислительной системы, поскольку без нее (как, впрочем, и без центрального процессора) невозможно… Понятие процесса (задачи) нам уже известно. Здесь мы не будем стараться… Итак, операционная система выполняет следующие основные функции, связанные с управлением задачами:
создание и…
Планирование и диспетчеризация процессов и задач
Стратегия планирования определяет, какие процессы мы планируем на выполнение для того, чтобы достичь поставленной цели. Известно большое количество… Когда говорят о стратегии обслуживания, всегда имеют в виду понятие процесса,…
Известно большое количество правил (дисциплин диспетчеризации), в соответствии с которыми формируется список (очередь) готовых к выполнению задач.…
Запомним о приоритетах следующее:
приоритет, присвоенный задаче, может являться величиной постоянной; приоритет…
Диспетчеризация с перераспределением процессорного времени между задачами, то есть вытесняющая многозадачность (preemptive multitasking) — это… сохраняет ее контекст в дескрипторе задачи, выбирает из очереди готовых задач… При не вытесняющей многозадачности механизм распределения процессорного времени распределен между системой и…
Рассмотрим, например, как реализован механизм динамических приоритетов в ОС UNIX, которая, как известно, не относится к ОСРВ. Текущий приоритет… Схема нумерации (числовых значений) текущих приоритетов различна для… Процессу, ожидающему недоступного в данный момент ресурса, система определяет значение приоритета сна, выбираемое…
отслеживание свободной и занятой памяти;
выделение памяти процессам и освобождение памяти при завершении процессов;
вытеснение процессов из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней…
С одной стороны, в организации ввода/вывода в различных ОС много общего. С другой стороны, реализация ввода/вывода в ОС так сильно отличается от…
Основные понятия и концепции организации ввода/вывода в ОС
Как известно, ввод/вывод считается одной из самых сложных областей проектирования операционных систем, в которой сложно применить общий подход из-за изобилия частных методов. Сложность возникает из-за огромного числа устройств ввода/вывода разнообразной природы, которые должна поддерживать ОС. При этом перед создателями ОС встает очень непростая задача — не только обеспечить эффективное управление устройствами ввода/вывода, но и создать удобный и эффективный виртуальный интерфейс устройств ввода/вывода, позволяющий прикладным программистам просто считывать или сохранять данные, не обращая внимание на специфику устройств и проблемы распределения устройств между выполняющимися задачами. Система ввода/вывода, способная объединить в одной модели широкий набор устройств, должна быть универсальной. Она должна учитывать потребности существующих устройств, от простой мыши до клавиатур, принтеров, графических дисплеев, дисковых накопителей, компакт-дисков и даже сетей. С другой стороны, необходимо обеспечить доступ к устройствам ввода/вывода для множества параллельно выполняющихся задач, причем так, чтобы они как можно меньше мешали друг другу.
Поэтому самым главным является следующий принцип: любые операции по управлению вводом/выводом объявляются привилегированными и могут выполняться только кодом самой ОС. Для обеспечения этого принципа в большинстве процессоров даже вводятся режимы пользователя и супервизора. Как правило, в режиме супервизора выполнение команд ввода/вывода разрешено, а в пользовательском режиме — запрещено. Использование команд ввода/вывода в пользовательском режиме вызывает исключение и управление через механизм прерываний передается коду ОС. Хотя возможны и более сложные системы, в которых в ряде случаев пользовательским программам разрешено непосредственное выполнение команд ввода/вывода.
Еще раз подчеркнем, что, прежде всего, мы говорим о мультипрограммных ОС, для которых существует проблема разделения ресурсов. Одним из основных видов ресурсов являются устройства ввода/вывода и соответствующее программное обеспечение, с помощью которого осуществляется управление обменом данными между внешними устройствами и оперативной памятью. Помимо разделяемых устройств ввода/вывода (эти устройства допускают разделение посредством механизма доступа) существуют неразделяемые устройства. Примерами разделяемого устройства могут служить накопитель на магнитных дисках, устройство для чтения компакт-дисков. Это устройства с прямым доступом. Примеры неразделяемых устройств — принтер, накопитель на магнитных лентах. Это устройства с последовательным доступом. Операционные системы должны управлять и теми и другими устройствами, предоставляя возможность параллельно выполняющимся задачам использовать различные устройства ввода/вывода.
Можно назвать три основные причины, по которым нельзя разрешать каждой отдельной пользовательской программе обращаться к внешним устройствам непосредственно:
- Необходимость разрешать возможные конфликты доступа к устройствам ввода/вывода. Например, две параллельно выполняющиеся программы пытаются вывести на печать результаты своей работы. Если не предусмотреть внешнее управление устройством печати, то в результате мы можем получить абсолютно нечитаемый текст, так как каждая программа будет время от времени выводить свои данные, которые будут перемежаться данными другой программы. Другой пример: ситуация, когда одной программе необходимо прочитать данные с некоторого сектора магнитного диска, а другой — записать результаты в другой сектор того же накопителя. Если операции ввода/вывода не будут отслеживаться каким-то третьим (внешним) процессом-арбитром, то после позиционирования магнитной головки для первого запроса может тут же появиться команда позиционирования головки для второй задачи, и обе операции ввода/вывода не смогут быть выполнены корректно.
- Желание увеличить эффективность использования этих ресурсов. Например, у накопителя на магнитных дисках время подвода головки чтения/записи к необходимой дорожке и обращение к определенному сектору может значительно (до тысячи раз) превышать время пересылки данных. В результате, если задачи по очереди обращаются к цилиндрам, далеко отстоящим друг от друга, то полезная работа, выполняемая накопителем, может быть существенно снижена.
- Ошибки в программах ввода/вывода могут привести к краху всех вычислительных процессов, ибо часть операций ввода/вывода осуществляется для самой операционной системы. В ряде ОС системный ввод/вывод имеет существенно более высокие привилегии, чем ввод/вывод задач пользователя. Поэтому системный код, управляющий операциями ввода/вывода, очень тщательно отлаживается и оптимизируется для повышения надежности вычислений и эффективности использования оборудования.
Итак, управление вводом/выводом осуществляется операционной системой, компонентом, который чаще всего называют супервизором ввода/вывода. В перечень основных задач, возлагаемых на супервизор, входят следующие:
- супервизор ввода/вывода получает запросы на ввод/вывод от прикладных задач и от программных модулей самой операционной системы. Эти запросы проверяются на корректность, и если запрос выполнен по спецификациям и не содержит ошибок, он обрабатывается дальше, в противном случае пользователю (задаче) выдается соответствующее диагностическое сообщение о недействительности (некорректности) запроса;
- супервизор ввода/вывода вызывает соответствующие распределители каналов и контроллеров, планирует ввод/вывод (определяет очередность предоставления устройств ввода/вывода задачам, затребовавшим их). Запрос на ввод/ вывод либо тут же выполняется, либо ставится в очередь на выполнение;
- супервизор ввода/вывода инициирует операции ввода/вывода (передает управление соответствующим драйверам) и в случае управления вводом/выводом с использованием прерываний предоставляет процессор диспетчеру задач с тем, чтобы передать его первой задаче, стоящей в очереди на выполнение;
- при получении сигналов прерываний от устройств ввода/вывода супервизор идентифицирует их (рис. 4.1) и передает управление соответствующей программе обработки прерывания (как правило, на секцию продолжения драйвера);
- супервизор ввода/вывода осуществляет передачу сообщений об ошибках, если таковые происходят в процессе управления операциями ввода/вывода;
- супервизор ввода/вывода посылает сообщения о завершении операции ввода/вывода запросившему эту операцию процессу и снимает его с состояния ожидания ввода/вывода, если процесс ожидал завершения операции.
В случае если устройство ввода/вывода является инициативным, управление со стороны супервизора ввода/вывода будет заключаться в активизации соответствующего вычислительного процесса (перевод его в состояние готовности к выполнению).
Таким образом, прикладные программы (а в общем случае — все обрабатывающие программы) не могут непосредственно связываться с устройствами ввода/ вывода независимо от использования устройств (монопольно или совместно). Установив соответствующие значения параметров в запросе на ввод/вывод, определяющих требуемую операцию и количество потребляемых ресурсов, они могут передать управление супервизору ввода/вывода, который и запускает необходимые логические и физические операции.
Упомянутый выше запрос на ввод/вывод должен удовлетворять требованиям API той операционной системы, в среде которой выполняется приложение. Параметры, указываемые в запросах на ввод/вывод, передаются не только в вызывающих последовательностях, создаваемых по спецификациям API, но и как данные, хранящиеся в соответствующих системных таблицах. Все параметры, которые будут стоять в вызывающей последовательности, поставляются компилятором и отражают требования программиста и постоянные сведения об операционной системе и архитектуре компьютера в целом. Переменные сведения о вычислительной системе (ее конфигурация, состав оборудования, состав и особенности системного программного обеспечения) содержатся в специальных системных таблицах. Процессору, каналам прямого доступа в память, контроллерам необходимо передавать конкретную двоичную информацию, с помощью которой и осуществляется управление оборудованием. Эта конкретная двоичная информация в виде кодов и данных часто готовится с помощью препроцессоров, но часть ее хранится в системных таблицах.
Пусть для простоты управление вводом/выводом осуществляет центральный… Режим обмена с прерываниями по своей сути является режимом асинхронного управления. Для того чтобы не потерять связь с…
Вообще говоря, понятие виртуального устройства шире, нежели использование этого термина для обозначения спулинга (SPOOLing — simultaneous peripheral…
Исходя из принципа управления вводом/выводом через супервизор ОС и учитывая, что драйверы устройств ввода/вывода используют механизм прерываний для… Первая таблица (или список) содержит информацию обо всех устройствах… Поясним перечисленное. Поскольку во многих ОС драйверы могут обладать свойством реентерабельности (напомним, это…
Простейшим вариантом асинхронного вывода является так называемый буферированный вывод данных на внешнее устройство, при котором данные из… Можно организовать и асинхронный ввод данных. Однако для этого необходимо не… Обычно асинхронный ввод/вывод предоставляется в большинстве мультипрограммных ОС, особенно если ОС поддерживает…
Для того чтобы сгладить такое сильное несоответствие в производительности основных подсистем, используется буферирование и/или кэширование данных.… Если не вдаваться в подробности, то под кэшем можно понимать некий пул… Интервал времени, после которого данные будут фактически записываться, с одной стороны, желательно выбрать больше,…
совокупность всех файлов на диске,
наборы структур данных, используемых для управления файлами, такие, например,… дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске,
Файлы идентифицируются именами. Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на… Обычно разные файлы могут иметь одинаковые символьные имена. В этом случае…
Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.
Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов,…
Программист имеет дело с логической организацией файла, представляя файл в виде определенным образом организованных логических записей. Логическая…
Физическая организация файла описывает правила расположения файла на устройстве внешней памяти, в частности на диске. Файл состоит из физических… Следующий способ физической организации - размещение в виде связанного списка… Популярным способом, используемым, например, в файловой системе FAT операционной системы MS-DOS, является…
В некоторых файловых системах запросы к внешним устройствам, в которых адресация осуществляется блоками (диски, ленты), перехватываются…
которой каждый уровень предоставляет некоторый интерфейс (набор функций) вышележащему уровню, а сам, в свою очередь, для выполнения своей работы… Задачей символьного уровня является определение по символьному имени файла его… На следующем, базовом уровне по уникальному имени файла определяются его характеристики: права доступа, адрес, размер…
По сравнению с доступом к памяти, традиционный доступ к файлам выглядит запутанным и неудобным. По этой причине некоторые ОС, начиная с MULTICS,… Предположим, например, что файл f имеет длину 64 К и отображается на область… В действительности при отображении файла внутренние системные таблицы изменяются так, чтобы данный файл служил…
Разработчики новых операционных систем стремятся обеспечить пользователя возможностью работать сразу с несколькими файловыми системами. В новом… Новая файловая система имеет многоуровневую структуру на верхнем уровне… Каждый компонент уровня файловых систем выполнен в виде драйвера соответствующей файловой системы и поддерживает…
Управление процессами, которое включает в себя следующий набор основных функций:
запуск, приостанов и снятие задачи с выполнения; задание… Управление памятью:
запрос на выделение блока памяти; освобождение… Управление вводом/выводом:
запрос на управление виртуальными устройствами (напомним, что управление…
Интерфейс прикладного программирования, как это и следует из названия, предназначен для использования прикладными программами системных ресурсов ОС… Итак, API представляет собой набор функций, предоставляемых системой… В принципе API используется не только прикладными, но и многими системными программами как в составе ОС, так и в…
В таком варианте результирующая программа обращается непосредственно к ОС. Поэтому достигается наибольшая эффективность выполнения функций API по… Недостатком организации API по такой схеме является практически полное… Таким образом, в данной схеме для переноса прикладной программы с одной целевой вычислительной системы на другую…
Очевидно, что эффективность функций API в таком варианте будет несколько ниже, чем при непосредственном обращении к функциям ОС. Так происходит,… Однако переносимость исходного кода программы в таком варианте будет самой… Единообразное выполнение функций языка обеспечивается системой программирования. При ориентации на различные…
Система программирования ответственна только за то, чтобы подключить объектный код библиотеки к результирующей программе. Причем внешняя… С точки зрения эффективности выполнения этот метод реализации API имеет самые… Если говорить о переносимости исходного кода, то здесь требование только одно — используемая внешняя библиотека должна…
POSIX возник как попытка всемирно известной организации IEEE пропагандировать переносимость приложений в UNIX-средах путем разработки… Этот стандарт подробно описывает VMS (virtual memory system, систему… Таким образом, программы, написанные с соблюдением данных стандартов, будут одинаково выполняться на всех…
Операционные системы имеют в своем составе различные средства синхронизации. Знание этих средств и их правильное использование позволяет создавать… В настоящем разделе рассматриваются основные понятия и проблемы, характерные…
Итак, параллельными мы будем называть такие последовательные вычислительные процессы, которые одновременно находятся в каком-либо активном… Независимыми,являются процессы, множества переменных которых не пересекаются.… Взаимодействующие процессы совместно используют некоторые (общие) переменные, и выполнение одного процесса может…
Механизм блокировки памяти предотвращает одновременный доступ к разделяемой переменной, но не предотвращает чередование доступа. Таким образом,… Возможные проблемы при организации взаимного исключения посредством… Пусть имеются два (или более) циклических процесса, в которых есть абстрактные критические секции, то есть каждый из…
Листинг 6.4. Алгоритм Деккера
label 1, 2;
Семафорный механизм работает по схеме, в которой сначала исследуется состояние критического ресурса, идентифицируемое значением семафора, а затем… Основным достоинством использования семафорных операций является отсутствие… В настоящее время на практике используется много различных видов семафорных механизмов. Варьируемыми параметрами,…
Организация последовательного (а не параллельного) доступа к ресурсам с использованием мьютексов становится несложной, поскольку в каждый… Для работы с мьютексом имеется несколько функций. Помимо уже упомянутой…
Задача «поставщик — потребитель»
Решение задачи «поставщик — потребитель» является характерным примером… Использование семафоров для решения данной задачи приведено в листинге 6.11.
Необходимо иметь понятные, очевидные решения, которые позволят прикладным программистам без лишних усилий, связанных с доказательством… В параллельном программировании монитор — это пассивный набор разделяемых… Рассмотрим, например, некоторый ресурс, который разделяется между процессами каким-либо планировщиком. Каждый раз,…
Новости и инфо для студентов