Четвертый период (1980 - настоящее время)

Первый период (1945 -1955)

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

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

Второй период (1955 - 1965)

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

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

Третий период (1965 - 1980)

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

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

Программная совместимость требовала и совместимости операционных систем.

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

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

Разделение операционной системы на ядро и модули-приложения обеспечивает

Легкую расширяемость ОС.

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

Должна иметь по отношению к приложениям определенные привилегии.

Иначе некорректно работающее приложение может вмешаться в работу ОС

и, например, разрушить часть ее кодов.

Обеспечить, привилегии операционной системе невозможно без специальных

Средств аппаратной поддержки. Аппаратура компьютера должна поддерживать

как минимум два режима работы —пользовательский (user mode)

ипривилегированный, который также называютрежимом ядра (kernel mode),

илисупервизора (supervisor mode). Подразумевается, что операционная система

Или некоторые ее части работают в привилегированном режиме, а приложения

— в пользовательском режиме.

Очень важно, что механизмы защиты памяти используются операционной

Системой не только для защиты своих областей памяти от приложений, но

10.

Базовые механизмы ядра

Менеджеры ресурсов

11.

Многие операционные системы успешно работают на различных аппаратных

платформах без существенных изменений в своем составе. Во многом это объясняется

тем, что, несмотря на различия в деталях, средства аппаратной поддержки

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

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

системы. В результате в ОС можно выделить достаточно компактный

слой машинно-зависимых компонентов ядра и сделать остальные слои ОС общими

дляразных аппаратных платформ.

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

 
  Четвертый период (1980 - настоящее время) - student2.ru

13.Одна и та же ОС не может без изменений устанавливаться на систему со значительными различиями в организации ПК. Однако ядро можно спроектировать так, чтобы только часть модулей были машинно-зависимые.Объем таких модулей зависит от отличий в аппаратных платформах (32 и 16 разрядные вынуждают переписывать код полностью). Однопроцессорные и много процессорные ПК требуют разных алгоритмов распределения памяти. Для уменьшения машинно-зависимых модулей производители ОС обычно ограничивают универсальность модулей. Независимость носит условный характер и распространяется на несколько типов процессора. Но сюда также можно отнести низкоуровневые драйвера, которые отражают особенности управляемых внешних устройств, но они входят в состав менеджера ввода-вывода. Наблюдается двойственность. Может использоваться BIOS как помощь разработчикам, но они могут полностью его заменить компонентами ОС.

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

поддержки ОС, в который входят следующие компоненты:

■ средства поддержки привилегированного режима; (какой режим текущий, проверка допустимости выполнения команды при текущем уровне привилегий).

■ средства трансляции адресов; (Преобразовывает виртуальные адреса в физические).

■ средство переключения процессов; (Для быстрого сохранения приостанавливаемого процесса и восстановления другого процесса).

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

■ системный таймер; (Выдерживает интервалы времени, при значении 0 делает прерывание).

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

 
  Четвертый период (1980 - настоящее время) - student2.ru

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

Четвертый период (1980 - настоящее время) - student2.ru Так как часть ОС оформлена в виде приложений в пользовательском режиме, то они выстпупают в роли серверов, к которым обращаются приложения пользователя. Таким образом, работа микроядерной операционной системы соответствует известной модели клиент-сервер, в которой роль транспортных средств исполняет микроядро.

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

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

 
  Четвертый период (1980 - настоящее время) - student2.ru

16.

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

способности компьютера главной целью является минимизация простоев веех

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

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

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

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

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

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

22.

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

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

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

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

23.В основе многих вытесняющих алгоритмов планирования лежит концепция квантования.

Квант — ограниченный непрерывный период процессорного времени, поочередно предоставляемый для выполнения каждому потоку. Смена активного потока происходит, если:

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

■ произошла ошибка;

■ поток перешел в состояние ожидания;

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

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

Поток, который исчерпал свой квант, переводится в сос+ояние готовности

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

При этом на выполнение в соответствии с определенным правилом выбирается

новый поток из очереди готовых

