АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Сетевое обеспечение

Читайте также:
  1. II. Стипендиальное обеспечение студентов, аспирантов и докторантов
  2. III.1.4. Организационное обеспечение деятельности Президента России.
  3. III.2.5. Организационное обеспечение деятельности палат Федерального Собрания
  4. IV. ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ УЧАСТНИКОВ И ЗРИТЕЛЕЙ
  5. IV. Обеспечение национальной безопасности Российской Федерации
  6. IV. Обеспечение условий эффективности уголовно-правовой политики
  7. IV. Организационно-методическое обеспечение Олимпиады
  8. IV. УЧЕБНО-МЕТОДИЧЕСКОЕ, ИНФОРМАЦИОННОЕ И МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ
  9. IX.ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ УЧАСТНИКОВ И ЗРИТЕЛЕЙ
  10. VI. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ
  11. VII. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ
  12. VII. УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ КУРСА

Управление процессами

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

- создание и удаление процессов;

- приостановку и возобновление процессов;

- обеспечение механизмов для синхронизации процессов;

- обеспечение механизмов для взаимодействия процессов.

Управление основной памятью

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

- ведет учет того, какая часть памяти в настоящий момент занята;

- принимает решение о загрузке процессов при освобождении пространства ОП;

- распределяет и освобождает пространство ОП в соответствии с действующими стратегиями.

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

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

- управление свободным пространством;

- распределение памяти;

- управление диском.

Подсистема управления устройствами ввода/вывода

Подсистема ввода/вывода состоит из:

- системы кэширования - буферирования;

- общего интерфейса драйверов устройств;

- драйверов специализированных устройств.

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

Файл представляет собой набор взаимосвязанной информации, определенной при создании. Кроме собственно данных, файлы представляют программы, как в исходном, так и в объектном виде.

Подсистема ОС отвечает за следующие действия в связи с управлением файлами:

- создание файлов;

- создание и удаление подкаталогов;

- поддержку операций для манипулирования с файлами и подкаталогами;

- представление файлов во внешней памяти;

- выгрузку файлов на другие внешние устройства.

Защита системы

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

Механизм защиты должен:

- различать авторизованное и не авторизованное использование;

- определить элементы управления, которые будут задействованы;

- обеспечить средства реализации.

Сетевое обеспечение

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

- увеличить скорость вычислений;

- увеличить объем доступной информации;

- повысить надежность.

Командный интерфейс системы

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

- создание и управление процессов;

- управление вводом/выводом;

- управление внешней памятью;

- управление основной памятью;

- доступ к файловой системе;

- защиту;

- поддержку работы сети.

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

- интерпретатор управляющих карт;

- процессор команд консолей;

- shellUnix).

Функцией команды является прием и выполнение введенного утверждения.

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

- выполнение программ - способность системы загружать программу в память и выполнять ее;

- операции ввода/вывода. Поскольку пользовательские программы не могут исполнять операции ввода/вывода непосредственно, ОС должна обеспечивать некоторые средства для их выполнения;

- манипуляции с файловой системой выражаются в обеспечении способности читать, писать, создавать и удалять файлы;

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

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

 

 

6. Монолитная архитектура

 

Монолитная архитектура операционной системы

 

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

Заметим, что монолитную архитектуру имели самые первые поколения операционных систем.

 

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

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

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

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

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

 

Требования к архитектуре операционной системы

 

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

 

Проблема расширяемости операционной системы

 

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

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

Действительно, операционная система обычно живет довольно долго, например UNIX существует уже более 30 лет, Windows NT – более 10 лет. За время жизни операционной системы неизбежно появляется новое периферийное оборудование, поддержка которого не закладывалась в систему при ее проектировании. Тем не менее, для успешного существования на рынке, операционная система должна быстро реагировать на появление нового оборудования и обеспечивать его поддержку. Примером может служить появление и широкое распространение накопителей на компакт-дисках или Flash-памяти.

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

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

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

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

 

Проблема переносимости операционной системы

 

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

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

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

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

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

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

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

 

Проблема совместимости операционной системы

 

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

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

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

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

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

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

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

