- •Появление первых операционных систем
- •Раздел 1. Общие сведения об операционных системах
- •2.2.2 Wimp – интерфейс
- •2.3 Речевая технология
- •2.4 Биометрическая технология
- •2.5 Семантический (общественный) интерфейс
- •2.6 Типы интерфейсов
- •3. Методы и средства разработки пользовательского интерфейса
- •Алгоритмы распределения памяти с использованием внешней памяти.
- •Раздел 2 Операционная система ms-dos
- •Дефрагментация диска
- •Вопросы для размышления
- •Практические задания
- •Команды dos для работы с каталогами
- •Команды dos для работы с файлами
- •Команды dos для работы с дисками
- •Программы и команды dos общесистемного назначения
- •Раздел 3 Операционная система Windows (36ч.)
- •Тема 3.14 Обработка ошибок и исключений. (2ч.)
- •Раздел 4 Операционная система Linux (32ч.)
Алгоритмы распределения памяти с использованием внешней памяти.
Для полной загрузки процессора могут понадобиться иногда сотни интерактивных задач. Все они должны быть размещены в памяти, большая часть которых находится в состоянии ожидания. Логично было бы на время ожидания, в случае нехватки физической памяти, вытеснять их на диск, а когда необходимо, возвращать в память. Такая подмена (виртуализация) оперативной памяти дисковой памятью существенно повышает уровень мультипрограммирования. Все действия по перемещению происходят автоматически, без участия программиста.
Сегментный способ организации виртуальной памяти.
Первым среди виртуальных методов распределения памяти был сегментный. Для этого метода программу необходимо разбивать на части и уже каждой такой части выделять физическую память. Естественным способом разбиения программы на части является разбиение ее на логические элементы — так называемые сегменты. В принципе, каждый программный модуль (или их совокупность, если мы того пожелаем) может быть воспринят как отдельный сегмент, и вся программа тогда будет представлять собой множество сегментов. Каждый сегмент размещается в памяти как до определенной степени самостоятельная единица. Логически обращение к элементам программы в этом случае будет состоять из имени сегмента и смещения относительно начала этого сегмента. Физически имя (или порядковый номер) сегмента будет соответствовать некоторому адресу, с которого этот сегмент начинается при его размещении в памяти, и смещение должно прибавляться к этому базовому адресу.
Преобразование имени сегмента в его порядковый номер осуществит система программирования. Для каждого сегмента система программирования указывает его объем. Он должен быть известен операционной системе, чтобы она могла выделять ему необходимый объем памяти. Операционная система будет размещать сегменты в памяти и для каждого сегмента она должна вести учет о местонахождении этого сегмента. Вся информация о текущем размещении сегментов задачи в памяти обычно сводится в таблицу сегментов, чаще такую таблицу называют таблицей дескрипторов сегментов задачи. Каждая задача имеет свою таблицу сегментов. Достаточно часто эти таблицы называют таблицами дескрипторов сегментов, поскольку по своей сути элемент таблицы описывает расположение сегмента.
Таким образом, виртуальный адрес для этого способа будет состоять из двух полей — номера сегмента и смещения относительно начала сегмента. Соответствующая иллюстрация приведена на рис. для случая обращения к ячейке, виртуальный адрес которой равен сегменту с номером 11 со смещением от начала этого сегмента, равным 612. Как мы видим, операционная система разместила данный сегмент в памяти, начиная с ячейки с номером 19700.
Итак,
каждый сегмент, размещаемый в памяти,
имеет соответствующую информационную
структуру, часто называемую дескриптором
сегмента. Именно
операционная
система строит для каждого исполняемого
процесса соответствующую таблицу
дескрипторов сегментов, и при размещении
каждого из сегментов в оперативной или
внешней памяти отмечает в дескрипторе
текущее местоположение сегмента. Если
сегмент задачи в данный момент находится
в оперативной памяти, то об этом делается
пометка в дескрипторе. Как правило, для
этого используется бит
присутствия
(от слова «present»),
В этом случае в поле адреса диспетчер
памяти записывает
адрес физической памяти, с которого
сегмент начинается, а в поле длины
сегмента (limit)
указывается количество адресуемых
ячеек памяти. Это поле используется
не только для того, чтобы размещать
сегменты без наложения друг на друга,
но и для того, чтобы контролировать, не
обращается ли код исполняющейся
задачи за пределы текущего сегмента. В
случае превышения длины сегмента
вследствие ошибок программирования мы
можем говорить о нарушении адресации
и с помощью введения специальных
аппаратных средств генерировать сигналы
прерывания, которые позволят фиксировать
(обнаруживать) т
акого
рода ошибки.
Если бит присутствия в дескрипторе указывает, что сегмент находится не в оперативной, а во внешней памяти (например, на жестком диске), то названные поля адреса и длины используются для указания адреса сегмента в координатах внешней памяти. Помимо информации о местоположении сегмента, в дескрипторе сегмента, как правило, содержатся данные о его типе (сегмент кода или сегмент данных), правах доступа к этому сегменту (можно или нельзя его модифицировать, предоставлять другой задаче), отметка об обращениях к данному сегменту (информация о том, как часто или как давно этот сегмент используется или не используется, на основании которой можно принять решение о том, чтобы предоставить место, занимаемое текущим сегментом, другому сегменту).
При передаче управления следующей задаче операционная система должна занести в соответствующий регистр адрес таблицы дескрипторов сегментов этой задачи. Сама таблица дескрипторов сегментов, в свою очередь, также представляет собой сегмент данных, который обрабатывается диспетчером памяти операционной системы.
При таком подходе появляется возможность размещать в оперативной памяти не все сегменты задачи, а только задействованные в данный момент. Благодаря этому, с одной стороны, общий объем виртуального адресного пространства задачи может превосходить объем физической памяти компьютера, на котором эта задача будет выполняться; с другой стороны, даже если потребности в памяти не превосходят имеющуюся физическую память, можно размещать в памяти больше задач, поскольку любой задаче, как правило, все ее сегменты единовременно не нужны.
Очевидно, однако, что увеличивать количество задач можно только до определенного предела, ибо если в памяти не будет хватать места для часто используемых сегментов, то производительность системы резко упадет. Ведь сегмент, находящийся вне оперативной памяти, для участия в вычислениях должен быть перемещен в оперативную память. При этом если в памяти есть свободное пространство, то необходимо всего лишь найти нужный сегмент во внешней памяти и загрузить его в оперативную память. А если свободного места нет, придется принять решение — на место какого из присутствующих сегментов будет загружаться требуемый. Перемещение сегментов из оперативной памяти на жесткий диск и обратно часто называют свопингом сегментов.
В идеальном случае размер сегмента должен быть достаточно малым, чтобы его можно было разместить в случайно освобождающихся фрагментах оперативной памяти, но достаточно большим, чтобы содержать логически законченную часть программы с тем, чтобы минимизировать межсегментные обращения.
Для решения проблемы замещения (определения того сегмента, который должен быть либо перемещен во внешнюю память, либо просто замещен новым) используются следующие дисциплины:
правило FIFO (First In First Out — первый пришедший первым и выбывает);
правило LRU (Least Recently Used — дольше других неиспользуемый);
правило LFU (Least Frequently Used — реже других используемый);
случайный (random) выбор сегмента.
Первая и последняя дисциплины являются самыми простыми в реализации, но они не учитывают, насколько часто используется тот или иной сегмент, и, следовательно, диспетчер памяти может выгрузить или расформировать тот сегмент, к которому в самом ближайшем будущем будет обращение. Безусловно, достоверной информация о том, какой из сегментов потребуется в ближайшем будущем, в общем случае быть не может, но вероятность ошибки для этих дисциплин многократно выше, чем у второй и третьей, в которых учитывается информация об использовании сегментов.
Важнейшей проблемой, которая возникает при организации мультипрограммного режима, является защита памяти. Для того чтобы выполняющиеся приложения не смогли испортить саму операционную систему и другие вычислительные процессы, необходимо, чтобы доступ к таблицам сегментов с целью их модификации был обеспечен только для кода самой ОС. Для этого код операционной системы должен выполняться в некотором привилегированном режиме, из которого можно осуществлять манипуляции дескрипторами сегментов, тогда как выход за пределы сегмента в обычной прикладной программе должен вызывать прерывание по защите памяти. Каждая прикладная задача должна иметь возможность обращаться только к собственным и к общим сегментам.
У сегментного способа распределения памяти есть недостатки. Прежде всего, для доступа к искомой ячейке памяти приходится тратить много времени. Мы должны сначала найти и прочитать дескриптор сегмента, а уже потом, используя полученные данные о местонахождении нужного нам сегмента, вычислить конечный физический адрес. Для того чтобы уменьшить эти потери, используется кэширование — те дескрипторы, с которыми мы имеем дело в данный момент, могут быть размещены в сверхоперативной памяти (специальных регистрах, размещаемых в процессоре).
Несмотря на то что рассмотренный способ распределения памяти приводит к существенно меньшей фрагментации памяти, нежели способы с неразрывным распределением, фрагментация остается. Кроме того, много памяти и процессорного времени теряется на размещение и обработку дескрипторных таблиц. Ведь на каждую задачу необходимо иметь свою таблицу дескрипторов сегментов. А при определении физических адресов приходится выполнять операции сложения, что требует дополнительных затрат времени.
Примером использования сегментного способа организации виртуальной памяти является операционная система OS/2 первого поколения, которая была создана для персональных компьютеров на базе процессора i80286. В этой операционной системе в полной мере использованы аппаратные средства микропроцессора, который специально проектировался для поддержки сегментного способа распределения памяти.
Страничный способ организации
виртуальной памяти.
Как уже упоминалось, при страничном способе организации виртуальной памяти все фрагменты программы, на которые она разбивается (за исключением последней ее части), получаются одинаковыми. Одинаковыми полагаются и единицы памяти, которые предоставляются для размещения фрагментов программы. Эти одинаковые части называют страницами и говорят, что оперативная память разбивается на физические страницы, а программа — на виртуальные страницы. Часть виртуальных страниц задачи размещается в оперативной памяти, а часть — во внешней. Обычно место во внешней памяти, в качестве которой в абсолютном большинстве случаев выступают накопители на магнитных дисках (поскольку они относятся к быстродействующим устройствам с прямым доступом), называют файлом подкачки, или страничным файлом (paging file). Иногда этот файл называют swap-файлом, тем самым подчеркивая, что записи этого файла — страницы — замещают друг друга в оперативной памяти. В некоторых операционных системах выгруженные страницы располагаются не в файле, а в специальном разделе дискового пространства.
Разбиение всей оперативной памяти на страницы одинаковой величины, причем кратной степени двойки, приводит к тому, что вместо одномерного адресного пространства памяти можно говорить о двухмерном. Первая координата адресного пространства — это номер страницы, вторая координата — номер ячейки внутри выбранной страницы (его называют индексом). Таким образом, физический адрес определяется парой (Рр, i), а виртуальный адрес — парой (Pv, i), где Pv — номер виртуальной страницы, Рр — номер физической страницы, i — индекс ячейки внутри страницы. Количество битов, отводимое под индекс, определяет размер страницы, а количество битов, отводимое под номер виртуальной страницы, — объем потенциально доступной для программы виртуальной памяти. Отображение, осуществляемое системой во время исполнения, сводится к отображению Pv в Рр, и приписыванию к полученному значению битов адреса, задаваемых величиной i. При этом нет необходимости ограничивать число виртуальных страниц числом физических, то есть не поместившиеся страницы можно размещать во внешней памяти, которая в данном случае служит расширением оперативной.
Для отображения виртуального адресного пространства задачи на физическую память, как и в случае сегментного способа организации, для каждой задачи необходимо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти операционной системы заводит соответствующий дескриптор, который отличается от дескриптора сегмента прежде всего тем, что в нем нет поля длины — ведь все страницы имеют одинаковый размер. По номеру виртуальной страницы в таблице дескрипторов страниц текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия имеет единичное значение, значит данная страница размещена в оперативной, а не во внешней памяти, и мы в дескрипторе имеем номер физической страницы, отведенной под данную виртуальную. Если же бит присутствия равен нулю, то в дескрипторе мы будем иметь адрес виртуальной страницы, расположенной во внешней памяти. Таким образом и осуществляется трансляция виртуального адресного пространства на физическую память. Этот механизм трансляции иллюстрирует рис.
При обращении к виртуальной странице, не оказавшейся в данный момент в оперативной памяти, возникает прерывание, и управление передается диспетчеру памяти, который должен найти свободное место. Обычно предоставляется первая же свободная страница. Если свободной физической страницы нет, то диспетчер памяти по одной из вышеупомянутых дисциплин замещения (LRU, LFU, FIFO, случайный доступ) определит страницу, подлежащую расформированию или сохранению во внешней памяти. На ее месте он разместит новую виртуальную страницу, к которой было обращение из задачи, но которой не оказалось в оперативной памяти.
Если объем физической памяти небольшой и даже часто требуемые страницы не удается разместить в оперативной памяти, возникает так называемая «пробуксовка». Другими словами, пробуксовка — это ситуация, при которой загрузка нужной страницы вызывает перемещение во внешнюю память той страницы, с которой мы тоже активно работаем. Очевидно, что это очень плохое явление. Чтобы его не допускать, желательно увеличить объем оперативной памяти (сейчас это просто, поскольку стоимость модуля оперативной памяти многократно снизилась), уменьшить количество параллельно выполняемых задач или прибегнуть к более эффективным дисциплинам замещения.
Основным достоинством страничного способа распределения памяти является минимальная фрагментация. Поскольку на каждую задачу может приходиться по одной незаполненной странице, очевидно, что память можно использовать достаточно эффективно; этот метод организации виртуальной памяти был бы одним из самых лучших, если бы не два следующих обстоятельства.
Первое — это то, что страничная трансляция виртуальной памяти требует существенных накладных расходов. В самом деле, таблицы страниц нужно тоже размещать в памяти. Кроме того, эти таблицы нужно обрабатывать; именно с ними работает диспетчер памяти.
Второй существенный недостаток страничной адресации заключается в том, что программы разбиваются на страницы случайно, без учета логических взаимосвязей, имеющихся в коде. Это приводит к тому, что межстраничные переходы, как правило, осуществляются чаще, нежели межсегментные, и к тому, что становится трудно организовать разделение программных модулей между выполняющимися процессами.
Сегментно-страничный способ организации виртуальной памяти.
Как и в сегментном способе распределения памяти, программа разбивается на логически законченные части — сегменты — и виртуальный адрес содержит указание на номер соответствующего сегмента. Вторая составляющая виртуального адреса — смещение относительно начала сегмента — в свою очередь может быть представлено состоящим из двух полей: виртуальной страницы и индекса. Другими словами, получается, что виртуальный адрес теперь состоит из трех компонентов: сегмента, страницы и индекса. Получение физического адреса и извлечение из памяти необходимого элемента для этого способа иллюстрирует рис.
Из рисунка сразу видно, что этот способ организации виртуальной памяти вносит еще большую задержку доступа к памяти. Необходимо сначала вычислить адрес дескриптора сегмента и прочитать его, затем определить адрес элемента таблицы страниц этого сегмента и извлечь из памяти необходимый элемент и уже только после этого можно к номеру физической страницы приписать номер ячейки в странице (индекс). Задержка доступа к искомой ячейке получается, по крайней мере, в три раза больше, чем при простой прямой адресации. Чтобы избежать этой неприятности, вводится кэширование, причем кэш, как правило, строится по ассоциативному принципу. Другими словами, просмотры двух таблиц в памяти могут быть заменены одним обращением к ассоциативной памяти.
Оценим достоинства сегментно-страничного способа. Разбиение программы на сегменты позволяет размещать сегменты в памяти целиком. Сегменты разбиты на страницы, все страницы сегмента загружаются в память. Это позволяет сократить число обращений к отсутствующим страницам, поскольку вероятность выхода за пределы сегмента меньше вероятности выхода за пределы страницы. Страницы исполняемого сегмента находятся в памяти, но при этом они могут находиться не рядом друг с другом, а «россыпью», поскольку диспетчер памяти манипулирует страницами. Наличие сегментов облегчает разделение программных модулей между параллельными процессами. Возможна и динамическая компоновка задачи. А выделение памяти страницами позволяет минимизировать фрагментацию.
Т е м а 1.8 Управление данными.
Организация управления данными. Методы доступа. Файловые системы. Управление ресурсами. Графический интерфейс операционных систем. http://www.electriz.ru
Управление данными — важнейший компонент операционной системы, так как осуществляет связь вычислительной системы с «окружающей средой»: реализует запросы на ввод-вывод, исходящие как от программы пользователя, так и от программы операционной системы.
Основные функции управления данными.
Управление данными предназначено для выполнения следующих функций:
централизованного осуществления операций ввода-вывода (операций обмена) с использованием внешних (периферийных) устройств;
обеспечения хранения данных на устройствах внешней памяти;
обеспечения различных способов организации и идентификации данных;
каталогизации данных, позволяющей осуществлять их поиск используя лишь символическое имя без указания местонахождения;
автоматического распределения памяти на томах прямого доступа;
автоматического поиска данных по их символическому имени;
обеспечения независимости программ от характеристик данных, которые они обрабатывают, и типов используемых внешних устройств;
обеспечения различных методов доступа к данным в зависимости от их организации и логического уровня способа доступа.
Централизованное выполнение операций ввода-вывода создает возможности для организации мультипрограммной обработки данных и оптимизации операций обмена с внешними устройствами. Это позволяет сократить продолжительность простоев центрального процессора и время выполнения заданий, увеличить эффективность использования внешних устройств. Автоматизация процессов обмена информацией позволяет свести до минимума потребность в ручном вмешательстве оператора и в значительной степени упростить процесс разработки и отладки программ.
Все функции управления данными, перечисленные выше, можно разделить на два вида:
управление процессами ввода-вывода в вычислительной системе;
организация данных, хранимых в вычислительной системе. Эта функция имеет отношение только к данным, хранимым на внешних запоминающих устройствах (НМД и НМЛ).
Оба вида функций реализуются через операции ввода-вывода, поэтому организация ввода-вывода является основой управления данными.
Архитектура современных ЭВМ рассчитана на аппаратно-программную организацию операций ввода-вывода, которая предполагает функционирование аппаратных средств ввода-вывода под управлением управляющей программы. Аппаратная часть организации ввода-вывода основана на реализации этих операций в специализированных устройствах, называемых каналами ввода-вывода, либо в специализированных ЭВМ (в зависимости от объема функций, выполняемых этими устройствами).
Важной особенностью этих устройств является то, что они функционируют параллельно и асинхронно с центральными устройствами. Синхронизация работы центральных устройств и устройств ввода-вывода осуществляется при запуске и завершении операций в устройстве.
Запуск устройств ввода-вывода осуществляется по специальным командам, выдаваемым управляющей программой центрального процессора. При завершении операции ввода-вывода устройства выдают управляющей программе центрального процессора сигнал прерывания. В процессе функционирования устройство ввода-вывода действует в соответствии с собственной программой.
В разд. 17.4 будут описаны периферийные устройства и способы непосредственного программирования работы этих устройств. Однако на самом деле крайне редко приходится программировать на таком низком уровне. Вместо этого для организации различного рода обменов между памятью и периферийными устройствами, а также для создания и ведения наборов данных различной организации используются специальные системные программы, носящие название методов доступа. Команда ввода-вывода, использующая методы доступа, представляет собой обращение к некоторому набору системных программ, называемых супервизором ввода-вывода. Сами операции ввода-вывода выполняются уже непосредственно супервизором ввода-вывода с использованием связанных с ним подпрограмм. Фактически это означает, что при использовании методов доступа исчезает необходимость заботиться о конкретных деталях, связанных с выполнением операций ввода-вывода, об этом заботятся сами методы доступа.
В каждой операционной системе предусмотрено несколько методов доступа. Выбор какого-либо конкретного метода зависит от самой операционной системы, от организации обрабатываемого набора данных и, наконец, от требуемого способа буферизации.
Рис. 17.5. (а) Простая буферизация задерживает выполнение программы до заполнения буфера, (б) Применение нескольких буферов обеспечивает совмещение выполнения программы и передачи данных.
Буферы. Буферами называются области памяти, предназначенные для размещения введенной с периферийного устройства информации или информации, подготовленной для вывода на периферийное устройство. В наиболее часто встречающемся случае вместе с запросом на ввод задается адрес буфера. Супервизор ввода-вывода выполняет непосредственный ввод блока с некоторого устройства в буфер. Если же мы хотим произвести вывод, то нам самим нужно позаботиться о соответствующем содержимом буфера. Когда данные подготовлены, посылается запрос на выполнение вывода, снабженный адресом буфера; сам вывод осуществляется уже непосредственно системой.
На рис. 17.6,а изображена последовательность событий, происходящих при периодическом запросе ввода в единственный буфер. Ввод запрашивается программой пользователя. Поскольку, скорее всего, работа программы пользователя не может быть продолжена до окончания обмена, супервизор временно приостанавливает ее выполнение до окончания обмена.
Выполнение операций ввода-вывода даже самыми быстрыми устройствами проходит относительно медленно, за это время процессор обычно может выполнить тысячи операций. Таким образом, использование всего лишь одного буфера значительно замедляет выполнение программы. Однако не надо думать, что, пока проходит ввод-вывод, процессор не в состоянии выполнять какие-либо иные операции. Как мы увидим в разд. 17.4, ЭВМ Систем 360 и 370 допускают одновременную работу процессора и периферийных устройств. В таких случаях говорят о совмещении выполнения операций ввода-вывода с выполнением обычных команд программы.
Возможность подобного совмещения можно удачно использовать, производя обмены, например, с двумя буферами. Пример такого использования изображен на рис. 17.5,6. При последовательной обработке супервизор организует ввод информации в том порядке, в котором она находится в файле. Таким образом, система фактически может, «предвидя» следующие запросы, заполнять буфер еще до получения заказа на ввод. Фактически, если обработка данных производится программой пользователя не быстрее, чем система может заполнять и освобождать буферы, то использование сразу нескольких буферов позволяет свести до минимума потери, возникающие в связи с необходимостью выполнения операций ввода-вывода. Использование нескольких буферов также позволяет увеличить общую скорость вывода информации.
Однако лишь при последовательной обработке данных использование нескольких буферов может дать выигрыш во времени. Если обработка данных производится в произвольной, случайной последовательности, то, что мы назвали «предвидением» системы, теряет смысл.
Каждая операционная система предусматривает наличие нескольких методов доступа. Степень необходимого участия программиста в решении многих вопросов, связанных с использованием буферов, в большой степени зависит от применяемого метода доступа. Некоторые методы доступа позволяют пользователям вообще не заботиться о буферах, выполняя всю необходимую работу автоматически. В других случаях управление буферами может целиком возлагаться на пользователя. Существуют и методы, предоставляющие пользователю выбор относительно того, пользоваться услугами системы для управления буферами или нет.
Методы доступа системы DOS. Все методы доступа Дисковой операционной системы предполагают полуавтоматическое управление буферизацией. Для обеспечения возможности работы системы необходимо зарезервировать внутри своей программы одну или две буферных области. Если работа производится с двумя буферными областями, то выполнение всех операций ввода-вывода при работе с последовательными файлами производится системой еще до получения реальных запросов. Пользователь может заказать блокирование данных при выводе и разблокирование при вводе. В системе DOS возможны следующие способы организации наборов данных: последовательный, индексно-последовательный и прямой. Основными методами доступа системы DOS являются:
- Последовательный метод доступа (SAM)
- Индексно-последовательный метод доступа (ISAM)
- Прямой метод доступа (DAM)
Таблица 17.1 Некоторые методы доступа системы OS
Наименование |
Мнемоника |
Функции |
Queued Sequential Access Method |
QSAM |
Последовательная организация данных, способ доступа с очередями |
Basic Sequential Access Method |
BSAM |
Последовательная организация данных, базисный способ доступа |
Queued Indexed Sequential Access Method |
QISAM |
Создание и последовательная обработка индексно-последовательных файлов |
Basic Indexed Sequential Access Method |
BISAM |
Произвольная обработка индексно-последовательных файлов |
BasicPartitioned Access Method |
BPAM |
Создание и обработка библиотечных наборов данных |
BasicDirect Access Method |
BDAM |
Обработка файлов с прямой организацией |
TelecommunicationsAccess Method |
TCAM |
Взаимодействие с удаленными терминалами |
Методы доступа системы OS. Методы доступа операционной системы OS распадаются на два класса: базисные методы доступа и методы доступа с очередями. Методы доступа с очередями обеспечивают полностью автоматическое управление буферизацией. Система сама заботится о ведении буферных областей. Система же производит блокирование и разблокирование записей. Методы доступа с очередями используются при обработке последовательных и индексно-последовательных файлов. Эти методы позволяют достичь максимальной эффективности обработки при минимуме требований, предъявляемых к программе пользователя.
По сравнению с методами с очередями базисные методы доступа являются гораздо более примитивными. Тем не менее, они позволяют достичь большей гибкости работы с данными. Часть обязанностей по управлению буферизацией теперь возлагается на пользователя, кроме того, на пользователя возлагается и разблокирование записей. Базисные методы доступа используются в основном, когда приходится иметь дело с непоследовательной обработкой наборов данных. Список наиболее употребительных методов доступа системы OS приведен в табл. 17.1.
В своем рассмотрении мы лишь слегка затронули вопросы, связанные со структурами данных и предоставляемыми операционной системой возможностями выполнения операций ввода-вывода. Тем не менее, этого материала достаточно для того, чтобы приступить к обсуждению использования методов доступа при программировании ввода-вывода. В дальнейшем нас будут интересовать лишь последовательные методы доступа с очередями систем OS и DOS. Несмотря на то, что принцип использования последовательного метода доступа с очередями является общим для двух изучаемых нами систем, конкретные детали все-таки достаточно сильно различаются. Целесообразно рассмотреть лишь материал, связанный с программированием ввода-вывода в вашей конкретной системе. После этого, однако, вы можете просмотреть и другой раздел с целью знакомства со сходными моментами в работе с двумя системами. http://itteach.ru/vvod-i-vivod/strukturi-dannich/metodi-dostupa
Управление ресурсами. Операционная система не только предоставляет пользователям и программистам удобный интерфейс к аппаратным средствам компьютера, но и является механизмом, распределяющим ресурсы компьютера.
К числу основных ресурсов современных вычислительных систем могут быть отнесены такие ресурсы, как процессоры, основная память, таймеры, наборы данных, диски, накопители на магнитных лентах, принтеры, сетевые устройства и некоторые другие. Ресурсы распределяются между процессорами. Процесс (задача) представляет собой базовые понятие большинства современных ОС и часто кратко определяется как программа в стадии выполнения. Программа - это статический объект, представляющий собой файл с кодами и данными. Процесс - это динамический объект, который возникает в операционной системе после того, как пользователь или сама операционная система решает "запустить программу на выполнение", то есть создать новую единицу вычислительной работы. Например, ОС может создать процесс в ответ на команду пользователя run prg1. exe, где prg1. exe - это время файла, в котором хранится код программы.
Во многих современных ОС для обозначения минимальной единицы работы ОС используют термин " нить", или "поток", при этом изменяется суть термина "процесс".
Управление ресурсами вычислительной системы с целью наиболее эффективного их использования является назначением операционной системы.
Управление ресурсами включает решение следующих общих, не зависящих от типа ресурса задач:
- планирование ресурса - то есть определение, какому процессу, когда и в каком количестве ( если ресурс может выделятся частями) следует выделить данный ресурс;
- удовлетворение запросов на ресурсы;
- отслеживание состояния и учет использования ресурса - то есть поддержание оперативной информации о том, занят или свободен ресурс и какая доля ресурса уже распределена;
- разрешение конфликтов между процессами.
Для решения этих общих задач управления ресурсами разные ОС используют различные алгоритмы, особенности которых в конечном счете и определяют облик ОС в целом, включая характеристики производительности, область применения и даже пользовательский интерфейс. Например, применяемый алгоритм управления процессором в значительной степени определяет, может ли ОС использоваться как система разделения времени, система пакетной обработки или система реального времени. http://www.bgsha.com/ru/learning/course/print.php?COURSE_ID=7&LESSON_ID=391
Т е м а 1.9 Подключение внешних устройств
Утилиты. Драйверы. Инструментальные системы. Архитектура и реализация технологии Plug and Play. Средства мультимедиа.
Утилиты - это специализированные программы, предназначенные для обслуживания и оптимизации работы системы, программы-помощники, решающие задачи, с которыми сама оперативная система справиться не в состоянии. Большинство утилит предназначено для обслуживания файловой системы и дисков. Некоторые утилиты используются для ведения архивов данных, а специальные антивирусные программы обеспечивают защиту системы от компьютерных вирусов. Утилиты - необходимая компонента инструментария программиста любого уровня и, в первую очередь, прикладного. Первоначально слово "утилита" отождествлялось с простыми маленькими программами. Но сегодняшние утилиты часто занимают десятки мегабайт и по сложности не уступают некоторым офисным пакетам. И выполнять они могут уже не одну-две операции, как раньше, а значительно больше...
Утилиты используются для
Мониторинга показателей датчиков и производительности оборудования — мониторинг температур процессора, видеоадаптера; чтение S.M.A.R.T. жёстких дисков;
Управления параметрами оборудования — ограничение максимальной скорости вращения CD-привода; изменение скорости вращения вентиляторов.
Контроля показателей — проверка ссылочной целостности; правильности записи данных.
Расширения возможностей — форматирование и/или переразметка диска с сохранением данных, удаление без возможности восстановления.
Типы утилит
Дисковые утилиты
Дефрагментаторы
Дефрагмента́ция — процесс обновления и оптимизации логической структуры раздела диска с целью обеспечить хранение файлов в непрерывной последовательности кластеров. После дефрагментации ускоряется чтение и запись файлов, а следовательно и работа программ, ввиду того, что последовательные операции чтения и записи выполняются быстрее случайных обращений (например, для жесткого диска при этом не требуется перемещение головки). Другое определение дефрагментации: перераспределение файлов на диске, при котором они располагаются в непрерывных областях.
Длинные файлы занимают несколько кластеров. Если запись производится на незаполненный диск, то кластеры, принадлежащие одному файлу, записываются подряд. Если диск переполнен, на нём может не быть цельной области, достаточной для размещения файла. Тем не менее, файл все-таки запишется, если на диске много мелких областей, суммарный размер которых достаточен для записи. В этом случае файл записывается в виде нескольких фрагментов.
Процесс разбиения файла на небольшие фрагменты при записи на диск называется фрагментацией. Если на диске много фрагментированных файлов, скорость чтения носителя уменьшается, поскольку поиск кластеров, в которых хранятся файлы, на жёстких дисках требует времени. На флеш-памяти, например, время поиска не зависит от расположения секторов, и практически равно нулю, поэтому для них дефрагментация не требуется.
Некоторое ПО требует, чтобы определённые файлы в обязательном порядке хранились в последовательно расположенных секторах (например, встроенный эмулятор CD-ROM в приводе Zalman VE-200 предъявляет такое требование к файлам образов). Даже если в такой привод будет установлен твердотельный накопитель, очевидно, дефрагментация ему всё-таки понадобится.
Дефрагментация чаще всего используется для таких файловых систем, как File Allocation Table для MS-DOS и Microsoft Windows, так как в программах для работы с ними обычно не предусмотрено никаких средств для предотвращения фрагментации, и она появляется даже на почти пустом диске и небольшой нагрузке.
Помимо замедления компьютера в работе с файловыми операциями (таких как чтение и запись), фрагментация файлов негативно сказывается на «здоровье» жёсткого диска, так как заставляет постоянно перемещаться позиционирующие головки диска, которые осуществляют чтение и запись данных. Для устранения проблемы фрагментации существуют программы-дефрагментаторы, принцип работы которых заключается в «сборке» каждого файла из его фрагментов. Общим недостатком таких программ является их медленная работа — процесс дефрагментации обычно занимает очень много времени (до нескольких часов).
Проверка диска — поиск неправильно записанных либо повреждённых различным путём файлов и участков диска и их последующее удаление для эффективного использования дискового пространства.
Очистка диска — удаление временных файлов, ненужных файлов, чистка «корзины».
Разметка диска — деление диска на логические диски, которые могут иметь различные файловые системы и восприниматься операционной системой как несколько различных дисков.
Резервное копирование — создание резервных копий целых дисков и отдельных файлов, а также восстановление из этих копий.
Резервное копирование данных (Резервное дублирование данных) — процесс создания копии данных
Восстановление данных — процесс восстановления в оригинальном месте
Резервное копирование необходимо для возможности быстрого и недорогого восстановления информации (документов, программ, настроек и т. д.) в случае утери рабочей копии информации по какой-либо причине.
Кроме этого решаются смежные проблемы:
Дублирование данных
Передача данных и работа с общими документами
Требования к системе резервного копирования
Надёжность хранения информации — обеспечивается применением отказоустойчивого оборудования систем хранения, дублированием информации и заменой утерянной копии другой в случае уничтожения одной из копий (в том числе как часть отказоустойчивости).
Простота в эксплуатации — автоматизация (по возможности минимизировать участие человека: как пользователя, так и администратора).
Быстрое внедрение — простая установка и настройка программ, быстрое обучение пользователей.
Виды резервного копирования
Полное резервирование (Full backup)
Полное резервирование обычно затрагивает всю вашу систему и все файлы. Еженедельное, ежемесячное и ежеквартальное резервирование подразумевает полное резервирование. Первое еженедельное резервирование должно быть полным резервированием, обычно выполняемым по пятницам или в течение выходных, в течение которого копируются все желаемые файлы. Последующие резервирования, выполняемые с понедельника по четверг до следующего полного резервирования, могут быть добавочными или дифференциальными, главным образом для того, чтобы сохранить время и место на носителе. Полное резервирование следует проводить, по крайней мере, еженедельно.
Дифференциальное резервирование (Differential backup)
При разностном (дифференциальном) резервировании каждый файл, который был изменен с момента последнего полного резервирования, копируется каждый раз заново. Дифференциальное резервирование ускоряет процесс восстановления. Все, что вам необходимо, это последняя полная и последняя дифференциальная резервная копия. Популярность дифференциального резервирования растет, так как все копии файлов делаются в определенные моменты времени, что, например, очень важно при заражении вирусами.
Инкрементное резервирование (Incremental backup)
При добавочном («инкрементальном») резервировании происходит копирование только тех файлов, которые были изменены с тех пор, как в последний раз выполнялось полное или добавочное резервное копирование. Последующее добавочное резервирование добавляет только файлы, которые были изменены с момента предыдущего добавочного резервирования. В среднем, добавочное резервирование занимает меньше времени, так как копируется меньшее количество файлов. Однако, процесс восстановления данных занимает больше времени, так как должны быть восстановлены данные последнего полного резервирования, плюс данные всех последующих добавочных резервирований. При этом, в отличие от дифференциального резервирования, изменившиеся или новые файлы не замещают старые, а добавляются на носитель независимо.
Резервирование клонированием
Клонирование позволяет скопировать целый раздел или носитель (устройство) со всеми файлами и директориями в другой раздел или на другой носитель. Если раздел является загрузочным, то клонированный раздел тоже будет загрузочным[1].
Резервирование в виде образа
Образ — точная копия всего раздела или носителя (устройства), хранящаяся в одном файле[2].
Резервное копирование в режиме реального времени
Резервное копирование в режиме реального времени позволяет создавать копии файлов, директорий и томов, не прерывая работу, без перезагрузки компьютера.[3]
Схемы ротации
Смена рабочего набора носителей в процессе копирования называется их ротацией. Для резервного копирования очень важным вопросом является выбор подходящей схемы ротации носителей (например, магнитных лент).
Одноразовое копирование
Простейшая схема, не предусматривающая ротации носителей. Все операции проводятся вручную. Перед копированием администратор задает время начала резервирования, перечисляет файловые системы или каталоги, которые нужно копировать. Эту информацию можно сохранить в базе данных, чтобы её можно было использовать снова. При одноразовом копировании чаще всего применяется полное копирование.
Простая ротация
Простая ротация подразумевает, что некий набор лент используется циклически. Например, цикл ротации может составлять неделю, тогда отдельный носитель выделяется для определенного рабочего дня недели. Недостаток данной схемы — она не очень подходит для ведения архива, поскольку количество носителей в архиве быстро увеличивается. Кроме того, инкрементальная/дифференциальная запись проводится на одни и те же носители, что ведет к их значительному износу и, как следствие, увеличивает вероятность отказа.
«Дед, отец, сын»
Данная схема имеет иерархическую структуру и предполагает использование комплекта из трех наборов носителей. Раз в неделю делается полная копия дисков компьютера («отец»), ежедневно же проводится инкрементальное (или дифференциальное) копирование («сын»). Дополнительно раз в месяц проводится еще одно полное копирование («дед»). Состав ежедневного и еженедельного набора постоянен. Таким образом, по сравнению с простой ротацией в архиве содержатся только ежемесячные копии плюс последние еженедельные и ежедневные копии. Недостаток данной схемы состоит в том, что в архив попадают только данные, имевшиеся на конец месяца, а также износ носителей.
«Ханойская башня»
Схема призвана устранить некоторые из недостатков схемы простой ротации и ротации «Дед, отец, сын». Схема построена на применении нескольких наборов носителей. Каждый набор предназначен для недельного копирования, как в схеме простой ротации, но без изъятия полных копий. Иными словами, отдельный набор включает носитель с полной недельной копией и носители с ежедневными инкрементальными (дифференциальными) копиями. Специфическая проблема схемы «ханойская башня» — ее более высокая сложность, чем у других схем.
«10 наборов»
Данная схема рассчитана на десять наборов носителей. Период из сорока недель делится на десять циклов. В течение цикла за каждым набором закреплен один день недели. По прошествии четырехнедельного цикла номер набора сдвигается на один день. Иными словами, если в первом цикле за понедельник отвечал набор номер 1, а за вторник — номер 2, то во втором цикле за понедельник отвечает набор номер 2, а за вторник — номер 3. Такая схема позволяет равномерно распределить нагрузку, а следовательно, и износ между всеми носителями.
Схемы «Ханойская башня»[источник не указан 301 день] и «10 наборов» используются нечасто, так как многие системы резервирования их не поддерживают.
Хранение резервной копии
Лента стримера — запись резервных данных на магнитную ленту стримера;
«Облачный» бэкап» — запись резервных данных по «облачной» технологии через онлайн-службы специальных провайдеров;
DVD или CD — запись резервных данных на компактные диски;
HDD — запись резервных данных на жёсткий диск компьютера;
LAN — запись резервных данных на любую машину внутри локальной сети;
FTP — запись резервных данных на FTP-серверы;
USB — запись резервных данных на любое USB-совместимое устройство (такое, как флэш-карта или внешний жёсткий диск);
ZIP, JAZ, MO — резервное копирование на дискеты ZIP, JAZ, MO. (http://ru.wikipedia.org)
Сжатие дисков — сжатие информации на дисках для увеличения вместимости жёстких дисков.
Утилиты работы с реестром
Утилиты мониторинга оборудования
Тесты оборудования
Драйвер - комплекс программ, выполняющих интерфейсные и управляющие функции. Драйвер (англ. driver — водитель, ведущий) — компьютерная программа, помогающая операционной системе работать с к.-л. устройством (напр., управлять устройствами ввода-вывода, клавиатурой, принтером и т. д.)
Загружаемые драйверы устройств.
1. ANSI.SYS – расширенное управление клавиатурой и дисплеем. Обеспечивает дополнительные функции управления дисплеем:
- возможность чтения текущего положения курсора.
- установка цвета символов и фона,
- позиционирование курсора,
- переназначение клавиш.
Формат директивы подключения драйвера
Device = диск:\маршрут\ansi.sys/X /K /R
Ключи:
/Х переназначение отдельных клавиш (правые Alt и Ctrl клавиши управления курсором) на дополнительной клавиатуре.
/К использование алгоритма работы со 101 –клавишной клавиатурой, с
83 – клавишной клавиатурой.
/R данный драйвер будет производить нормализацию строк прокрутки при работе программ чтения с экрана текстов, которые могут изменять строки прокрутки.
2. DBLSPACE.SYS – управление месторасположением в памяти модуля DBLSPACE.BIN, который обеспечивает доступ к сжатым дискам (командой dblspace осуществляется сжатие данных на жестких или гибких магнитных дисках для увеличения свободного пространства и создание дополнительных дисков, работающих под управлением программы Double Space).
Формат директивы подключения драйвера:
Device = диск:\маршрут\ dblspace.sys /MOVE/NOHMA
Ключи:
MOVE – перемещение модуля DBLSPACE.BIN в младшие адреса основной памяти, так как при загрузке ОС модуль DBLSPACE.BIN загружается в старшие адреса основной памяти.
NOHMA – предотвращение перемещения модуля DBLSPACE.BIN из основной памяти в область старшей памяти
3.DISPLAY.SYS - расширение возможностей стандартного драйвера консоли CON, входящего в состав DOS, или ANSI.SYS, если он установлен. Этот драйвер применяется для переключения кодовых страниц командой DOS MODE.
Формат директивы подключения драйвера:
Device = диск:\маршрут\ display.sys con = (тип, ном_стр, кол_стр, кол_шр)
Параметры:
Тип – тип дисплея, установленного на компьютере.
ном_стр – номер кодовой страницы, являющейся аппаратно поддерживаемой для данного типа дисплея.
кол_стр – указание количества страниц, которые будут использоваться при выводе текстовой информации на экран. По умолчанию количество страниц установлено для адаптера EGA равным 6, а для адаптеров LCD равным 1.
кол_шр – количество таблиц шрифтов, аппаратно поддерживаемых для каждой кодовой таблицы.
DRIVER.SYS – определение дополнительных НГМД, непосредственно не поддерживаемых DOS.
Формат директивы подключения:
Device = диск:\маршрут\ driver.sys /D:номер/C/F:специф/H:голов /S:секторов/T:дорож
D:номер – номер физического накопителя на гибких дисках, номер накопителя может задаваться в диапазоне от 0 до 127.
F:специф – спецификатор дисковода, для указания типа используемого накопителя. Использование ключа /F: делает необязательным использование ключей /T:, /H:, /S:.
H:голов – число головок накопителя. По умолчанию число головок равно 2.
S:секторов – число секторов на дорожке.
T:дорож – количество дорожек на одной стороне.
EMM386.EXE – поддержка расширенной памяти и эмуляция дополнительной памяти как расширенной, а также дает возможность загрузки программ и драйверов устройств в область старшей памяти (UMB). (описание данного драйвера в методичке)
HIMEM.SYS – поддержка дополнительной памяти. (описание данного драйвера в методичке)
RAMDRIVE.SYS – организация в оперативной памяти виртуального (электронного) диска. (описание данного драйвера в методичке)
SMARTDRV.EXE – организация в дополнительной или расширенной памяти КЭШа для дисковых накопителей, для ускорения операций ввода-вывода.
Формат директивы подключения:
Device = диск:\маршрут\ smartdrv.exe/ DOUBLE_BUFFER
Ключи:
DOUBLE_BUFFER – предписывает SMARTDRV.EXE организовывать двойную буферизацию операций ввода-вывода данных.
Примечание:
Для организации кэша в дополнительной памяти директиве DEVICE=SMARTDRV.EXE в файле CONFIG.SYS должна предшествовать директива DEVICE=HIMEM.SYS.
Для организации кэша в расширенной памяти директиве DEVICE=SMARTDRV.EXE в файле CONFIG.SYS должна предшествовать директива DEVICE=ЕММ386.