Если квант короткий, то суммарное время, которое проводит поток в ожидании

процессора, прямо пропорционально времени, требуемому для его выполнения

(то есть времени, которое потребовалось бы для выполнения этого потока

при монопольном использовании вычислительной системы).

25.Во многих операционных системах алгоритмы планирования построены с использованием как квантования, так и приоритетов. Например, в основе планирования лежит квантование, но величина кванта и/или порядок выбора потока из очереди готовых определяется приоритетами потоков.

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

Четвертый период (1980 - настоящее время) - student2.ru Приоритет — это число, характеризующее степень привилегированности потока при использовании ресурсов вычислительной машины, в частности процессорного времени: чем выше приоритет, тем Выше привилегии, тем меньше времени будет проводить поток в очередях.

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

26.

является обеспечение временных характеристик вычислительного процесса,

планирование имеет особое значение. Любая система реальною времени должна

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

Необходимость тщательного планирования работ облегчается Тем,

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

Кроме того, часто в системе имеется информация о временах выполнения

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

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

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

планирования.

При разработке алгоритмов планирования для систем реального времени

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

временных ограничений. Если эти последствия катастрофичны,

как, например, для системы управления полетами или атомной электростанцией,

то операционная система реального времени, на основе которой строится

управление объектом, называется жесткой (hard). Если же последствия нарушения

временных ограничений не столь серьезны, то есть сравнимы с той пользой,

которую приносит система управления объектом, то система является мягкой

(soft). Примером мягкой системы реального времени является система

резервирования билетов. Если из-за временных нарушений оператору не удается

зарезервировать билет, это не очень страшно — можно просто послать запрос

на резервирование заново.

В жестких системах реального времени время завершения выполнения каждой

из критических задач должно быть гарантировано для всех возможных сценариев

работы системы.

отношении.

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

ограничения могут иногда нарушаться, поэтому здесь обычно применяются

менее затратные способы планирования.

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

разделять их на два типа: периодические и спорадические. Начиная с момента

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

задачи можно определить заранее путем прибавления к моменту начального

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

Существуют также алгоритмы с динамическим изменением приоритетов,

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

как, например, конечный срок выполнения (deadline). При необходимости назначения

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

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

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

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

Внешние прерывания могут возникать в результате:

■ действий пользователя или оператора за терминалом;

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

■ поступления сигналов от датчиков управляемых компьютером технических объектов.

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

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

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

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

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

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

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

Механизм прерываний чаще всего поддерживает приоритезацию и маскирование прерываний.

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

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

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

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

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

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

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

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

Четвертый период (1980 - настоящее время) - student2.ru Четвертый период (1980 - настоящее время) - student2.ru каждому классу присваивается приоритет. В операционной системе выделяется программный модуль, который занимается диспетчеризацией обработчиков прерываний. Этот модуль в разных ОС называется по-разному, но для определенности будем его называть диспетчером прерываний.

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

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

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

■ обеспечивать переключение в привилегированный режим;

■ обладать высокой скоростью вызова процедур ОС;

■ обеспечивать по возможности единообразное обращение к системным вызовам для всех аппаратных платформ, на которых работает ОС;

■ допускать легкое расширение набора системных вызовов;

■ обеспечивать контроль со стороны ОС за корректным использованием системных вызовов.Операционная система может выполнять системные вызовы в синхронном или асинхронном режиме.

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

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

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

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

Четвертый период (1980 - настоящее время) - student2.ru 31.Функциями ОС по управлению памятью в мультипрограммной системе являются:

■ отслеживание свободной и занятой памяти;

■ выделение памяти процессам и освобождение памяти при завершении процессов;

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

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

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

32.

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

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

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

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

33.Методы распределения памяти:
без использования внешней памяти (распределение физическими разделами, распределение динамическими разделами, распределение перемещаемыми разделами).

с использованием внешней памяти(страничное распределение, сегментное распределение, сегментно-страничное).

34.

Фиксированные разделы

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

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

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

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

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

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

Динамические разделы:

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

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

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

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

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

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

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

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

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

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

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

Наши рекомендации