Таким образом, задача обеспечения совместимости с системой B сводится к задаче расширения функциональности операционной системы A. Но если система A имеет монолитное ядро, введение в нее новой исполнительной системы будет весьма трудоемким и, кроме того, снизит стабильность работы системы.

 

7. Микроядерная архитектура

 

7.Микроядерная архитектура ОС

 

 

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

 

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

 

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

 

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

 

Преимущества и недостатки микроядерной архитектуры

 

Достоинства:

Переносимость

Расширяемость

Надежность

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

Недостатки:

Снижение производительности

 

 

ОС, основанные на концепции микроядра, в высокой степени удовлетворяют большинству требований, предъявляемых к современным ОС, обладая переносимостью, расширяемостью, надежностью и создавая хорошие предпосылки для поддержки распределенных приложений. За данные достоинства приходится платить снижением производительности, и это основной недостаток.

 

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

 

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

 

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

 

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

 

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

 

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

 

Понятие «вычислительный процесс» (или просто — «процесс») является одним из основных при рассмотрении операционных систем. Последовательный процесс (иногда называемый «задачей») — это выполнение отдельной программы с ее данными на последовательном процессоре. В концепции, которая получила распространение в 70-е годы, задача – это совокупность связанных между собой и образующих единое целое программных модулей и данных, требующая ресурсов вычислительной системы. В последующие годы задачей стали называть единицу работы, для выполнения которой предоставляется центральный процессор. Процесс может включать в себя несколько задач. В качестве примеров можно назвать следующие процессы (задачи): выполнение прикладных программ пользователей, утилит и других системных обрабатывающих программ. Процессами могут быть редактирование какого-либо текста, трансляция исходной программы, ее компоновка, исполнение. Причем трансляция какой-нибудь исходной программы является одним процессом, а трансляция следующей исходной программы — другим процессом, поскольку, хотя транслятор как объединение программных модулей здесь выступает как одна и та же программа, но данные, которые он обрабатывает, являются разными.

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

он свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;

 

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

 

ресурс используется задачей низшего приоритета и может быть временно отобран (разделяемый ресурс).

 

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

 

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

 

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

 

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

 

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

 

9. Прерывания

 

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

 

(по лекциям) По отношенияю к корпусу МП прерывания подразделяются на:

 

внешние:

аппаратные (маскируемые) - поступают через контролер прерываний немаскируемые - поступают на вход NMI. У МП 2 входа для получения сигналов

 

внутренние:

программные - программа сама вызывает обработчик прерываний - вызов в коде исключения (исключительные ситуации процессора) - в реальном режиме 2 исключения: деление на ноль и пошаговый (?) режим (флаг трассировки и выполнение прерываени после команды)

 

Организация прерываний: векторный способ, опрашиваемый способ.

Схема аппаратных прерываний

 

 

Номер прерывания в реальном режиме - номер ячейки в таблице прерываний. Сам вектор - адрес точки входа в обработчик прерываний. В реальном ержиме таблица прерываний - в младших адресах ОП, представляет собой последовательность адресов в виде сегмент-смещение, 4 байта на каждый вектор, 256 прерываний, с 0-ого по 255-ое. Зная номер вектора прерывания, можно в различных режимах вычислить смещение в IDTR. Чем меньше номер линнии запроса прерывания, тем выше приоритет. В регистре флагов можно разрешить или запретить аппаратные прерывания (флаг IF)

Внутренняя структура контролера прерываний

 

 

INTA - выход МП INTR - вход МП

 

1) - поступившие запросы зарегистрированы. 2) - в регистре 0 - пропускает, 1- запрещает проход сигнала 3) - МП в состоянииобрботки 4) - МП смотрит на IF (запрещены или нет аппаратные прерывания), сбрасывает бит в регистре обслуживания, обработка, все остальные аппаратные прерывания запрещены.

 

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

 

В IDTR - три типа дескрипторов - прерывания, ловушки, задачи.

Программные прерывания

 

можно вызвать любой обработчичк прерываний - команда int. при системном вызове: 1) - переход в привелегированный режим 2) - нужна высокая скорость обработки 3) - стандарный интерфейс вызова процедур 4) - расширить номенклатуру системных вызовов 5) - обеспечение контроля ОС за выполнением прерывания

