Автор работы: Пользователь скрыл имя, 23 Января 2012 в 11:07, контрольная работа
Появление мультипрограммирования привело к росту эффективности работы процессора. Суть его в том, что пока одно программа выполняет ввод/вывод, ЦП не простаивает, а выполняет другую программу. Когда ввод/вывод заканчивается ЦП снова выполняет 1-ую программу. При этом каждая программа загружается в свой участок памяти, называемой разделом и не должна влиять на выполнение других программ.
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ПОВОЛЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СЕРВИСА»
По дисциплине: Операционные системы, среды и оболочки
На тему: Мультипрограммирование. Мультипрограммирование в системах разделения времени.. Библиотеки динамической компоновки DLL
Работу выполнил:
студент гр. Из-301
Лобастов И.В.
Проверил:
Симульман Л.Г.
Тольятти, 2012 г
СОДЕРЖАНИЕ
Появление
мультипрограммирования привело к росту
эффективности работы процессора. Суть
его в том, что пока одно программа выполняет
ввод/вывод, ЦП не простаивает, а выполняет
другую программу. Когда ввод/вывод заканчивается
ЦП снова выполняет 1-ую программу. При
этом каждая программа загружается в свой
участок памяти, называемой разделом и
не должна влиять на выполнение других
программ. Важную роль здесь играет аппаратная
поддержка. Мультипрограммирование было
реализовано в двух вариантах - в системах
пакетной обработки и разделения времени.
Мультипрограммные системы пакетной обработки
так же, как и их однопрограммные предшественники,
имели своей целью обеспечение максимальной
загрузки аппаратуры компьютера, однако
решали эту задачу более эффективно. В
мультипрограммном пакетном режиме процессор
не простаивал, пока одна программа выполняла
операцию ввода-вывода (как это происходило
при последовательном выполнении программ
в системах ранней пакетной обработки),
а переключался на другую готовую к выполнению
программу. В результате достигалась сбалансированная
загрузка всех устройств компьютера, а
следовательно, увеличивалось число задач,
решаемых в единицу времени.
Мультипрограммирование- это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ. Эти программы совместно используют не только процессор, но и другие ресурсы компьютера: оперативную и внешнюю память, устройства ввода-вывода, данные. Мультипрограммирование признано повысить эффективность использования вычислительной системы, однако эффективность может пониматься по-разному. Наиболее характерными критериями эффективности вычислительных систем являются:
Появление мультипрограммирования привело к росту эффективности работы процессора. Суть его в том, что пока одно программа выполняет ввод/вывод, ЦП не простаивает, а выполняет другую программу. Когда ввод/вывод заканчивается ЦП снова выполняет 1-ую программу. При этом каждая программа загружается в свой участок памяти, называемой разделом и не должна влиять на выполнение других программ. Важную роль здесь играет аппаратная поддержка. При мультипрограммном режиме ОС отвечает за следующие операции:
1) Организация интерфейса между прикладными программами и ОС при помощи системных вызовов
2)
Обеспечение средствами
3)
Планирование использования
4)
Создание контекста заданий, т.
5)
Реализация стратегии
6)
Организация хранения
7)
Решение конфликта между
Мультипрограммная система обеспечивает возможность более эффективного использования системных ресурсов, но они ещё долго оставались пакетами. Появление электронных дисплеев решило эту проблему. Логическим расширением мультипрограммной системы стали системы разделения времени. В них ЦП переключались между заданиями не только во время операции ввода/вывода но и по происшествии определенного времени. эти переключения происходили достаточно часто, чтобы пользователи могли взаимодействовать со своими заданиями во время их выполнения, т.е интерактивно. Появлялась возможность работы нескольких пользователей на одной компьютерной системе. Чтобы уменьшить ограничение на количество пользователей, была использована идея неполного нахождения выполняемой программы в памяти. Основная часть программы находится на диске, а фрагмент, который необходим в данный момент, может быть загружен в ОП, а ненужный выкачан обратно на диск. Это реализуется с помощью механизма виртуальной памяти.
В зависимости от выбранного критерия эффективности ОС делятся на системы пакетной обработки, системы разделения времени и системы реального времени. Каждый тип ОС имеет специфические внутренние механизмы и особые области применения. Некоторые операционные системы могут поддерживать одновременно несколько режимов, например часть задач может выполняться в режиме пакетной обработки, а часть - в режиме реального времени или в режиме разделения времени.
Повышение удобства и эффективности работы пользователя являются целью другого способа мульти программирования - разделения времени. В системах разделения времени пользователям предоставляется возможность интерактивной работы сразу с несколькими приложениями. Для этого каждое приложение должно регулярно получать возможность "общения" с пользователем. Понятно, что в пакетных системах возможности диалога пользователя с приложением весьма ограничены.
В системах разделения времени эта проблема решается за счёт того, что ОС принудительно периодически приостанавливает приложения, не дожидаясь, когда они добровольно освободят процессор. Всем приложениям попеременно выделяется квант процессорного времени, таким образом пользователи, запустившие программы на выполнение, получают возможность поддерживать с ними диалог.
Системы разделения времени призваны исправить основной недостаток систем пакетной обработки - изоляцию пользователя-программиста от процесса выполнения его задач. Каждому пользователю в этом случае предоставляется терминал, с которого он может вести диалог со своей программой. Так как в системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго и время ответа оказывается приемлемым. Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину.
Ясно, что системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, так как на выполнения принимается каждая запущенная пользователем задача, а не та которая "выгодна" системе. Кроме того, производительности системы снижается из-за возросших накладных расходов вычислительной мощности на более частое переключение процессора с задачи на задачу. Это вполне соответствует тому, что критерием эффективности систем разделения времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя. Вместе с тем мультипрограммное выполнение интерактивных приложений повышает и пропускную способность компьютера ( пусть и не в такой степени, как пакетные системы). Аппаратура загружается лучше, поскольку в то время, пока одно приложение ждёт сообщения пользователя, другие приложения могут обрабатываться процессором.
Динамические библиотеки DLL (Dynamic Link Library) являютя основой операционной системы Windows. Каждый раз, когда программа осуществляет системный вызов, происходит обращение к функции, расположенной в одной из библиотек DLL. Есть возможность использовать некоторый код, не включая его в тело своей программы на этапе компоновки. Динамическая компоновка обладает тремя основными преимуществами: тело программы занимает меньший объем оперативной памяти, несколько разных программ могут использовать одну и ту же библиотеку, обновление динамической библиотеки не требует заново компоновать программу. Можно создавать собственные динамические библиотеки DLL и использовать их.. Если библиотеку DLL одновременно используют несколько процессов, каждый из них может обладать собственной копией переменных, используемых функциями DLL. Помимо этого, некоторые переменные могут быть общими для всех процессов. Т.о., несколько процессов смогут совместно использовать один и тот же участок оперативной памяти. Этот механизм часто используют для организации обмена данными между процессами. Windows собираясь загрузить DLL в адресное пространство некоторого процесса, прежде всего проверяет, не загружена ли эта же DLL в адресное пространство другого процесса. Если необходимая DLL уже присутствует в ОЗУ, ОС просто пытается отобразить участки памяти, где расположена эта DLL, в адресное пространство обоих процессов, а переменные, индивидуальные для каждого из процессов, не отображаются. Этот метод работает только в случае, если в адресном пространстве второго процесса по адресу, используемому первым процессом для хранения DLL, расположен незанятый участок оперативной памяти. Иначе ОС загрузит библиотеку заново.
Практически невозможно создать приложение Windows, в котором не использовались бы библиотеки DLL. В DLL содержатся все функции Win32 API и несчетное количество других функций операционных систем Win32.
Вообще говоря, DLL — это просто наборы функций, собранные в библиотеки. Однако, в отличие от своих статических родственников (файлов . lib), библиотеки DLL не присоединены непосредственно к выполняемым файлам с помощью редактора связей. В выполняемый файл занесена только информация об их местонахождении. В момент выполнения программы загружается вся библиотека целиком. Благодаря этому разные процессы могут пользоваться совместно одними и теми же библиотеками, находящимися в памяти. Такой подход позволяет сократить объем памяти, необходимый для нескольких приложений, использующих много общих библиотек, а также контролировать размеры ЕХЕ-файлов.
Однако, если библиотека используется только одним приложением, лучше сделать ее обычной, статической. Конечно, если входящие в ее состав функции будут использоваться только в одной программе, можно просто вставить в нее соответствующий файл с исходным текстом.
Чаще всего проект подключается к DLL статически, или неявно, на этапе компоновки. Загрузкой DLL при выполнении программы управляет операционная система. Однако, DLL можно загрузить и явно, или динамически, в ходе работы приложения.
При статическом подключении DLL имя .lib-файла определяется среди прочих параметров редактора связей в командной строке или на вкладке “Link” диалогового окна “Project Settings” среды Developer Studio. Однако .lib-файл, используемый при неявном подключении DLL, — это не обычная статическая библиотека. Такие .lib-файлы называются библиотеками импортирования (import libraries). В них содержится не сам код библиотеки, а только ссылки на все функции, экспортируемые из файла DLL, в котором все и хранится. В результате библиотеки импортирования, как правило, имеют меньший размер, чем DLL-файлы. К способам их создания вернемся позднее. А сейчас рассмотрим другие вопросы, касающиеся неявного подключения динамических библиотек.
При
использовании собственных