В большинстве ОС обработка прерываний происходит централизовано. При любом системном вызове вызывается единственный обработчик - int 2eh (для Intel) int 2eh - вызывает диспетчер устройств, который определяет, что делать дальше.

 

10. Системные вызовы

 

Систе́мный вы́зов (англ. system call) в программировании и вычислительной технике — обращение прикладной программы к ядру операционной системы для выполнения какой-либо операции.

 

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

 

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

 

11. Процесс, поток.

12. Создание процессов и потоков

 

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

 

Планирование процессов и потоков

Подсистема управления процессами и потоками в ОС ответственна за обеспечение процессов необходимыми ресурсами

ОС использует специальные информационные структуры, для хранения информации о том какие ресурсы выделены каждому процессу

Понятие процесс (задача) и поток (нить)

Понятие синхронизации потоков

 

Управление процессами

 

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

 

Создание процессов и потоков

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

Примеры описателей процесса:

Блок управления задачей (ТСВ) в OS/360

Управляющий блок процесса (РСВ) в OS/2

Дескриптор процесса в UNIX

Объект-процесс в Windows

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

В многопоточной системе при создании процесса ОС создает поток

Поток-потомок

 

 

13. Состояния потока

 

Состояние потоков

ВЫПОЛНЕНИЕ - активное состояние потоков, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

ОЖИДАНИЕ - пассивное состояние потока, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого потока, освобождения какого-либо необходимого ему ресурса;

ГОТОВНОСТЬ - также пассивное состояние потока, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: поток имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого потока.

 

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

 

В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов. Жизненный цикл процесса начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и ждет своей очереди. При активизации процесс переходит в состояние ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо будет насильно "вытеснен" из процессора, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени. В последнем случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое событие произойдет.

 

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

 

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

 

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

Определение момента времени для смены текущего активного потока

Выбор для выполнения потока из очереди готовых потоков

Диспетчеризация - это реализация решения, найденного в результате планирования Задачи диспетчеризации:

Сохранение контекста текущего потока

Загрузка контекста нового потока

Запуск нового потока на выполнение

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

 

15. Алгоритмы планирования

 

Алгоритм планирования, основанный на квантовании.

 

В соответствии с алгоритмами, основанными на квантовании, смена активного процесса происходит, если:

роцесс завершился и покинул систему,

роизошла ошибка,

процесс перешел в состояние ОЖИДАНИЕ,

исчерпан квант процессорного времени, отведенный данному процессу.

 

 

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

 

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

 

Алгоритмы планирования в интерактивных ОС:

 

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

Циклическое планирование

 

наиболее старый, простой и справедливый алгоритм. каждому процессу (предполагается, что процессы равнозначны) предоставляется промежуток времени работы процессора - квант времени. если к концу кванта процесс всё ещё работает, то этот процесс прерывается и процессор обрабатывает уже другой, следующий процесс. Если процесс прекращает работу раньше срока истечения кванат, то происходит перход управления в этот момент. Планировщик только поддерживает список процессов. Исчерпавшие лимит, обработанные процессы помещаются в коенц списка процессов. Вадный вопрос - длина кванат - при малой длине кваната высоки потери на переключение, при большой - заторможенность реакции на быстрые запросы. 20-50 мс- оптимальное значение кванта.

Приоритетное планирование

 

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

Гарантированное планирование

 

Если в системе одновременно работаю k пользователей, то одному будет предоставлено (1/k) процессорного времени, а в системе с одним пользователем запущено n процессов, то каждому процессу достнется (1/n) процессорного времени. система самас ледит за количестволм процессов и отследивает промежутки процессорного времени, выделяфемого каждому из процессов (или пользователей)

Лотерейное планирование

 

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

Справедливое планирование

 

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

 

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

 

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

 

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

 

 

17. Типы адресов

 

 

Типы адресов

 

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

 

Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.

 

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

 

 

Рис. 2.7. Типы адресов

 

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

 

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

 

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

 

18. Методы распределения памяти без использования дискового пространства

 

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

 

 

Рис. 2.8. Классификация методов распределения памяти

Распределение памяти фиксированными разделами

 

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

 

 

Рис. 2.9. Распределение памяти фиксированными разделами:

а - с общей очередью; б - с отдельными очередями

 

Подсистема управления памятью в этом случае выполняет следующие задачи:

сравнивая размер программы, поступившей на выполнение, и свободных разделов, выбирает подходящий раздел,

осуществляет загрузку программы и настройку адресов.

 

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

Распределение памяти разделами переменной величины

 

В этом случае память машины не делится заранее на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необходимая ей память. Если достаточный объем памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи память освобождается, и на это место может быть загружена другая задача. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера. На рисунке 2.10 показано состояние памяти в различные моменты времени при использовании динамического распределения. Так в момент t0 в памяти находится только ОС, а к моменту t1 память разделена между 5 задачами, причем задача П4, завершаясь, покидает память. На освободившееся после задачи П4 место загружается задача П6, поступившая в момент t3.

 

 

Рис. 2.10. Распределение памяти динамическими разделами

 

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

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

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

загрузка задачи в выделенный ей раздел и корректировка таблиц свободных и занятых областей,

после завершения задачи корректировка таблиц свободных и занятых областей.

 

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

 

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

 

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

Перемещаемые разделы

 

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

 

 

Рис. 2.11. Распределение памяти перемещаемыми разделами

 

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

 

19. Методы распределения памяти с использованием дискового пространства

 

Является обобщением вопросов №№20, 21, 22, 23, 24

 

20. Понятие виртуальной памяти

 

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

 

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

 

Таким образом, виртуальная память - это совокупность программно-аппаратных средств, позволяющих пользователям писать программы, размер которых превосходит имеющуюся оперативную память; для этого виртуальная память решает следующие задачи:

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

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

преобразует виртуальные адреса в физические.

 

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

 

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

 

21. Страничное распределение виртуальной памяти

 

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

 

Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами (или блоками).

 

Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

 

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

 

 

Рис. 2.12. Страничное распределение памяти

 

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

 

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

 

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

дольше всего не использовавшаяся страница,

первая попавшаяся страница,

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

 

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

 

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

 

Рассмотрим механизм преобразования виртуального адреса в физический при страничной организации памяти (рисунок 2.13).

 

Виртуальный адрес при страничном распределении может быть представлен в виде пары (p, s), где p - номер виртуальной страницы процесса (нумерация страниц начинается с 0), а s - смещение в пределах виртуальной страницы. Учитывая, что размер страницы равен 2 в степени к, смещение s может быть получено простым отделением k младших разрядов в двоичной записи виртуального адреса. Оставшиеся старшие разряды представляют собой двоичную запись номера страницы p.

 

 

Рис. 2.13. Механизм преобразования виртуального адреса в физический

при страничной организации памяти

 

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

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

из этой записи извлекается номер физической страницы,

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

 

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

 

На производительность системы со страничной организацией памяти влияют временные затраты, связанные с обработкой страничных прерываний и преобразованием виртуального адреса в физический. При часто возникающих страничных прерываниях система может тратить большую часть времени впустую, на свопинг страниц. Чтобы уменьшить частоту страничных прерываний, следовало бы увеличивать размер страницы. Кроме того, увеличение размера страницы уменьшает размер таблицы страниц, а значит уменьшает затраты памяти. С другой стороны, если страница велика, значит велика и фиктивная область в последней виртуальной странице каждой программы. В среднем на каждой программе теряется половина объема страницы, что в сумме при большой странице может составить существенную величину. Время преобразования виртуального адреса в физический в значительной степени определяется временем доступа к таблице страниц. В связи с этим таблицу страниц стремятся размещать в "быстрых" запоминающих устройствах. Это может быть, например, набор специальных регистров или память, использующая для уменьшения времени доступа ассоциативный поиск и кэширование данных.

 

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

 

22. Сегментное распределение виртуальной памяти

 

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

 

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

 

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

 

 

Рис. 2.14. Распределение памяти сегментами

 

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

 

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

 

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

 


Поиск по сайту:



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